Controlamos el convector y termostato Electrolux desde Home Assistant. Parte 2

Parte 1





Transferencia de conocimientos adquiridos a HA

Es hora de aplicar las lecciones aprendidas en Python e integrarlo en Home Assistant.





Como no tenía experiencia en la escritura de componentes para HA, tuve que dedicar tiempo a aprender a escribir mis propios componentes para la integración.





El primer paso fue implementar un cliente http para la autorización. Luego pasó a escribir un cliente tcp. Y en algún momento, un pensamiento pasó por mi mente: ¿y si en las primeras versiones de la aplicación la comunicación con el servidor / dispositivos no fuera a través de TCP, sino a través de REST?





La curiosidad volvió a surgir en mí y comencé a buscar y estudiar versiones antiguas de la aplicación. Y he aquí, ¡éxito! Encontré exactamente lo que estaba buscando)





Después de estudiar la aplicación, descubrí qué otros manejadores hay para las solicitudes, además de la autorización. Esto era lo que necesitaba: solicitar el estado de los dispositivos y enviar el cambio.





Por lo tanto, no es necesario escribir un cliente tcp y puede concentrarse en trabajar con solicitudes http.





El primer paso fue averiguar qué significaban los datos devueltos por el 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 los modelos en la aplicación y averigüe qué pasar para cambiar el parámetro.





Así, después de un tiempo, apareció la primera versión MVP del componente, que solo funcionaba para leer el estado actual del convector.





, , , Electrolux/Balu . , " ".





3 ))) .





HA





HA, , HA





, .





Además de la forma descrita de comunicarse con el dispositivo mediante la sustitución de la aplicación, es posible ir comunicándose directamente con el dispositivo, e idealmente creando palos para trabajar mediante integración zigbee y MQTT. Y para ello se necesitan personas con experiencia y conocimiento.





Enlace al repositorio y telegrama








All Articles