🍣

HEMS Integration作った

に公開
3

Home Assistant向けにHEMS Integrationを作りました。

Home Assistantとは

Google Home や Apple Home のように家にある様々なデバイスを管理するプラットフォームをOSSで実現しようというプロジェクトです。

https://www.home-assistant.io/

HEMS Integrationとは

ECHONET Liteプロトコルに準拠したデバイスをHome Assistantに登録し、管理できる機能です。

Home Assistantにはコア機能とcustom integrationがあります。custom integrationにはすでに同等の統合機能が用意されています。

https://github.com/scottyphillips/echonetlite_homeassistant

私もこちらを使用していましたが不満点がいくつかあり、構造上、根本から設計を見直す必要がありそうだったため、こちらに貢献する道をとらず、あえて競合する統合機能を作りました。

こちらは我が家で認識させたデバイスを一通り表示させたもの。これらを見やすい形式で配置することができます。

何が違うの?

標準組み込み

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

athkathk

はじめまして、こんにちは
最近戸建てに移住して、宅内のechonetliteによる通信に興味を持ち、
echonetlite、HAOSを学び始めました
「HEMS Integration」を導入しました
しかし、太陽光電力検出ユニット(型番:HQJP-MUKA-4)との通信で、「発電電力」の値が正しく取得できない様子です まだechonetliteを把握できていないですが、相談させてもらってよろしいでしょうか?

athkathk

はい、間違いありません
はい、githubへ投稿させていただきます

1