Pimoroni Enviro+ からGrafana(2/2)
続き。
Node-RED で MQTT Subscribe
Node-REDのnodeから、 mqtt input
を選択してワークフローにおく。
おいたnodeに subscribe 対象のBroker情報を設定
TOPICは、publisher で決めた enviro
今回は、MQTT Broker と Node-RED を同じサーバ上で設定するので、 localhost:1883
を設定
mqtt output の出力する msg.payload がテキスト文字列。見るだけならそれでもいいけど、JSON object に変換する必要がある。
debug をみると、ちゃんと JSON object になっていることを確認できる。
influxdb のsetup
influxdb を RPI にinstallする。
sudo apt-get install influxdb influxdb-client
sudo systemctl start influxdb.service
sudo systemctl enable influxdb.service
influx の client command で新しいdb metrics
を作成する。
influx
> create database metrics
これで準備OK。
Node-RED で msg.playload をinfluxdb に保存
Node-RED のパレット管理から、 node-red-contrib-influxdb
を追加。
新しいnode influxdb out
をワークフローにおく。
おいたnode は、先ほどsetupした influxdb 向けに設定する。
データベース名は、さきほど作成した metrics
Measurement
は、テーブル名みたいなもので、適当に metrics
とする。
あとは、ワークフローを deploy
すればNode-REDの作業は完了。
ちょっと長いけど、該当フローのimport用データ。
[
{
"id": "31191e6b.c62572",
"type": "influxdb out",
"z": "5697728c.fa632c",
"influxdb": "20229cc6.ea0ce4",
"name": "",
"measurement": "enviro",
"precision": "",
"retentionPolicy": "",
"x": 430,
"y": 500,
"wires": []
},
{
"id": "48049686.a554d",
"type": "json",
"z": "5697728c.fa632c",
"name": "",
"property": "payload",
"action": "",
"pretty": false,
"x": 210,
"y": 520,
"wires": [
[
"d6ba48bb.0abbb8",
"31191e6b.c62572"
]
]
},
{
"id": "d6ba48bb.0abbb8",
"type": "debug",
"z": "5697728c.fa632c",
"name": "",
"active": false,
"tosidebar": true,
"console": true,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 380,
"y": 560,
"wires": []
},
{
"id": "333a98a1.042c9",
"type": "mqtt in",
"z": "5697728c.fa632c",
"name": "",
"topic": "enviro",
"qos": "2",
"datatype": "auto",
"broker": "97d89bd2.4fdab8",
"x": 70,
"y": 520,
"wires": [
[
"48049686.a554d"
]
]
},
{
"id": "20229cc6.ea0ce4",
"type": "influxdb",
"z": "",
"hostname": "127.0.0.1",
"port": "8086",
"protocol": "http",
"database": "metrics",
"name": "",
"usetls": false,
"tls": ""
},
{
"id": "97d89bd2.4fdab8",
"type": "mqtt-broker",
"z": "",
"name": "mm-broker",
"broker": "localhost",
"port": "1883",
"clientid": "",
"usetls": false,
"compatmode": false,
"keepalive": "60",
"cleansession": true,
"birthTopic": "",
"birthQos": "2",
"birthRetain": "false",
"birthPayload": "",
"closeTopic": "",
"closeQos": "0",
"closeRetain": "false",
"closePayload": "",
"willTopic": "",
"willQos": "0",
"willRetain": "false",
"willPayload": ""
}
]
influx client command で確認すると、データがはいってるはず。
influx
Connected to http://localhost:8086 version 1.6.4
InfluxDB shell version: 1.6.4
> use metrics
Using database metrics
> select * from enviro
name: enviro
time humidity lux nh3 oxidised pressure reduced serial temperature
---- -------- --- --- -------- -------- ------- ------ -----------
1603319619846682675 28 32 111 6 102100 354 0000000026885ac9 28
...
Grafana の setup
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_5.2.2_armhf.deb
sudo dpkg -i grafana_5.2.2_armhf.deb
sudo systemctl enable grafana-server
sudo systemctl start grafana-server
あとは、以下のURLで起動を確認する。
今後は、仮に http://mm.local:3000/
とする。
Grafana の Data Source
http://mm.local:3000/datasources
setupしたinfluxdb からデータをとれるように、datasource
を設定する。
大事なことは、以下の2つ。
- HTTP URL ... http://localhost:8086
- HTTP Access .. Server(default)
DashboardからPanel設定。
あまりにめんどくさいので、作成した template を以下におくので、欲しい人は好きにして。
うまくimportできれば、以下の画像のようにそれらしいグラフが表示されるはず。