DMXControl
Einleitung
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.
Funktionalität: - Steuerung der DMX-Geräte via FHEMWEB mit Live-Colorpicker - Steuerung der DMX-Geräte via Android-App andFHEM mit Live-Colorpicker - Abrufen von Effekten (z.B. Farbverläufe)
Benötigte Software & Module:
- FHEM
- ECMD
- readingsProxy
- readingsGroup
- Colorpicker
- LightScenes (optional)
- DMXControl
- Terminal-Schnittstelle
Funktionsbeschreibung
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert. FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her. Da im ECMD-Modul einige Befehle fehlen, werden diese über das readingsProxy-Modul simuliert. Dieses gibt die Befehle dann über das ECMD-Modul an DMXControl weiter.
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.
ECMD-Modul
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle: 1=rot 2=grün 3=blau 4=master(Helligkeit) 5=strobe (blinken). Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:
attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef. In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen. Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.
Sie fängt so an: params DMX_R DMX_G DMX_B DMX_M DMX_S
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get. ein set (ECMDDevice) rgb (Farbe RRGGBB) soll folgende Aktionen ausführen:
- Senden der Farbe Rot an den 1. Kanal der RGB-LED (in DMXControl: sc (DMX-Kanal 1) (Rot-Wert) - Senden der Farbe Grün an den 2. Kanal der RGB-LED - Senden der Farbe Blau an den 3. Kanal der RGB-LED - Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert so.)
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.
- SET
set rgb cmd {"sc %DMX_R " . AttrVal("%NAME","DMX_R","") . "\nsc %DMX_G " . AttrVal("%NAME","DMX_G","") . "\nsc %DMX_B " . AttrVal("%NAME","DMX_B","") . "\nsc %DMX_M 255"} set rgb postproc {sprintf("%%02x%%02x%%02x", (split(" ", "$_"))[2],(split(" ", "$_"))[5],(split(" ", "$_"))[8])}
- GET
get rgb cmd {"gc %DMX_R " . "\ngc %DMX_G " . "\ngc %DMX_B "} get rgb postproc {sprintf("%%02x%%02x%%02x", (split(" ", "$_"))[2],(split(" ", "$_"))[5],(split(" ", "$_"))[8])}
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden: Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP "localhost".
define DMXControl ECMD telnet localhost:2145 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef
Nun kann die erste RGB-LED in der fhem.cfg definiert werden: define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5 attr RGB1 DMX_B 0 attr RGB1 DMX_G 0 attr RGB1 DMX_M 0 attr RGB1 DMX_R 0 attr RGB1 DMX_S 0 attr RGB1 room hidden
Colorpicker
attr global userattr realtimePicker