Edited at

もしも家中にECHONET Lite対応機器がいっぱいあったら

More than 1 year has passed since last update.

この記事はおうちハック Advent Calendar 2016の12日目の記事です。

昨日はooDEMiさんの、おうちハック未経験者が自宅にPhilips HueとMESHを導入した話でした。

ノンプログラミングでおうちハックできる時代になりましたか、素晴らしい!


はじめに

みなさん、ECHONET Liteというプロトコルをご存知でしょうか。

ECHONET Liteとは、スマートハウス向け制御プロトコルであり、家電やエネルギー機器、センサーの情報を取得したり、操作したりできるプロトコルです。ISO規格およびIEC規格として国際標準化されています。

そのプロトコル仕様は公開されており、OpenECHOというJava/C++でのオープンソース実装もGPLで公開されています。また、TOPPERS/ECNLという組み込み向け実装も公開されています。

世の中はHomeKit/homebridgeの方に注目があつまっている感がありますが、今日はHomeKitのことを忘れ、ECHONET Liteで何ができるかについて考えてみようと思います。

ということで、「もしも家中にECHONET Lite対応機器がいっぱいあったら」という想定のもと、サンタクロースさんをおもてなししてみる仕組みについて妄想して考えてみようと思います。


どんなものが操作できるの?

現在、認証を受けて、ECHONET Liteを正式サポートしている機器は、以下のサイトで確認できます。

この中から、今回のテーマで使えそうなものをピックアップしてみると、、、

このあたりが使えそうです。


なにができるの?

ECHONET Liteでは、各機器について取得・設定できるものを標準化し、「ECHONET機器オブジェクト詳細規定」にまとめ公開しています。このことで、異なるメーカーの機器であっても基本的には同じ方法で値の取得・設定ができることになります。

では、家庭用エアコンを例に何ができるかをECHONET機器オブジェクト詳細規定から読み取ってみましょう。


家庭用エアコンの場合

調べ方の手順は以下になります。


  • まずは、現在最新の「APPENDIX ECHONET機器オブジェクト詳細規定 Release H」をダウンロードしてきます。※実際は機器が対応してるものを取得します。

  • 目次から、調べたい機器について記載している章を探します。家庭用エアコンは、「3.2.1 家庭用エアコンクラス規定」になります。対象のページまで移動します。(PDFで目次の対象の章をクリックすると、その章までジャンプしてくれます。)

  • 表のプロパティ名称およびプロパティ内容の項目から、取得・設定できる内容を知ることができます。次に、アクセスルールの項目をみます。この項目に、SetやGetと書かれていますが、Setと書かれているものは値の設定が、Getと書かれているものは値の取得が、両方書かれていると取得・設定の両方が可能ということです。

  • 次に、必須の項目を見ます。必須に「〇」が書かれているものは基本的にサポートが必須なプロパティとなっています。必須でないものは、製品によってサポートする/しないが異なります。

  • 状変時アナウンスの項目に「〇」が書かれているものは、そのプロパティの値に変化があった場合に、機器からその変化の通知が送信されるものです。

必須のプロパティのものを列挙すると以下になります。

プロパティ
内容
Set
Get

動作状態
ON/OFF

節電動作設定
節電動作中/通常動作中

運転モード設定
自動/冷房/暖房/除湿/送風/その他

温度設定値
0~50℃

室内温度計測値
-127~125℃

風量設定
風量自動 or 風量レベル 8段階

※温度設定値が0~50℃となっていますが、実際に設定できる値は機器に依存します。

これから、サンタさんが部屋に入った際に、「運転モード設定」を「暖房」、「温度設定値」を「28℃」に設定し、「動作状態」を「ON」にして暖かい部屋にしてあげることが可能になります。そして、サンタさんが部屋から出て行った際に、「動作状態」を「OFF」にすることで、無駄な電気代を節約することが可能になります。


その他の機器の場合

同様にして、その他の機器についても調べます。

基本、どの機器にも動作状態のON/OFFはあるので、それ以外から使えそうなプロパティを羅列してみます。

機器
プロパティ
内容
Set
Get

換気扇
換気風量設定
換気風量レベル 8段階

空気清浄器
煙(タバコ)検知状態
煙(タバコ)検知有/無

空気清浄器
光触媒動作設定
光触媒ON/OFF

