見出し画像

【Home Assistant × Nature Remo】カスタムインテグレーションの機能追加

前回、Home Assistantのカスタムインテグレーションを作成し、Nature Remoを使ってエアコンのON/OFF操作ができるようになりました。

しかし、実際に使うためには、機能が少なすぎます。

今回は、ON/OFF 操作ができるようになった後に行った機能追加と改良の過程を、AI(ChatGPT)との対話を通じてどのように進めたかを含めてまとめました。


1. 温度調整機能の追加

エアコンの操作といえば、ON/OFFだけではなく温度の調整も必要です。

● やったこと

target_temperatureプロパティを実装して、現在の設定温度をHome Assistantに連携  
✅ Nature Remo APIを利用して、温度の設定をエアコンに送信できるようにした。

● 苦労したポイント

  • UIから温度設定できるようにするための設定値の仕様が変更されていてエラーになった。(AIが教えてくれた方法では古かった)

  • target_temperatureプロパティ を実装しないとUIに温度調整のスライダーが表示されなかった。
    今回作っているカスタムインジケーターはエアコンを制御するための部品なので、画面パーツ側に設定温度を教えるための窓口が必要。

● 解決方法

  • 最新のHome AssistantのClimateEntityFeatureクラス を調べて正しいインポート先に修正。
    これは Home Assistantのバージョンを指定していなかったためであり、AI にバージョンを正しく伝える必要があった。

  • target_temperatureプロパティを追加し、現在の設定温度をUIに反映できるようにした。


2. 風量(ファン速度)の調整機能を追加

エアコンの 風量(ファンの強さ) を調整できるように改良しました。

● やったこと

fan_modeプロパティを定義し、Home Assistantへ現在の風量を連携できるようにした。
fan_modesプロパティを定義し、UIから「弱・中・強・自動」が選択できるようにした。
✅ Nature Remo APIへ風量変更を送信する処理を追加。  

● 苦労したポイント

  • supported_featuresプロパティClimateEntityFeature.FAN_MODEを追加しないとUIに風量ボタンが出なかった。
    このプロパティで、どのような機能(風量設定や風向き設定など)が提供できるかを示す必要があった。

  • async_set_fan_modeメソッドでNaure Remo APIに送信する値のフォーマットが間違っていた。
    すべてAIに依存するのではなく、Nature Remo APIの仕様を確認・理解することも重要。

● 解決方法

  • supported_featuresメソッドClimateEntityFeature.FAN_MODEを追加。

  • APIのドキュメントを確認し、正しいデータ形式で風量を送信するように修正。


3. 風向き(スイング)の設定機能を追加

風量が調整できるようになったので、次は風向き(スイング)も設定できるように改良しました。

● やったこと

swing_modesプロパティを定義し、「1, 2, 3, 4, auto, swing」などの選択肢をUIに表示。
swing_modeプロパティを定義し、Home Assistantに現在の風向き情報を連携。
✅ Nature Remo APIにair_directionの値を送信できるようにasync_set_swing_modeメソッドを追加。  

● 苦労したポイント

  • 設定した風向き情報がUI上に表示されなかった。
    async_updateメソッドでNature Remo APIから最新のエアコン設定情報を取得してUIに反映しているが、取得する方法が間違っていた。

● 解決方法

  • async_updateメソッドで呼び出すNature Remo APIの仕様を見直し、状態を正しくHome Assistantに反映できるように修正。

ON/OFFしか操作できなかったエアコンが、温度設定や風量など
エアコンの基本操作ができるようになりました。

4. 複数のエアコンを登録・操作できるように修正

複数台のエアコンをHome Assistantに登録し、個別に操作できるように改良しました。

● やったこと

configuration.yamlに複数台のエアコンを定義できるように修正。  
✅ 初期化処理のasync_setup_platformメソッドでループを回し、configuration.yamlで定義したすべてのエアコンを登録するように修正。

● 苦労したポイント

  • はじめから複数台対応している想定だったが、async_add_entitiesメソッドで登録するエアコン情報が1台しか対応しておらず、2台目以降が表示されなかった。

● 解決方法

  • ループしてconfigration.yamlに定義しているエアコンをすべて取得するように修正して、複数のエアコンを一括で登録できるようにした。


5. エラーの解消とコードのクリーンアップ

最後に、開発中に発生したエラーをすべて解決し、コードの最適化を実施しました。

● やったこと

RuffPylintの警告をすべて解消し、コードをクリーンに  
importのルールを整理し、正しいモジュールからimportするように修正。
async関数の書き方を統一し、Home Assistant の公式スタイルガイドに準拠。

● 苦労したポイント

  • AIによって作られたコードをそのまま流用すると、Import should be using the component rootなどの警告が大量に出て、問題解決に時間がかかった。

● 解決方法

  • とにかく一つずつエラーを解決していき、解消していった。
    VSCode上で解決方法が表示されるときもあったが、解決方法が出ないときは再度AIに解消方法を依頼していった。


まとめ:Home Assistantのエアコン操作が快適に!

今回の改良で、Home Assistantからエアコンを自由自在にコントロールできるようになってきました。

ON/OFF 操作  
温度調整  
風量調整
風向き設定
複数のエアコンに対応

最初はエアコンの ON/OFF しかできなかったのに、どんどん機能が増えて、HomeAssistant上で操作できるようになったときはとても感動もの!

コーディングの知識は必要になりますが、AI に相談することでスムーズに機能追加ができるようになりました。

次のステップでは、

  • エアコンの設定情報を取得して汎用的に操作できるようにする

  • Nature Remo APIの利用頻度を削減する

  • 部屋の温度や湿度を取得して、Home Assistantに表示する

  • エアコンの使用履歴を記録し、電力管理する

改善の余地はたくさんありますので、これからも Home Assistant のカスタムインテグレーションをどんどん進化させていこうと思います。

なお、今回作成したコードはまだ公開できるレベルではありませんが、ある程度完成した段階でGitに公開する予定です。
AIと連携するだけでこれだけのソースコードが作れる、ということの参考になれば幸いです。

いいなと思ったら応援しよう!