ESP8266 DMX Module mit Node Server überwachen
DMX Module via NodeServer kontrollieren
Die Live-Show wird meist während einer größeren Abendveranstaltung gezeigt.
Wir haben also ca. 5 min Zeit alles in Betrieb zu nehmen: Scheinwerfer und Lichtleisten auf der Bühne platzieren, alle Module einschalten, die Akteure in Position bringen und letztendlich die Wiedergabe auf dem Notebook starten. In dieser Zeitpunkt steigt der Blutdruck und die Herzfrequenz enorm. Da ist es sehr beruhigend über einen Monitor den Status aller Module im Blick zu haben.
Erreicht wird die über einen Nodeserver. Dieser liest die JSON Statusmeldung der Module ein. Jedes Modul schickt ca. alle 500ms seinen Status:
- IP-Adresse
- Firmware Version
- WiFi Signalstärke
- DMX Ausgabe
- Battery Level in V und in %
- Statusmeldung im Klartext
Mittlerweile gibt es das Projekt auf github:
https://github.com/Snapstromegon/LightModules-Monitor
Der JSON String läßt sich in Java Script und PHP einfacher auswerten.
Für den node server verwende ich einen Pi Zero mit Stretch.
Gleichzeitig benutze ich die Oberfläche um Module einzeln oder alle auf einmal mit einer neuen Firmware zu versorgen. Man kann auch Module einzeln testen oder alle Module nacheinander.
Node.js installieren
wget -O - https://raw.githubusercontent.com/sdesalas/node-pi-zero/master/install-node-v.last.sh <span class="pl-k">|</span> bash
Danach ist node installiert. Überprüfung wie folgt:
node -v
npm -v
Node starten
Zur Probe einmal den node server manuell starten:
node /var/www/html/ucls/index.js
Node als service eintragen
/etc/systemd/system/nodeserver.service
[codesyntax lang=”bash”]
[Unit] Description=Node.js UCLS Node Server #Requires=After=mysql.service # Requires the mysql service to run first [Service] ExecStart=/usr/local/bin/node /var/www/html/ucls/index.js # Required on some systems Restart=always # Restart service after 10 seconds if node service crashes RestartSec=10 # Output to syslog StandardOutput=syslog StandardError=syslog SyslogIdentifier=nodejs-example #User=<alternate user> #Group=<alternate group> Environment=NODE_ENV=production PORT=1337 [Install] WantedBy=multi-user.target
[/codesyntax]
Service zum Test manuell starten
Danach ein reboot; Der node server sollte dann automatisch starten.
Tools
Damit über die Web-Oberfläche Programme mti root Berechtigung ausgeführt werden können, verwendet man visudo und erzeugt die Datei sudowebscript.sh:
export EDITOR=nano
sudo visudo /var/sudowebscript.sh
www-data ALL=NOPASSWD:/var/sudowebscript.sh
sudo nano /var/sudowebscript.sh
[codesyntax lang=”bash”]
#!/bin/bash ucls_script=/var/www/html/ucls/tools/ucls_slave.sh node_reset_f() { echo stop node server service nodeserver stop echo start node server service nodeserver start echo $1 } ucls_script_f() { echo $ucls_script $1 $ucls_script $1 } case "$1" in node_reset ) node_reset_f "fertig" ;; ucls_test ) ucls_script_f "-t" ;; ucls_off ) ucls_script_f "-o -d 1";; ucls_json-on ) ucls_script_f "-j -d 1";; ucls_json-off ) ucls_script_f "-f -d 1";; ucls_update ) ucls_script_f "-u -d 1";; ucls_reset ) ucls_script_f "-r -d 1";; *) echo "ERROR: invalid parameter: $1 (for $0)"; exit 1 ;; esac exit 0
[/codesyntax]
sudo chmod +x /var/sudowebscript.sh
Im Verzeichnis /var/www/html/ucls/tools gibt es paar tools, die angesprochen werden.
Das Paket wird demnächst auf github veröffentlicht.