EnOceanのスイッチストライクエアーという製品を使ってトイレセンサーを作ってみました。
電池不要のIoTデバイスで今後ますます増えていくのではないでしょうか?
今回はNode-REDを使ってセンサー値をFirebaseにアップするところまでを行います。
そもそもEnOceanって?
EnOcean(エンオーシャン)はエネルギーハーベスティング無線通信技術のことを指します。
小型ソーラーパネルやスイッチ動作などで得られる様々な微弱エネルギー源から電力を生成し、その電力を用いてセンサーを動作させ、無線通信を行います。 「電池が不要、かつ、配線が不要なセンサー」という事です。免許不要な無線帯域(928MHz帯)を使っています。
スイッチストライクエアー
スイッチストライクエアーは株式会社シブタニの製品です。特徴は、トイレの鍵のスライド動作に反応し、発電します。鍵の部分に小さなスイッチがあり、スライドする毎にスイッチが押されます。
そのスイッチが押されると、センサーが反応し無線通信を行います。
EnOcean受信ゲートウェイ環境
送信されたデータを受信するために必要なゲートウェイ環境は以下の通りです。
基本的に送信された信号を受信するUSBドングルとラズパイで行います。
イメージ図
スイッチストライクエアーが反応したらラズパイで信号を受け取り、Firebaseに情報を保存する形です。
Google Homeと連携して通知することも可能です。
1: ラズパイにNode-REDをセットアップ
ラズパイのOSを入れるとデフォルトでNode-REDが入ると思います。
node-red-start
してNode-REDを起動しましょう。
2: Node-REDの設定
Node-REDの設定を順番に行っていきます。
2-1: serialノード設定
inputノードにあるserialノードをドラッグアンドドロップしてダブルクリックします。
Serial Portは右側の虫メガネアイコンをクリックして検索します。
2-2: 電文デコーダーダウンロード
serialで受信した電文をデコードします。EnOceanを取り扱っているアーミン株式会社の方が作成したNode-RED用のデコーダーがあるので、ありがたく使わせてもらいます。
2-3: デコーダーをNode-REDへ追加
右上のハンバーガーメニューからImport→Clipboardをクリックし、2-2でダウンロードしたEnOceanTelegramDecoder.json
の中身をコピペして貼り付けます。右下のImportボタンをクリックすればNodeが追加されます。
2-4: デバッグノードをつないで受信チェック
デバッグノードを設置して各ノードを接続しましょう。スイッチストライクエアーのボタンを押下すると、データが受信できるかと思います。スイッチストライクエアーはドアが閉まっていればData1の値が「00」でドアが空いていれば「80」の信号が来ます。
EnOceanのスイッチストライクエアーのデータをNode-REDで受信 pic.twitter.com/BJqYW6MalZ
— がおまる@スマートスピーカーアプリ開発入門発売中! (@gaomar) 2018年10月31日
3: Firebaseプロジェクト作成
Firebaseへアクセスして新規プロジェクト作成してください。
3-1: RealtimeDatabaseの設定
誰でもアクセスできるようにルールの設定を変更します。
{
"rules": {
".read": true,
".write": true
}
}
3-2: Firebaseのデータベースに保存するノードを設置する
再びNode-REDを開いてFirebaseに保存するためのノードを設置します。
まずはアップするためのデータを成形します。templateノードをドラッグアンドドロップして下記コードを入力します。
var flg = '空室';
if (msg.payload.Data1 === '00') {
flg = '使用中'
}
msg.payload = {
"word": flg
}
return msg;
3-3: FirebaseへPUTする
http responseノードをドラッグアンドドロップしてダブルクリックします。
メソッドは必ず「PUT」を選択して、URLにFirebaseのURLを指定します。toilet.jsonに保存したいので、json名を指定しました。
https://<FirebaseのプロジェクトID>.firebaseio.com/toilet.json
3-4: 各ノードをつなげる
各ノードをつないで、スイッチストライクエアーのボタンを押下するとFirebaseはデータがアップされます。
まとめ
かなり簡単にEnOceanのデータを受信してFirebaseにデータの可視化をすることができました。
EnOceanは今後ますます増えていくこと間違いなしかと思います。
次回はこのデータを活用してLINE BotやGoogle Homeの連携してトイレが空いているかどうかさらに可視化したいと思います。
システム化のご検討やご相談は弊社までお問い合わせください。
https://i-enter.co.jp/contact/