Transfert des connaissances acquises vers HA
Il est temps d'appliquer les leçons apprises en Python et de les intégrer dans Home Assistant.
Comme je n'avais aucune expérience dans l'écriture de composants pour HA, j'ai dû passer du temps à apprendre à écrire mes propres composants pour l'intégration.
La première étape a consisté à implémenter un client http pour l'autorisation. Ensuite, il a commencé à écrire un client tcp. Et à un moment donné, une pensée m'est venue à l'esprit: que se passerait-il si dans les premières versions de l'application, la communication avec le serveur / les périphériques ne se faisait pas via TCP, mais via REST.
La curiosité est revenue en moi et j'ai commencé à chercher et à étudier les anciennes versions de l'application. Et voilà, le succès! J'ai trouvé exactement ce que je cherchais)

Après avoir étudié l'application, j'ai découvert quels autres descripteurs existent pour les demandes, en plus de l'autorisation. C'était ce dont j'avais besoin: demander l'état des appareils et soumettre le changement.
Ainsi, il n'est pas nécessaire d'écrire un client tcp et vous pouvez vous concentrer sur le travail avec les requêtes http.
La première étape consistait à découvrir ce que signifiaient les données renvoyées par le serveur.
{'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': ''}
examinez les modèles dans l'application et déterminez ce qu'il faut passer pour modifier le paramètre.
Ainsi, après un certain temps, la première version MVP du composant est apparue, qui ne fonctionnait que pour lire l'état actuel du convecteur.

, , , Electrolux/Balu . , " ".
3 ))) .
HA

HA, , HA


, .
En plus de la manière décrite de communiquer avec l'appareil par la substitution de l'application, il est possible d'aller en communiquant directement avec l'appareil, et idéalement en créant des bâtons pour travailler par intégration zigbee et MQTT. Et pour cela, des personnes ayant de l'expérience et des connaissances sont indispensables.
Lien vers le référentiel et le télégramme