習得した知識のHAへの移転
Pythonで学んだ教訓を適用し、HomeAssistantに統合する時が来ました。
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の統合を介して作業するためのスティックを作成することによって行うことができます。そしてそのためには、経験と知識を持った人がとても必要です。