Weitergabe des erworbenen Wissens an HA
Es ist Zeit, die in Python gewonnenen Erkenntnisse anzuwenden und in Home Assistant zu integrieren.
Da ich keine Erfahrung mit dem Schreiben von Komponenten für HA hatte, musste ich lernen, wie ich meine eigenen Komponenten für die Integration schreibe.
Der erste Schritt bestand darin, einen http-Client zur Autorisierung zu implementieren. Dann ging es darum, einen TCP-Client zu schreiben. Und irgendwann kam mir ein Gedanke: Was wäre, wenn in den ersten Versionen der Anwendung die Kommunikation mit dem Server / den Geräten nicht über TCP, sondern über REST erfolgen würde?
Ich wurde wieder neugierig und begann, alte Versionen der Anwendung zu suchen und zu studieren. Und siehe da, Erfolg! Ich habe genau das gefunden, wonach ich gesucht habe)
Nachdem ich die Anwendung studiert hatte, fand ich heraus, welche anderen Handles es neben der Autorisierung für Anfragen gibt. Dies war das, was ich brauchte: den Status der Geräte anfordern und die Änderung einreichen.
Sie müssen also keinen TCP-Client schreiben, und Sie können sich auf die Arbeit mit http-Anforderungen konzentrieren.
Der erste Schritt bestand darin, herauszufinden, was die vom Server zurückgegebenen Daten bedeuteten.
{'result': {'device': [{'state': '0', 'child_lock': '0', 'sensor_fault': '0', 'window_open': '0', 'mute': '0', 'window_opened': '0', 'calendar_on': '0', 'brightness': '1', 'led_off_auto': '0', 'temp_comfort': '10', 'delta_eco': '4', 'temp_antifrost': '7', 'mode': '1', 'mode_temp_1': '0', 'mode_temp_2': '0', 'mode_temp_3': '0', 'hours': '12', 'minutes': '0', 'timer': '0', 'current_temp': '9', 'heat_mode': '1', 'power': '1', 'code': '0', 'lcd_on': '1', 'time_seconds': '29', 'time_minutes': '53', 'time_hour': '21', 'time_day': '1', 'time_month': '4', 'time_year': '21', 'time_weekday': '4', 'preset_monday': '0', 'preset_tuesday': '0', 'preset_wednesday': '0', 'preset_thursday': '0', 'preset_friday': '0', 'preset_saturday': '0', 'preset_sunday': '0', 'preset_day_1': '0', 'preset_day_2': '0', 'preset_day_3': '0', 'preset_day_4': '0', 'preset_day_5': '0', 'preset_day_6': '0', 'preset_day_7': '0', 'preset_day_8': '2', 'preset_day_9': '2', 'preset_day_10': '2', 'preset_day_11': '2', 'preset_day_12': '2', 'preset_day_13': '2', 'preset_day_14': '2', 'preset_day_15': '2', 'preset_day_16': '2', 'preset_day_17': '2', 'preset_day_18': '2', 'preset_day_19': '2', 'preset_day_20': '2', 'preset_day_21': '2', 'preset_day_22': '2', 'preset_day_23': '2', 'preset_day_24': '0', 'tempid': '188577', 'uid': '188577', 'mac': 'set', 'room': '...', 'sort': '0', 'type': 'convector24', 'curr_slot': '0', 'active_slot': '0', 'slop': '0', 'curr_scene': '0', 'curr_scene_id': '0', 'wait_slot': '0', 'curr_slot_dropped': '0', 'curr_scene_dropped': '0', 'online': '1', 'lock': '0'}], 'invalid': [], 'waiting': [], 'invalid_device': [], 'waiting_device': []}, 'error_code': '0', 'error_message': ''}
Untersuchen Sie die Modelle in der Anwendung und finden Sie heraus, was übergeben werden muss, um den Parameter zu ändern.
So erschien nach einiger Zeit die erste MVP-Version der Komponente, die nur zum Lesen des aktuellen Zustands des Konvektors diente.
, , , Electrolux/Balu . , " ".
3 ))) .
HA
HA, , HA
, .
Zusätzlich zu der beschriebenen Art der Kommunikation mit dem Gerät durch Ersetzen der Anwendung ist es möglich, direkt mit dem Gerät zu kommunizieren und im Idealfall Sticks für die ZigBee- und MQTT-Integration zu erstellen. Und dafür werden Menschen mit Erfahrung und Wissen dringend benötigt.
Link zum Repository und Telegramm