Initial commit
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
import sys
|
||||
import argparse
|
||||
import logging
|
||||
from broadlink_core import (discover_devices, create_device, learn_code,
|
||||
load_codes, save_codes, send_command, DEFAULT_CONFIG)
|
||||
|
||||
logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s")
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Broadlink Manager CLI & GUI")
|
||||
parser.add_argument("--ip", default=DEFAULT_CONFIG["ip"])
|
||||
parser.add_argument("--mac", default=DEFAULT_CONFIG["mac"])
|
||||
parser.add_argument("--type", default=str(DEFAULT_CONFIG["dev_type"]))
|
||||
|
||||
sub = parser.add_subparsers(dest="action")
|
||||
sub.add_parser("discover", help="Поиск устройств в сети")
|
||||
sub.add_parser("list", help="Список сохранённых команд")
|
||||
sub.add_parser("gui", help="Запустить графический интерфейс")
|
||||
|
||||
p_learn = sub.add_parser("learn", help="Обучить команду")
|
||||
p_learn.add_argument("name", help="Имя команды")
|
||||
|
||||
p_send = sub.add_parser("send", help="Отправить команду")
|
||||
p_send.add_argument("name", help="Имя команды")
|
||||
sub.add_parser("send_all", help="Отправить все команды по очереди")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if not args.action or args.action == "gui":
|
||||
from gui_app import BroadlinkApp
|
||||
app = BroadlinkApp()
|
||||
app.mainloop()
|
||||
return
|
||||
|
||||
if args.action == "discover":
|
||||
for d in discover_devices():
|
||||
print(f"IP: {d['host']} | MAC: {d['mac']} | Тип: 0x{d['type']:04x}")
|
||||
return
|
||||
|
||||
if args.action == "list":
|
||||
for n in sorted(load_codes().keys()): print(f" • {n}")
|
||||
return
|
||||
|
||||
dev = create_device(args.ip, args.mac, dev_type=int(args.type, 16))
|
||||
if not dev:
|
||||
print("❌ Не удалось подключиться"); sys.exit(1)
|
||||
|
||||
if args.action == "learn":
|
||||
code = learn_code(dev, args.name)
|
||||
if code:
|
||||
codes = load_codes(); codes[args.name] = code; save_codes(codes)
|
||||
print(f"✅ '{args.name}' сохранено")
|
||||
else: print("❌ Обучение не удалось")
|
||||
|
||||
elif args.action == "send":
|
||||
print("✅ Отправлено" if send_command(dev, args.name) else "❌ Ошибка")
|
||||
|
||||
elif args.action == "send_all":
|
||||
codes = load_codes()
|
||||
for name in sorted(codes.keys()):
|
||||
print(f"📤 {name}")
|
||||
send_command(dev, name, codes)
|
||||
time.sleep(1.5)
|
||||
print("🏁 Готово")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user