pip3 install broadlink
修改 learn.py 裡 CONSTANTS 區對應的參數,對著你的 Broadlink 萬能遙控按遙控器
就可以得到一個 SmartIR 格式的 JSON 檔 :)
| import broadlink | |
| import base64 | |
| import json | |
| # CONSTANTS | |
| IP = "" | |
| OP_MODES = [] | |
| FAN_MODES = [] | |
| SWING_MODES = [] | |
| TEMPERATURES = range(16, 31) | |
| RESULT_FILE = "9999.json" | |
| TEMP_TXT = "temp.txt" | |
| # INITIALIZATION | |
| result = { | |
| "manufacturer": "Daikin", | |
| "supportedModels": ["A1-2345", "B2-3456", "C3-4567"], | |
| "commandsEncoding": "Base64", | |
| "supportedController": ["RM4 Mini", "RM4 Pro"], | |
| "minTemperature": TEMPERATURES[0], | |
| "maxTemperature": TEMPERATURES[-1], | |
| "precision": 1.0, | |
| "operationModes": OP_MODES, | |
| "fanModes": FAN_MODES, | |
| "swingModes": SWING_MODES, | |
| "commands": {} | |
| } | |
| for op in OP_MODES: | |
| result["commands"][op] = {} | |
| for fan in FAN_MODES: | |
| result["commands"][op][fan] = {} | |
| for swing_mode in SWING_MODES: | |
| result["commands"][op][fan][swing_mode] = {} | |
| # MAIN | |
| device = broadlink.hello(IP) | |
| device.auth() | |
| with open(TEMP_TXT, "w+") as f1: | |
| for op in OP_MODES: | |
| for fan in FAN_MODES: | |
| for swing_mode in SWING_MODES: | |
| for temp in TEMPERATURES: | |
| print(f"Learning {op} {fan} {swing_mode} {temp}...") | |
| device.enter_learning() | |
| packet: bytes = device.check_data() | |
| b64_packet = base64.b64encode(packet).decode("utf-8") | |
| f1.write(f"{op}.{fan}.{swing_mode}.{temp}={b64_packet}\n") | |
| result["commands"][op][fan][swing_mode][str(temp)] = b64_packet | |
| print(f"Learned {op} {fan} {swing_mode} {temp}.") | |
| print("Learning Off...") | |
| device.enter_learning() | |
| packet: bytes = device.check_data() | |
| b64_packet = base64.b64encode(packet).decode("utf-8") | |
| f1.write(f"Off={b64_packet}\n") | |
| result["commands"]["off"] = b64_packet | |
| print("Learned Off.") | |
| with open(RESULT_FILE, "w+") as f2: | |
| json.dump(result, f2, indent=4) |