空気清浄器
空気汚れ検知状態
空気汚れ検知有/無

床暖房
温度設定
0~50℃

床暖房
ゾーン切り替え
0~7

電気温水器
風呂温度設定値
0~100℃

電気温水器
音量設定値
操作部から出力される音量設定

オーブンレンジ
加熱設定
加熱開始・再開/一時停止/停止

オーブンレンジ
仕上がり温度設定値
-273.2~3276.6℃

オーブンレンジ
加熱時間設定値
加熱時間をHH:MM:SSで指定

などなど。サンタさんをお迎えする快適な空間を提供することは可能そうです。


実現方法について考える

それでは、これらのECHONET Lite機器を使ってシステムを構築してみましょう。


システム構成

ECHONET Liteを使ったシステムの構成要素には、大きく2つの役割があります。

1つはこれまでみてきた家庭用エアコンや冷蔵庫といった「機器」、もう1つはそれらを制御する「コントローラ」です。「コントローラ」はネットワークに接続された「機器」たちから値を取得したり、値を設定したりすることができます。

image

ECHONET Liteでは、コントローラには、ネットワーク上につながっている機器を自動発見する手段が提供されています。また、各機器が備えているプロパティが何かを知る方法が提供されています。「メーカーコード」や「商品コード」に「製造番号」、「設置場所」というプロパティももっており、機器に関するより細かい情報を得ることができます。

すごくざっくり説明すると、機器側が電源を入れた際には、

image

的なことをやります。

また、コントローラ側から機器に問い合わせすることもできます。

image

こうやって、機器側の情報を取得し、その後、必要な制御をコントローラから機器側に行うことになります。


コントローラの実装

サンタさんお迎え装置を作るには、これまで考えたサービスを実現するコントローラを作成する必要があります。

1つは、OpenECHOを使う方法があります。Javaのプログラミングができる方は、Raspberry pi上でOpenECHOを使ってJavaアプリを作るのはそんなに難しくはないと思います。

次に、Node.js向けのECHONET Liteモジュールが公開されていますのでそれを使うという方法があります。

また、このモジュールを使い、Node-REDでECHONET Lite機器を制御されている方がいらっしゃるので、この方法で作成するという手もあります。


センサーノードを作成する

あと1つ足りないものがあります。

それは、サンタさんが来たことやサンタさんの状態を取得するための情報です。これにはセンサー機器が必要になってきます。ECHONET Liteでも、以下のようなセンサーについての規定があります。

規定されているセンサ
ガス漏れセンサ,防犯センサ,非常ボタン,救急用センサ,地震センサ,漏電センサ,人体検知センサ,来客センサ,呼び出しセンサ,結露センサ,空気汚染センサ,酸素センサ,照度センサ,音センサ,投函センサ,重荷センサ,温度センサ,湿度センサ,雨センサ,水位センサ,風呂水位センサ,風呂沸き上がりセンサ,水漏れセンサ,水あふれセンサ,火災センサ,タバコ煙センサ,CO2センサ,ガスセンサ,VOCセンサ,差圧センサ,風速センサ,臭いセンサ,炎センサ,電力量センサ,電流量センサ,昼光セ,水流量センサ,微動センサ,通貨センサ,在床センサ,開閉センサ,活動量センサ,人体位置センサ,雪センサ,気圧センサ

一方で、ECHONET Lite対応のセンサー製品はあまりみかけません。従って、センサーノードは自力で作成する必要があります。

これについても、Raspberry PiとOpenECHOを使うことで作成可能です。

Raspberry piで、OpenECHOを使った人感センサー・温度センサー・湿度センサーを実際に作ってみる記事を、後日Qiitaにあげる予定でいます。(今年の大晦日ハッカソンでやります。)


最後に

「もしも家中にECHONET Lite対応機器がいっぱいあったら」という前提のもとで、サンタさんをお迎えするシステムを実現する方法について考えてみました。

とはいえ、私の家にもECHONET Lite対応製品は1台もありません(汗)。

しかしながら、OpenECHOやTOPPERS/ECNLを使って、自作の機器を作成することは可能です。

ECHONET Lite対応にしておくと、作成した機器を他の人でも容易にシステムに組み込んで利用することができる、この点がメリットだと思います。

ECHONET Lite対応機器を作ってみようと思う方が一人でも増えることを願って、Merry X'mas!(まであと13日)。