Часть 1
Перенос полученных знаний в HA
Пришло время применить полученный опыт на Python и интегрировать его в Home Assistant.
Так как опыта написания компонентов для HA не было, пришлось потратить время на изучение того, как писать свои компоненты для интеграции.
Первым делом был реализован http-клиент для авторизации. Дальше дело шло за написанием tcp клиента. И в какой-то момент у меня промелькнула мысль, а что, если в первых версиях приложения общение с сервером/устройствами было не по TCP, а через REST.
Во мне снова проснулось любопытство, и я занялся поиском и изучением старых версий приложения. И, о чудо, успех! Я нашел именно то, что искал )
После изучения приложения я узнал какие еще есть ручки для запросов, кроме авторизации. Это было то, что мне требовалось: запрос состояния устройств и отправка изменения.
Таким образом отпала необходимость писать tcp-клиент и можно сосредоточить усилия на работе с http запросами.
Первым делом нужно было выяснить, что означают данные, которые возвращает сервер
{'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': ''}
изучить модели в приложении и выяснить что передавать, чтобы изменить параметр.
Таким образом спустя какое-то время появилась первая MVP версия компонента, которая работала только на чтение текущего состояния конвектора
Поделившись успехами в комментарии к вдохновившей меня статье, я создал группу в телеграм, в надежде, что полученные результаты дадут толчок к развитию идеи интеграции устройств от Electrolux/Balu и др. и привлечению людей, которые уже имеют опыт в написании своих расширений для "умных домов".
К моему разочарованию в группу зашло всего 3 человека ))) с запросом на управление термостатом.
Таким образом появилась возможность добавить еще одно устройство для управления из HA
В процессе многочисленных чтений статей и изучения исходников компонентов для HA, удалось доработать компонент до приемлемого состояния, позволяющего частично заменить управление из приложения управлением через HA
Будет здорово, если найдутся единомышленники для дальнейшего развития интеграции.
Помимо описанного пути общения с устройством через подмену приложения, возможно пойти путем общения с устройством напрямую, а в идеале и созданием стиков для работы через zigbee и интеграции по MQTT. И для этого очень нужны люди с опытом и знаниями
Ссылка на репозиторий и telegram