はじめに
(この記事の続きはこちらになります。ここで紹介したECHONETLite2MQTTもver.2.0.0になりました)
皆さん、コロナ禍で自宅に籠っている中、自宅のスマートホーム化に取り組んでいるのではないでしょうか?
私も Home Assistant に出会ってから、赤外線リモコンハブ、温湿度計、電動カーテンと、いろいろ導入してきました。
さらなるスマート化に向けてリフォームまで計画していて、ふと気づきます。
日本の住宅設備家電が、スマート化できない
いろいろ調べてみると、住宅家電は ECHONET Lite という規格に準拠しているようですが、
この ECHONET Lite がびっくりするくらい流行っていません。
しかし機種にもよりますが、次のような機器が ECHONET Lite に対応しているようです。
- エアコン
- 電動シャッター
- 玄関電気錠
- 電気給湯器
- 分電盤
- 壁スイッチ
ということは、ECHONET Liteが使えれば、さらなるスマートホーム化が進められる!
幸い、ECHONET Liteは 仕様 がいろいろ公開されています。
無いなら作ろうということで、自作してみました。
先に既存のプロダクトを調べてみる
自分で作らずに、既存のものが使えればそれに越したことはありません。
ググった感じだと、以下がありそうでした。
-
ECHONETLite Platform Custom Component for Home Assistant
なぜか私の環境では動作せず。また対応機器はエアコンとセンサーくらい? -
ECHONET Lite - MQTT変換システム「Clotho For ECHONET Lite」
2015年に発表があったようですが、その後の消息は不明です。
やはり、流行っていないためか、いまいちのようです。
作ったもの
ECHONETLite2mqtt として、GitHubに公開しています。
仕組みとしては、ECHONET LiteのデバイスのステータスをMQTTにPublishし、またMQTT経由できた命令をECHONET Lite側に送るようになっています。
Home Assistantは MQTTと連携したカスタムデバイス を作ることができるのでこれでECHONET LiteデバイスをHome Assistantから制御できます。
また、Node-REDやHomebridgeもMQTTに対応しているようなので、私は使ったことがありませんが、対応できるかも?
動作デモ
エアコン
リフォーム前の自宅で唯一のECHONET Lite対応デバイスである、三菱エアコン MSZ-X255-W です。
割と古い機種ですが、 MAC-900IF という無線LAN通信装置を増設することでECHONET Lite対応できました。
左側がHome Assistantのエアコンコントロール、右側が実際に動作しているところです。
Home Assistantから暖房を付けたり温度設定をしたりしつつ、リモコン操作の結果もちゃんとHome Assistant側にフィードバックされます。
このエアコンは、動作モードと設定温度、温度計測値の他にも、風向や風量も制御できそうですが、そこまでは不要なのでHome Assistant側で作りこんでいません。ただMQTTとしては公開しているので頑張ればできるはずです。
Home Assistantでの設定の見本はこちらです。
"fe00-your-device-id-00000000000000"の部分は、手持ちのデバイスのIDを指定してください。
(デバイスIDはECHONETLite2mqtt のWeb画面からも確認できます)
climate:
- platform: mqtt
name: エアコン2
icon: mdi:air-conditioner
modes:
- "off"
- "cool"
- "heat"
- "dry"
mode_command_template: >-
{% set values = { 'off':'off', 'cool':'cooling', 'heat':'heating', 'dry':'dehumidification'} %}
{{ values[value] if value in values.keys() else 'off' }}
payload_on: "true"
payload_off: "false"
power_command_topic: "echonetlite2mqtt/elapi/v1/devices/fe00-your-device-id-00000000000000/properties/operationStatus/set"
mode_command_topic: "echonetlite2mqtt/elapi/v1/devices/fe00-your-device-id-00000000000000/properties/operationMode/set"
temperature_state_topic: "echonetlite2mqtt/elapi/v1/devices/fe00-your-device-id-00000000000000/properties/targetTemperature"
temperature_command_topic: "echonetlite2mqtt/elapi/v1/devices/fe00-your-device-id-00000000000000/properties/targetTemperature/set"
current_temperature_topic: "echonetlite2mqtt/elapi/v1/devices/fe00-your-device-id-00000000000000/properties/roomTemperature"
mode_state_topic: "echonetlite2mqtt/elapi/v1/devices/fe00-your-device-id-00000000000000/properties"
mode_state_template: >-
{% if value_json.operationStatus == false %}
off
{% else %}
{% set values = { 'off':'off', 'cooling':'cool', 'heating':'heat', 'dehumidification':'dry'} %}
{{ values[value_json.operationMode] if value_json.operationMode in values.keys() else 'off' }}
{% endif %}
電動シャッター(シミュレーター)
リフォーム予定では、Lixilのスマート電動シャッターを 変換アダプタを使ってECHONET Lite対応する予定です。
リフォーム前の現時点では操作対象がないので、シミュレーターを自作しました。
シミュレーターは規格に準拠しているつもりですが、細かいところに差があるかも?
とりあえず実機が来たら調整するとして、このシミュレーターもHome Assistantから制御できています。
左側のHome Assistantでシャッターの開閉ができますし、実機でも操作できます。
Home Assistantでの設定見本はこちらです。
エアコンと同じように"fe00-your-device-id-00000000000000"の部分は、手持ちのデバイスのIDを指定してください。
cover:
- platform: mqtt
command_topic: "echonetlite2mqtt/elapi/v1/devices/fe00-your-device-id-00000000000000/properties/openCloseOperation/set"
device_class: shutter
name: shutter1
payload_close: "close"
payload_open: "open"
payload_stop: "stop"
state_closed: "fullyClosed"
state_closing: "closing"
state_open: "fullyOpen"
state_opening: "opening"
state_stopped: "stoppedHalfway"
state_topic: "echonetlite2mqtt/elapi/v1/devices/fe00-your-device-id-00000000000000/properties/openCloseStatus"
玄関電気錠(シミュレーター)
最近は、玄関のロックも電動化しているんですね。
ただ、ECHONET Liteには電動玄関ドアの規格がありますが、市販の電気錠はまだ対応していないようです。
電気錠とインターフォンを連動させるJEM-A規格というものがあり、これは IP/JEM-A変換アダプター でECHONET Liteで制御できるようです。
ということで、こちらもシミュレーターで対応。
左側がHome Assistantで、施錠/開錠がボタンで操作可能です。また見にくいですが、左側のHome Assistantのアイコンも施錠/開錠で変わっています。
もちろん、右側の実機でも操作可能です。
Home Assistantでの設定見本はこちらです。
こちらもエアコンと同じように"fe00-your-device-id-00000000000000"の部分は、手持ちのデバイスのIDを指定してください。
lock:
- platform: mqtt
name: Frontdoor-lock
state_topic: "echonetlite2mqtt/elapi/v1/devices/fe00-your-device-id-00000000000000/properties/operationStatus"
command_topic: "echonetlite2mqtt/elapi/v1/devices/fe00-your-device-id-00000000000000/properties/operationStatus/set"
payload_lock: "false"
payload_unlock: "true"
state_locked: "false"
state_unlocked: "true"
optimistic: false
qos: 1
retain: true
せっかくなので中身の解説を少々
ECHONET Lite周りは、Node.js用の echonet-liteパッケージを利用しています。
GitHubを見ると、まだちゃんと更新されているようだったので。
また、ECHONET LiteからJSONの形に変換していますが、これは、 ECHONET Lite Web API ガイドライン にJSONのスキーマ―が公開されていましたので、これを利用しています。
完全ではないですが、できるだけ近い形にしています。
実機でないと細かい仕様がわからない点はありましたが、仕様書がちゃんとあるので、手間がかかっただけでそれほど難しくはなかったです。
今後の予定
動作を優先させたのでコードは割と汚いです。まずはリファクタリングしたい・・・。
自宅のリフォーム予定としては、エコキュート(電気給湯器)と分電盤もスマート化する予定なので、こちらも対応する予定です。
また、エアコンをECHONET Liteで制御してわかったのですが、やはりエアコンはリモコンのほうが高機能ですね。
たとえば、「風よけ」とか「不在時自動OFF」はリモコンで電源を入れた場合だけ、「内部クリーン」はリモコンで電源を切った場合だけ動作するようです。
ということは、エアコンのON/OFFだけは赤外線ハブを使って動作させ、その後にHome Assistant側の温度設定や風向、風量で上書きするようにすれば良さそうです。
実現性はありそうなので、今後対応する予定です。
それでは皆さん、よいスマートホームライフを。