ラズパイで温度、湿度情報を取得する（DHT11センサ）

#目的
　部屋の温度、湿度をセンサで取得する。

#準備
-ラズパイ
-Node-RED([ラズパイ3にNode-RED環境を構築する](https://qiita.com/make_tomo/items/57387165691b1defe47a))
-[DHT11センサ](http://akizukidenshi.com/catalog/g/gM-07003/)

#配線
|ラズパイ  |DHT11|
|:--------|-----:|
|5V(PIN2) |VCC|
|GPIO04(PIN7) |DATA|
|GND(PIN30) |GND|

#Node-REDにDHT11ノードをインストール
##Node-REDでDHT11を使用できるようノードを追加する。
 Npde-REDのパレット管理から「node-red-contrib-dht-sensor」を追加する。
![2020-08-13_16h57_42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182869/65b2044c-c2de-3fd7-9282-05c46fda1d17.png)

##参考資料
[node-red-contrib-dht-sensor](https://flows.nodered.org/node/node-red-contrib-dht-sensor)

#DHT11ノードを設定する。
左側のノード一覧より「Raspberry Pi」→「rpi dht22」を選択し、フローに配置する。
![2020-08-13_17h01_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182869/04dbc840-4f1f-a5eb-cf19-2b4fd88e9477.png)

ノードをダブルクリックして編集画面を表示させる。
![2020-08-13_17h02_20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182869/c2461f78-bf66-79a2-c514-40d00ac06257.png)

各項目を下表のように設定する。

|設定項目|設定値|
|:--------|-----:|
|Sensor model|DHT11|
|Pin numbering|BCM GPIO|
|Pin number|4|

#処理周期を決める
##周期実行タイマを追加する
 DHT11から温度、湿度を取得するタイミングを決める。
 「inject」モジュールを使用する。
![2020-08-14_15h30_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182869/f846eeee-6469-25c0-387d-1d1a5676c231.png)

##周期設定する
　1秒ごとに繰り返す設定にする。

![2020-08-14_15h32_50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182869/841c1813-40e9-6f6c-adf8-09d5d4fe6498.png)

#DHT11からデータを取得する。
 DHT11で取得したデータはmsgオブジェクトで出力される。
「debug」ノードを「rpi-dht22」ノードに接続し、msgオブジェクト全体を取得する。
![2020-08-14_15h44_43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182869/f06728f0-253c-e223-bd7f-751ccba04a53.png)

デバッグ情報から「payload」に温度、「humidity」に湿度が文字列でセットされている。
![2020-08-14_15h45_40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182869/2dd79a13-a317-7c15-1cf9-0e563d90416f.png)

#ダッシュボードに出力する
 Node-REDには出力結果を表示するダッシュボードがある。
 ここでは「gauge」ノードを使用する。
![2020-08-14_15h50_35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182869/87f06da1-da1d-555c-072f-5bab1bbdc1ea.png)

##温度のゲージを設定する。
　温度情報は、msg.payloadにセットされているので、「value format」に設定する。
　それ以外は適切に設定する。
　![2020-08-14_15h52_54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182869/18e9b064-259c-bb00-12b0-b2202560452c.png)

##湿度のゲージを設定する。
　湿度情報は、msg.humidityにセットされているので、「value format」に設定する。
　それ以外は適切に設定する。
![2020-08-14_15h53_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182869/af9ca658-e908-081b-19c0-68b596e8da94.png)

#ダッシュボード画面を表示する
![2020-08-14_15h58_56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182869/fbc3cbb9-ffb1-5516-e269-f2b07921aaf5.png)

![2020-08-14_16h00_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182869/2859d0c0-c292-12fe-1c57-9997516b2be7.png)

#全体のフロー
 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}]