コロナのさなかに誕生したAndroid用アプリ「Nano」を動かすためのメモです。
NanoはECHONET Liteのコントローラとして実装されています。特に実用性はありませんが、楽しくECHONET Liteに入門することをめざしています。現在はまだ電源のON/OFFを受け取ることしかできませんし、アナウンス等処理を端折っているところがあります。つまり、ECHONET Liteの仕様に従っていないところがあります。ゆっくり開発していくので長い目で見ていただければ嬉しいです。コントローラなのに今は何もコントロールできないので、そのうちそういったリモコン機能も足していきたいと思います。

一部あまり初心者向けではない気がする内容が含まれていますが、順番に実施すれば難しくはないと思うのでぜひ挑戦してみてください。


Androidを二台、またはAndroid一台とPC一台用意する

ここが一番ハードルが高いかもしれません。ECHONET Liteでは、IPアドレス一つあたり、一つの機器モジュールを実装することしかできません(正確には「ノード」といい、一つのノードに複数の機器を入れることはできますが、二つ以上のプログラムを一つのIPアドレスで同時に動かすことができません)

一台のAndroidはAndroidアプリであるNanoの実行を行うためのものです。
Google PlayからNanoをインストールしておいてください。

もう一台はそれをコントロールするために今回用いるPicoGWというソフトウェアを実行するためのものです。PicoGWはnode.jsというプログラミング処理系を使いますので、PCの場合はそれを使えるようにしておいてください。node.jsはWindowsでもMacでもLinuxでも使うことができます

Androidを使う場合はTermuxというアプリをインストールし、その中でnode.jsを使えるようにします。次節でその方法について説明します。

なお、PicoGWを使わなくても、ECHONET Liteで機器に対してコマンドを送信できる環境のお持ちの方はそれを用いることができます。

Androidでnode.jsを使えるようにする

Androidでnode.jsを使うには、まずGoogle Playから「Termux」というアプリをインストールします。



立ち上げるとこんな感じになります。



Termuxは知る人ぞ知る神アプリですが、初心者を寄せ付けない渋い見た目ですね。でもよく見ると、多量の文字の最後に

$ ■

と出ていると思います。めげずにそこで、半角英文字で以下のように打ち込んでください。

pkg install nodejs [enter]



すると、以下のような表示が出て途中で止まるかもしれません。

Do you want to continue? [Y/n]



これが出たら、[enter]を押して先に進んでください。また以下の表示になったら成功です。

$ ■

PicoGWのインストール

Android以外の説明を端折りましたが、とりあえずnode.jsを使えるようになったら、次は無料のECHONET LiteゲートウェイソフトウェアであるPicoGWをインストールします。それは以下のコマンド一発です。

npm i -g picogw [enter]

これには割と時間がかかります。しばらくして、以下のような表示になれば成功です。これはTermuxの例ですが他のOSでも大差ありません。数字など微妙に違う表示になるかもしれませんが気にしなくて大丈夫です。



PicoGWを実行し、Nanoを見つける

まず、NanoをインストールしたAndroidと、PicoGWをインストールしたAndroidやPCを同じネットワークに接続してください。

そうしておいて、PicoGWを実行します。

picogw [enter]

そして、もう一つのAndroidでNanoも立ち上げます。Nanoの初期画面は次のようになるはずです。



うまくいけば、PicoGWの出力する文字の中に次のようものが含まれているはずです。

2:52:51 PM: echonet plugin> Device controller_1/aa:bb:cc:dd:ee:ff registered.

※最初の部分はタイムスタンプなので、現在に近い時間になっているはずです。
※aa:bb:cc:…ff は、Macアドレスというもので、違う文字列になっているはずです。

この行の中で、aa:bb:cc…の前にあるcontroller_1というところが重要です。これが、PicoGWが発見したコントローラで、同じネットワーク上に他のコントローラがない場合はNanoのことです。

もしその行がない場合は、PicoGWはNanoに気づいていません。PicoGWとNanoが同じネットワークにいるか、PicoGWをPC等で走らせている場合はファイアーウォールなどがないか、など、チェックしてください(ポートとしてはECHONET Lite標準の3610 UDPを用います)。あっても見つからない場合は、Nanoを一旦落としてから再度立ち上げてみてください。

curlでNanoの電源操作

PicoGWがNanoを見つけられれば、あとはECHONET Liteの電源変更コマンドを送るだけです。

PicoGWはHTTPのRESTアクセスでECHONET Liteのコマンドを送ることができます。RESTを簡単に送るには、curlというコマンドを用います。Termuxや、たいていのOSにはcurlが最初から入っています。

curlコマンドを使うには、今PicoGWが走っているセッション(シェル)はそのまま走らせておかないといけないので、別のセッションを開きます。Termuxの場合は下図のように、画面の左端(画面外)から右にスワイプすると白いセッション画面が出てくるのでここから下の方の「New Session」を押して、新セッションを開いてください。



新しいセッションは、こんな感じになります。最初の画面と同じになりますが、見えているのは二つ目のセッションで、裏(最初のセッション)でPicoGWが走っています。



center>

ここで、以下のように打ち込んでください。

curl -X PUT -H "Content-Type: application/json" -d '{"value":"on"}' http://localhost:8080/v1/echonet/controller_1/operatingstate

これは、echonetのcontroller_1というデバイスのoperatingstateというリソースに、{“value”:”on”}というJSONオブジェクトをPUTしているということになります。いきなり意味の分からない言葉がたくさん出てきたかもしれませんが、要はPicoGWに、「controller_1に、ECHONET Liteで電源をONコマンドを送ってね」と指示する意味になります。うまくいけば、Nanoが登場するはずです。



{“value”:”on”}となっているところを、{“value”:”off”}にすれば電源OFFです。



Nanoが退場しましたか?

ちなみにcurlコマンド内の「controller_1」というところを変えると(PicoGWがその機器を見つけていれば)他のECHONET Liteの機器の電源を入れることもできます。

以上です。

PicoGWのドキュメント

PicoGWは商用利用もされている、安定に動作するデバイスゲートウェイです。HoikutechチームはこれをNanoGWという名前の保育クラウドに接続し、研究に用いています。

日本語ドキュメントはここにありますので、他のコマンドを知りたかったり、MQTTに接続したい場合は参照してください。

その他マニア向け設定リンク

Termuxの様々な設定が載っているリンクです。

Termuxを素早く設定