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()