複数のセンサを搭載したsensorTAGを使おう (4) 湿度の表示

湿度の表示は簡単

 温度と同じく湿度のデータを表示します。

※連載3回目までラズパイのOSのカーネルは4.4でした。その後2016年6月中旬に4.9.29に上がったころから、sensorTAGとの接続が不安定になりました。4.9.33ではつながらなくなりました。6月末、4.9.34になり、その時点でnode-REDを0.16.2から0.17.0へ更新すると、正常な接続に戻りました。カーネルとの問題だったかどうかは検証していません。

 node-REDのアップデートは、こちらのページのコラムを参照してください。

温度のfunctionをコピーして修正

 湿度の取り出し方は温度と同じなので、functionをCTRL+Cでコピーをし、CTRL-Vで貼り付けます。functionノードをダブルクリックし、次のように、書き換えます。

 完了をクリックし、sensorTagとdebugノード間を線をつなげます。デプロイを押すと、通常、ノード・アイコンの右上の小さな間丸印は消えるのですが、0.17.0では一部残っています。青色は正常という意味なので、無視します。

 温度のdebugノードは右のボタン部分をクリックし非表示に変更します。debugには湿度データだけが表示されます。

 ここまでのプログラムは次のようになります。

[{"id":"644de827.f2fde8","type":"debug","z":"dd15e4f.9f5a818","name":"","active":false,"console":"false","complete":"payload","x":470,"y":220,"wires":[]},{"id":"d075d55e.e7a248","type":"function","z":"dd15e4f.9f5a818","name":"周辺温度を抽出","func":"if (msg.topic === 'sensorTag/temperature') {\n msg.payload = msg.payload.ambient;\n return msg;\n} else {\n return null;\n}","outputs":1,"noerr":0,"x":287,"y":271,"wires":[["644de827.f2fde8","2405e2a3.bd723e","1436c7ee.592678"]]},{"id":"2405e2a3.bd723e","type":"ui_gauge","z":"dd15e4f.9f5a818","name":"","group":"a35a34f6.e6d578","order":0,"width":0,"height":0,"gtype":"gage","title":"Gauge","label":"℃","format":"{{value}}","min":0,"max":"60","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":490,"y":300,"wires":[]},{"id":"1436c7ee.592678","type":"ui_chart","z":"dd15e4f.9f5a818","name":"","group":"a35a34f6.e6d578","order":0,"width":0,"height":0,"label":"chart","chartType":"line","legend":"false","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","ymin":"0","ymax":"100","removeOlder":"10","removeOlderPoints":"","removeOlderUnit":"60","cutout":0,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"x":490,"y":340,"wires":[[],[]]},{"id":"2891cc66.1c67f4","type":"sensorTag","z":"dd15e4f.9f5a818","name":"","topic":"sensorTag","temperature":true,"humidity":true,"pressure":true,"magnetometer":true,"accelerometer":true,"gyroscope":true,"keys":true,"luxometer":false,"x":104,"y":178,"wires":[["d075d55e.e7a248","674713a.afdf7ec"]]},{"id":"674713a.afdf7ec","type":"function","z":"dd15e4f.9f5a818","name":"周辺湿度を抽出","func":"if (msg.topic === 'sensorTag/humidity') {\n msg.payload = Math.round(msg.payload.humidity);\n return msg;\n} else {\n return null;\n}","outputs":1,"noerr":0,"x":280,"y":380,"wires":[["97beb381.2ec16","d5e10a47.67df18"]]},{"id":"97beb381.2ec16","type":"debug","z":"dd15e4f.9f5a818","name":"","active":true,"console":"false","complete":"false","x":481,"y":407,"wires":[]},{"id":"d5e10a47.67df18","type":"ui_gauge","z":"dd15e4f.9f5a818","name":"湿度","group":"a35a34f6.e6d578","order":0,"width":0,"height":0,"gtype":"wave","title":"湿度","label":"%","format":"{{value}}","min":0,"max":"100","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":470,"y":460,"wires":[]},{"id":"a35a34f6.e6d578","type":"ui_group","z":"","name":"私の部屋","tab":"70de2c4b.0330c4","disp":true,"width":"6"},{"id":"70de2c4b.0330c4","type":"ui_tab","z":"","name":"Home01","icon":"dashboard"}]

 上記のプログラム内にマウスを置き、ダブルクリックするとすべてが選択できるので、CTRL+Cでコピーし、node-REDのキャンパス内で、CTRL+Iでインポートします。

 実行した結果は、次のようになります。

 湿度は小数点の位を表示する意味がないので、丸めます。functionノードを書き換えます。

if (msg.topic === 'sensorTag/humidity') {
msg.payload = Math.round(msg.payload.humidity);
return msg;
} else {
return null;
}