HEMS Integration作った
Home Assistant向けにHEMS Integrationを作りました。
Home Assistantとは
Google Home や Apple Home のように家にある様々なデバイスを管理するプラットフォームをOSSで実現しようというプロジェクトです。
HEMS Integrationとは
ECHONET Liteプロトコルに準拠したデバイスをHome Assistantに登録し、管理できる機能です。
Home Assistantにはコア機能とcustom integrationがあります。custom integrationにはすでに同等の統合機能が用意されています。
私もこちらを使用していましたが不満点がいくつかあり、構造上、根本から設計を見直す必要がありそうだったため、こちらに貢献する道をとらず、あえて競合する統合機能を作りました。
こちらは我が家で認識させたデバイスを一通り表示させたもの。これらを見やすい形式で配置することができます。

何が違うの?
標準組み込み
custom integrationの場合、Home Assistantに対しては非公式なため自由が利く半面、構築が不便です。自力でgit cloneして取り込んだり、もしくはGitHubアカウントを用意しHACSアドオンから取り込んだりする必要があります。
対してHEMS Integrationは標準機能への組み込みを目指しています。成功すれば、メニューから選択するだけで導入できるようになります。

IPアドレス依存
echonetlite_homeassistantはIPアドレスでデバイスを追跡します。一般的ではありますが、IoT機器の場合、IPアドレスはDHCP任せで変更されることがあります。echonetlite_homeassistantはIPアドレスが変更されてしまった場合に機器をうまく追跡できず、ロストしたり多重登録してしまったりします。
対してHEMS IntegrationはIPアドレスを参照していません。幸いECHONET Liteプロトコルには0x83 識別番号という情報があるため、そちらで機器を追跡するように設計しました。
このようにデバイスを認識するIDが根本的に異なるため、echonetlite_homeassistantへの貢献では実現できないと判断しました。
対応機器
echonetlite_homeassistantはどこまで対応されているかいまいちわかりませんでした。もちろん、手持ちのECHONET Liteデバイスは全て動作したので対応範囲は広そうなのですが。加えてECHONET Lite自体、仕様が更新され対応機器も増える可能性があります。
対してHEMS Integrationは最終的にすべてのデバイスに対応します。具体的にはECHONET LiteではMRA; Machine Readable Appendixが提供されています。このMRAを読み込み自動的にHome Assistant Entityとして提供できる仕組みを用意しました。
拡張性
ECHONET Lite仕様には不十分なところがあり、各機器は拡張領域を使った独自拡張を行っている場合があります。echonetlite_homeassistantはこれに対応するためにquirksディレクトリ下に追加定義可能になっています。しかし、定義できる情報に制限があります。具体的には温度情報を拡張定義しようとしても単純な数値センサーとしてしか登録できません。温度や湿度など単位を登録できれば便利なのに…。
対してHEMS IntegrationはHome Assistant Entityに必要な情報を一通り登録できるように設計しました。ただし、セキュリティのため、静的な定義のみで、echonetlite_homeassistantのようにpythonコードは登録できません。
例えば0x0135 空気清浄器クラスには温度と湿度は提供されませんが、独自拡張として組み込んでいます。これと同等の拡張は利用者の設定ファイルに記述可能です。(かなり特殊なので、取り下げが求められるかもしれませんが。)

その他
echonetlite_homeassistantは応答が遅いデバイスがあるとUnknownになってしまいます。応答が遅いだけなのに。
開発者視点では、echonetlite_homeassistantはpychonetのプライベートメンバーに依存していて設計がよろしくありません。HEMS Integrationではその点もきちんと分離しました。
まとめ
そんなわけで、正式公開されたらHEMS Integrationを使ってくださいな。
追記
Home Assistantに統合すると息巻いていましたが、PullReqを10分割(ドキュメントを合わせると20分割?)せよと言われて萎えてます。一旦HACSで公開しているのでこちらからどうぞ。
Discussion
はじめまして、こんにちは
最近戸建てに移住して、宅内のechonetliteによる通信に興味を持ち、
echonetlite、HAOSを学び始めました
「HEMS Integration」を導入しました
しかし、太陽光電力検出ユニット(型番:HQJP-MUKA-4)との通信で、「発電電力」の値が正しく取得できない様子です まだechonetliteを把握できていないですが、相談させてもらってよろしいでしょうか?
利用していただきありがとうございます。念のため…ご利用いただいているのは https://github.com/sayurin/hems_echonet_lite で間違いありませんね?
GitHubアカウントをお持ちで公開の場でやり取り可能でしたら https://github.com/sayurin/hems_echonet_lite/discussions へ投稿をお願いします。
人目に触れたくない場合は https://twitter.com/haxe にDMをお願いします。
はい、間違いありません
はい、githubへ投稿させていただきます