Transferência de conhecimento adquirido para HA
É hora de aplicar as lições aprendidas em Python e integrá-lo ao Home Assistant.
Como não tinha experiência em escrever componentes para HA, tive que gastar tempo aprendendo como escrever meus próprios componentes para integração.
A primeira etapa foi implementar um cliente http para autorização. Em seguida, começou a escrever um cliente tcp. E em algum momento, um pensamento passou pela minha mente: e se nas primeiras versões do aplicativo a comunicação com o servidor / dispositivos não fosse por TCP, mas por REST.
A curiosidade surgiu em mim novamente e comecei a pesquisar e estudar versões antigas do aplicativo. E, vejam só, sucesso! Eu encontrei exatamente o que estava procurando)
Depois de estudar o aplicativo, descobri que outros identificadores existem para solicitações, além de autorização. Era disso que eu precisava: solicitar o estado dos dispositivos e enviar a alteração.
Portanto, não há necessidade de escrever um cliente tcp e você pode se concentrar em trabalhar com solicitações http.
A primeira etapa foi descobrir o que significavam os dados retornados pelo servidor.
{'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': ''}
examine os modelos no aplicativo e descubra o que passar para alterar o parâmetro.
Assim, após algum tempo, apareceu a primeira versão MVP do componente, que funcionava apenas para a leitura do estado atual do convetor.
, , , Electrolux/Balu . , " ".
3 ))) .
HA
HA, , HA
, .
Além da forma descrita de comunicação com o dispositivo através da substituição do aplicativo, é possível ir comunicando-se diretamente com o dispositivo, e idealmente criando sticks para trabalhar através do zigbee e integração MQTT. E para isso, pessoas com experiência e conhecimento são muito necessárias.
Link para o repositório e telegrama