#目的
部屋の温度、湿度をセンサで取得する。
#準備
-ラズパイ
-Node-RED(ラズパイ3にNode-RED環境を構築する)
-DHT11センサ
#配線
ラズパイ | DHT11 |
---|---|
5V(PIN2) | VCC |
GPIO04(PIN7) | DATA |
GND(PIN30) | GND |
#Node-REDにDHT11ノードをインストール
##Node-REDでDHT11を使用できるようノードを追加する。
Npde-REDのパレット管理から「node-red-contrib-dht-sensor」を追加する。
##参考資料
node-red-contrib-dht-sensor
#DHT11ノードを設定する。
左側のノード一覧より「Raspberry Pi」→「rpi dht22」を選択し、フローに配置する。
各項目を下表のように設定する。
設定項目 | 設定値 |
---|---|
Sensor model | DHT11 |
Pin numbering | BCM GPIO |
Pin number | 4 |
#処理周期を決める
##周期実行タイマを追加する
DHT11から温度、湿度を取得するタイミングを決める。
「inject」モジュールを使用する。
##周期設定する
1秒ごとに繰り返す設定にする。
#DHT11からデータを取得する。
DHT11で取得したデータはmsgオブジェクトで出力される。
「debug」ノードを「rpi-dht22」ノードに接続し、msgオブジェクト全体を取得する。
デバッグ情報から「payload」に温度、「humidity」に湿度が文字列でセットされている。
#ダッシュボードに出力する
Node-REDには出力結果を表示するダッシュボードがある。
ここでは「gauge」ノードを使用する。
##温度のゲージを設定する。
温度情報は、msg.payloadにセットされているので、「value format」に設定する。
それ以外は適切に設定する。
##湿度のゲージを設定する。
湿度情報は、msg.humidityにセットされているので、「value format」に設定する。
それ以外は適切に設定する。
#全体のフロー
Node-REDはフローをJSONで表現することができる。
[{"id":"46b259d0.6696e8","type":"tab","label":"フロー 1","disabled":false,"info":""},{"id":"5b2c5419.7052ec","type":"ui_gauge","z":"46b259d0.6696e8","name":"","group":"2fb4fd33.8cdef2","order":1,"width":4,"height":2,"gtype":"gage","title":"温度[℃]","label":"℃","format":"{{msg.payload}}","min":"-5","max":"45","colors":["#00b500","#e6e600","#ca3838"],"seg1":"25","seg2":"35","x":520,"y":140,"wires":[]},{"id":"ab6090c7.4d72b","type":"ui_gauge","z":"46b259d0.6696e8","name":"","group":"2fb4fd33.8cdef2","order":4,"width":4,"height":2,"gtype":"gage","title":"湿度[%]","label":"%","format":"{{msg.humidity}}","min":"20","max":"80","colors":["#00b500","#e6e600","#ca3838"],"seg1":"40","seg2":"70","x":520,"y":200,"wires":[]},{"id":"c3c64c67.521b1","type":"rpi-dht22","z":"46b259d0.6696e8","name":"","topic":"rpi-dht22","dht":"11","pintype":"0","pin":"4","x":320,"y":80,"wires":[["5b2c5419.7052ec","ab6090c7.4d72b","72eea165.55a95"]]},{"id":"dec320d9.e064c","type":"inject","z":"46b259d0.6696e8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"1","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":130,"y":80,"wires":[["c3c64c67.521b1"]]},{"id":"72eea165.55a95","type":"debug","z":"46b259d0.6696e8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":490,"y":80,"wires":[]},{"id":"2fb4fd33.8cdef2","type":"ui_group","z":"","name":"センサ","tab":"21ab0c69.4ac974","order":1,"disp":true,"width":11,"collapse":false},{"id":"21ab0c69.4ac974","type":"ui_tab","z":"","name":"温度・気温","icon":"dashboard","order":1,"disabled":false,"hidden":false}]