Raspberry Pi4にnode-REDとGrafanaが使える環境を作る


概要

ICT農業と言われて久しい今日このごろ。市販システムもいいけれど、せっかくだから俺はこの赤の扉を選ぶぜnode-RED等の環境を自分で構築するメモ。

・node-RED
・InfluxDB
・Grafana
・Munin

材料

・Raspberry Pi4
せっかくUSB3があるので、USB-SSD等にRaspbianをインストールしてUSBブートにすることをオススメします。
・電源やSDカード、インターネット環境等
・困ったらgoogle検索する能力

ソフトウェアのインストール

muninとapache2

sudo apt install -y munin apache2 libapache2-mod-fcgid

LANからのアクセスを許可する場合、設定を変えてapache2を再起動。

sudo nano /etc/apache2/conf-available/munin.conf

Require ip [LANのネットワーク]/24を追加。

<Directory /var/cache/munin/www>
    Require local
    Require ip 10.0.1.0/24
    Options None
</Directory>

<Directory /usr/lib/munin/cgi>
    Require local
    Require ip 10.0.1.0/24
sudo service apache2 restart

node-RED

influxDBとGrafana

だいたい同じなので、最初にそれぞれのapt-keyを入れて一気にインストール。


wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
echo "deb https://repos.influxdata.com/debian stretch stable" | sudo tee /etc/apt/sources.list.d/influxdb.list

sudo apt-get update
sudo apt-get install -y grafana influxdb

自動起動するように設定

sudo systemctl enable grafana-server
sudo systemctl start grafana-server

sudo systemctl unmask influxdb 
sudo systemctl enable influxdb
sudo systemctl start influxdb

データベースを作っておく

influx
CREATE DATABASE mysensor
quit

Grafanaの設定

農業現場的にはWiFiさえ存在しない野生環境で使う事が多いと思われるので、認証機構が不要の人は以下を設定して認証機構を外しておく。
行頭に;があるので外してtrueに書き換えます。
Grafana自体の設定変更する場合、ID admin,Pass admin(初期設定の場合)でログインする必要があります。

sudo nano /etc/grafana/grafana.ini

allow_embedding = true
enabled = true
sudo service restart grafana-server

node-REDからinfluxDBを使うためのノードを追加する

PCとかからRaspberrypi.local:1880のnode-REDにアクセスして、influxDBノードを追加する。

なんか怖いこと言ってくるけど追加する。

influxdbのノードが追加されました。

influxDBノードの設定

influxDBのノードをマウスで「フロー1」にD&Dして追加→ダブルクリックすると、編集できます。
Serverの右にあるペンの形?をしたボタンを押すと、サーバへの接続情報を入力できるので、設定して追加する。

Host 127.0.0.1
Database mysensor

活用例

後述のDS18B20温度センサーを4つ繋げた例。たまに温度センサーを見失うので、delay等を入れたほうがいいかもしれません。

・node-RED

・Grafana

まとめ

・node-RED
http://raspberrypi.local:1880/
・influxDB
http://raspberrypi.local:3000/
・munin
http://raspberrypi.local/munin/

その他おすすめノード

・DS18B20 温度センサーノード
https://flows.nodered.org/node/node-red-contrib-ds18b20-sensor
農業あるある「とりあえず温度を知りたい」って場合に使われがちな1-wire温度センサーを使えるようにするノード。Raspberry Piにはこんな感じで繋ぎます。
https://www.google.com/search?q=raspberry+pi+ds18b20

Aliexpressやamazonなんかで安いものを買うと、偽物掴まされます。(掴まされました)
偽物の場合、5個1200円程度で、国内の信頼できるメーカと比べると段違いに安いですが、導線が無茶苦茶細くて切れやすく、ケーブルの長さが2〜3cm違い、パラサイト・パワー機能がありません。
私が掴んだ偽物では温度を測れましたが、たぶん二度と買いません。

多少高いけれども、偽物を掴みたくない場合は国内の信頼できる通販等を利用しましょう。

・LINE
https://flows.nodered.org/node/node-red-contrib-line-messaging-api

・twitter
https://flows.nodered.org/node/node-red-node-twitter

参照資料

http://bluearth.cocolog-nifty.com/blog/2020/04/post-4dea15.html
apt-cacher-ngを使っている環境の場合、node.js等のサーバをapt-cacher-ngが参照してくれないので、その対策。