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
+60
View File
@@ -0,0 +1,60 @@
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()