Was ist LINDMX?

LINDMX ist eine Softwaresammlung, die es ermöglicht unter Linux auf das DMX4ALL Mini USB und DMX4ALL LAN Interface zugreifen zu können. Das sind preiswerte, bisher sehr stabil laufendes DMX-Interfaces und haben mir auch schon auf Veranstaltungen mit der Software DMXControl gute Dienste getan. Da ich aber viel lieber mit Linux-Systemen und möglichst ressourcensparend arbeiten möchte, habe ich angefangen eigene Software zu entwickeln.

Die Software besteht aus einem Server und einigen Kommandozeilentools. Der Server stellt sicher, dass das Interface standardisiert und flexibel zugänglich gemacht wird. Das erleichtert die Entwicklung von Steuerungssoftware und macht die Hardware auf Wunsch auch gleich im Netzwerk verfügbar.

Auf der Downloadseite steht zusätzlich eine umfassende Dokumentation/Referenz als PDF-Download zur Verfügung.

Installation

Laden Sie einen aktuellen .deb-Installer von LINDMX herunter (hier). Installieren Sie das Paket, indem Sie es unter Ubuntu doppelt anklicken oder in der Kommandozeile über:

sudo dpkg --install dateiname.deb

„dateiname“ ist dabei durch den Namen der heruntergeladenen Datei zu ersetzen. Stecken Sie ihr DMX4ALL Interface ein. Fertig.

Sollte es zu Problemen mit Libraries kommen hilft:

sudo apt-get install libftdi1 libncurses5 libasound2

Server starten

Für das DMX4ALL LAN muss zunächst noch – wie hier beschrieben – die Konfiguration etwas angepasst werden. Für das Micro USB Interface genügt es, das Gerät mit dem Rechner zu verbinden.

Zum Starten wird ein Startscript mitinstalliert. Der Autostart ist jedoch standardmäßig deaktiviert. Gestartet werden kann über:

sudo service lindmxd start

Eventuell auftretende Fehler werden – wie bei Systemdiensten üblich – nur noch in das syslog geschrieben.

Zum Testen kann lindmxd auch im Vordergrund gestartet werden. Dazu wird das Programm direkt mit der Debug-Option aufgerufen:

sudo lindmxd -d

Benutzung

Wenn der Server läuft können sofort Kanäle mit dmxset in der Konsole gesetzt werden:

dmxset 1 255

setzt z.b. den Kanal 1 auf den Wert 255 – also vollständig eingeschaltet. Der Befehl dmxprog (vor 0.1.1 dmxctrl) bietet die Möglichkeit, Chaser (Lauflichter) zu programmieren, gruppieren und abzuspielen. So können kleine “Lightshows” gebastelt werden. Sowohl dmxset als auch dmxprog können auch von einem anderen Computer benutzt werden (wenn die Firewall es zulässt). Durch den Parameter -s kann ein Rechnername oder die IP des Rechners angegeben werden, auf dem lindmxd läuft und das Interface angeschlossen ist. Lautet also die IP-Adresse meines Computers 192.168.178.101, das Interface ist am Computer angeschlossen und dort läuft lindmxd, dann kann das Licht an Kanal 1 z.B. von meinem Laptop aus über mein WLAN gesteuert werden mit:

dmxset -s 192.168.178.101 1 255

bzw.

dmxprog -s 192.168.178.101

dmxset bietet darüber hinaus noch die Möglichkeit Daten aus einer Datei zu laden. So kann eine Lichtszene schnell und bequem gesetzt werden. Dazu muss zunächst eine Text-Datei angelegt werden, z.B. “szene.dmx”. In diese Datei werden dann Zeilenweise die Kanalwerte geschrieben. Folgender Inhalt von “szene.dmx” würde Kanal 1 auf 255, Kanal 2 auf 50, Kanal 3 auf 100, … usw. setzen:

255
50
100
0
255
200
0

Der dazu passende Aufruf von dmxset lautet:

dmxset -i szene.dmx

Sicherheit

LINDMX ist darauf ausgerichtet, in einem geschlossenen und sicheren Netzwerk betrieben zu werden. So soll vor allem die Bedienbarkeit und Portabilität erhöht werden. Daher sollte der LINDMX-Port (Standard: 6767) in der Firewall gegenüber öffentlichen Netzen wie dem Internet stets gesperrt sein. Wenn man es über das Internet fernsteuern möchte, kann zum Beispiel SSH oder VPN verwendet werden. Wie das geht, ist auf ubuntuusers.de sehr ausführlich erklärt.
Nach dem erfolgreichen Login auf einem Rechner im geschützten System kann man dann wie gewohnt dmxset etc. benutzen. Eine weitere Möglichkeit besteht darin, eigene Dienste zu schreiben. So könnte etwa der Apache Webserver mit PHP benutzt werden, wie weiter unten erläutert.

DMX in Shell Skripten

Mit dmxset können auch Shell Skripte Kanäle setzen. Es folgt ein Beispiel, das eine Lampe im Sekunden-Takt blinken lässt:

#!/bin/sh
i=10
while [ $i -ge 1 ]
do
  dmxset 1 0
  sleep 1
  dmxset 1 255
  sleep 1
  i=`expr $i - 1`
done
dmxset 1 0

DMX mit Cronjobs

Mit Cronjobs kann man auf Linux-Systemen automatische Aufgaben ausführen. Das dafür zuständige Programm cron ist auf den meisten Distributionen schon enthalten. Auch hierzu gibt es einen guten Artikel bei ubuntuusers.

In der Konsole bearbeitet werden Cronjobs („geplante Aufgaben“) über:

crontab -e

Durch das Hinzufügen folgender Zeilen wird z.B. um 10 Uhr eine Lampe ausgeschaltet und um 18 Uhr wieder eingeschaltet:

0 10   * * * dmxset 1 0
0 18   * * * dmxset 1 255

DMX mit PHP

Nun möchte ich noch kurz die Möglichkeit ansprechen, dmxset in PHP zu nutzen. Etwas eleganter wäre sicher eine Socket Verbindung in PHP zu erstellen, aber ich möchte es erst mal möglichst einfach und kurz halten.

<?php
	echo "<html><head><title>DMXSET</title></head>";
	echo "<body>";

	echo "<h1>DMXSET</h1>";
	echo "<form action=\"dmx.php\" method=\"post\">";
	echo "<input type=\"text\" name=\"channel\" value=\"1\">";
	echo "<input type=\"text\" name=\"value\" value=\"0\">";
	echo "<input type=\"submit\" name=\"okbtn\" value=\"Los\">";
	echo "</form><br>";

	if( isset($_POST['channel']) && isset($_POST['value']) )
	{
		// Ensure that we just got integers
		$channel = (int) $_POST['channel'];
		$value   = (int) $_POST['value'];
		// Execute
		$null = exec('dmxset '.$channel.' '.$value.' 2>&1', $arr);
		if(count($arr)>0) echo "<b>Fehler: ".$arr[0]."</b>";
	}

	echo "</body></html>";
?>

 


Zuletzt aktualisiert: 11. März 2015