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) |