Tibbo-Pi の Node-RED と Firebase をつないで照度センサーの値を記録するメモ

Tibbo-Pi の Node-RED と Firebase をつないで照度センサーの値を記録するメモです。

やりたいこと

センサーや仕組みをブロック的に加えられるTibbo-Pi Raspberry Piで複数のLEDを光らせたメモでTibbo-PiのNode-REDの動かせました。

今回は照度センサーブロックで明るさを検知して、Firebaseにデータを保存するまでをやってみます。

前回のLEDから取り外す

前回のLEDブロックがついているので外します。

image

LEDブロックを外そうにも 003 ブロックが引っかかって取りにくいので、先に外します。

image

専用のピンセットで 003 ブロックの方から外します。

照度センサーブロック 28 をとりつける

003 ブロック取り外せたら、LEDブロックと照度センサーブロックを入れ替えます。

image

照度センサーブロックはこちらの28です。

#28 照度センサ のマニュアル

image

さきほど、すでに003ブロックを一度外しています。LEDを外して今回の照度センサーブロックを入れ替えます。

image

今回の照度センサーブロックにも003ブロックは必要なので装着しました。

ここで気づいたことですが、下のSLOT6の印字に書いてあるイラストでは片方の角が欠けているのですが、ブロックに書れている図も片方の角が欠けてと絵が一致しているんですよね。これは気づくと、前回 003 ブロックの装着する方向を間違えたことも回避できそうです。

image

ということで装着できました。

image

Tiibo-Piにフタをして。

image

電源をONにします!

Node-REDで照度センサーを動作確認

Node-REDでTibbo-Pi ノードで作っていきます。5秒ごとに照度センサーをチェックをしてデバックタブで表示するフローです。

image

#28 照度センサのチュートリアル を参考にして、今回は照度センサーにあたる 28 ブロックのノードをSLOT6に装着したので、フローを合わせます。

image

こちらが、

image

このように設定されています。 Slot 部分がSLOT6なので、S06に合わせてあります。StatusもConnectingにします。

動かしてみましょう!

image

こちらをデプロイしてみると、このようにデバックタブで明るさが5秒ごとに表示されます。お手軽ですね。

ここまでのJSONデータ

[{"id":"f583ac3d.9acf","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"142c00d9.08c22f","type":"tp-initialize","z":"f583ac3d.9acf","name":"","make":true,"connect":false,"x":220,"y":140,"wires":[]},{"id":"3a9dab4b.740514","type":"Tibbit-#28","z":"f583ac3d.9acf","name":"","tpSlot":"S06","communication":"I2C","connectedStatus":"start","host":"","x":420,"y":200,"wires":[["9a1b33bf.96cd5"]]},{"id":"5baf0615.6ba168","type":"inject","z":"f583ac3d.9acf","name":"repeat 5 sec","topic":"","payload":"","payloadType":"date","repeat":"5","crontab":"","once":false,"onceDelay":0.1,"x":240,"y":200,"wires":[["3a9dab4b.740514"]]},{"id":"9a1b33bf.96cd5","type":"debug","z":"f583ac3d.9acf","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":630,"y":200,"wires":[]}]

Firebaseの準備

image

Firebaseの準備です。

image

ルールはテストモードで開放しておきます。

image

Firebaseは結構頻繁にUIが変わるのですが、今はProject Overviewでアプリ名の下のところから設定を確認します。

image

projectIdをFirebaseノードで使うので控えておきます。

Node-REDでfirebaseノードをインストール

node-red-contrib-firebase – Node-RED

こちらをインストールします。

メニューからManaged Palette > Install タブに移動してインストールします。

image

インストールできました。

image

左のパレットエリアにfirebaseノードが入りました。

Firebaseにpushする機能を追加する

Firebaseにpushする機能を追加するフローはこのようになります。

image

firebase modifyノードを加える

先ほどのフローのTibbit 28ノードとdebugノードの間に、

image

firebase modifyノードというfirebaseのRealtime Databaseのデータ変更するノードを加えます。

image

このように加えます。

firebase modifyノードの設定

image

こちらの設定の詳細は以下のとおりです。

image

  • Child Path
    • tibbo-pi/light
  • Method
    • push
  • Value
    • msg.payload
  • Name
    • /tibbo-pi/light

Firebase接続先の設定

image

Firebaseの接続先の設定は、鉛筆ボタンで見れます。

image

Firebaseのところには、先ほどメモした projectId を入力して、Auth TypeはNoneにします。

ここまでのJSONデータ

ここまでのJSONデータです。

[{"id":"142c00d9.08c22f","type":"tp-initialize","z":"f583ac3d.9acf","name":"","make":true,"connect":false,"x":220,"y":140,"wires":[]},{"id":"3a9dab4b.740514","type":"Tibbit-#28","z":"f583ac3d.9acf","name":"","tpSlot":"S06","communication":"I2C","connectedStatus":"start","host":"","x":420,"y":200,"wires":[["e2bdc6e4.f06fb8"]]},{"id":"5baf0615.6ba168","type":"inject","z":"f583ac3d.9acf","name":"repeat 5 sec","topic":"","payload":"","payloadType":"date","repeat":"5","crontab":"","once":false,"onceDelay":0.1,"x":240,"y":200,"wires":[["3a9dab4b.740514"]]},{"id":"9a1b33bf.96cd5","type":"debug","z":"f583ac3d.9acf","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":810,"y":200,"wires":[]},{"id":"e2bdc6e4.f06fb8","type":"firebase modify","z":"f583ac3d.9acf","name":"/tibbo-pi/light","firebaseconfig":"","childpath":"tibbo-pi/light","method":"push","value":"msg.payload","priority":"msg.priority","x":630,"y":200,"wires":[["9a1b33bf.96cd5"]]}]

動かしてみる

では、FirebaseのRealtime Databaseでデータを確認できるようにしておきます。

image

確認できたらNode-REDのほうでデプロイして試してみましょう。

image

このようにデータがpushされて蓄積されます!

Tibbo-Piはセンサーが手軽につなげられるので、Firebaseのようなデータを蓄積できるサービスにつなげられると、その先でデータ分析ができたり、はたまたTibbo-Pi側でなにかを動かしたりと、IoTの連携がしやすくなりますね!

それでは、よきFirebase & Tibbo-Pi Lifeを!