ESP8266 DMX Module mit Node Server überwachen

31. Januar 2018 at 19:24
Print Friendly, PDF & Email

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

service nodeserver start

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.