Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Node-RED
Beschreibung
https://nodered.org/
Installation
Node-RED ist auf dem VZ-Raspberry-Image nicht vorinstalliert. Die folgende Beschreibung orientiert sich an der englischen Originalanleitung.
sudo apt-get install build-essential python-rpi.gpio bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered)
Um Node-RED als Hintergrunddienst einzurichten folgende Befehle nacheinander ausführen:
sudo wget https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/nodered.service -O /lib/systemd/system/nodered.service sudo wget https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/node-red-start -O /usr/bin/node-red-start sudo wget https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/node-red-stop -O /usr/bin/node-red-stop sudo chmod +x /usr/bin/node-red-st* sudo systemctl daemon-reload
Man kann Node-RED nun an der Kommandozeile mit
node-red-start
aufrufen und mit
node-red-stop
beenden.
Um den Dienst beim Boot automatisch zu starten:
sudo systemctl enable nodered.service
Editor
Um Node-RED zu programmieren wird über einen Browser der Editor aufgerufen. Es muss die IP-Adresse des RaspberryPi eingefügt werden:
http://IP_des_Rpi:1880/
paar Worte zum Import
Anbindung
Es gibt diverse Möglichkeiten ein- und ausgehende Daten zwischen Volkszähler und Node-RED auszutauschen.
Push-Server
Für Echtzeitdaten eignet sich zum Beispiel der Push-Server als Datenquelle. Zählerstände und Impulseingänge werden in Leistung umgerechnet. Es werden nur Kanäle ausgeliefert die in der Middleware angelegt sind. Parallelbetrieb mit Push fürs Frontend ist möglich.
Der Push-Server muss, wie in der Anleitung beschrieben in Betrieb genommen werden. Die zusätzliche websocket-Ausgabe aktiviert man indem die vorhandene Zeile in der volkszaehler.conf.php geändert wird:
sudo nano /var/www/volkszaehler.org/etc/volkszaehler.conf.php
- volkszaehler.conf.php
$config['push']['routes']['websocket'] = array('/socket');
Danach den Push-Server neu starten:
sudo systemctl stop push-server sudo systemctl start push-Server
In Node-RED wird ein websocket-Eingang angelegt.
code für Import
vzlogger
Die Echtzeitdaten des vzloggers können auch direkt an Node-RED übergeben werden. Es werden für alle channel (auch api: „none“) die Rohdaten (Zählerstände, Impulse) ausgegeben.
parllelbetrieb PS?
Dazu die vzlogger.conf erweitern:
sudo nano /ect/vzlogger.conf
- vzlogger.conf
"push": [ { "url": "http://127.0.0.1:1880/vzpush" } ],
In Node-RED wird ein http-Input mit http-Response angelegt:
- flow
[ { "id": "501f06e2.822648", "type": "http in", "z": "b4a68325.c47d9", "name": "", "url": "/vzpush", "method": "post", "swaggerDoc": "", "x": 125, "y": 132, "wires": [ [ "aca936f6.646be8", "72ead14f.819f1" ] ] }, { "id": "aca936f6.646be8", "type": "debug", "z": "b4a68325.c47d9", "name": "", "active": false, "console": "false", "complete": "true", "x": 323, "y": 192, "wires": [] }, { "id": "72ead14f.819f1", "type": "http response", "z": "b4a68325.c47d9", "name": "", "x": 322, "y": 133, "wires": [] } ]
VZ-API
Beispielanwendungen
InfluxDB per MQTT
Daten vom Push-Server im MQTT-Protokoll an InfluxDB weiterleiten:
Node-RED Library: Push Volkszaehler Readings to Influxdb via MQTT