EnOcean

obnizとEnOceanスイッチを使って故郷の親が軽くメッセージを送れるシステム

この記事はobniz Advent Calendar 2020の9日目の記事となります。

前回は環境センサーを使ってひたすら見守るというシステムでしたが、今回は親の方から能動的になにかを伝えたいけど、スマホは使ってくれないという家庭に向けてのソリューション!?です。

高齢者のゆるい見守りに!EnOcean環境センサとobnizを使った見守りシステム

システムの流れ

Enocean ble obniz

EnOceanのスイッチ(EWSDB)を押すと、ラズパイがBLEを受信し、その押したボタンによって、obnizにメッセージを送るというもの。

それによって、高齢の親が、急ぎではないけど何かを息子や娘に伝えたい、孫の声がききたいといったような気持ちを離れたところに住む子供につたえられればという考えです。

ファミレスの呼び出しボタンに近くなってしまうかもしれませんが、こういう方法もあるということを心にとめておいていただければ幸いです。

(EnOceanスイッチとラズパイを親の自宅に設置、自分はそのメッセージをobnizで受け取る)

EnOcean 無線スイッチ EWSDBとは?

EWSDB img 600x597

ドイツ EnOcean社製のBLE無線スイッチです。最大の特長は電池がいらないこと。

ボタンを押した時の力を使って発電し、BLE通信でどこのボタンが押されたという情報を送ります。

↓スイッチサイエンスさんで販売中
EnOcean Easyfit Single ダブルロッカー壁面スイッチ EWSDB(BLE) – スイッチサイエンス

Node-REDのフローについて

12 08

Node-REDのフローは上記の通り。

↓ こちらのフローです。

[{"id":"d8cc4083.80042","type":"BLE Beacon Scanner","z":"da22126.e0222f","name":"BLE Scanner","x":130,"y":100,"wires":[["26cebd03.573ff2"]]},{"id":"26cebd03.573ff2","type":"switch","z":"da22126.e0222f","name":"フィルター","property":"payload.id","propertyType":"msg","rules":[{"t":"eq","v":"e50010000efb","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":210,"y":160,"wires":[["58985bb4.3a0f14"]]},{"id":"58985bb4.3a0f14","type":"delay","z":"da22126.e0222f","name":"流量制限","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"0.1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":320,"y":220,"wires":[["efb95cff.af73f"]]},{"id":"efb95cff.af73f","type":"function","z":"da22126.e0222f","name":"電文デコード","func":"var Packet = msg.payload.other\nvar Temp = (Packet[8]*256+Packet[7])/100\nvar Humid = Packet[10]/2\nvar Lux = Packet[13]*256+Packet[12]\nvar Energy = Packet[22]/2\nvar contact = Packet[20]\nif ( contact == 2 ) { contact = \"Close\" } else { contact = \"Open\" } \n \nvar data = {\n    \"Temp\": Temp,\n    \"Humid\": Humid+'%',\n    \"Lux\": Lux+'lux',\n    \"Contact\": contact,\n    \"Energy\": Energy+'%'\n}\nmsg.payload = data\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","x":420,"y":280,"wires":[["dfd8995c.6a0588"]]},{"id":"78eb81ca.ae52f","type":"comment","z":"da22126.e0222f","name":"EnOceanセンサーからobnizに表示するフロー","info":"","x":230,"y":40,"wires":[]},{"id":"dfd8995c.6a0588","type":"obniz-function","z":"da22126.e0222f","obniz":"4ea9cf05.2f90f","name":"obniz","code":"var value = msg.payload;\r\n\r\nobniz.display.clear();\r\n\r\n//obniz.display.print(value);\r\n\r\nobniz.display.print('Temp:'+value['Temp']+'\\n');\r\nobniz.display.print('Humid:'+value['Humid']+'\\n');\r\nobniz.display.print('Lux:'+value['Lux']+'\\n');\r\nobniz.display.print('Contact:'+value['Contact']+'\\n');","x":590,"y":280,"wires":[[]]},{"id":"4ea9cf05.2f90f","type":"obniz","z":"","obnizId":"00000000","deviceType":"obnizboard","name":"","accessToken":"","code":""}]

obnizノードのインストールと設定は、前回の記事を見てください。

高齢者のゆるい見守りに!EnOcean環境センサとobnizを使った見守りシステム

では、解説していきます。

BLE Beacon ScannerからEnOcean電文デコードまで

EnOceanスイッチのデータを受信するには”node-red-contrib-blebeacon-scanner”ノードを利用します。

↓このライブラリのインストールは下記の記事を参考にしてください。
チュートリアル:ラズパイにNode-REDを入れてEnOcean(BLE)の環境センサーを接続する2/2|デジタルライト(Digital-light.jp)

そのままだと、空間に飛んでいる他のBLEデータを受信するので、Switchノードを使ってフィルタリングします。

Enocean switch id

本体裏側にIDが表記されています。

12 07

Node-REDのSwitchノードに入れてフィルタリング。

12 07

同じメッセージが複数回飛んでくるので、delayノードを使って流量制限。

12 07

受け取ったメッセージをfunctionノードでデコードします。

Button no

4つのボタンを上のような番号とすると、押した時、離した時に受け取るデータは下表のとおりとなります。

Enocean table

2つのボタンを同時に押したときの値もあります。ボタンとしては8通り、押した時、離した時で合計16の異なるデータを受信することができます。

今回はボタンのとおり4つメッセージを決めました。

ボタン番号 メッセージ
I’m fine.(元気だ)
I’m tired.(ちょっと疲れた)
Are you OK?(お前は元気か?)
Please call me.(連絡欲しい)

obnizの液晶には日本語が表示できないので、送られるのは英字部分となります。

12 07

押されたボタンによって、メッセージを切り替える処理をfunctionノードに書きます。

↓ functionノードのコード

var value = msg.payload;
var message = "na";

if ( value == "3") {
    message = "I'm fine.";    
} else if ( value == "5") {
    message = "I'm tired.";
} else if (value == "9" ) {
    message = "Are you OK?";
} else if ( value =="17" ) {
    message = "Please call me.";
}

if ( message != "na" ) {
    msg.payload = message;
    return msg;
}
12 07

obnizノードのコードはこのとおりです。

12 07

あと、起動時にobnizの画面をクリアさせる処理も入れておきます。

12 07

injectノードで起動時1秒後に日時を送るようにします。

12 07

obnizノードには、clear()だけ実行します。

動作確認

Enocean

以上のとおり、ボタンごとにobnizに異なるメッセージが表示されます。

あとは、テプラでどのボタンが何のメッセージになるか、わかるように貼っておくと便利です。

まとめ

以上、ボタンを押したときのエネルギーを利用して発電し、BLEのデータを送ることができる”EnOceanスイッチEWSDB”を使った、”obnizを使って故郷の親が軽くメッセージを送るシステム”をご紹介しました。

前回の環境センサと組み合わせて、ゆるい見守りと、ボタンによる親からの軽いメッセージ送信機能を組み合わせれば、適度にゆるい見守りシステムができるのではないかなと思っています。

ABOUT ME
中畑 隆拓
スマートライト㈱ 代表取締役。IoTソリューションの開発、スマートホーム&オフィスのコンサルティング、DALI,KNX,EnOceanなどのインテグレーションを行っています。