Initial commit
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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()
|
||||
Reference in New Issue
Block a user