Pimoroni Enviro+ からGrafana(2/2)

最終更新日

Pimoroni Enviro+ からGrafana(1/2)

Pimoroni Enviro+ からGrafana(1/2)

2020.10.22

続き。

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://Node-REDのIP:3000/

今後は、仮に http://mm.local:3000/ とする。

Grafana の Data Source

http://mm.local:3000/datasources

setupしたinfluxdb からデータをとれるように、datasource を設定する。

大事なことは、以下の2つ。

DashboardからPanel設定。


あまりにめんどくさいので、作成した template を以下におくので、欲しい人は好きにして。

Enviro-1603369891235.json

うまくimportできれば、以下の画像のようにそれらしいグラフが表示されるはず。

シェアする