RaspberryPiでIoTの可視化(Node-RED版)

提供: ディーズガレージ wiki
移動先: 案内検索
Node-RED
freeboard

リソース消費が激しいので途中で断念します。
RaspberryPiでリソースの可視化(NetData版)
RaspberryPiでIoTの可視化(Grafana版)
で検証してみます。

センサ使うとダッシュボード欲しくなります。
お手軽感でNode-RED使ってみます。

開発環境

ボード Raspberry Pi 1 Model B
OS Raspbian Jessie with PIXEL 2017-04-10
microSDHC SanDisk Ultra microSDHC Class10 8GB
LAN 標準搭載の有線LAN

ファームウェア更新

$ sudo rpi-update

再起動

$ sudo reboot

最新状態にアップデート

$ sudo apt-get update
$ sudo apt-get upgrade

再起動

$ sudo reboot

ホスト名

ホスト名変更

$ sudo leafpad /etc/hostname

変更

iot

ホスト名変更

$ sudo leafpad /etc/hosts

変更

127.0.1.1 iot

再起動

$ sudo reboot

IP固定

以降の遠隔操作でIPアドレスで接続したい場合必要な設定です。

$ sudo leafpad /etc/dhcpcd.conf

末尾に追記(設定内容は各ネットワーク環境により異なります。「Raspberry Pi Jessie IP固定」などで検索してみてください。)

interface eth0
static ip_address=192.168.1.187/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

再起動

$ sudo reboot

遠隔操作

運用にはモニター、マウス、キーボードは必要ないので、この段階で遠隔操作にしてしまいます。
Raspbian Jessie with PIXEL にはRealVNCが標準で入ってます。これを使用してみます。

デフォルトで有効になってないので

Menu→設定→RaspberryPiの設定→インターフェイスタブ→VNC有効→OK→再起動

何も考えずディスプレイを取り外しVNCに接続すると画面サイズが656x416となってしまいます。おまじないがあるようなので設定しておきます。

$ sudo leafpad /boot/config.txt
#hdmi_mode=1の下に以下を追加
hdmi_ignore_edid=0xa5000080
hdmi_group=2
hdmi_mode=47

参考: config.txt - Raspberry Pi Documentation

RaspberryPiをシャットダウン

モニター、マウス、キーボードを取り外して電源入れ直し

VNCクライアントから接続してみる
ホスト名で接続する場合、クライアントパソコンにはavahiかBonjourがインストールされている必要があります。
Windowsパソコンだけ問題になりやすく、簡単な方法はiTunesをインストールすることです。
ネット検索で「Raspberry avahi Bonjour」辺りで調べると詳しい事情が出てきます。

RealVNC Viewerの場合
VNC Server: iot.local または 192.168.1.187
Username: pi
Password: raspberry
Confirm: raspberry

成功していれば、以降はVNCクライアントの窓の中で作業できます。

前準備

Menu→プログラミング→Node-REDを起動

ターミナルが立ち上がりますが、

Start Node-RED
 
Once Node-RED has started, point a browser at http://192.168.1.187:1880
On Pi Node-RED works better with the Firefox browser
 
Use   node-red-stop                          to stop Node-RED
Use   node-red-start                         to start Node-RED again
Use   node-red-log                           to view the recent log output
Use   sudo systemctl enable nodered.service  to autostart Node-RED at every boot
Use   sudo systemctl disable nodered.service to disable autostart on boot
 
To find more nodes and example flows - go to http://flows.nodered.org
You may also need to install and upgrade npm
      sudo apt-get install npm
      sudo npm i -g npm@2.x

Firefox準備します。

$ sudo apt-get update
$ sudo apt-get install firefox-esr

毎回ターミナルが立ち上がるのがウザイので自動起動にします。

$ sudo systemctl enable nodered.service

npm準備します。

$ sudo apt-get install npm
$ sudo npm i -g npm@2.x

再起動

$ sudo reboot

確認

Firefox ESRのURLにhttp://192.168.1.187:1880を入力
またはローカルネット内の他のPCのFirefoxにhttp://192.168.1.187:1880を入力

Node-RED基本操作の確認

