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

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

・node-RED
・InfluxDB
・Grafana
・Munin

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

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

###muninとapache2

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

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

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

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

```apache
<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
```

```bash
sudo service apache2 restart
```

###node-RED
https://qiita.com/HeRo/items/432e4d28055571f1acfb

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

```bash

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
```

####自動起動するように設定

```bash
sudo systemctl enable grafana-server
sudo systemctl start grafana-server

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

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

```bash
influx
CREATE DATABASE mysensor
quit
```

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

```bash
sudo nano /etc/grafana/grafana.ini

allow_embedding = true
enabled = true
```

```bash
sudo service restart grafana-server
```

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

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

http://raspberrypi.local:1880/

![スクリーンショット 2021-02-28 18.44.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181687/c0b89047-3c16-3c38-4b7f-ecd7dacdb856.png)

![スクリーンショット 2021-02-28 18.46.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181687/45cb4db1-e381-8892-ed9f-cde238b6fa86.png)

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

![スクリーンショット 2021-02-28 18.49.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181687/deaa1e16-ac2b-ac1d-b953-0945cc11b749.png)

![スクリーンショット 2021-02-28 18.51.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181687/ce93c4a3-8c2e-bad7-a8ad-0d5ad947d9e9.png)

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

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

Host 127.0.0.1
Database mysensor

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

・node-RED
![スクリーンショット 2021-02-28 2.46.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181687/817efe86-1aaf-2cb4-17a9-55f5bec6a44f.png)

・Grafana
![スクリーンショット 2021-02-28 12.48.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181687/438b5882-fdd9-4a4c-cfb2-cc1b46fefab0.png)


##まとめ
・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円程度で、国内の信頼できるメーカと比べると段違いに安いですが、導線が無茶苦茶細くて切れやすく、ケーブルの長さが２〜３ｃｍ違い、パラサイト・パワー機能がありません。
私が掴んだ偽物では温度を測れましたが、たぶん二度と買いません。

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

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

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

##参照資料
https://qiita.com/HeRo/items/432e4d28055571f1acfb

https://notenoughtech.com/raspberry-pi/grafana-influxdb/

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