import sys import json import logging import broadlink from pathlib import Path # 🔧 Настройки (те же, что в ваших исходниках) DEVICE_IP = "192.168.1.192" DEVICE_MAC = "78:0f:77:18:08:00" DEVICE_TYPE = 0x2712 # RM Pro+ (для RM4 Pro используйте 0x5213) SCRIPT_DIR = Path(__file__).parent.resolve() CODES_FILE = SCRIPT_DIR / "broadlink_codes.json" LOG_FILE = SCRIPT_DIR / "broadlink_actions.log" # Логирование в файл (консоль скрыта, поэтому логи нужны для отладки) logging.basicConfig( filename=LOG_FILE, level=logging.INFO, format='%(asctime)s [%(levelname)s] %(message)s', filemode='a' ) def main(): if len(sys.argv) < 2: logging.info("ℹ️ Запущен без параметров. Использование: silent_send.py <имя_команды>") return cmd = sys.argv[1].strip() if not CODES_FILE.exists(): logging.error(f"❌ Файл {CODES_FILE} не найден в {SCRIPT_DIR}") return try: with open(CODES_FILE, "r", encoding="utf-8") as f: # Автоматически убираем пробелы в ключах и значениях (исправление вашего JSON) raw = json.load(f) codes = {k.strip(): v.strip() for k, v in raw.items()} except Exception as e: logging.error(f"❌ Ошибка чтения JSON: {e}") return if cmd not in codes: logging.error(f"❌ Команда '{cmd}' не найдена. Доступные: {', '.join(codes.keys())}") return try: mac_bytes = bytes.fromhex(DEVICE_MAC.replace(":", "")) dev = broadlink.gendevice( dev_type=DEVICE_TYPE, host=(DEVICE_IP, 80), mac=mac_bytes ) dev.auth() dev.send_data(bytes.fromhex(codes[cmd])) logging.info(f"✅ Успешно отправлено: '{cmd}'") except Exception as e: logging.error(f"❌ Ошибка сети/устройства: {e}") if __name__ == "__main__": main()