Initial commit

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
dinlo
2026-05-31 18:43:20 +08:00
commit 9815bc3f76
24 changed files with 607 additions and 0 deletions
+67
View File
@@ -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()