SensorTagの温度・湿度データをRaspberry Pi Node-REDでAmbientに送るメモ

以前の記事でSensorTagのデータが手軽に取れるようになったので、温度湿度データをRaspberry Pi Node-REDでAmbientに送るメモです。

今回の仕組み

SensorTag BluetoothをRaspberry Pi Node-REDで扱うメモ をもとにRaspberry Pi Node-REDで以下のようなフローを作ります。


(クリックすると拡大します)

SensorTagの温度湿度データを10秒ごとに送る仕様にしています。

変化が分かるように時間短めにしていますが、普段であればもっと間隔が広くてもいいでしょう。

設定

SensorTagノード

image

image

SensorTagノードは温度と湿度のチェックボックスだけチェックしておきます。

switchノード

image

image

switchノードは念のためtemperature自体の値の有無をチェックします。

今回は狙った値のみ取得していますが、複数のセンサーを取得しようとするとバラバラ来るので温度湿度データだけ間引くようにしています。

changeノード

image

image

changeノードは温度をd1の値に割り当て、湿度をd2に割り当てることで、Ambientでデータを貯めてもらえるようにします。

以前は、functionノードで律儀に書いてましたが、changeノードのほうが何をしているかが分かりやすくて良いですね。

triggerノード

image

image

triggerノードは10秒ごとに送る設定です。

Ambientノード

image

image

ChannelIdとWriteKeyにはAmbientの設定を入力します。

ここで準備完了です。

動かしてみる

デプロイをして実際に動かしてみましょう。

image

しばらく待って接続が開始されたら、

image

こちらのdebugノードに流れている内容を見てみます。

image

このように10秒ごとに値が発生して、同時にAmbientにも送られています。

Ambientサイトで値を表示してみます。

image

このように青が温度、赤が湿度で表示されます。

image

ちょっとSensotTagを手にもっていると、すこし手の湿り気に反応したようです。変化していますね。

今回のNode-REDフロー

今回のNode-REDフローは以下に置いておきます。SensotTagノードをインストールした上で、このノードインポートすれば使えます。

なお、AmbientのchannelId、writeKeyについては空欄にしてあるのでご自分のchannelId、writeKeyを入れてみて下さい。

[{"id":"9256982.9c33b68","type":"Ambient","z":"38f9aa23.c3e836","name":"","channelId":"","writeKey":"","x":1071,"y":350,"wires":[]},{"id":"537205a6.4191cc","type":"sensorTag","z":"38f9aa23.c3e836","name":"","topic":"sensorTag","uuid":"","temperature":false,"humidity":true,"pressure":false,"magnetometer":false,"accelerometer":false,"gyroscope":false,"keys":false,"luxometer":false,"x":103,"y":332,"wires":[["47ccd799.495578"]]},{"id":"463b22e6.7d99cc","type":"debug","z":"38f9aa23.c3e836","name":"","active":false,"console":"false","complete":"false","x":563,"y":297,"wires":[]},{"id":"18494484.66f09b","type":"change","z":"38f9aa23.c3e836","name":"温度 d1・湿度 d2 を割り当て","rules":[{"t":"set","p":"payload.d1","pt":"msg","to":"payload.temperature","tot":"msg"},{"t":"set","p":"payload.d2","pt":"msg","to":"payload.humidity","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":623,"y":349,"wires":[["c212dbf4.4594c8"]]},{"id":"47ccd799.495578","type":"switch","z":"38f9aa23.c3e836","name":"temperature 有無判定","property":"payload.temperature","propertyType":"msg","rules":[{"t":"nnull"}],"checkall":"true","outputs":1,"x":348,"y":349,"wires":[["18494484.66f09b","463b22e6.7d99cc"]]},{"id":"70765daf.43f0b4","type":"debug","z":"38f9aa23.c3e836","name":"","active":true,"console":"false","complete":"payload","x":1081,"y":296,"wires":[]},{"id":"c212dbf4.4594c8","type":"trigger","z":"38f9aa23.c3e836","op1":"","op2":"","op1type":"nul","op2type":"payl","duration":"10","extend":false,"units":"s","reset":"","name":"10 secごとに送る","x":882,"y":350,"wires":[["70765daf.43f0b4","9256982.9c33b68"]]}]

磁石センサー例

この流れで磁石センサーも試してみました。

image

SensorTag BluetoothをRaspberry Pi Node-REDで扱うメモでも言及していましたが、磁石センサーも使えます。

Button pressをオンにすると取得できまして、磁石がついてない状態をtrueなのでd3に1を送り、磁石がついてない状態をfalseなのでd3に0を送りAmbientでグラフにしてみました。

image

磁石センサーに磁石を近づけたり離したりしたときのグラフです。上手く反応しています。磁石センサーは、磁石を付けたオブジェクトのなんらかの近接・移動といった判定ができるので、可視化にはもってこいですね。

ということで、SensorTagの温度湿度データをRaspberry Pi Node-REDでAmbientに送ってみました。

センサーデータが取り出しやすく可視化がすぐにできるということは、それを元にして解決したいことへの対策や改善の一手が早く打てるということなので、この事例が試すことで片鱗が見え、ワクワクします。

それではよき、SensorTag & Node-RED & Ambient Life を。