参考: Wiring your first Flow | Raspberry Pi Hosting Node-Red | Adafruit Learning System
参考: Node-REDでraspberry piのリソース監視

RaspberryPi自身のリソース可視化

Firefox ESRのURLにhttp://192.168.1.187:1880を入力
またはローカルネット内の他のPCのFirefoxにhttp://192.168.1.187:1880を入力

ノードの追加

Node-RED右上メニュー→Manage Palette
Installタブにnode-red-contrib-osで検索しinstall
Installタブにnode-red-contrib-freeboardで検索しinstall
Doneで完了

Node-REDにクリップボードでインポート

[{"id":"bf283cba.cd3f9","type":"Drives","z":"7ae04e87.7f0898","name":"","x":310,"y":180,"wires":[["c588c71e.5b4828"]]},{"id":"48bab000.a88788","type":"Memory","z":"7ae04e87.7f0898","name":"","x":320,"y":300,"wires":[["cddb3090.8dda78"]]},{"id":"4c8d1987.ec50d","type":"inject","z":"7ae04e87.7f0898","name":"update","topic":"","payload":"","payloadType":"date","repeat":"2","crontab":"","once":true,"x":120,"y":180,"wires":[["48bab000.a88788","eb656540.c9b35","57976f04.b51ef8","ffb4a0ec.a78","bf283cba.cd3f9"]]},{"id":"cddb3090.8dda78","type":"freeboard","z":"7ae04e87.7f0898","name":"Memory","x":500,"y":300,"wires":[]},{"id":"eb656540.c9b35","type":"exec","z":"7ae04e87.7f0898","command":"vcgencmd","addpay":true,"append":"measure_temp","useSpawn":"","timer":"","name":"measure_temp","x":160,"y":340,"wires":[["1ef64a3d.4d612e"],[],[]]},{"id":"1ef64a3d.4d612e","type":"function","z":"7ae04e87.7f0898","name":"","func":"\nmsg.payload = {\"d\":{\"temp\":msg.payload.replace(\"temp=\",\"\").replace(\"'C\\n\",\"\")}};\nreturn msg;","outputs":1,"noerr":0,"x":330,"y":340,"wires":[["4f89f04f.468188"]]},{"id":"4f89f04f.468188","type":"freeboard","z":"7ae04e87.7f0898","name":"Temperature","x":490,"y":340,"wires":[]},{"id":"57976f04.b51ef8","type":"Uptime","z":"7ae04e87.7f0898","name":"","x":310,"y":220,"wires":[["631e1e38.b92ee8"]]},{"id":"631e1e38.b92ee8","type":"freeboard","z":"7ae04e87.7f0898","name":"Uptime","x":510,"y":220,"wires":[]},{"id":"ffb4a0ec.a78","type":"Loadavg","z":"7ae04e87.7f0898","name":"","x":320,"y":260,"wires":[["3f12b57b.32f24a"]]},{"id":"3f12b57b.32f24a","type":"freeboard","z":"7ae04e87.7f0898","name":"Loadavg","x":500,"y":260,"wires":[]},{"id":"c588c71e.5b4828","type":"freeboard","z":"7ae04e87.7f0898","name":"Drivers","x":500,"y":180,"wires":[]}]

Node-RED001.jpg

右上のDeployを実行

freeboardの表示
Firefoxでfreeboardを使うと何故か設定の保存ができません。
GoogleChromeでは保存できるようなのでChrome使ってみます。

http://192.168.1.187:1880/freeboard/

設定済ファイルのダウンロード

http://dz.plala.jp/wiki_data/freeboard_start-00001.json

freeboardにLOAD FREEBOARDから設定ファイル読み込み

Node-RED002.jpg

SAVE FREEBOARDで保存
SAVE FREEBOARD [PRETTY] {MINIFIED]となるのでもう一度クリック

Dashboard is saved. make sure to bookmark the URL.
(ダッシュボードが保存されました。 URLをブックマークしてください。)

http://192.168.1.187:1880/freeboard/#start-XXXXX

このURLが常に利用するURLになるようです。
この設定ファイルの場所

/home/pi/.node-red/#start-XXXXX.json

センサの可視化

以降検証中です。

具合

freeboard.ioのフォントの感じが好きで採用したんですが何故か違います。