9815bc3f76
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
67 lines
2.6 KiB
Python
67 lines
2.6 KiB
Python
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() |