<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://wiki.fhem.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Spiff</id>
	<title>FHEMWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.fhem.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Spiff"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Spiff"/>
	<updated>2026-05-03T21:34:20Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Balken_%26_Slider&amp;diff=18333</id>
		<title>Balken &amp; Slider</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Balken_%26_Slider&amp;diff=18333"/>
		<updated>2017-01-06T14:06:06Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* BRI-Slider */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:Balken &amp;amp; Slider}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Erstellen von erweiterten Balken und Slidern als Widget&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=advancedSlider&lt;br /&gt;
|ModForumArea=Frontends&lt;br /&gt;
|ModTechName=fhemweb_advancedSlider.js&lt;br /&gt;
|ModOwner=Spiff ({{Link2FU|1289|Forum}} / [[Benutzer Diskussion:Spiff|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
=== Info ===&lt;br /&gt;
!!!Seite noch im Aufbau!!!&lt;br /&gt;
Weitere Infos:&lt;br /&gt;
https://forum.fhem.de/index.php?topic=28318.0&lt;br /&gt;
&lt;br /&gt;
=== Benutzung der Variablen === &lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! colspan=4 | Balken-Optionen&lt;br /&gt;
|- &lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Werte&lt;br /&gt;
!  Zweck&lt;br /&gt;
!  Default&lt;br /&gt;
|- &lt;br /&gt;
| length&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Länge des Balkens&lt;br /&gt;
| 300&lt;br /&gt;
|- &lt;br /&gt;
| width&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Breite des Balkens&lt;br /&gt;
| 30&lt;br /&gt;
|- &lt;br /&gt;
| max&lt;br /&gt;
| Zahl&lt;br /&gt;
| maximal erreichbarer Wert des Readings&lt;br /&gt;
| 100&lt;br /&gt;
|- &lt;br /&gt;
| style&lt;br /&gt;
| horizontal, vertical&lt;br /&gt;
| Ausrichtung des Balkens&lt;br /&gt;
| horizontal&lt;br /&gt;
|- &lt;br /&gt;
| swapDirection&lt;br /&gt;
| 0,1&lt;br /&gt;
| Umkehren der Richtung&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal:&amp;lt;br&amp;gt;&lt;br /&gt;
0=links-&amp;gt;rechts&amp;lt;br&amp;gt;&lt;br /&gt;
1=rechts-&amp;gt;links&amp;lt;br&amp;gt;&lt;br /&gt;
vertical:&amp;lt;br&amp;gt;&lt;br /&gt;
0=unten-&amp;gt;oben&amp;lt;br&amp;gt;&lt;br /&gt;
1=oben-&amp;gt;unten&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| offset1&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Erzeugt einen Abstand links bzw. unten&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| offset2&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Erzeugt einen Abstand rechts bzw. oben&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| color1&lt;br /&gt;
| glossyBlue, glossyRed, glossyCopper, glossyPink, glossyGreen, glossyYellow, glossyOrange, glossyBlack, glossyWhite&amp;lt;br&amp;gt;&lt;br /&gt;
gradient_RRGGBB_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
flat_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
eigenes CSS möglich&lt;br /&gt;
| Farbe des linken/unteren Balkens&lt;br /&gt;
| glossyBlue&lt;br /&gt;
|- &lt;br /&gt;
| color2&lt;br /&gt;
| glossyBlue, glossyRed, glossyCopper, glossyPink, glossyGreen, glossyYellow, glossyOrange, glossyBlack, glossyWhite&amp;lt;br&amp;gt;&lt;br /&gt;
gradient_RRGGBB_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
flat_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
eigenes CSS möglich&lt;br /&gt;
| Farbe des rechten/oberen Balkens&lt;br /&gt;
| glossyWhite&lt;br /&gt;
|- &lt;br /&gt;
| opacity1&lt;br /&gt;
| Zahl (0...1)&amp;lt;br&amp;gt;&lt;br /&gt;
0=transparent&amp;lt;br&amp;gt;&lt;br /&gt;
1=solid&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischenschritt z.B. 0.75&lt;br /&gt;
| Transparenz des linken/unteren Balkens&lt;br /&gt;
| 1&lt;br /&gt;
|- &lt;br /&gt;
| opacity2&lt;br /&gt;
| Zahl (0...1)&amp;lt;br&amp;gt;&lt;br /&gt;
0=transparent&amp;lt;br&amp;gt;&lt;br /&gt;
1=solid&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischenschritt z.B. 0.75&lt;br /&gt;
| Transparenz des rechten/oberen Balkens&lt;br /&gt;
| 1&lt;br /&gt;
|- &lt;br /&gt;
| textValue&lt;br /&gt;
| (Textstring), Perl möglich&lt;br /&gt;
| mittig angezeigter Text&lt;br /&gt;
| $VALUE&lt;br /&gt;
|- &lt;br /&gt;
| textColor&lt;br /&gt;
| RRGGBB (HEX-Format)&lt;br /&gt;
| Farbe des Textes&lt;br /&gt;
| 000000&lt;br /&gt;
|- &lt;br /&gt;
| textSize&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Größe des Textes&lt;br /&gt;
| 20&lt;br /&gt;
|- &lt;br /&gt;
| overlay&lt;br /&gt;
| Link&lt;br /&gt;
| Overlay-Bild (Überdeckt Balken, nur sinnvoll mit Transparenz)&lt;br /&gt;
| (leer)&lt;br /&gt;
|- &lt;br /&gt;
| overlayStyle&lt;br /&gt;
| absolute, relative&lt;br /&gt;
| Platzierung des Bildes mit Beachtung der Offsets (relative) oder über alles (absolute)&lt;br /&gt;
| absolute&lt;br /&gt;
|- &lt;br /&gt;
| overlayRotate&lt;br /&gt;
| 0,1&lt;br /&gt;
| Rotation des Overlay-Bildes&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal: 90 Grad im Uhrzeigersinn&amp;lt;br&amp;gt;&lt;br /&gt;
vertical: 90° entgegen Uhrzeigersinn&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| underlay&lt;br /&gt;
| Link&lt;br /&gt;
| Underlay-Bild (Hintergrundbild unter dem Balken)&lt;br /&gt;
| (leer)&lt;br /&gt;
|- &lt;br /&gt;
| underlayStyle&lt;br /&gt;
| absolute, relative&lt;br /&gt;
| Platzierung des Bildes mit Beachtung der Offsets (relative) oder über alles (absolute)&lt;br /&gt;
| absolute&lt;br /&gt;
|- &lt;br /&gt;
| underlayRotate&lt;br /&gt;
| 0,1&lt;br /&gt;
| Rotation des Overlay-Bildes&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal: 90 Grad im Uhrzeigersinn&amp;lt;br&amp;gt;&lt;br /&gt;
vertical: 90° entgegen Uhrzeigersinn&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderRadius&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Verrundung der Ecken des Balkens&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderSize&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Rahmendicke um den Balken (der Balken bleibt immer in seinem durch length und width definierten Bereich)&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderColor&lt;br /&gt;
| RRGGBB (HEX-Format)&lt;br /&gt;
| Rahmenfarbe&lt;br /&gt;
| 000000&lt;br /&gt;
|- &lt;br /&gt;
| shadow&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt einen Schatten hinter dem Balken hinzu (der Schatten verletzt den durch length und width definierten Bereich)&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
! colspan=4 | Slider-Optionen&lt;br /&gt;
|- &lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Werte&lt;br /&gt;
!  Zweck&lt;br /&gt;
!  Default&lt;br /&gt;
|- &lt;br /&gt;
| slider&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt dem Balken die Slider-Funktionalität hinzu&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| sliderTechnology&lt;br /&gt;
| 0,1&amp;lt;br&amp;gt;&lt;br /&gt;
0 = noUiSlider&amp;lt;br&amp;gt;&lt;br /&gt;
1 = jQuery UI Slider&lt;br /&gt;
| Auswahl der zu benutzenden Slider-Technologie aus Kompatibilitätsgründen v.a. bei mobilen Endgeräten. Siehe Abschnitt Kompatiblilität&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| setDevice&lt;br /&gt;
| (Device-Name)&lt;br /&gt;
| Stellt ein, welches Device durch den Slider über &amp;quot;set&amp;quot; bedient werden soll&lt;br /&gt;
| $DEVICE&lt;br /&gt;
|- &lt;br /&gt;
| setTarget&lt;br /&gt;
| (Set-Funktion)&lt;br /&gt;
| Stellt ein, welche Funktion durch den Slider über &amp;quot;set&amp;quot; bedient werden soll&lt;br /&gt;
| - (=state)&lt;br /&gt;
|- &lt;br /&gt;
| disableNotify&lt;br /&gt;
| (Notify-Name)&lt;br /&gt;
| Deaktiviert das angegebene Notify  (verhindert, dass der Balken im Konstrukt dummy+notify per longpoll ein Update bekommt, während der Slider bewegt wird)&amp;lt;br /&amp;gt;&#039;&#039;&#039;Bug: bei jeder Slidebewegung wird bisher kontinuierlich das Notify auf &#039;inactive&#039; gesetzt, auch wenn es schon &#039;inactive&#039; ist. Das kann dazu führen, dass in der Warteschleife so viele inactive-Events abgesetzt wurden, dass diese auch erst nach dem Loslassen des Sliders Anwendung finden. Dann bleibt das Notify &#039;inactive&#039; und die Seite mit dem Slider muss aktualisiert werden.&#039;&#039;&#039;&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| sliderHandleDesign&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt dem Slider ein Handle hinzu&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Default-Balken ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | Standardeinstellungen des Balkens (ohne Slider).&lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; | [[Datei:AdvancedSlider_default.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiel 1 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,width:30,length:200,&amp;lt;br /&amp;gt;color1:glossyGreen,borderSize:5,borderRadius:15,&amp;lt;br /&amp;gt;borderColor:999999,textSize:10,&amp;lt;br /&amp;gt;slider:1,sliderHandleDesign:0,setDevice:mp,&amp;lt;br /&amp;gt;setTarget:position,textValue:&amp;quot;&amp;quot;,disableNotify:n_position_mp&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | Der Slider macht ein &amp;quot;set mp position (Sliderwert)&amp;quot;.&lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; rowspan=2 | [[Datei:AdvancedSlider_example1.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;define n_position_mp notify mp:position setreading slider1 $VALUE&amp;lt;/code&amp;gt;&lt;br /&gt;
| Das notify stellt den Slider immer auf den Wert des Devices ein. Über disableNotify wird das Notify für die Dauer des Slidens deaktiviert und danach wieder aktiviert.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiel 2 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,slider:1,&amp;lt;br /&amp;gt;sliderHandleDesign:0,&amp;lt;br /&amp;gt;shadow:1,borderSize:5,&amp;lt;br /&amp;gt;borderRadius:15,borderColor:000000,&amp;lt;br /&amp;gt;length:500,width:50,&amp;lt;br /&amp;gt;color2:flat_FFFFFF,&amp;lt;br /&amp;gt;color1:gradient_00FF00_FF0000,&amp;lt;br /&amp;gt;overlay:/fhem/images/BalkenHorizontal.png,&amp;lt;br /&amp;gt;overlayStyle:relative,textValue:&amp;quot;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Balken mit Slider, abgerundeten Ecken, einem Rand, Overlay-Bild für die Skale, Hintergrundschatten und Farbgradient grün-&amp;gt;rot&lt;br /&gt;
| [[Datei:AdvancedSlider_example2.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== HUE-Slider ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,width:30,length:300,borderSize:2,&amp;lt;br /&amp;gt;max:65535,color1:flat_FFFFFF,color2:flat_000000,&amp;lt;br /&amp;gt;opacity1:0,opacity2:0.75,textSize:0,&amp;lt;br /&amp;gt;slider:1,sliderHandleDesign:0,setDevice:HUEDevice4,&amp;lt;br /&amp;gt;setTarget:hue,&amp;lt;br /&amp;gt;underlay:/fhem/jscolor/hue_background.svg&amp;lt;/code&amp;gt;&lt;br /&gt;
| Balken mit Slider, Underlay-Bild für die HUE-Skale, verdunkelt den rechten Regelbereich anstatt der Anzeige eines Handles&lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; rowspan=2 | [[Datei:AdvancedSlider_hue.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;define n_adslider_hue notify HUEDevice4:hue.* setreading adslider_hue state $EVTPART1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Das notify stellt den Slider immer auf den Wert des Devices ein.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== BRI-Slider ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,width:30,length:300,borderSize:2,&amp;lt;br /&amp;gt;color1:gradient_000000_FFFFFF,color2:flat_000000,&amp;lt;br /&amp;gt;textSize:0,slider:1,sliderHandleDesign:0,&amp;lt;br /&amp;gt;setDevice:HUEDevice4,setTarget:bri&amp;lt;/code&amp;gt;&lt;br /&gt;
| Balken mit Slider, Gradient für die Helligkeitsanzeige, schwärzt den rechten Regelbereich anstatt der Anzeige eines Handles&lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; rowspan=2 | [[Datei:AdvancedSlider_bri.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;define n_adslider_bri notify HUEDevice4:bri.* setreading adslider_bri state $EVTPART1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Das notify stellt den Slider immer auf den Wert des Devices ein.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kompatibilität==&lt;br /&gt;
Als Orientierung, welche Slidertechnologie ausgewählt werden sollte und was für Fehlerbilder möglich sind hier eine Übersicht über verschiedene mobile Endgeräte&lt;br /&gt;
{|class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
! Gerät !! Betriebssystem !! Browser !! Slider Technologie !! Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | Google Nexus 4&lt;br /&gt;
| Android 5&lt;br /&gt;
| WebViewControl&lt;br /&gt;
| noUiSlider&lt;br /&gt;
| Hin und wieder Probleme vor allem bei vertikalen Slidern und wenn die Asicht gezoomt ist. Meist stimmt die Zuordnung von Finger und Rückgabewert nicht ganz zusammen&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | Google Nexus 4&lt;br /&gt;
| Android 5&lt;br /&gt;
| WebViewControl&lt;br /&gt;
| jQuery UI Slider&lt;br /&gt;
| Hin und wieder Probleme vor allem bei vertikalen Slidern und wenn die Asicht gezoomt ist. Meist stimmt die Zuordnung von Finger und Rückgabewert nicht ganz zusammen &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Balken_%26_Slider&amp;diff=18332</id>
		<title>Balken &amp; Slider</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Balken_%26_Slider&amp;diff=18332"/>
		<updated>2017-01-06T14:00:43Z</updated>

		<summary type="html">&lt;p&gt;Spiff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:Balken &amp;amp; Slider}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Erstellen von erweiterten Balken und Slidern als Widget&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=advancedSlider&lt;br /&gt;
|ModForumArea=Frontends&lt;br /&gt;
|ModTechName=fhemweb_advancedSlider.js&lt;br /&gt;
|ModOwner=Spiff ({{Link2FU|1289|Forum}} / [[Benutzer Diskussion:Spiff|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
=== Info ===&lt;br /&gt;
!!!Seite noch im Aufbau!!!&lt;br /&gt;
Weitere Infos:&lt;br /&gt;
https://forum.fhem.de/index.php?topic=28318.0&lt;br /&gt;
&lt;br /&gt;
=== Benutzung der Variablen === &lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! colspan=4 | Balken-Optionen&lt;br /&gt;
|- &lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Werte&lt;br /&gt;
!  Zweck&lt;br /&gt;
!  Default&lt;br /&gt;
|- &lt;br /&gt;
| length&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Länge des Balkens&lt;br /&gt;
| 300&lt;br /&gt;
|- &lt;br /&gt;
| width&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Breite des Balkens&lt;br /&gt;
| 30&lt;br /&gt;
|- &lt;br /&gt;
| max&lt;br /&gt;
| Zahl&lt;br /&gt;
| maximal erreichbarer Wert des Readings&lt;br /&gt;
| 100&lt;br /&gt;
|- &lt;br /&gt;
| style&lt;br /&gt;
| horizontal, vertical&lt;br /&gt;
| Ausrichtung des Balkens&lt;br /&gt;
| horizontal&lt;br /&gt;
|- &lt;br /&gt;
| swapDirection&lt;br /&gt;
| 0,1&lt;br /&gt;
| Umkehren der Richtung&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal:&amp;lt;br&amp;gt;&lt;br /&gt;
0=links-&amp;gt;rechts&amp;lt;br&amp;gt;&lt;br /&gt;
1=rechts-&amp;gt;links&amp;lt;br&amp;gt;&lt;br /&gt;
vertical:&amp;lt;br&amp;gt;&lt;br /&gt;
0=unten-&amp;gt;oben&amp;lt;br&amp;gt;&lt;br /&gt;
1=oben-&amp;gt;unten&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| offset1&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Erzeugt einen Abstand links bzw. unten&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| offset2&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Erzeugt einen Abstand rechts bzw. oben&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| color1&lt;br /&gt;
| glossyBlue, glossyRed, glossyCopper, glossyPink, glossyGreen, glossyYellow, glossyOrange, glossyBlack, glossyWhite&amp;lt;br&amp;gt;&lt;br /&gt;
gradient_RRGGBB_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
flat_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
eigenes CSS möglich&lt;br /&gt;
| Farbe des linken/unteren Balkens&lt;br /&gt;
| glossyBlue&lt;br /&gt;
|- &lt;br /&gt;
| color2&lt;br /&gt;
| glossyBlue, glossyRed, glossyCopper, glossyPink, glossyGreen, glossyYellow, glossyOrange, glossyBlack, glossyWhite&amp;lt;br&amp;gt;&lt;br /&gt;
gradient_RRGGBB_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
flat_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
eigenes CSS möglich&lt;br /&gt;
| Farbe des rechten/oberen Balkens&lt;br /&gt;
| glossyWhite&lt;br /&gt;
|- &lt;br /&gt;
| opacity1&lt;br /&gt;
| Zahl (0...1)&amp;lt;br&amp;gt;&lt;br /&gt;
0=transparent&amp;lt;br&amp;gt;&lt;br /&gt;
1=solid&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischenschritt z.B. 0.75&lt;br /&gt;
| Transparenz des linken/unteren Balkens&lt;br /&gt;
| 1&lt;br /&gt;
|- &lt;br /&gt;
| opacity2&lt;br /&gt;
| Zahl (0...1)&amp;lt;br&amp;gt;&lt;br /&gt;
0=transparent&amp;lt;br&amp;gt;&lt;br /&gt;
1=solid&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischenschritt z.B. 0.75&lt;br /&gt;
| Transparenz des rechten/oberen Balkens&lt;br /&gt;
| 1&lt;br /&gt;
|- &lt;br /&gt;
| textValue&lt;br /&gt;
| (Textstring), Perl möglich&lt;br /&gt;
| mittig angezeigter Text&lt;br /&gt;
| $VALUE&lt;br /&gt;
|- &lt;br /&gt;
| textColor&lt;br /&gt;
| RRGGBB (HEX-Format)&lt;br /&gt;
| Farbe des Textes&lt;br /&gt;
| 000000&lt;br /&gt;
|- &lt;br /&gt;
| textSize&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Größe des Textes&lt;br /&gt;
| 20&lt;br /&gt;
|- &lt;br /&gt;
| overlay&lt;br /&gt;
| Link&lt;br /&gt;
| Overlay-Bild (Überdeckt Balken, nur sinnvoll mit Transparenz)&lt;br /&gt;
| (leer)&lt;br /&gt;
|- &lt;br /&gt;
| overlayStyle&lt;br /&gt;
| absolute, relative&lt;br /&gt;
| Platzierung des Bildes mit Beachtung der Offsets (relative) oder über alles (absolute)&lt;br /&gt;
| absolute&lt;br /&gt;
|- &lt;br /&gt;
| overlayRotate&lt;br /&gt;
| 0,1&lt;br /&gt;
| Rotation des Overlay-Bildes&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal: 90 Grad im Uhrzeigersinn&amp;lt;br&amp;gt;&lt;br /&gt;
vertical: 90° entgegen Uhrzeigersinn&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| underlay&lt;br /&gt;
| Link&lt;br /&gt;
| Underlay-Bild (Hintergrundbild unter dem Balken)&lt;br /&gt;
| (leer)&lt;br /&gt;
|- &lt;br /&gt;
| underlayStyle&lt;br /&gt;
| absolute, relative&lt;br /&gt;
| Platzierung des Bildes mit Beachtung der Offsets (relative) oder über alles (absolute)&lt;br /&gt;
| absolute&lt;br /&gt;
|- &lt;br /&gt;
| underlayRotate&lt;br /&gt;
| 0,1&lt;br /&gt;
| Rotation des Overlay-Bildes&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal: 90 Grad im Uhrzeigersinn&amp;lt;br&amp;gt;&lt;br /&gt;
vertical: 90° entgegen Uhrzeigersinn&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderRadius&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Verrundung der Ecken des Balkens&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderSize&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Rahmendicke um den Balken (der Balken bleibt immer in seinem durch length und width definierten Bereich)&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderColor&lt;br /&gt;
| RRGGBB (HEX-Format)&lt;br /&gt;
| Rahmenfarbe&lt;br /&gt;
| 000000&lt;br /&gt;
|- &lt;br /&gt;
| shadow&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt einen Schatten hinter dem Balken hinzu (der Schatten verletzt den durch length und width definierten Bereich)&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
! colspan=4 | Slider-Optionen&lt;br /&gt;
|- &lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Werte&lt;br /&gt;
!  Zweck&lt;br /&gt;
!  Default&lt;br /&gt;
|- &lt;br /&gt;
| slider&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt dem Balken die Slider-Funktionalität hinzu&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| sliderTechnology&lt;br /&gt;
| 0,1&amp;lt;br&amp;gt;&lt;br /&gt;
0 = noUiSlider&amp;lt;br&amp;gt;&lt;br /&gt;
1 = jQuery UI Slider&lt;br /&gt;
| Auswahl der zu benutzenden Slider-Technologie aus Kompatibilitätsgründen v.a. bei mobilen Endgeräten. Siehe Abschnitt Kompatiblilität&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| setDevice&lt;br /&gt;
| (Device-Name)&lt;br /&gt;
| Stellt ein, welches Device durch den Slider über &amp;quot;set&amp;quot; bedient werden soll&lt;br /&gt;
| $DEVICE&lt;br /&gt;
|- &lt;br /&gt;
| setTarget&lt;br /&gt;
| (Set-Funktion)&lt;br /&gt;
| Stellt ein, welche Funktion durch den Slider über &amp;quot;set&amp;quot; bedient werden soll&lt;br /&gt;
| - (=state)&lt;br /&gt;
|- &lt;br /&gt;
| disableNotify&lt;br /&gt;
| (Notify-Name)&lt;br /&gt;
| Deaktiviert das angegebene Notify  (verhindert, dass der Balken im Konstrukt dummy+notify per longpoll ein Update bekommt, während der Slider bewegt wird)&amp;lt;br /&amp;gt;&#039;&#039;&#039;Bug: bei jeder Slidebewegung wird bisher kontinuierlich das Notify auf &#039;inactive&#039; gesetzt, auch wenn es schon &#039;inactive&#039; ist. Das kann dazu führen, dass in der Warteschleife so viele inactive-Events abgesetzt wurden, dass diese auch erst nach dem Loslassen des Sliders Anwendung finden. Dann bleibt das Notify &#039;inactive&#039; und die Seite mit dem Slider muss aktualisiert werden.&#039;&#039;&#039;&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| sliderHandleDesign&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt dem Slider ein Handle hinzu&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Default-Balken ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | Standardeinstellungen des Balkens (ohne Slider).&lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; | [[Datei:AdvancedSlider_default.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiel 1 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,width:30,length:200,&amp;lt;br /&amp;gt;color1:glossyGreen,borderSize:5,borderRadius:15,&amp;lt;br /&amp;gt;borderColor:999999,textSize:10,&amp;lt;br /&amp;gt;slider:1,sliderHandleDesign:0,setDevice:mp,&amp;lt;br /&amp;gt;setTarget:position,textValue:&amp;quot;&amp;quot;,disableNotify:n_position_mp&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | Der Slider macht ein &amp;quot;set mp position (Sliderwert)&amp;quot;.&lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; rowspan=2 | [[Datei:AdvancedSlider_example1.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;define n_position_mp notify mp:position setreading slider1 $VALUE&amp;lt;/code&amp;gt;&lt;br /&gt;
| Das notify stellt den Slider immer auf den Wert des Devices ein. Über disableNotify wird das Notify für die Dauer des Slidens deaktiviert und danach wieder aktiviert.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiel 2 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,slider:1,&amp;lt;br /&amp;gt;sliderHandleDesign:0,&amp;lt;br /&amp;gt;shadow:1,borderSize:5,&amp;lt;br /&amp;gt;borderRadius:15,borderColor:000000,&amp;lt;br /&amp;gt;length:500,width:50,&amp;lt;br /&amp;gt;color2:flat_FFFFFF,&amp;lt;br /&amp;gt;color1:gradient_00FF00_FF0000,&amp;lt;br /&amp;gt;overlay:/fhem/images/BalkenHorizontal.png,&amp;lt;br /&amp;gt;overlayStyle:relative,textValue:&amp;quot;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Balken mit Slider, abgerundeten Ecken, einem Rand, Overlay-Bild für die Skale, Hintergrundschatten und Farbgradient grün-&amp;gt;rot&lt;br /&gt;
| [[Datei:AdvancedSlider_example2.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== HUE-Slider ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,width:30,length:300,borderSize:2,&amp;lt;br /&amp;gt;max:65535,color1:flat_FFFFFF,color2:flat_000000,&amp;lt;br /&amp;gt;opacity1:0,opacity2:0.75,textSize:0,&amp;lt;br /&amp;gt;slider:1,sliderHandleDesign:0,setDevice:HUEDevice4,&amp;lt;br /&amp;gt;setTarget:hue,&amp;lt;br /&amp;gt;underlay:/fhem/jscolor/hue_background.svg&amp;lt;/code&amp;gt;&lt;br /&gt;
| Balken mit Slider, Underlay-Bild für die HUE-Skale, verdunkelt den rechten Regelbereich anstatt der Anzeige eines Handles&lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; rowspan=2 | [[Datei:AdvancedSlider_hue.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;define n_adslider_hue notify HUEDevice4:hue.* setreading adslider_hue state $EVTPART1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Das notify stellt den Slider immer auf den Wert des Devices ein.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== BRI-Slider ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,width:30,length:300,borderSize:2,&amp;lt;br /&amp;gt;color1:gradient_000000_FFFFFF,color2:flat_000000,&amp;lt;br /&amp;gt;textSize:0,slider:1,sliderHandleDesign:0,&amp;lt;br /&amp;gt;setDevice:HUEDevice4,setTarget:bri&amp;lt;/code&amp;gt;&lt;br /&gt;
| Balken mit Slider, Gradient für die Helligkeitsanzeige, schwärzt den rechten Regelbereich anstatt der Anzeige eines Handles&lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; rowspan=2 | [[Datei:AdvancedSlider_bri.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;define n_adslider_bri notify HUEDevice4:hue.* setreading adslider_bri state $EVTPART1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Das notify stellt den Slider immer auf den Wert des Devices ein.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kompatibilität==&lt;br /&gt;
Als Orientierung, welche Slidertechnologie ausgewählt werden sollte und was für Fehlerbilder möglich sind hier eine Übersicht über verschiedene mobile Endgeräte&lt;br /&gt;
{|class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
! Gerät !! Betriebssystem !! Browser !! Slider Technologie !! Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | Google Nexus 4&lt;br /&gt;
| Android 5&lt;br /&gt;
| WebViewControl&lt;br /&gt;
| noUiSlider&lt;br /&gt;
| Hin und wieder Probleme vor allem bei vertikalen Slidern und wenn die Asicht gezoomt ist. Meist stimmt die Zuordnung von Finger und Rückgabewert nicht ganz zusammen&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | Google Nexus 4&lt;br /&gt;
| Android 5&lt;br /&gt;
| WebViewControl&lt;br /&gt;
| jQuery UI Slider&lt;br /&gt;
| Hin und wieder Probleme vor allem bei vertikalen Slidern und wenn die Asicht gezoomt ist. Meist stimmt die Zuordnung von Finger und Rückgabewert nicht ganz zusammen &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Balken_%26_Slider&amp;diff=18331</id>
		<title>Balken &amp; Slider</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Balken_%26_Slider&amp;diff=18331"/>
		<updated>2017-01-06T13:53:08Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* HUE-Slider */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:Balken &amp;amp; Slider}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Erstellen von erweiterten Balken und Slidern als Widget&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=advancedSlider&lt;br /&gt;
|ModForumArea=Frontends&lt;br /&gt;
|ModTechName=fhemweb_advancedSlider.js&lt;br /&gt;
|ModOwner=Spiff ({{Link2FU|1289|Forum}} / [[Benutzer Diskussion:Spiff|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
=== Info ===&lt;br /&gt;
!!!Seite noch im Aufbau!!!&lt;br /&gt;
Weitere Infos:&lt;br /&gt;
https://forum.fhem.de/index.php?topic=28318.0&lt;br /&gt;
&lt;br /&gt;
=== Benutzung der Variablen === &lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! colspan=4 | Balken-Optionen&lt;br /&gt;
|- &lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Werte&lt;br /&gt;
!  Zweck&lt;br /&gt;
!  Default&lt;br /&gt;
|- &lt;br /&gt;
| length&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Länge des Balkens&lt;br /&gt;
| 300&lt;br /&gt;
|- &lt;br /&gt;
| width&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Breite des Balkens&lt;br /&gt;
| 30&lt;br /&gt;
|- &lt;br /&gt;
| max&lt;br /&gt;
| Zahl&lt;br /&gt;
| maximal erreichbarer Wert des Readings&lt;br /&gt;
| 100&lt;br /&gt;
|- &lt;br /&gt;
| style&lt;br /&gt;
| horizontal, vertical&lt;br /&gt;
| Ausrichtung des Balkens&lt;br /&gt;
| horizontal&lt;br /&gt;
|- &lt;br /&gt;
| swapDirection&lt;br /&gt;
| 0,1&lt;br /&gt;
| Umkehren der Richtung&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal:&amp;lt;br&amp;gt;&lt;br /&gt;
0=links-&amp;gt;rechts&amp;lt;br&amp;gt;&lt;br /&gt;
1=rechts-&amp;gt;links&amp;lt;br&amp;gt;&lt;br /&gt;
vertical:&amp;lt;br&amp;gt;&lt;br /&gt;
0=unten-&amp;gt;oben&amp;lt;br&amp;gt;&lt;br /&gt;
1=oben-&amp;gt;unten&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| offset1&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Erzeugt einen Abstand links bzw. unten&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| offset2&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Erzeugt einen Abstand rechts bzw. oben&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| color1&lt;br /&gt;
| glossyBlue, glossyRed, glossyCopper, glossyPink, glossyGreen, glossyYellow, glossyOrange, glossyBlack, glossyWhite&amp;lt;br&amp;gt;&lt;br /&gt;
gradient_RRGGBB_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
flat_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
eigenes CSS möglich&lt;br /&gt;
| Farbe des linken/unteren Balkens&lt;br /&gt;
| glossyBlue&lt;br /&gt;
|- &lt;br /&gt;
| color2&lt;br /&gt;
| glossyBlue, glossyRed, glossyCopper, glossyPink, glossyGreen, glossyYellow, glossyOrange, glossyBlack, glossyWhite&amp;lt;br&amp;gt;&lt;br /&gt;
gradient_RRGGBB_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
flat_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
eigenes CSS möglich&lt;br /&gt;
| Farbe des rechten/oberen Balkens&lt;br /&gt;
| glossyWhite&lt;br /&gt;
|- &lt;br /&gt;
| opacity1&lt;br /&gt;
| Zahl (0...1)&amp;lt;br&amp;gt;&lt;br /&gt;
0=transparent&amp;lt;br&amp;gt;&lt;br /&gt;
1=solid&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischenschritt z.B. 0.75&lt;br /&gt;
| Transparenz des linken/unteren Balkens&lt;br /&gt;
| 1&lt;br /&gt;
|- &lt;br /&gt;
| opacity2&lt;br /&gt;
| Zahl (0...1)&amp;lt;br&amp;gt;&lt;br /&gt;
0=transparent&amp;lt;br&amp;gt;&lt;br /&gt;
1=solid&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischenschritt z.B. 0.75&lt;br /&gt;
| Transparenz des rechten/oberen Balkens&lt;br /&gt;
| 1&lt;br /&gt;
|- &lt;br /&gt;
| textValue&lt;br /&gt;
| (Textstring), Perl möglich&lt;br /&gt;
| mittig angezeigter Text&lt;br /&gt;
| $VALUE&lt;br /&gt;
|- &lt;br /&gt;
| textColor&lt;br /&gt;
| RRGGBB (HEX-Format)&lt;br /&gt;
| Farbe des Textes&lt;br /&gt;
| 000000&lt;br /&gt;
|- &lt;br /&gt;
| textSize&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Größe des Textes&lt;br /&gt;
| 20&lt;br /&gt;
|- &lt;br /&gt;
| overlay&lt;br /&gt;
| Link&lt;br /&gt;
| Overlay-Bild (Überdeckt Balken, nur sinnvoll mit Transparenz)&lt;br /&gt;
| (leer)&lt;br /&gt;
|- &lt;br /&gt;
| overlayStyle&lt;br /&gt;
| absolute, relative&lt;br /&gt;
| Platzierung des Bildes mit Beachtung der Offsets (relative) oder über alles (absolute)&lt;br /&gt;
| absolute&lt;br /&gt;
|- &lt;br /&gt;
| overlayRotate&lt;br /&gt;
| 0,1&lt;br /&gt;
| Rotation des Overlay-Bildes&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal: 90 Grad im Uhrzeigersinn&amp;lt;br&amp;gt;&lt;br /&gt;
vertical: 90° entgegen Uhrzeigersinn&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| underlay&lt;br /&gt;
| Link&lt;br /&gt;
| Underlay-Bild (Hintergrundbild unter dem Balken)&lt;br /&gt;
| (leer)&lt;br /&gt;
|- &lt;br /&gt;
| underlayStyle&lt;br /&gt;
| absolute, relative&lt;br /&gt;
| Platzierung des Bildes mit Beachtung der Offsets (relative) oder über alles (absolute)&lt;br /&gt;
| absolute&lt;br /&gt;
|- &lt;br /&gt;
| underlayRotate&lt;br /&gt;
| 0,1&lt;br /&gt;
| Rotation des Overlay-Bildes&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal: 90 Grad im Uhrzeigersinn&amp;lt;br&amp;gt;&lt;br /&gt;
vertical: 90° entgegen Uhrzeigersinn&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderRadius&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Verrundung der Ecken des Balkens&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderSize&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Rahmendicke um den Balken (der Balken bleibt immer in seinem durch length und width definierten Bereich)&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderColor&lt;br /&gt;
| RRGGBB (HEX-Format)&lt;br /&gt;
| Rahmenfarbe&lt;br /&gt;
| 000000&lt;br /&gt;
|- &lt;br /&gt;
| shadow&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt einen Schatten hinter dem Balken hinzu (der Schatten verletzt den durch length und width definierten Bereich)&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
! colspan=4 | Slider-Optionen&lt;br /&gt;
|- &lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Werte&lt;br /&gt;
!  Zweck&lt;br /&gt;
!  Default&lt;br /&gt;
|- &lt;br /&gt;
| slider&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt dem Balken die Slider-Funktionalität hinzu&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| sliderTechnology&lt;br /&gt;
| 0,1&amp;lt;br&amp;gt;&lt;br /&gt;
0 = noUiSlider&amp;lt;br&amp;gt;&lt;br /&gt;
1 = jQuery UI Slider&lt;br /&gt;
| Auswahl der zu benutzenden Slider-Technologie aus Kompatibilitätsgründen v.a. bei mobilen Endgeräten. Siehe Abschnitt Kompatiblilität&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| setDevice&lt;br /&gt;
| (Device-Name)&lt;br /&gt;
| Stellt ein, welches Device durch den Slider über &amp;quot;set&amp;quot; bedient werden soll&lt;br /&gt;
| $DEVICE&lt;br /&gt;
|- &lt;br /&gt;
| setTarget&lt;br /&gt;
| (Set-Funktion)&lt;br /&gt;
| Stellt ein, welche Funktion durch den Slider über &amp;quot;set&amp;quot; bedient werden soll&lt;br /&gt;
| - (=state)&lt;br /&gt;
|- &lt;br /&gt;
| disableNotify&lt;br /&gt;
| (Notify-Name)&lt;br /&gt;
| Deaktiviert das angegebene Notify  (verhindert, dass der Balken im Konstrukt dummy+notify per longpoll ein Update bekommt, während der Slider bewegt wird)&amp;lt;br /&amp;gt;&#039;&#039;&#039;Bug: bei jeder Slidebewegung wird bisher kontinuierlich das Notify auf &#039;inactive&#039; gesetzt, auch wenn es schon &#039;inactive&#039; ist. Das kann dazu führen, dass in der Warteschleife so viele inactive-Events abgesetzt wurden, dass diese auch erst nach dem Loslassen des Sliders Anwendung finden. Dann bleibt das Notify &#039;inactive&#039; und die Seite mit dem Slider muss aktualisiert werden.&#039;&#039;&#039;&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| sliderHandleDesign&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt dem Slider ein Handle hinzu&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Default-Balken ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | Standardeinstellungen des Balkens (ohne Slider).&lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; | [[Datei:AdvancedSlider_default.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiel 1 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,width:30,length:200,&amp;lt;br /&amp;gt;color1:glossyGreen,borderSize:5,borderRadius:15,&amp;lt;br /&amp;gt;borderColor:999999,textSize:10,&amp;lt;br /&amp;gt;slider:1,sliderHandleDesign:0,setDevice:mp,&amp;lt;br /&amp;gt;setTarget:position,textValue:&amp;quot;&amp;quot;,disableNotify:n_position_mp&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | Der Slider macht ein &amp;quot;set mp position (Sliderwert)&amp;quot;.&lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; rowspan=2 | [[Datei:AdvancedSlider_example1.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;define n_position_mp notify mp:position setreading slider1 $VALUE&amp;lt;/code&amp;gt;&lt;br /&gt;
| Das notify stellt den Slider immer auf den Wert des Devices ein. Über disableNotify wird das Notify für die Dauer des Slidens deaktiviert und danach wieder aktiviert.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiel 2 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,slider:1,&amp;lt;br /&amp;gt;sliderHandleDesign:0,&amp;lt;br /&amp;gt;shadow:1,borderSize:5,&amp;lt;br /&amp;gt;borderRadius:15,borderColor:000000,&amp;lt;br /&amp;gt;length:500,width:50,&amp;lt;br /&amp;gt;color2:flat_FFFFFF,&amp;lt;br /&amp;gt;color1:gradient_00FF00_FF0000,&amp;lt;br /&amp;gt;overlay:/fhem/images/BalkenHorizontal.png,&amp;lt;br /&amp;gt;overlayStyle:relative,textValue:&amp;quot;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Balken mit Slider, abgerundeten Ecken, einem Rand, Overlay-Bild für die Skale, Hintergrundschatten und Farbgradient grün-&amp;gt;rot&lt;br /&gt;
| [[Datei:AdvancedSlider_example2.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== HUE-Slider ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,width:30,length:300,borderSize:2,&amp;lt;br /&amp;gt;max:65535,color1:flat_FFFFFF,color2:flat_000000&amp;lt;br /&amp;gt;,opacity1:0,opacity2:0.75,textSize:0,&amp;lt;br /&amp;gt;slider:1,sliderHandleDesign:0,setDevice:HUEDevice4,&amp;lt;br /&amp;gt;setTarget:hue,&amp;lt;br /&amp;gt;underlay:/fhem/jscolor/hue_background.svg&amp;lt;/code&amp;gt;&lt;br /&gt;
| Balken mit Slider, Underlay-Bild für die HUE-Skale, verdunkelt den rechten Regelbereich anstatt der Anzeige eines Handles&lt;br /&gt;
| [[Datei:AdvancedSlider_hue.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== BRI-Slider ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,widt....&amp;lt;/code&amp;gt;&lt;br /&gt;
| Balken mit Slider, Gradient für die Helligkeitsanzeige, verdunkelt den rechten Regelbereich anstatt der Anzeige eines Handles&lt;br /&gt;
| [[Datei:AdvancedSlider_bri.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kompatibilität==&lt;br /&gt;
Als Orientierung, welche Slidertechnologie ausgewählt werden sollte und was für Fehlerbilder möglich sind hier eine Übersicht über verschiedene mobile Endgeräte&lt;br /&gt;
{|class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
! Gerät !! Betriebssystem !! Browser !! Slider Technologie !! Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | Google Nexus 4&lt;br /&gt;
| Android 5&lt;br /&gt;
| WebViewControl&lt;br /&gt;
| noUiSlider&lt;br /&gt;
| Hin und wieder Probleme vor allem bei vertikalen Slidern und wenn die Asicht gezoomt ist. Meist stimmt die Zuordnung von Finger und Rückgabewert nicht ganz zusammen&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | Google Nexus 4&lt;br /&gt;
| Android 5&lt;br /&gt;
| WebViewControl&lt;br /&gt;
| jQuery UI Slider&lt;br /&gt;
| Hin und wieder Probleme vor allem bei vertikalen Slidern und wenn die Asicht gezoomt ist. Meist stimmt die Zuordnung von Finger und Rückgabewert nicht ganz zusammen &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:AdvancedSlider_bri.png&amp;diff=18330</id>
		<title>Datei:AdvancedSlider bri.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:AdvancedSlider_bri.png&amp;diff=18330"/>
		<updated>2017-01-06T13:50:28Z</updated>

		<summary type="html">&lt;p&gt;Spiff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:AdvancedSlider_hue.png&amp;diff=18329</id>
		<title>Datei:AdvancedSlider hue.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:AdvancedSlider_hue.png&amp;diff=18329"/>
		<updated>2017-01-06T13:49:53Z</updated>

		<summary type="html">&lt;p&gt;Spiff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Balken_%26_Slider&amp;diff=18328</id>
		<title>Balken &amp; Slider</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Balken_%26_Slider&amp;diff=18328"/>
		<updated>2017-01-06T13:49:03Z</updated>

		<summary type="html">&lt;p&gt;Spiff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:Balken &amp;amp; Slider}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Erstellen von erweiterten Balken und Slidern als Widget&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=advancedSlider&lt;br /&gt;
|ModForumArea=Frontends&lt;br /&gt;
|ModTechName=fhemweb_advancedSlider.js&lt;br /&gt;
|ModOwner=Spiff ({{Link2FU|1289|Forum}} / [[Benutzer Diskussion:Spiff|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
=== Info ===&lt;br /&gt;
!!!Seite noch im Aufbau!!!&lt;br /&gt;
Weitere Infos:&lt;br /&gt;
https://forum.fhem.de/index.php?topic=28318.0&lt;br /&gt;
&lt;br /&gt;
=== Benutzung der Variablen === &lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! colspan=4 | Balken-Optionen&lt;br /&gt;
|- &lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Werte&lt;br /&gt;
!  Zweck&lt;br /&gt;
!  Default&lt;br /&gt;
|- &lt;br /&gt;
| length&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Länge des Balkens&lt;br /&gt;
| 300&lt;br /&gt;
|- &lt;br /&gt;
| width&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Breite des Balkens&lt;br /&gt;
| 30&lt;br /&gt;
|- &lt;br /&gt;
| max&lt;br /&gt;
| Zahl&lt;br /&gt;
| maximal erreichbarer Wert des Readings&lt;br /&gt;
| 100&lt;br /&gt;
|- &lt;br /&gt;
| style&lt;br /&gt;
| horizontal, vertical&lt;br /&gt;
| Ausrichtung des Balkens&lt;br /&gt;
| horizontal&lt;br /&gt;
|- &lt;br /&gt;
| swapDirection&lt;br /&gt;
| 0,1&lt;br /&gt;
| Umkehren der Richtung&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal:&amp;lt;br&amp;gt;&lt;br /&gt;
0=links-&amp;gt;rechts&amp;lt;br&amp;gt;&lt;br /&gt;
1=rechts-&amp;gt;links&amp;lt;br&amp;gt;&lt;br /&gt;
vertical:&amp;lt;br&amp;gt;&lt;br /&gt;
0=unten-&amp;gt;oben&amp;lt;br&amp;gt;&lt;br /&gt;
1=oben-&amp;gt;unten&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| offset1&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Erzeugt einen Abstand links bzw. unten&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| offset2&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Erzeugt einen Abstand rechts bzw. oben&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| color1&lt;br /&gt;
| glossyBlue, glossyRed, glossyCopper, glossyPink, glossyGreen, glossyYellow, glossyOrange, glossyBlack, glossyWhite&amp;lt;br&amp;gt;&lt;br /&gt;
gradient_RRGGBB_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
flat_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
eigenes CSS möglich&lt;br /&gt;
| Farbe des linken/unteren Balkens&lt;br /&gt;
| glossyBlue&lt;br /&gt;
|- &lt;br /&gt;
| color2&lt;br /&gt;
| glossyBlue, glossyRed, glossyCopper, glossyPink, glossyGreen, glossyYellow, glossyOrange, glossyBlack, glossyWhite&amp;lt;br&amp;gt;&lt;br /&gt;
gradient_RRGGBB_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
flat_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
eigenes CSS möglich&lt;br /&gt;
| Farbe des rechten/oberen Balkens&lt;br /&gt;
| glossyWhite&lt;br /&gt;
|- &lt;br /&gt;
| opacity1&lt;br /&gt;
| Zahl (0...1)&amp;lt;br&amp;gt;&lt;br /&gt;
0=transparent&amp;lt;br&amp;gt;&lt;br /&gt;
1=solid&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischenschritt z.B. 0.75&lt;br /&gt;
| Transparenz des linken/unteren Balkens&lt;br /&gt;
| 1&lt;br /&gt;
|- &lt;br /&gt;
| opacity2&lt;br /&gt;
| Zahl (0...1)&amp;lt;br&amp;gt;&lt;br /&gt;
0=transparent&amp;lt;br&amp;gt;&lt;br /&gt;
1=solid&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischenschritt z.B. 0.75&lt;br /&gt;
| Transparenz des rechten/oberen Balkens&lt;br /&gt;
| 1&lt;br /&gt;
|- &lt;br /&gt;
| textValue&lt;br /&gt;
| (Textstring), Perl möglich&lt;br /&gt;
| mittig angezeigter Text&lt;br /&gt;
| $VALUE&lt;br /&gt;
|- &lt;br /&gt;
| textColor&lt;br /&gt;
| RRGGBB (HEX-Format)&lt;br /&gt;
| Farbe des Textes&lt;br /&gt;
| 000000&lt;br /&gt;
|- &lt;br /&gt;
| textSize&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Größe des Textes&lt;br /&gt;
| 20&lt;br /&gt;
|- &lt;br /&gt;
| overlay&lt;br /&gt;
| Link&lt;br /&gt;
| Overlay-Bild (Überdeckt Balken, nur sinnvoll mit Transparenz)&lt;br /&gt;
| (leer)&lt;br /&gt;
|- &lt;br /&gt;
| overlayStyle&lt;br /&gt;
| absolute, relative&lt;br /&gt;
| Platzierung des Bildes mit Beachtung der Offsets (relative) oder über alles (absolute)&lt;br /&gt;
| absolute&lt;br /&gt;
|- &lt;br /&gt;
| overlayRotate&lt;br /&gt;
| 0,1&lt;br /&gt;
| Rotation des Overlay-Bildes&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal: 90 Grad im Uhrzeigersinn&amp;lt;br&amp;gt;&lt;br /&gt;
vertical: 90° entgegen Uhrzeigersinn&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| underlay&lt;br /&gt;
| Link&lt;br /&gt;
| Underlay-Bild (Hintergrundbild unter dem Balken)&lt;br /&gt;
| (leer)&lt;br /&gt;
|- &lt;br /&gt;
| underlayStyle&lt;br /&gt;
| absolute, relative&lt;br /&gt;
| Platzierung des Bildes mit Beachtung der Offsets (relative) oder über alles (absolute)&lt;br /&gt;
| absolute&lt;br /&gt;
|- &lt;br /&gt;
| underlayRotate&lt;br /&gt;
| 0,1&lt;br /&gt;
| Rotation des Overlay-Bildes&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal: 90 Grad im Uhrzeigersinn&amp;lt;br&amp;gt;&lt;br /&gt;
vertical: 90° entgegen Uhrzeigersinn&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderRadius&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Verrundung der Ecken des Balkens&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderSize&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Rahmendicke um den Balken (der Balken bleibt immer in seinem durch length und width definierten Bereich)&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderColor&lt;br /&gt;
| RRGGBB (HEX-Format)&lt;br /&gt;
| Rahmenfarbe&lt;br /&gt;
| 000000&lt;br /&gt;
|- &lt;br /&gt;
| shadow&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt einen Schatten hinter dem Balken hinzu (der Schatten verletzt den durch length und width definierten Bereich)&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
! colspan=4 | Slider-Optionen&lt;br /&gt;
|- &lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Werte&lt;br /&gt;
!  Zweck&lt;br /&gt;
!  Default&lt;br /&gt;
|- &lt;br /&gt;
| slider&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt dem Balken die Slider-Funktionalität hinzu&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| sliderTechnology&lt;br /&gt;
| 0,1&amp;lt;br&amp;gt;&lt;br /&gt;
0 = noUiSlider&amp;lt;br&amp;gt;&lt;br /&gt;
1 = jQuery UI Slider&lt;br /&gt;
| Auswahl der zu benutzenden Slider-Technologie aus Kompatibilitätsgründen v.a. bei mobilen Endgeräten. Siehe Abschnitt Kompatiblilität&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| setDevice&lt;br /&gt;
| (Device-Name)&lt;br /&gt;
| Stellt ein, welches Device durch den Slider über &amp;quot;set&amp;quot; bedient werden soll&lt;br /&gt;
| $DEVICE&lt;br /&gt;
|- &lt;br /&gt;
| setTarget&lt;br /&gt;
| (Set-Funktion)&lt;br /&gt;
| Stellt ein, welche Funktion durch den Slider über &amp;quot;set&amp;quot; bedient werden soll&lt;br /&gt;
| - (=state)&lt;br /&gt;
|- &lt;br /&gt;
| disableNotify&lt;br /&gt;
| (Notify-Name)&lt;br /&gt;
| Deaktiviert das angegebene Notify  (verhindert, dass der Balken im Konstrukt dummy+notify per longpoll ein Update bekommt, während der Slider bewegt wird)&amp;lt;br /&amp;gt;&#039;&#039;&#039;Bug: bei jeder Slidebewegung wird bisher kontinuierlich das Notify auf &#039;inactive&#039; gesetzt, auch wenn es schon &#039;inactive&#039; ist. Das kann dazu führen, dass in der Warteschleife so viele inactive-Events abgesetzt wurden, dass diese auch erst nach dem Loslassen des Sliders Anwendung finden. Dann bleibt das Notify &#039;inactive&#039; und die Seite mit dem Slider muss aktualisiert werden.&#039;&#039;&#039;&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| sliderHandleDesign&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt dem Slider ein Handle hinzu&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Default-Balken ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | Standardeinstellungen des Balkens (ohne Slider).&lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; | [[Datei:AdvancedSlider_default.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiel 1 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,width:30,length:200,&amp;lt;br /&amp;gt;color1:glossyGreen,borderSize:5,borderRadius:15,&amp;lt;br /&amp;gt;borderColor:999999,textSize:10,&amp;lt;br /&amp;gt;slider:1,sliderHandleDesign:0,setDevice:mp,&amp;lt;br /&amp;gt;setTarget:position,textValue:&amp;quot;&amp;quot;,disableNotify:n_position_mp&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | Der Slider macht ein &amp;quot;set mp position (Sliderwert)&amp;quot;.&lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; rowspan=2 | [[Datei:AdvancedSlider_example1.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;define n_position_mp notify mp:position setreading slider1 $VALUE&amp;lt;/code&amp;gt;&lt;br /&gt;
| Das notify stellt den Slider immer auf den Wert des Devices ein. Über disableNotify wird das Notify für die Dauer des Slidens deaktiviert und danach wieder aktiviert.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiel 2 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,slider:1,&amp;lt;br /&amp;gt;sliderHandleDesign:0,&amp;lt;br /&amp;gt;shadow:1,borderSize:5,&amp;lt;br /&amp;gt;borderRadius:15,borderColor:000000,&amp;lt;br /&amp;gt;length:500,width:50,&amp;lt;br /&amp;gt;color2:flat_FFFFFF,&amp;lt;br /&amp;gt;color1:gradient_00FF00_FF0000,&amp;lt;br /&amp;gt;overlay:/fhem/images/BalkenHorizontal.png,&amp;lt;br /&amp;gt;overlayStyle:relative,textValue:&amp;quot;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Balken mit Slider, abgerundeten Ecken, einem Rand, Overlay-Bild für die Skale, Hintergrundschatten und Farbgradient grün-&amp;gt;rot&lt;br /&gt;
| [[Datei:AdvancedSlider_example2.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== HUE-Slider ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,wid....&amp;lt;/code&amp;gt;&lt;br /&gt;
| Balken mit Slider, Underlay-Bild für die HUE-Skale, verdunkelt den rechten Regelbereich anstatt der Anzeige eines Handles&lt;br /&gt;
| [[Datei:AdvancedSlider_hue.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== BRI-Slider ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,widt....&amp;lt;/code&amp;gt;&lt;br /&gt;
| Balken mit Slider, Gradient für die Helligkeitsanzeige, verdunkelt den rechten Regelbereich anstatt der Anzeige eines Handles&lt;br /&gt;
| [[Datei:AdvancedSlider_bri.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kompatibilität==&lt;br /&gt;
Als Orientierung, welche Slidertechnologie ausgewählt werden sollte und was für Fehlerbilder möglich sind hier eine Übersicht über verschiedene mobile Endgeräte&lt;br /&gt;
{|class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
! Gerät !! Betriebssystem !! Browser !! Slider Technologie !! Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | Google Nexus 4&lt;br /&gt;
| Android 5&lt;br /&gt;
| WebViewControl&lt;br /&gt;
| noUiSlider&lt;br /&gt;
| Hin und wieder Probleme vor allem bei vertikalen Slidern und wenn die Asicht gezoomt ist. Meist stimmt die Zuordnung von Finger und Rückgabewert nicht ganz zusammen&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | Google Nexus 4&lt;br /&gt;
| Android 5&lt;br /&gt;
| WebViewControl&lt;br /&gt;
| jQuery UI Slider&lt;br /&gt;
| Hin und wieder Probleme vor allem bei vertikalen Slidern und wenn die Asicht gezoomt ist. Meist stimmt die Zuordnung von Finger und Rückgabewert nicht ganz zusammen &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Balken_%26_Slider&amp;diff=18314</id>
		<title>Balken &amp; Slider</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Balken_%26_Slider&amp;diff=18314"/>
		<updated>2017-01-06T11:03:29Z</updated>

		<summary type="html">&lt;p&gt;Spiff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:Balken &amp;amp; Slider}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Erstellen von erweiterten Balken und Slidern als Widget&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=advancedSlider&lt;br /&gt;
|ModForumArea=Frontends&lt;br /&gt;
|ModTechName=fhemweb_advancedSlider.js&lt;br /&gt;
|ModOwner=Spiff ({{Link2FU|1289|Forum}} / [[Benutzer Diskussion:Spiff|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
=== Info ===&lt;br /&gt;
!!!Seite noch im Aufbau!!!&lt;br /&gt;
Weitere Infos:&lt;br /&gt;
https://forum.fhem.de/index.php?topic=28318.0&lt;br /&gt;
&lt;br /&gt;
=== Benutzung der Variablen === &lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! colspan=4 | Balken-Optionen&lt;br /&gt;
|- &lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Werte&lt;br /&gt;
!  Zweck&lt;br /&gt;
!  Default&lt;br /&gt;
|- &lt;br /&gt;
| length&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Länge des Balkens&lt;br /&gt;
| 300&lt;br /&gt;
|- &lt;br /&gt;
| width&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Breite des Balkens&lt;br /&gt;
| 30&lt;br /&gt;
|- &lt;br /&gt;
| max&lt;br /&gt;
| Zahl&lt;br /&gt;
| maximal erreichbarer Wert des Readings&lt;br /&gt;
| 100&lt;br /&gt;
|- &lt;br /&gt;
| style&lt;br /&gt;
| horizontal, vertical&lt;br /&gt;
| Ausrichtung des Balkens&lt;br /&gt;
| horizontal&lt;br /&gt;
|- &lt;br /&gt;
| swapDirection&lt;br /&gt;
| 0,1&lt;br /&gt;
| Umkehren der Richtung&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal:&amp;lt;br&amp;gt;&lt;br /&gt;
0=links-&amp;gt;rechts&amp;lt;br&amp;gt;&lt;br /&gt;
1=rechts-&amp;gt;links&amp;lt;br&amp;gt;&lt;br /&gt;
vertical:&amp;lt;br&amp;gt;&lt;br /&gt;
0=unten-&amp;gt;oben&amp;lt;br&amp;gt;&lt;br /&gt;
1=oben-&amp;gt;unten&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| offset1&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Erzeugt einen Abstand links bzw. unten&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| offset2&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Erzeugt einen Abstand rechts bzw. oben&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| color1&lt;br /&gt;
| glossyBlue, glossyRed, glossyCopper, glossyPink, glossyGreen, glossyYellow, glossyOrange, glossyBlack, glossyWhite&amp;lt;br&amp;gt;&lt;br /&gt;
gradient_RRGGBB_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
flat_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
eigenes CSS möglich&lt;br /&gt;
| Farbe des linken/unteren Balkens&lt;br /&gt;
| glossyBlue&lt;br /&gt;
|- &lt;br /&gt;
| color2&lt;br /&gt;
| glossyBlue, glossyRed, glossyCopper, glossyPink, glossyGreen, glossyYellow, glossyOrange, glossyBlack, glossyWhite&amp;lt;br&amp;gt;&lt;br /&gt;
gradient_RRGGBB_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
flat_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
eigenes CSS möglich&lt;br /&gt;
| Farbe des rechten/oberen Balkens&lt;br /&gt;
| glossyWhite&lt;br /&gt;
|- &lt;br /&gt;
| opacity1&lt;br /&gt;
| Zahl (0...1)&amp;lt;br&amp;gt;&lt;br /&gt;
0=transparent&amp;lt;br&amp;gt;&lt;br /&gt;
1=solid&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischenschritt z.B. 0.75&lt;br /&gt;
| Transparenz des linken/unteren Balkens&lt;br /&gt;
| 1&lt;br /&gt;
|- &lt;br /&gt;
| opacity2&lt;br /&gt;
| Zahl (0...1)&amp;lt;br&amp;gt;&lt;br /&gt;
0=transparent&amp;lt;br&amp;gt;&lt;br /&gt;
1=solid&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischenschritt z.B. 0.75&lt;br /&gt;
| Transparenz des rechten/oberen Balkens&lt;br /&gt;
| 1&lt;br /&gt;
|- &lt;br /&gt;
| textValue&lt;br /&gt;
| (Textstring), Perl möglich&lt;br /&gt;
| mittig angezeigter Text&lt;br /&gt;
| $VALUE&lt;br /&gt;
|- &lt;br /&gt;
| textColor&lt;br /&gt;
| RRGGBB (HEX-Format)&lt;br /&gt;
| Farbe des Textes&lt;br /&gt;
| 000000&lt;br /&gt;
|- &lt;br /&gt;
| textSize&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Größe des Textes&lt;br /&gt;
| 20&lt;br /&gt;
|- &lt;br /&gt;
| overlay&lt;br /&gt;
| Link&lt;br /&gt;
| Overlay-Bild (Überdeckt Balken, nur sinnvoll mit Transparenz)&lt;br /&gt;
| (leer)&lt;br /&gt;
|- &lt;br /&gt;
| overlayStyle&lt;br /&gt;
| absolute, relative&lt;br /&gt;
| Platzierung des Bildes mit Beachtung der Offsets (relative) oder über alles (absolute)&lt;br /&gt;
| absolute&lt;br /&gt;
|- &lt;br /&gt;
| overlayRotate&lt;br /&gt;
| 0,1&lt;br /&gt;
| Rotation des Overlay-Bildes&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal: 90 Grad im Uhrzeigersinn&amp;lt;br&amp;gt;&lt;br /&gt;
vertical: 90° entgegen Uhrzeigersinn&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| underlay&lt;br /&gt;
| Link&lt;br /&gt;
| Underlay-Bild (Hintergrundbild unter dem Balken)&lt;br /&gt;
| (leer)&lt;br /&gt;
|- &lt;br /&gt;
| underlayStyle&lt;br /&gt;
| absolute, relative&lt;br /&gt;
| Platzierung des Bildes mit Beachtung der Offsets (relative) oder über alles (absolute)&lt;br /&gt;
| absolute&lt;br /&gt;
|- &lt;br /&gt;
| underlayRotate&lt;br /&gt;
| 0,1&lt;br /&gt;
| Rotation des Overlay-Bildes&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal: 90 Grad im Uhrzeigersinn&amp;lt;br&amp;gt;&lt;br /&gt;
vertical: 90° entgegen Uhrzeigersinn&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderRadius&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Verrundung der Ecken des Balkens&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderSize&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Rahmendicke um den Balken (der Balken bleibt immer in seinem durch length und width definierten Bereich)&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderColor&lt;br /&gt;
| RRGGBB (HEX-Format)&lt;br /&gt;
| Rahmenfarbe&lt;br /&gt;
| 000000&lt;br /&gt;
|- &lt;br /&gt;
| shadow&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt einen Schatten hinter dem Balken hinzu (der Schatten verletzt den durch length und width definierten Bereich)&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
! colspan=4 | Slider-Optionen&lt;br /&gt;
|- &lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Werte&lt;br /&gt;
!  Zweck&lt;br /&gt;
!  Default&lt;br /&gt;
|- &lt;br /&gt;
| slider&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt dem Balken die Slider-Funktionalität hinzu&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| sliderTechnology&lt;br /&gt;
| 0,1&amp;lt;br&amp;gt;&lt;br /&gt;
0 = noUiSlider&amp;lt;br&amp;gt;&lt;br /&gt;
1 = jQuery UI Slider&lt;br /&gt;
| Auswahl der zu benutzenden Slider-Technologie aus Kompatibilitätsgründen v.a. bei mobilen Endgeräten. Siehe Abschnitt Kompatiblilität&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| setDevice&lt;br /&gt;
| (Device-Name)&lt;br /&gt;
| Stellt ein, welches Device durch den Slider über &amp;quot;set&amp;quot; bedient werden soll&lt;br /&gt;
| $DEVICE&lt;br /&gt;
|- &lt;br /&gt;
| setTarget&lt;br /&gt;
| (Set-Funktion)&lt;br /&gt;
| Stellt ein, welche Funktion durch den Slider über &amp;quot;set&amp;quot; bedient werden soll&lt;br /&gt;
| - (=state)&lt;br /&gt;
|- &lt;br /&gt;
| disableNotify&lt;br /&gt;
| (Notify-Name)&lt;br /&gt;
| Deaktiviert das angegebene Notify  (verhindert, dass der Balken im Konstrukt dummy+notify per longpoll ein Update bekommt, während der Slider bewegt wird)&amp;lt;br /&amp;gt;&#039;&#039;&#039;Bug: bei jeder Slidebewegung wird bisher kontinuierlich das Notify auf &#039;inactive&#039; gesetzt, auch wenn es schon &#039;inactive&#039; ist. Das kann dazu führen, dass in der Warteschleife so viele inactive-Events abgesetzt wurden, dass diese auch erst nach dem Loslassen des Sliders Anwendung finden. Dann bleibt das Notify &#039;inactive&#039; und die Seite mit dem Slider muss aktualisiert werden.&#039;&#039;&#039;&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| sliderHandleDesign&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt dem Slider ein Handle hinzu&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Default-Balken ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider&amp;lt;/code&amp;gt;&lt;br /&gt;
| Standardeinstellungen des Balkens (ohne Slider).&lt;br /&gt;
| [[Datei:AdvancedSlider_default.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiel 1 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,width:30,length:200,&amp;lt;br /&amp;gt;color1:glossyGreen,borderSize:5,borderRadius:15,&amp;lt;br /&amp;gt;borderColor:999999,textSize:10,&amp;lt;br /&amp;gt;slider:1,sliderHandleDesign:0,setDevice:mp,&amp;lt;br /&amp;gt;setTarget:position,textValue:&amp;quot;&amp;quot;,disableNotify:n_position_mp&amp;lt;/code&amp;gt;&lt;br /&gt;
| Der Slider macht ein &amp;quot;set mp position (Sliderwert)&amp;quot;.&lt;br /&gt;
| rowspan=2 | [[Datei:AdvancedSlider_example1.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;define n_position_mp notify mp:position setreading slider1 $VALUE&amp;lt;/code&amp;gt;&lt;br /&gt;
| Das notify stellt den Slider immer auf den Wert des Devices ein. Über disableNotify wird das Notify für die Dauer des Slidens deaktiviert und danach wieder aktiviert.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiel 2 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,slider:1,&amp;lt;br /&amp;gt;sliderHandleDesign:0,&amp;lt;br /&amp;gt;shadow:1,borderSize:5,&amp;lt;br /&amp;gt;borderRadius:15,borderColor:000000,&amp;lt;br /&amp;gt;length:500,width:50,&amp;lt;br /&amp;gt;color2:flat_FFFFFF,&amp;lt;br /&amp;gt;color1:gradient_00FF00_FF0000,&amp;lt;br /&amp;gt;overlay:/fhem/images/BalkenHorizontal.png,&amp;lt;br /&amp;gt;overlayStyle:relative,textValue:&amp;quot;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Balken mit Slider, abgerundeten Ecken, einem Rand, Overlay-Bild für die Skale, Hintergrundschatten und Farbgradient grün-&amp;gt;rot&lt;br /&gt;
| [[Datei:AdvancedSlider_example2.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kompatibilität==&lt;br /&gt;
Als Orientierung, welche Slidertechnologie ausgewählt werden sollte und was für Fehlerbilder möglich sind hier eine Übersicht über verschiedene mobile Endgeräte&lt;br /&gt;
{|class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
! Gerät !! Betriebssystem !! Browser !! Slider Technologie !! Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | Google Nexus 4&lt;br /&gt;
| Android 5&lt;br /&gt;
| WebViewControl&lt;br /&gt;
| noUiSlider&lt;br /&gt;
| Hin und wieder Probleme vor allem bei vertikalen Slidern und wenn die Asicht gezoomt ist. Meist stimmt die Zuordnung von Finger und Rückgabewert nicht ganz zusammen&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | Google Nexus 4&lt;br /&gt;
| Android 5&lt;br /&gt;
| WebViewControl&lt;br /&gt;
| jQuery UI Slider&lt;br /&gt;
| Hin und wieder Probleme vor allem bei vertikalen Slidern und wenn die Asicht gezoomt ist. Meist stimmt die Zuordnung von Finger und Rückgabewert nicht ganz zusammen &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Balken_%26_Slider&amp;diff=18175</id>
		<title>Balken &amp; Slider</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Balken_%26_Slider&amp;diff=18175"/>
		<updated>2017-01-01T14:27:50Z</updated>

		<summary type="html">&lt;p&gt;Spiff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:Balken &amp;amp; Slider}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Erstellen von erweiterten Balken und Slidern als Widget&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=advancedSlider&lt;br /&gt;
|ModForumArea=Frontends&lt;br /&gt;
|ModTechName=fhemweb_advancedSlider.js&lt;br /&gt;
|ModOwner=Spiff ({{Link2FU|1289|Forum}} / [[Benutzer Diskussion:Spiff|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
=== Info ===&lt;br /&gt;
!!!Seite noch im Aufbau!!!&lt;br /&gt;
Weitere Infos:&lt;br /&gt;
https://forum.fhem.de/index.php?topic=28318.0&lt;br /&gt;
&lt;br /&gt;
=== Benutzung der Variablen === &lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! colspan=4 | Balken-Optionen&lt;br /&gt;
|- &lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Werte&lt;br /&gt;
!  Zweck&lt;br /&gt;
!  Default&lt;br /&gt;
|- &lt;br /&gt;
| length&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Länge des Balkens&lt;br /&gt;
| 300&lt;br /&gt;
|- &lt;br /&gt;
| width&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Breite des Balkens&lt;br /&gt;
| 30&lt;br /&gt;
|- &lt;br /&gt;
| max&lt;br /&gt;
| Zahl&lt;br /&gt;
| maximal erreichbarer Wert des Readings&lt;br /&gt;
| 100&lt;br /&gt;
|- &lt;br /&gt;
| style&lt;br /&gt;
| horizontal, vertical&lt;br /&gt;
| Ausrichtung des Balkens&lt;br /&gt;
| horizontal&lt;br /&gt;
|- &lt;br /&gt;
| swapDirection&lt;br /&gt;
| 0,1&lt;br /&gt;
| Umkehren der Richtung&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal:&amp;lt;br&amp;gt;&lt;br /&gt;
0=links-&amp;gt;rechts&amp;lt;br&amp;gt;&lt;br /&gt;
1=rechts-&amp;gt;links&amp;lt;br&amp;gt;&lt;br /&gt;
vertical:&amp;lt;br&amp;gt;&lt;br /&gt;
0=unten-&amp;gt;oben&amp;lt;br&amp;gt;&lt;br /&gt;
1=oben-&amp;gt;unten&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| offset1&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Erzeugt einen Abstand links bzw. unten&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| offset2&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Erzeugt einen Abstand rechts bzw. oben&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| color1&lt;br /&gt;
| glossyBlue, glossyRed, glossyCopper, glossyPink, glossyGreen, glossyYellow, glossyOrange, glossyBlack, glossyWhite&amp;lt;br&amp;gt;&lt;br /&gt;
gradient_RRGGBB_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
flat_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
eigenes CSS möglich&lt;br /&gt;
| Farbe des linken/unteren Balkens&lt;br /&gt;
| glossyBlue&lt;br /&gt;
|- &lt;br /&gt;
| color2&lt;br /&gt;
| glossyBlue, glossyRed, glossyCopper, glossyPink, glossyGreen, glossyYellow, glossyOrange, glossyBlack, glossyWhite&amp;lt;br&amp;gt;&lt;br /&gt;
gradient_RRGGBB_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
flat_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
eigenes CSS möglich&lt;br /&gt;
| Farbe des rechten/oberen Balkens&lt;br /&gt;
| glossyWhite&lt;br /&gt;
|- &lt;br /&gt;
| opacity1&lt;br /&gt;
| Zahl (0...1)&amp;lt;br&amp;gt;&lt;br /&gt;
0=transparent&amp;lt;br&amp;gt;&lt;br /&gt;
1=solid&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischenschritt z.B. 0.75&lt;br /&gt;
| Transparenz des linken/unteren Balkens&lt;br /&gt;
| 1&lt;br /&gt;
|- &lt;br /&gt;
| opacity2&lt;br /&gt;
| Zahl (0...1)&amp;lt;br&amp;gt;&lt;br /&gt;
0=transparent&amp;lt;br&amp;gt;&lt;br /&gt;
1=solid&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischenschritt z.B. 0.75&lt;br /&gt;
| Transparenz des rechten/oberen Balkens&lt;br /&gt;
| 1&lt;br /&gt;
|- &lt;br /&gt;
| textValue&lt;br /&gt;
| (Textstring), Perl möglich&lt;br /&gt;
| mittig angezeigter Text&lt;br /&gt;
| $VALUE&lt;br /&gt;
|- &lt;br /&gt;
| textColor&lt;br /&gt;
| RRGGBB (HEX-Format)&lt;br /&gt;
| Farbe des Textes&lt;br /&gt;
| 000000&lt;br /&gt;
|- &lt;br /&gt;
| textSize&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Größe des Textes&lt;br /&gt;
| 20&lt;br /&gt;
|- &lt;br /&gt;
| overlay&lt;br /&gt;
| Link&lt;br /&gt;
| Overlay-Bild (Überdeckt Balken, nur sinnvoll mit Transparenz)&lt;br /&gt;
| (leer)&lt;br /&gt;
|- &lt;br /&gt;
| overlayStyle&lt;br /&gt;
| absolute, relative&lt;br /&gt;
| Platzierung des Bildes mit Beachtung der Offsets (relative) oder über alles (absolute)&lt;br /&gt;
| absolute&lt;br /&gt;
|- &lt;br /&gt;
| overlayRotate&lt;br /&gt;
| 0,1&lt;br /&gt;
| Rotation des Overlay-Bildes&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal: 90 Grad im Uhrzeigersinn&amp;lt;br&amp;gt;&lt;br /&gt;
vertical: 90° entgegen Uhrzeigersinn&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| underlay&lt;br /&gt;
| Link&lt;br /&gt;
| Underlay-Bild (Hintergrundbild unter dem Balken)&lt;br /&gt;
| (leer)&lt;br /&gt;
|- &lt;br /&gt;
| underlayStyle&lt;br /&gt;
| absolute, relative&lt;br /&gt;
| Platzierung des Bildes mit Beachtung der Offsets (relative) oder über alles (absolute)&lt;br /&gt;
| absolute&lt;br /&gt;
|- &lt;br /&gt;
| underlayRotate&lt;br /&gt;
| 0,1&lt;br /&gt;
| Rotation des Overlay-Bildes&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal: 90 Grad im Uhrzeigersinn&amp;lt;br&amp;gt;&lt;br /&gt;
vertical: 90° entgegen Uhrzeigersinn&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderRadius&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Verrundung der Ecken des Balkens&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderSize&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Rahmendicke um den Balken (der Balken bleibt immer in seinem durch length und width definierten Bereich)&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderColor&lt;br /&gt;
| RRGGBB (HEX-Format)&lt;br /&gt;
| Rahmenfarbe&lt;br /&gt;
| 000000&lt;br /&gt;
|- &lt;br /&gt;
| shadow&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt einen Schatten hinter dem Balken hinzu (der Schatten verletzt den durch length und width definierten Bereich)&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
! colspan=4 | Slider-Optionen&lt;br /&gt;
|- &lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Werte&lt;br /&gt;
!  Zweck&lt;br /&gt;
!  Default&lt;br /&gt;
|- &lt;br /&gt;
| slider&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt dem Balken die Slider-Funktionalität hinzu&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| sliderTechnology&lt;br /&gt;
| 0,1&amp;lt;br&amp;gt;&lt;br /&gt;
0 = noUiSlider&amp;lt;br&amp;gt;&lt;br /&gt;
1 = jQuery UI Slider&lt;br /&gt;
| Auswahl der zu benutzenden Slider-Technologie aus Kompatibilitätsgründen v.a. bei mobilen Endgeräten. Siehe Abschnitt Kompatiblilität&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| setDevice&lt;br /&gt;
| (Device-Name)&lt;br /&gt;
| Stellt ein, welches Device durch den Slider über &amp;quot;set&amp;quot; bedient werden soll&lt;br /&gt;
| $DEVICE&lt;br /&gt;
|- &lt;br /&gt;
| setTarget&lt;br /&gt;
| (Set-Funktion)&lt;br /&gt;
| Stellt ein, welche Funktion durch den Slider über &amp;quot;set&amp;quot; bedient werden soll&lt;br /&gt;
| - (=state)&lt;br /&gt;
|- &lt;br /&gt;
| disableNotify&lt;br /&gt;
| (Notify-Name)&lt;br /&gt;
| Deaktiviert das angegebene Notify  (verhindert, dass der Balken im Konstrukt dummy+notify per longpoll ein Update bekommt, während der Slider bewegt wird)&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| sliderHandleDesign&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt dem Slider ein Handle hinzu&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Default-Balken ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider&amp;lt;/code&amp;gt;&lt;br /&gt;
| Standardeinstellungen des Balkens (ohne Slider).&lt;br /&gt;
| [[Datei:AdvancedSlider_default.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiel 1 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,width:30,length:200,&amp;lt;br /&amp;gt;color1:glossyGreen,borderSize:5,borderRadius:15,&amp;lt;br /&amp;gt;borderColor:999999,textSize:10,&amp;lt;br /&amp;gt;slider:1,sliderHandleDesign:0,setDevice:mp,&amp;lt;br /&amp;gt;setTarget:position,textValue:&amp;quot;&amp;quot;,disableNotify:n_position_mp&amp;lt;/code&amp;gt;&lt;br /&gt;
| Der Slider macht ein &amp;quot;set mp position (Sliderwert)&amp;quot;.&lt;br /&gt;
| rowspan=2 | [[Datei:AdvancedSlider_example1.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;define n_position_mp notify mp:position setreading slider1 $VALUE&amp;lt;/code&amp;gt;&lt;br /&gt;
| Das notify stellt den Slider immer auf den Wert des Devices ein. Über disableNotify wird das Notify für die Dauer des Slidens deaktiviert und danach wieder aktiviert.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiel 2 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,slider:1,&amp;lt;br /&amp;gt;sliderHandleDesign:0,&amp;lt;br /&amp;gt;shadow:1,borderSize:5,&amp;lt;br /&amp;gt;borderRadius:15,borderColor:000000,&amp;lt;br /&amp;gt;length:500,width:50,&amp;lt;br /&amp;gt;color2:flat_FFFFFF,&amp;lt;br /&amp;gt;color1:gradient_00FF00_FF0000,&amp;lt;br /&amp;gt;overlay:/fhem/images/BalkenHorizontal.png,&amp;lt;br /&amp;gt;overlayStyle:relative,textValue:&amp;quot;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Balken mit Slider, abgerundeten Ecken, einem Rand, Overlay-Bild für die Skale, Hintergrundschatten und Farbgradient grün-&amp;gt;rot&lt;br /&gt;
| [[Datei:AdvancedSlider_example2.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kompatibilität==&lt;br /&gt;
Als Orientierung, welche Slidertechnologie ausgewählt werden sollte und was für Fehlerbilder möglich sind hier eine Übersicht über verschiedene mobile Endgeräte&lt;br /&gt;
{|class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
! Gerät !! Betriebssystem !! Browser !! Slider Technologie !! Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | Google Nexus 4&lt;br /&gt;
| Android 5&lt;br /&gt;
| WebViewControl&lt;br /&gt;
| noUiSlider&lt;br /&gt;
| Hin und wieder Probleme vor allem bei vertikalen Slidern und wenn die Asicht gezoomt ist. Meist stimmt die Zuordnung von Finger und Rückgabewert nicht ganz zusammen&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; | Google Nexus 4&lt;br /&gt;
| Android 5&lt;br /&gt;
| WebViewControl&lt;br /&gt;
| jQuery UI Slider&lt;br /&gt;
| Hin und wieder Probleme vor allem bei vertikalen Slidern und wenn die Asicht gezoomt ist. Meist stimmt die Zuordnung von Finger und Rückgabewert nicht ganz zusammen &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Balken_%26_Slider&amp;diff=18172</id>
		<title>Balken &amp; Slider</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Balken_%26_Slider&amp;diff=18172"/>
		<updated>2017-01-01T13:35:14Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* Benutzung der Variablen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:Balken &amp;amp; Slider}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Erstellen von erweiterten Balken und Slidern als Widget&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=advancedSlider&lt;br /&gt;
|ModForumArea=Frontends&lt;br /&gt;
|ModTechName=fhemweb_advancedSlider.js&lt;br /&gt;
|ModOwner=Spiff ({{Link2FU|1289|Forum}} / [[Benutzer Diskussion:Spiff|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
=== Info ===&lt;br /&gt;
!!!Seite noch im Aufbau!!!&lt;br /&gt;
Weitere Infos:&lt;br /&gt;
https://forum.fhem.de/index.php?topic=28318.0&lt;br /&gt;
&lt;br /&gt;
=== Benutzung der Variablen === &lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! colspan=4 | Balken-Optionen&lt;br /&gt;
|- &lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Werte&lt;br /&gt;
!  Zweck&lt;br /&gt;
!  Default&lt;br /&gt;
|- &lt;br /&gt;
| length&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Länge des Balkens&lt;br /&gt;
| 300&lt;br /&gt;
|- &lt;br /&gt;
| width&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Breite des Balkens&lt;br /&gt;
| 30&lt;br /&gt;
|- &lt;br /&gt;
| max&lt;br /&gt;
| Zahl&lt;br /&gt;
| maximal erreichbarer Wert des Readings&lt;br /&gt;
| 100&lt;br /&gt;
|- &lt;br /&gt;
| style&lt;br /&gt;
| horizontal, vertical&lt;br /&gt;
| Ausrichtung des Balkens&lt;br /&gt;
| horizontal&lt;br /&gt;
|- &lt;br /&gt;
| swapDirection&lt;br /&gt;
| 0,1&lt;br /&gt;
| Umkehren der Richtung&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal:&amp;lt;br&amp;gt;&lt;br /&gt;
0=links-&amp;gt;rechts&amp;lt;br&amp;gt;&lt;br /&gt;
1=rechts-&amp;gt;links&amp;lt;br&amp;gt;&lt;br /&gt;
vertical:&amp;lt;br&amp;gt;&lt;br /&gt;
0=unten-&amp;gt;oben&amp;lt;br&amp;gt;&lt;br /&gt;
1=oben-&amp;gt;unten&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| offset1&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Erzeugt einen Abstand links bzw. unten&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| offset2&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Erzeugt einen Abstand rechts bzw. oben&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| color1&lt;br /&gt;
| glossyBlue, glossyRed, glossyCopper, glossyPink, glossyGreen, glossyYellow, glossyOrange, glossyBlack, glossyWhite&amp;lt;br&amp;gt;&lt;br /&gt;
gradient_RRGGBB_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
flat_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
eigenes CSS möglich&lt;br /&gt;
| Farbe des linken/unteren Balkens&lt;br /&gt;
| glossyBlue&lt;br /&gt;
|- &lt;br /&gt;
| color2&lt;br /&gt;
| glossyBlue, glossyRed, glossyCopper, glossyPink, glossyGreen, glossyYellow, glossyOrange, glossyBlack, glossyWhite&amp;lt;br&amp;gt;&lt;br /&gt;
gradient_RRGGBB_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
flat_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
eigenes CSS möglich&lt;br /&gt;
| Farbe des rechten/oberen Balkens&lt;br /&gt;
| glossyWhite&lt;br /&gt;
|- &lt;br /&gt;
| opacity1&lt;br /&gt;
| Zahl (0...1)&amp;lt;br&amp;gt;&lt;br /&gt;
0=transparent&amp;lt;br&amp;gt;&lt;br /&gt;
1=solid&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischenschritt z.B. 0.75&lt;br /&gt;
| Transparenz des linken/unteren Balkens&lt;br /&gt;
| 1&lt;br /&gt;
|- &lt;br /&gt;
| opacity2&lt;br /&gt;
| Zahl (0...1)&amp;lt;br&amp;gt;&lt;br /&gt;
0=transparent&amp;lt;br&amp;gt;&lt;br /&gt;
1=solid&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischenschritt z.B. 0.75&lt;br /&gt;
| Transparenz des rechten/oberen Balkens&lt;br /&gt;
| 1&lt;br /&gt;
|- &lt;br /&gt;
| textValue&lt;br /&gt;
| (Textstring), Perl möglich&lt;br /&gt;
| mittig angezeigter Text&lt;br /&gt;
| $VALUE&lt;br /&gt;
|- &lt;br /&gt;
| textColor&lt;br /&gt;
| RRGGBB (HEX-Format)&lt;br /&gt;
| Farbe des Textes&lt;br /&gt;
| 000000&lt;br /&gt;
|- &lt;br /&gt;
| textSize&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Größe des Textes&lt;br /&gt;
| 20&lt;br /&gt;
|- &lt;br /&gt;
| overlay&lt;br /&gt;
| Link&lt;br /&gt;
| Overlay-Bild (Überdeckt Balken, nur sinnvoll mit Transparenz)&lt;br /&gt;
| (leer)&lt;br /&gt;
|- &lt;br /&gt;
| overlayStyle&lt;br /&gt;
| absolute, relative&lt;br /&gt;
| Platzierung des Bildes mit Beachtung der Offsets (relative) oder über alles (absolute)&lt;br /&gt;
| absolute&lt;br /&gt;
|- &lt;br /&gt;
| overlayRotate&lt;br /&gt;
| 0,1&lt;br /&gt;
| Rotation des Overlay-Bildes&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal: 90 Grad im Uhrzeigersinn&amp;lt;br&amp;gt;&lt;br /&gt;
vertical: 90° entgegen Uhrzeigersinn&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| underlay&lt;br /&gt;
| Link&lt;br /&gt;
| Underlay-Bild (Hintergrundbild unter dem Balken)&lt;br /&gt;
| (leer)&lt;br /&gt;
|- &lt;br /&gt;
| underlayStyle&lt;br /&gt;
| absolute, relative&lt;br /&gt;
| Platzierung des Bildes mit Beachtung der Offsets (relative) oder über alles (absolute)&lt;br /&gt;
| absolute&lt;br /&gt;
|- &lt;br /&gt;
| underlayRotate&lt;br /&gt;
| 0,1&lt;br /&gt;
| Rotation des Overlay-Bildes&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal: 90 Grad im Uhrzeigersinn&amp;lt;br&amp;gt;&lt;br /&gt;
vertical: 90° entgegen Uhrzeigersinn&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderRadius&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Verrundung der Ecken des Balkens&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderSize&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Rahmendicke um den Balken (der Balken bleibt immer in seinem durch length und width definierten Bereich)&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderColor&lt;br /&gt;
| RRGGBB (HEX-Format)&lt;br /&gt;
| Rahmenfarbe&lt;br /&gt;
| 000000&lt;br /&gt;
|- &lt;br /&gt;
| shadow&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt einen Schatten hinter dem Balken hinzu (der Schatten verletzt den durch length und width definierten Bereich)&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
! colspan=4 | Slider-Optionen&lt;br /&gt;
|- &lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Werte&lt;br /&gt;
!  Zweck&lt;br /&gt;
!  Default&lt;br /&gt;
|- &lt;br /&gt;
| slider&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt dem Balken die Slider-Funktionalität hinzu&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| sliderTechnology&lt;br /&gt;
| 0,1&amp;lt;br&amp;gt;&lt;br /&gt;
0 = noUiSlider&amp;lt;br&amp;gt;&lt;br /&gt;
1 = jQuery UI Slider&lt;br /&gt;
| Auswahl der zu benutzenden Slider-Technologie aus Kompatibilitätsgründen v.a. bei mobilen Endgeräten. Siehe Abschnitt Kompatiblilität&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| setDevice&lt;br /&gt;
| (Device-Name)&lt;br /&gt;
| Stellt ein, welches Device durch den Slider über &amp;quot;set&amp;quot; bedient werden soll&lt;br /&gt;
| $DEVICE&lt;br /&gt;
|- &lt;br /&gt;
| setTarget&lt;br /&gt;
| (Set-Funktion)&lt;br /&gt;
| Stellt ein, welche Funktion durch den Slider über &amp;quot;set&amp;quot; bedient werden soll&lt;br /&gt;
| - (=state)&lt;br /&gt;
|- &lt;br /&gt;
| disableNotify&lt;br /&gt;
| (Notify-Name)&lt;br /&gt;
| Deaktiviert das angegebene Notify  (verhindert, dass der Balken im Konstrukt dummy+notify per longpoll ein Update bekommt, während der Slider bewegt wird)&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| sliderHandleDesign&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt dem Slider ein Handle hinzu&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Default-Balken ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider&amp;lt;/code&amp;gt;&lt;br /&gt;
| Standardeinstellungen des Balkens (ohne Slider).&lt;br /&gt;
| [[Datei:AdvancedSlider_default.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiel 1 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,width:30,length:200,&amp;lt;br /&amp;gt;color1:glossyGreen,borderSize:5,borderRadius:15,&amp;lt;br /&amp;gt;borderColor:999999,textSize:10,&amp;lt;br /&amp;gt;slider:1,sliderHandleDesign:0,setDevice:mp,&amp;lt;br /&amp;gt;setTarget:position,textValue:&amp;quot;&amp;quot;,disableNotify:n_position_mp&amp;lt;/code&amp;gt;&lt;br /&gt;
| Der Slider macht ein &amp;quot;set mp position (Sliderwert)&amp;quot;.&lt;br /&gt;
| rowspan=2 | [[Datei:AdvancedSlider_example1.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;define n_position_mp notify mp:position setreading slider1 $VALUE&amp;lt;/code&amp;gt;&lt;br /&gt;
| Das notify stellt den Slider immer auf den Wert des Devices ein. Über disableNotify wird das Notify für die Dauer des Slidens deaktiviert und danach wieder aktiviert.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiel 2 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,slider:1,&amp;lt;br /&amp;gt;sliderHandleDesign:0,&amp;lt;br /&amp;gt;shadow:1,borderSize:5,&amp;lt;br /&amp;gt;borderRadius:15,borderColor:000000,&amp;lt;br /&amp;gt;length:500,width:50,&amp;lt;br /&amp;gt;color2:flat_FFFFFF,&amp;lt;br /&amp;gt;color1:gradient_00FF00_FF0000,&amp;lt;br /&amp;gt;overlay:/fhem/images/BalkenHorizontal.png,&amp;lt;br /&amp;gt;overlayStyle:relative,textValue:&amp;quot;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Balken mit Slider, abgerundeten Ecken, einem Rand, Overlay-Bild für die Skale, Hintergrundschatten und Farbgradient grün-&amp;gt;rot&lt;br /&gt;
| [[Datei:AdvancedSlider_example2.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Balken_%26_Slider&amp;diff=18163</id>
		<title>Balken &amp; Slider</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Balken_%26_Slider&amp;diff=18163"/>
		<updated>2016-12-31T18:40:44Z</updated>

		<summary type="html">&lt;p&gt;Spiff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:Balken &amp;amp; Slider}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Erstellen von erweiterten Balken und Slidern als Widget&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=advancedSlider&lt;br /&gt;
|ModForumArea=Frontends&lt;br /&gt;
|ModTechName=fhemweb_advancedSlider.js&lt;br /&gt;
|ModOwner=Spiff ({{Link2FU|1289|Forum}} / [[Benutzer Diskussion:Spiff|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
=== Info ===&lt;br /&gt;
!!!Seite noch im Aufbau!!!&lt;br /&gt;
Weitere Infos:&lt;br /&gt;
https://forum.fhem.de/index.php?topic=28318.0&lt;br /&gt;
&lt;br /&gt;
=== Benutzung der Variablen === &lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Werte&lt;br /&gt;
!  Zweck&lt;br /&gt;
!  Default&lt;br /&gt;
|- &lt;br /&gt;
| length&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Länge des Balkens&lt;br /&gt;
| 300&lt;br /&gt;
|- &lt;br /&gt;
| width&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Breite des Balkens&lt;br /&gt;
| 30&lt;br /&gt;
|- &lt;br /&gt;
| max&lt;br /&gt;
| Zahl&lt;br /&gt;
| maximal erreichbarer Wert des Readings&lt;br /&gt;
| 100&lt;br /&gt;
|- &lt;br /&gt;
| style&lt;br /&gt;
| horizontal, vertical&lt;br /&gt;
| Ausrichtung des Balkens&lt;br /&gt;
| horizontal&lt;br /&gt;
|- &lt;br /&gt;
| swapDirection&lt;br /&gt;
| 0,1&lt;br /&gt;
| Umkehren der Richtung&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal:&amp;lt;br&amp;gt;&lt;br /&gt;
0=links-&amp;gt;rechts&amp;lt;br&amp;gt;&lt;br /&gt;
1=rechts-&amp;gt;links&amp;lt;br&amp;gt;&lt;br /&gt;
vertical:&amp;lt;br&amp;gt;&lt;br /&gt;
0=unten-&amp;gt;oben&amp;lt;br&amp;gt;&lt;br /&gt;
1=oben-&amp;gt;unten&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| offset1&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Erzeugt einen Abstand links bzw. unten&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| offset2&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Erzeugt einen Abstand rechts bzw. oben&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| color1&lt;br /&gt;
| glossyBlue, glossyRed, glossyCopper, glossyPink, glossyGreen, glossyYellow, glossyOrange, glossyBlack, glossyWhite&amp;lt;br&amp;gt;&lt;br /&gt;
gradient_RRGGBB_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
flat_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
eigenes CSS möglich&lt;br /&gt;
| Farbe des linken/unteren Balkens&lt;br /&gt;
| glossyBlue&lt;br /&gt;
|- &lt;br /&gt;
| color2&lt;br /&gt;
| glossyBlue, glossyRed, glossyCopper, glossyPink, glossyGreen, glossyYellow, glossyOrange, glossyBlack, glossyWhite&amp;lt;br&amp;gt;&lt;br /&gt;
gradient_RRGGBB_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
flat_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
eigenes CSS möglich&lt;br /&gt;
| Farbe des rechten/oberen Balkens&lt;br /&gt;
| glossyWhite&lt;br /&gt;
|- &lt;br /&gt;
| opacity1&lt;br /&gt;
| Zahl (0...1)&amp;lt;br&amp;gt;&lt;br /&gt;
0=transparent&amp;lt;br&amp;gt;&lt;br /&gt;
1=solid&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischenschritt z.B. 0.75&lt;br /&gt;
| Transparenz des linken/unteren Balkens&lt;br /&gt;
| 1&lt;br /&gt;
|- &lt;br /&gt;
| opacity2&lt;br /&gt;
| Zahl (0...1)&amp;lt;br&amp;gt;&lt;br /&gt;
0=transparent&amp;lt;br&amp;gt;&lt;br /&gt;
1=solid&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischenschritt z.B. 0.75&lt;br /&gt;
| Transparenz des rechten/oberen Balkens&lt;br /&gt;
| 1&lt;br /&gt;
|- &lt;br /&gt;
| textValue&lt;br /&gt;
| (Textstring), Perl möglich&lt;br /&gt;
| mittig angezeigter Text&lt;br /&gt;
| $VALUE&lt;br /&gt;
|- &lt;br /&gt;
| textColor&lt;br /&gt;
| RRGGBB (HEX-Format)&lt;br /&gt;
| Farbe des Textes&lt;br /&gt;
| 000000&lt;br /&gt;
|- &lt;br /&gt;
| textSize&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Größe des Textes&lt;br /&gt;
| 20&lt;br /&gt;
|- &lt;br /&gt;
| overlay&lt;br /&gt;
| Link&lt;br /&gt;
| Overlay-Bild (Überdeckt Balken, nur sinnvoll mit Transparenz)&lt;br /&gt;
| (leer)&lt;br /&gt;
|- &lt;br /&gt;
| overlayStyle&lt;br /&gt;
| absolute, relative&lt;br /&gt;
| Platzierung des Bildes mit Beachtung der Offsets (relative) oder über alles (absolute)&lt;br /&gt;
| absolute&lt;br /&gt;
|- &lt;br /&gt;
| overlayRotate&lt;br /&gt;
| 0,1&lt;br /&gt;
| Rotation des Overlay-Bildes&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal: 90 Grad im Uhrzeigersinn&amp;lt;br&amp;gt;&lt;br /&gt;
vertical: 90° entgegen Uhrzeigersinn&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| underlay&lt;br /&gt;
| Link&lt;br /&gt;
| Underlay-Bild (Hintergrundbild unter dem Balken)&lt;br /&gt;
| (leer)&lt;br /&gt;
|- &lt;br /&gt;
| underlayStyle&lt;br /&gt;
| absolute, relative&lt;br /&gt;
| Platzierung des Bildes mit Beachtung der Offsets (relative) oder über alles (absolute)&lt;br /&gt;
| absolute&lt;br /&gt;
|- &lt;br /&gt;
| underlayRotate&lt;br /&gt;
| 0,1&lt;br /&gt;
| Rotation des Overlay-Bildes&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal: 90 Grad im Uhrzeigersinn&amp;lt;br&amp;gt;&lt;br /&gt;
vertical: 90° entgegen Uhrzeigersinn&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderRadius&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Verrundung der Ecken des Balkens&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderSize&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Rahmendicke um den Balken (der Balken bleibt immer in seinem durch length und width definierten Bereich)&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderColor&lt;br /&gt;
| RRGGBB (HEX-Format)&lt;br /&gt;
| Rahmenfarbe&lt;br /&gt;
| 000000&lt;br /&gt;
|- &lt;br /&gt;
| shadow&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt einen Schatten hinter dem Balken hinzu (der Schatten verletzt den durch length und width definierten Bereich)&lt;br /&gt;
| 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Default-Balken ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider&amp;lt;/code&amp;gt;&lt;br /&gt;
| Standardeinstellungen des Balkens (ohne Slider).&lt;br /&gt;
| [[Datei:AdvancedSlider_default.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiel 1 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,width:30,length:200,&amp;lt;br /&amp;gt;color1:glossyGreen,borderSize:5,borderRadius:15,&amp;lt;br /&amp;gt;borderColor:999999,textSize:10,&amp;lt;br /&amp;gt;slider:1,sliderHandleDesign:0,setDevice:mp,&amp;lt;br /&amp;gt;setTarget:position,textValue:&amp;quot;&amp;quot;,disableNotify:n_position_mp&amp;lt;/code&amp;gt;&lt;br /&gt;
| Der Slider macht ein &amp;quot;set mp position (Sliderwert)&amp;quot;.&lt;br /&gt;
| rowspan=2 | [[Datei:AdvancedSlider_example1.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;define n_position_mp notify mp:position setreading slider1 $VALUE&amp;lt;/code&amp;gt;&lt;br /&gt;
| Das notify stellt den Slider immer auf den Wert des Devices ein. Über disableNotify wird das Notify für die Dauer des Slidens deaktiviert und danach wieder aktiviert.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiel 2 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,slider:1,&amp;lt;br /&amp;gt;sliderHandleDesign:0,&amp;lt;br /&amp;gt;shadow:1,borderSize:5,&amp;lt;br /&amp;gt;borderRadius:15,borderColor:000000,&amp;lt;br /&amp;gt;length:500,width:50,&amp;lt;br /&amp;gt;color2:flat_FFFFFF,&amp;lt;br /&amp;gt;color1:gradient_00FF00_FF0000,&amp;lt;br /&amp;gt;overlay:/fhem/images/BalkenHorizontal.png,&amp;lt;br /&amp;gt;overlayStyle:relative,textValue:&amp;quot;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Balken mit Slider, abgerundeten Ecken, einem Rand, Overlay-Bild für die Skale, Hintergrundschatten und Farbgradient grün-&amp;gt;rot&lt;br /&gt;
| [[Datei:AdvancedSlider_example2.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:AdvancedSlider_default.png&amp;diff=18162</id>
		<title>Datei:AdvancedSlider default.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:AdvancedSlider_default.png&amp;diff=18162"/>
		<updated>2016-12-31T18:20:10Z</updated>

		<summary type="html">&lt;p&gt;Spiff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:AdvancedSlider_example2.png&amp;diff=18161</id>
		<title>Datei:AdvancedSlider example2.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:AdvancedSlider_example2.png&amp;diff=18161"/>
		<updated>2016-12-31T18:19:20Z</updated>

		<summary type="html">&lt;p&gt;Spiff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:AdvancedSlider_example1.png&amp;diff=18160</id>
		<title>Datei:AdvancedSlider example1.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:AdvancedSlider_example1.png&amp;diff=18160"/>
		<updated>2016-12-31T18:18:13Z</updated>

		<summary type="html">&lt;p&gt;Spiff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Balken_%26_Slider&amp;diff=18159</id>
		<title>Balken &amp; Slider</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Balken_%26_Slider&amp;diff=18159"/>
		<updated>2016-12-31T18:09:36Z</updated>

		<summary type="html">&lt;p&gt;Spiff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:Balken &amp;amp; Slider}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Erstellen von erweiterten Balken und Slidern als Widget&lt;br /&gt;
|ModType=h&lt;br /&gt;
|ModCmdRef=advancedSlider&lt;br /&gt;
|ModForumArea=Frontends&lt;br /&gt;
|ModTechName=fhemweb_advancedSlider.js&lt;br /&gt;
|ModOwner=Spiff ({{Link2FU|1289|Forum}} / [[Benutzer Diskussion:Spiff|Wiki]])}}&lt;br /&gt;
&lt;br /&gt;
=== Info ===&lt;br /&gt;
!!!Seite noch im Aufbau!!!&lt;br /&gt;
Weitere Infos:&lt;br /&gt;
https://forum.fhem.de/index.php?topic=28318.0&lt;br /&gt;
&lt;br /&gt;
=== Benutzung der Variablen === &lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Werte&lt;br /&gt;
!  Zweck&lt;br /&gt;
!  Default&lt;br /&gt;
|- &lt;br /&gt;
| length&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Länge des Balkens&lt;br /&gt;
| 300&lt;br /&gt;
|- &lt;br /&gt;
| width&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Breite des Balkens&lt;br /&gt;
| 30&lt;br /&gt;
|- &lt;br /&gt;
| max&lt;br /&gt;
| Zahl&lt;br /&gt;
| maximal erreichbarer Wert des Readings&lt;br /&gt;
| 100&lt;br /&gt;
|- &lt;br /&gt;
| style&lt;br /&gt;
| horizontal, vertical&lt;br /&gt;
| Ausrichtung des Balkens&lt;br /&gt;
| horizontal&lt;br /&gt;
|- &lt;br /&gt;
| swapDirection&lt;br /&gt;
| 0,1&lt;br /&gt;
| Umkehren der Richtung&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal:&amp;lt;br&amp;gt;&lt;br /&gt;
0=links-&amp;gt;rechts&amp;lt;br&amp;gt;&lt;br /&gt;
1=rechts-&amp;gt;links&amp;lt;br&amp;gt;&lt;br /&gt;
vertical:&amp;lt;br&amp;gt;&lt;br /&gt;
0=unten-&amp;gt;oben&amp;lt;br&amp;gt;&lt;br /&gt;
1=oben-&amp;gt;unten&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| offset1&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Erzeugt einen Abstand links bzw. unten&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| offset2&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Erzeugt einen Abstand rechts bzw. oben&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| color1&lt;br /&gt;
| glossyBlue, glossyRed, glossyCopper, glossyPink, glossyGreen, glossyYellow, glossyOrange, glossyBlack, glossyWhite&amp;lt;br&amp;gt;&lt;br /&gt;
gradient_RRGGBB_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
flat_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
eigenes CSS möglich&lt;br /&gt;
| Farbe des linken/unteren Balkens&lt;br /&gt;
| glossyBlue&lt;br /&gt;
|- &lt;br /&gt;
| color2&lt;br /&gt;
| glossyBlue, glossyRed, glossyCopper, glossyPink, glossyGreen, glossyYellow, glossyOrange, glossyBlack, glossyWhite&amp;lt;br&amp;gt;&lt;br /&gt;
gradient_RRGGBB_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
flat_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
eigenes CSS möglich&lt;br /&gt;
| Farbe des rechten/oberen Balkens&lt;br /&gt;
| glossyWhite&lt;br /&gt;
|- &lt;br /&gt;
| opacity1&lt;br /&gt;
| Zahl (0...1)&amp;lt;br&amp;gt;&lt;br /&gt;
0=transparent&amp;lt;br&amp;gt;&lt;br /&gt;
1=solid&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischenschritt z.B. 0.75&lt;br /&gt;
| Transparenz des linken/unteren Balkens&lt;br /&gt;
| 1&lt;br /&gt;
|- &lt;br /&gt;
| opacity2&lt;br /&gt;
| Zahl (0...1)&amp;lt;br&amp;gt;&lt;br /&gt;
0=transparent&amp;lt;br&amp;gt;&lt;br /&gt;
1=solid&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischenschritt z.B. 0.75&lt;br /&gt;
| Transparenz des rechten/oberen Balkens&lt;br /&gt;
| 1&lt;br /&gt;
|- &lt;br /&gt;
| textValue&lt;br /&gt;
| (Textstring), Perl möglich&lt;br /&gt;
| mittig angezeigter Text&lt;br /&gt;
| $VALUE&lt;br /&gt;
|- &lt;br /&gt;
| textColor&lt;br /&gt;
| RRGGBB (HEX-Format)&lt;br /&gt;
| Farbe des Textes&lt;br /&gt;
| 000000&lt;br /&gt;
|- &lt;br /&gt;
| textSize&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Größe des Textes&lt;br /&gt;
| 20&lt;br /&gt;
|- &lt;br /&gt;
| overlay&lt;br /&gt;
| Link&lt;br /&gt;
| Overlay-Bild (Überdeckt Balken, nur sinnvoll mit Transparenz)&lt;br /&gt;
| (leer)&lt;br /&gt;
|- &lt;br /&gt;
| overlayStyle&lt;br /&gt;
| absolute, relative&lt;br /&gt;
| Platzierung des Bildes mit Beachtung der Offsets (relative) oder über alles (absolute)&lt;br /&gt;
| absolute&lt;br /&gt;
|- &lt;br /&gt;
| overlayRotate&lt;br /&gt;
| 0,1&lt;br /&gt;
| Rotation des Overlay-Bildes&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal: 90 Grad im Uhrzeigersinn&amp;lt;br&amp;gt;&lt;br /&gt;
vertical: 90° entgegen Uhrzeigersinn&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| underlay&lt;br /&gt;
| Link&lt;br /&gt;
| Underlay-Bild (Hintergrundbild unter dem Balken)&lt;br /&gt;
| (leer)&lt;br /&gt;
|- &lt;br /&gt;
| underlayStyle&lt;br /&gt;
| absolute, relative&lt;br /&gt;
| Platzierung des Bildes mit Beachtung der Offsets (relative) oder über alles (absolute)&lt;br /&gt;
| absolute&lt;br /&gt;
|- &lt;br /&gt;
| underlayRotate&lt;br /&gt;
| 0,1&lt;br /&gt;
| Rotation des Overlay-Bildes&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal: 90 Grad im Uhrzeigersinn&amp;lt;br&amp;gt;&lt;br /&gt;
vertical: 90° entgegen Uhrzeigersinn&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderRadius&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Verrundung der Ecken des Balkens&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderSize&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Rahmendicke um den Balken (der Balken bleibt immer in seinem durch length und width definierten Bereich)&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderColor&lt;br /&gt;
| RRGGBB (HEX-Format)&lt;br /&gt;
| Rahmenfarbe&lt;br /&gt;
| 000000&lt;br /&gt;
|- &lt;br /&gt;
| shadow&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt einen Schatten hinter dem Balken hinzu (der Schatten verletzt den durch length und width definierten Bereich)&lt;br /&gt;
| 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beispiel 1 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Definition !! Erläuterungen !! Aussehen &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; |&amp;lt;code&amp;gt;state:adslider,width:30,length:200,color1:glossyGreen,borderSize:5,borderRadius:15,borderColor:999999, textSize:10,slider:1,sliderHandleDesign:0,setDevice:mp,setTarget:position,textValue:&amp;quot;&amp;quot;,disableNotify:n_position_mp&amp;lt;/code&amp;gt;&lt;br /&gt;
| Der Slider macht ein &amp;quot;set mp position (Sliderwert)&amp;quot;.&lt;br /&gt;
| rowspan=3 | [[Datei:rgBattery.png|thumb]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;define n_position_mp notify mp:position setreading slider1 $VALUE&amp;lt;/code&amp;gt;&lt;br /&gt;
| Das notify stellt den Slider immer auf den Wert des Devices ein. Über disableNotify wird das Notify für die Dauer des Slidens deaktiviert und danach wieder aktiviert.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Benutzer:Spiff&amp;diff=17744</id>
		<title>Benutzer:Spiff</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Benutzer:Spiff&amp;diff=17744"/>
		<updated>2016-12-12T14:42:00Z</updated>

		<summary type="html">&lt;p&gt;Spiff: Die Seite wurde neu angelegt: „Moin!“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Moin!&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Balken_%26_Slider&amp;diff=17743</id>
		<title>Balken &amp; Slider</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Balken_%26_Slider&amp;diff=17743"/>
		<updated>2016-12-12T14:31:59Z</updated>

		<summary type="html">&lt;p&gt;Spiff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Info ===&lt;br /&gt;
https://forum.fhem.de/index.php?topic=28318.0&lt;br /&gt;
&lt;br /&gt;
=== Benutzung der Variablen === &lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Werte&lt;br /&gt;
!  Zweck&lt;br /&gt;
!  Default&lt;br /&gt;
|- &lt;br /&gt;
| length&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Länge des Balkens&lt;br /&gt;
| 300&lt;br /&gt;
|- &lt;br /&gt;
| width&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Breite des Balkens&lt;br /&gt;
| 30&lt;br /&gt;
|- &lt;br /&gt;
| max&lt;br /&gt;
| Zahl&lt;br /&gt;
| maximal erreichbarer Wert des Readings&lt;br /&gt;
| 100&lt;br /&gt;
|- &lt;br /&gt;
| style&lt;br /&gt;
| horizontal, vertical&lt;br /&gt;
| Ausrichtung des Balkens&lt;br /&gt;
| horizontal&lt;br /&gt;
|- &lt;br /&gt;
| swapDirection&lt;br /&gt;
| 0,1&lt;br /&gt;
| Umkehren der Richtung&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal:&amp;lt;br&amp;gt;&lt;br /&gt;
0=links-&amp;gt;rechts&amp;lt;br&amp;gt;&lt;br /&gt;
1=rechts-&amp;gt;links&amp;lt;br&amp;gt;&lt;br /&gt;
vertical:&amp;lt;br&amp;gt;&lt;br /&gt;
0=unten-&amp;gt;oben&amp;lt;br&amp;gt;&lt;br /&gt;
1=oben-&amp;gt;unten&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| offset1&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Erzeugt einen Abstand links bzw. unten&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| offset2&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Erzeugt einen Abstand rechts bzw. oben&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| color1&lt;br /&gt;
| glossyBlue, glossyRed, glossyCopper, glossyPink, glossyGreen, glossyYellow, glossyOrange, glossyBlack, glossyWhite&amp;lt;br&amp;gt;&lt;br /&gt;
gradient_RRGGBB_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
flat_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
eigenes CSS möglich&lt;br /&gt;
| Farbe des linken/unteren Balkens&lt;br /&gt;
| glossyBlue&lt;br /&gt;
|- &lt;br /&gt;
| color2&lt;br /&gt;
| glossyBlue, glossyRed, glossyCopper, glossyPink, glossyGreen, glossyYellow, glossyOrange, glossyBlack, glossyWhite&amp;lt;br&amp;gt;&lt;br /&gt;
gradient_RRGGBB_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
flat_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
eigenes CSS möglich&lt;br /&gt;
| Farbe des rechten/oberen Balkens&lt;br /&gt;
| glossyWhite&lt;br /&gt;
|- &lt;br /&gt;
| opacity1&lt;br /&gt;
| Zahl (0...1)&amp;lt;br&amp;gt;&lt;br /&gt;
0=transparent&amp;lt;br&amp;gt;&lt;br /&gt;
1=solid&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischenschritt z.B. 0.75&lt;br /&gt;
| Transparenz des linken/unteren Balkens&lt;br /&gt;
| 1&lt;br /&gt;
|- &lt;br /&gt;
| opacity2&lt;br /&gt;
| Zahl (0...1)&amp;lt;br&amp;gt;&lt;br /&gt;
0=transparent&amp;lt;br&amp;gt;&lt;br /&gt;
1=solid&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischenschritt z.B. 0.75&lt;br /&gt;
| Transparenz des rechten/oberen Balkens&lt;br /&gt;
| 1&lt;br /&gt;
|- &lt;br /&gt;
| textValue&lt;br /&gt;
| (Textstring), Perl möglich&lt;br /&gt;
| mittig angezeigter Text&lt;br /&gt;
| $VALUE&lt;br /&gt;
|- &lt;br /&gt;
| textColor&lt;br /&gt;
| RRGGBB (HEX-Format)&lt;br /&gt;
| Farbe des Textes&lt;br /&gt;
| 000000&lt;br /&gt;
|- &lt;br /&gt;
| textSize&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Größe des Textes&lt;br /&gt;
| 20&lt;br /&gt;
|- &lt;br /&gt;
| overlay&lt;br /&gt;
| Link&lt;br /&gt;
| Overlay-Bild (Überdeckt Balken, nur sinnvoll mit Transparenz)&lt;br /&gt;
| (leer)&lt;br /&gt;
|- &lt;br /&gt;
| overlayStyle&lt;br /&gt;
| absolute, relative&lt;br /&gt;
| Platzierung des Bildes mit Beachtung der Offsets (relative) oder über alles (absolute)&lt;br /&gt;
| absolute&lt;br /&gt;
|- &lt;br /&gt;
| overlayRotate&lt;br /&gt;
| 0,1&lt;br /&gt;
| Rotation des Overlay-Bildes&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal: 90 Grad im Uhrzeigersinn&amp;lt;br&amp;gt;&lt;br /&gt;
vertical: 90° entgegen Uhrzeigersinn&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| underlay&lt;br /&gt;
| Link&lt;br /&gt;
| Underlay-Bild (Hintergrundbild unter dem Balken)&lt;br /&gt;
| (leer)&lt;br /&gt;
|- &lt;br /&gt;
| underlayStyle&lt;br /&gt;
| absolute, relative&lt;br /&gt;
| Platzierung des Bildes mit Beachtung der Offsets (relative) oder über alles (absolute)&lt;br /&gt;
| absolute&lt;br /&gt;
|- &lt;br /&gt;
| underlayRotate&lt;br /&gt;
| 0,1&lt;br /&gt;
| Rotation des Overlay-Bildes&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal: 90 Grad im Uhrzeigersinn&amp;lt;br&amp;gt;&lt;br /&gt;
vertical: 90° entgegen Uhrzeigersinn&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderRadius&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Verrundung der Ecken des Balkens&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderSize&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Rahmendicke um den Balken (der Balken bleibt immer in seinem durch length und width definierten Bereich)&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderColor&lt;br /&gt;
| RRGGBB (HEX-Format)&lt;br /&gt;
| Rahmenfarbe&lt;br /&gt;
| 000000&lt;br /&gt;
|- &lt;br /&gt;
| shadow&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt einen Schatten hinter dem Balken hinzu (der Schatten verletzt den durch length und width definierten Bereich)&lt;br /&gt;
| 0&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Balken_%26_Slider&amp;diff=17742</id>
		<title>Balken &amp; Slider</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Balken_%26_Slider&amp;diff=17742"/>
		<updated>2016-12-12T12:53:45Z</updated>

		<summary type="html">&lt;p&gt;Spiff: Die Seite wurde neu angelegt: „=== Benutzung der Variablen ===  {|  class=&amp;quot;wikitable&amp;quot;  !  Parameter !  Werte !  Zweck !  Default |-  | length | Zahl (Pixel) | Länge des Balkens | 300 |-  |…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Benutzung der Variablen === &lt;br /&gt;
{|  class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
!  Parameter&lt;br /&gt;
!  Werte&lt;br /&gt;
!  Zweck&lt;br /&gt;
!  Default&lt;br /&gt;
|- &lt;br /&gt;
| length&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Länge des Balkens&lt;br /&gt;
| 300&lt;br /&gt;
|- &lt;br /&gt;
| width&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Breite des Balkens&lt;br /&gt;
| 30&lt;br /&gt;
|- &lt;br /&gt;
| max&lt;br /&gt;
| Zahl&lt;br /&gt;
| maximal erreichbarer Wert des Readings&lt;br /&gt;
| 100&lt;br /&gt;
|- &lt;br /&gt;
| style&lt;br /&gt;
| horizontal, vertical&lt;br /&gt;
| Ausrichtung des Balkens&lt;br /&gt;
| horizontal&lt;br /&gt;
|- &lt;br /&gt;
| swapDirection&lt;br /&gt;
| 0,1&lt;br /&gt;
| Umkehren der Richtung&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal:&amp;lt;br&amp;gt;&lt;br /&gt;
0=links-&amp;gt;rechts&amp;lt;br&amp;gt;&lt;br /&gt;
1=rechts-&amp;gt;links&amp;lt;br&amp;gt;&lt;br /&gt;
vertical:&amp;lt;br&amp;gt;&lt;br /&gt;
0=unten-&amp;gt;oben&amp;lt;br&amp;gt;&lt;br /&gt;
1=oben-&amp;gt;unten&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| offset1&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Erzeugt einen Abstand links bzw. unten&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| offset2&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Erzeugt einen Abstand rechts bzw. oben&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| color1&lt;br /&gt;
| glossyBlue, glossyRed, glossyCopper, glossyPink, glossyGreen, glossyYellow, glossyOrange, glossyBlack, glossyWhite&amp;lt;br&amp;gt;&lt;br /&gt;
gradient_RRGGBB_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
flat_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
eigenes CSS möglich&lt;br /&gt;
| Farbe des linken/unteren Balkens&lt;br /&gt;
| glossyBlue&lt;br /&gt;
|- &lt;br /&gt;
| color2&lt;br /&gt;
| glossyBlue, glossyRed, glossyCopper, glossyPink, glossyGreen, glossyYellow, glossyOrange, glossyBlack, glossyWhite&amp;lt;br&amp;gt;&lt;br /&gt;
gradient_RRGGBB_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
flat_RRGGBB&amp;lt;br&amp;gt;&lt;br /&gt;
eigenes CSS möglich&lt;br /&gt;
| Farbe des rechten/oberen Balkens&lt;br /&gt;
| glossyWhite&lt;br /&gt;
|- &lt;br /&gt;
| opacity1&lt;br /&gt;
| Zahl (0...1)&amp;lt;br&amp;gt;&lt;br /&gt;
0=transparent&amp;lt;br&amp;gt;&lt;br /&gt;
1=solid&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischenschritt z.B. 0.75&lt;br /&gt;
| Transparenz des linken/unteren Balkens&lt;br /&gt;
| 1&lt;br /&gt;
|- &lt;br /&gt;
| opacity2&lt;br /&gt;
| Zahl (0...1)&amp;lt;br&amp;gt;&lt;br /&gt;
0=transparent&amp;lt;br&amp;gt;&lt;br /&gt;
1=solid&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischenschritt z.B. 0.75&lt;br /&gt;
| Transparenz des rechten/oberen Balkens&lt;br /&gt;
| 1&lt;br /&gt;
|- &lt;br /&gt;
| textValue&lt;br /&gt;
| (Textstring), Perl möglich&lt;br /&gt;
| mittig angezeigter Text&lt;br /&gt;
| $VALUE&lt;br /&gt;
|- &lt;br /&gt;
| textColor&lt;br /&gt;
| RRGGBB (HEX-Format)&lt;br /&gt;
| Farbe des Textes&lt;br /&gt;
| 000000&lt;br /&gt;
|- &lt;br /&gt;
| textSize&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Größe des Textes&lt;br /&gt;
| 20&lt;br /&gt;
|- &lt;br /&gt;
| overlay&lt;br /&gt;
| Link&lt;br /&gt;
| Overlay-Bild (Überdeckt Balken, nur sinnvoll mit Transparenz)&lt;br /&gt;
| (leer)&lt;br /&gt;
|- &lt;br /&gt;
| overlayStyle&lt;br /&gt;
| absolute, relative&lt;br /&gt;
| Platzierung des Bildes mit Beachtung der Offsets (relative) oder über alles (absolute)&lt;br /&gt;
| absolute&lt;br /&gt;
|- &lt;br /&gt;
| overlayRotate&lt;br /&gt;
| 0,1&lt;br /&gt;
| Rotation des Overlay-Bildes&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal: 90 Grad im Uhrzeigersinn&amp;lt;br&amp;gt;&lt;br /&gt;
vertical: 90° entgegen Uhrzeigersinn&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| underlay&lt;br /&gt;
| Link&lt;br /&gt;
| Underlay-Bild (Hintergrundbild unter dem Balken)&lt;br /&gt;
| (leer)&lt;br /&gt;
|- &lt;br /&gt;
| underlayStyle&lt;br /&gt;
| absolute, relative&lt;br /&gt;
| Platzierung des Bildes mit Beachtung der Offsets (relative) oder über alles (absolute)&lt;br /&gt;
| absolute&lt;br /&gt;
|- &lt;br /&gt;
| underlayRotate&lt;br /&gt;
| 0,1&lt;br /&gt;
| Rotation des Overlay-Bildes&amp;lt;br&amp;gt;&lt;br /&gt;
horizontal: 90 Grad im Uhrzeigersinn&amp;lt;br&amp;gt;&lt;br /&gt;
vertical: 90° entgegen Uhrzeigersinn&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderRadius&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Verrundung der Ecken des Balkens&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderSize&lt;br /&gt;
| Zahl (Pixel)&lt;br /&gt;
| Rahmendicke um den Balken (der Balken bleibt immer in seinem durch length und width definierten Bereich)&lt;br /&gt;
| 0&lt;br /&gt;
|- &lt;br /&gt;
| borderColor&lt;br /&gt;
| RRGGBB (HEX-Format)&lt;br /&gt;
| Rahmenfarbe&lt;br /&gt;
| 000000&lt;br /&gt;
|- &lt;br /&gt;
| shadow&lt;br /&gt;
| 0,1&lt;br /&gt;
| Fügt einen Schatten hinter dem Balken hinzu (der Schatten verletzt den durch length und width definierten Bereich)&lt;br /&gt;
| 0&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=PCA301_Funkschaltsteckdose_mit_Energieverbrauchsmessung&amp;diff=11928</id>
		<title>PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=PCA301_Funkschaltsteckdose_mit_Energieverbrauchsmessung&amp;diff=11928"/>
		<updated>2015-08-08T12:26:23Z</updated>

		<summary type="html">&lt;p&gt;Spiff: Link korrigiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=PCA301.jpg&lt;br /&gt;
|Bildbeschreibung=PCA301 Funkschaltsteckdose&lt;br /&gt;
|HWProtocol=PCA&lt;br /&gt;
|HWType=Sender, Empfänger, Sensor&lt;br /&gt;
|HWCategory=PCA&lt;br /&gt;
|HWComm=868 MHz&lt;br /&gt;
|HWChannels=1&lt;br /&gt;
|HWVoltage=230 V~&lt;br /&gt;
|HWPowerConsumption=Eigenverbrauch ca. 0,4 W&lt;br /&gt;
|HWPoweredBy=Netz&lt;br /&gt;
|HWSize=120*62*36(72) mm&lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#PCA301 36_PCA301.pm]&lt;br /&gt;
|ModOwner=[http://forum.fhem.de/index.php?action=profile;u=430 Andre / justme1968]&lt;br /&gt;
|HWManufacturer=ELV / eQ-3&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;&#039;PCA301&#039;&#039;&#039; ist eine über 868,40 MHz per Funk kommunizierende Schaltsteckdose (Zwischenstecker), die gleichzeitig auch den Energieverbrauch eines angeschlossenen Verbrauchers ermittelt und sendet.&lt;br /&gt;
&lt;br /&gt;
Es gibt eine zu diesem System passende Anzeige- und Bedieneinheit (PSA301), mit der bis zu acht der PCA301 Steckdosen geschaltet und deren gemessene Energieverbrauchswerte angezeigt werden können. &lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Schalten über Funk (PSA301 oder Fhem)&lt;br /&gt;
* Schalten über Taste am Gerät&lt;br /&gt;
* Messen des Energieverbrauchs und Übertragung der gemessenen Werte &lt;br /&gt;
* Die Anzeigeeinheit kann bis zu acht Schaltsteckdosen gleichzeitig verwalten&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit Fhem ==&lt;br /&gt;
Die PCA301 Unterstützung in Fhem wird über [[JeeLink]] als [[Interface]] abgewickelt.&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Modul zur Unterstützung der [[PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung]]&lt;br /&gt;
|ModType=d&lt;br /&gt;
&amp;lt;!-- |ModCategory=?? --&amp;gt;&lt;br /&gt;
|ModCmdRef=PCA301&lt;br /&gt;
|ModTechName=36_PCA301.pm&lt;br /&gt;
|ModOwner=justme1968&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Zum Betrieb mit FHEM ist die PCA eigene Anzeigeeinheit nicht nötig, kann aber gleichzeitig genutzt werden. Dabei ist jedoch zu beachten, dass die Anzeigeeinheit auch aktiv mit den Schaltsteckdosen kommuniziert und z.&amp;amp;nbsp;B. in regelmäßigen Abständen die kumulierten Verbrauchswerte zurücksetzt.&lt;br /&gt;
&lt;br /&gt;
Die Beschränkung (der PSA301) auf den Betrieb von bis zu acht Schaltsteckdosen gleichzeitig gilt unter Fhem nicht. Das Fhem Modul kann eine größere Anzahl PCA301 gleichzeitig verwalten.&lt;br /&gt;
&lt;br /&gt;
=== Definition in fhem.cfg ===&lt;br /&gt;
Das Gerät wird definiert mit &lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; PCA301 &amp;lt;addr&amp;gt; &amp;lt;channel&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Bei aktiviertem &amp;quot;autocreate&amp;quot; werden die erforderlichen Definitionen von Fhem beim Erkennen eines entsprechenden Geräts automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== Verhalten nach Stromausfall ===&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText=Ein (natürlich mit Verlust der Gewährleistung verbundener) Umbau zum reinen Energieverbrauchsmesser durch Überbrückung des Relais ist im [http://forum.fhem.de/index.php/topic,11648.msg106468.html#msg106468 Forum] beschrieben. &amp;lt;br /&amp;gt; Nachbau - wie üblich - auf eigene Gefahr.}}&lt;br /&gt;
Nach einem Stromausfall (bzw. direkt nach dem Einstecken in eine Steckdose) befindet sich der PCA301 im Zustand &amp;quot;Aus&amp;quot;. Je nach Anwendungssituation (z.&amp;amp;nbsp;B. Einsatz als Verbrauchsmessgerät bei einem Kühlschrank) könnte das unerwünschte Auswirkungen haben. Um dem entgegenwirken zu können, gibt es für dieses Device die Möglichkeit mit&lt;br /&gt;
:&amp;lt;code&amp;gt;attr &amp;lt;name&amp;gt; forceOn 1&amp;lt;/code&amp;gt; &lt;br /&gt;
den Status &amp;quot;On&amp;quot; zu erzwingen. Fhem versucht dann, das Gerät einzuschalten, sobald ein Zustand oder Schaltvorgang &amp;quot;Off&amp;quot; erkannt wird. Das setzt natürlich ein laufendes Fhem-System voraus.&lt;br /&gt;
&lt;br /&gt;
=== Pairen der zweiten und weiterer Steckdosen ===&lt;br /&gt;
Werden weitere Steckdosen durch &#039;&#039;&#039;autocreate&#039;&#039;&#039; angelegt, stimmt unter Umständen die Kanalnummer nicht und die Steckdose ist von Fhem aus nicht schaltbar. In diesem Fall sollte das Gerät gelöscht werden (mit dem Befehl &lt;br /&gt;
:&amp;lt;code&amp;gt;delete PCA301_xxxxxx&amp;lt;/code&amp;gt; &lt;br /&gt;
einzugeben im Befehlsfenster im Webinterface). Nach der erneuten automatischen Erkennung sollte das Gerät dann funktionieren.&lt;br /&gt;
&lt;br /&gt;
Die Ursache für Unstimmigkeiten bei der Kanalzuornung sind in der Regel Dosen, die zuerst an fhem und dann an der Displayeinheit angelernt werden. Die nächste Version des fhem moduls wird automatisch geänderte Kanalnummern lernen und im Device aktualisieren. Das Problem sollte dann nicht mehr auftreten.&lt;br /&gt;
&lt;br /&gt;
=== Häufiges Polling mit PCA Sketch pcaSerial10.0h ===&lt;br /&gt;
Mit Version 10.0h des pcaSerial Sketches wurden die definierten Geräte fälschlicherweise im Abstand von drei Sekunden gepollt. Dieses Problem wurde mit Version 10.0i behoben.&lt;br /&gt;
&lt;br /&gt;
Nach Aufspielen der Version 10.0i auf den JeeLink müssen die folgenden Befehle abgesetzt werden (Eingabe in das Fhem-Befehlsfeld unter der Annahme, dass der JeeLink mit dem Namen &#039;&#039;myJeeLink&#039;&#039; definiert wurde):&lt;br /&gt;
:&amp;lt;code&amp;gt;set myJeeLink raw 0c&amp;lt;br /&amp;gt;set myJeeLink raw 2c&amp;lt;/code&amp;gt;&lt;br /&gt;
um die Konfiguration im EEPROM des JeeLink neu zu füllen.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Leerlaufanzeige&amp;quot; zwischen 20W und 35W ===&lt;br /&gt;
PCA301 der Charge, die ca. Anfang November 2013 ausgeliefert wurde, zeigen teilweise im Leerlauf (d.h. eingeschaltet aber ohne angeschlossenen oder eingeschalteten Verbraucher) eine konstante Leistungsaufnahe von 20 bis 35 Watt an. Exemplare mit dieser Fehlfunktion sind zu reklamieren und an der Lieferanten zurückzugeben. &lt;br /&gt;
&lt;br /&gt;
Auch die Ende Januar 2014 ausgelieferte Charge hat offensichtlich eine Fehlerquote von bis zu 50%. ELV hat mittlerweile darauf reagiert und folgende Information herausgegeben:&lt;br /&gt;
:&#039;&#039;Es ist korrekt, dass der Artikel aktuell nicht verfügbar ist. Es gab bei einigen Steckdosen eine fehlerhafte Anzeige im Leerlauf. Dieses Verhalten wird aktuell mit dem Hersteller geklärt und der Lagerbestand ist für diese Zeit gesperrt. Die Steckdosen werden jedoch nach Klärung dieses Sachverhalts wieder im ELV Shop angeboten.&#039;&#039; ([http://www.elv.de/topic/zusatz-steckdosen-fehlerhaft-und-derzeit-nicht-im-sortiment.html ELV])&lt;br /&gt;
&lt;br /&gt;
=== Löschen von PCA301 Geräten erfordert Nacharbeiten ===&lt;br /&gt;
Zumindest derzeit (d.h. 02/2014 mit Version 10.0i des JeeLink Sketches) müssen nach dem Löschen von nicht mehr erwünschten PCA301 Geräten die beiden Befehle&lt;br /&gt;
:&amp;lt;code&amp;gt;set myJeeLink raw 0c&amp;lt;br /&amp;gt;set myJeeLink raw 2c&amp;lt;/code&amp;gt;&lt;br /&gt;
abgesetzt werden. Anderenfalls werden die Steckdosen von der autocreate Funktion bei jedem Fhem-Neustart oder dem Neueinlesen der [[Konfiguration]] wieder angelegt.&lt;br /&gt;
&lt;br /&gt;
=== Empfangsfrequenz korrigieren ===&lt;br /&gt;
Siehe [[JeeLink#PCA301 Sketch|PCA301 Sketch]].&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.elv-downloads.de/Assets/Produkte/10/1088/108894/Downloads/108894_funkschaltsteckdose_pca301_um.pdf Bedienungsanleitung] der Funkschaltsteckdose &lt;br /&gt;
* [http://www.elv-downloads.de/Assets/Produkte/10/1088/108893/Downloads/108893_pca301_um.pdf Bedienungsanleitung] (Steckdose und Bedien-/Anzeigeeinheit)&lt;br /&gt;
* [http://blog.moneybag.de/hausautomation-fhem-mit-funksteckdose-energiemessung-elv-pca-301/ Blog] zum Thema JeeLink zur Anbindung von PCA301 und von Lacrosse Temperatursensoren an Fhem&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,11648.0.html JeeLink / PCA301] - Analyse des Funkprotokolls; Anfänge der Entstehung der PCA301 Unterstützung in Fhem.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Energieverbrauchsmessung]]&lt;br /&gt;
[[Kategorie:Schalter (Empfänger)]]&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=SYSSTAT&amp;diff=5927</id>
		<title>SYSSTAT</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=SYSSTAT&amp;diff=5927"/>
		<updated>2014-04-18T23:46:54Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* Einrichtung über SNMP unter Windows 7 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Seit dem 06.02.2013 gibt es ein neues und offizielles FHEM-Modul namens &#039;&#039;&#039;sysstat&#039;&#039;&#039;. Es ermöglicht das Logging und die (grafische) Anzeige der Auslastung (load) ihres &#039;&#039;&#039;Linux&#039;&#039;&#039;-Systems, auf dem FHEM läuft. Daneben ermöglicht es auch die gleichen Auswertungsmöglichkeiten für die Belegung (in Bytes oder Prozent) einer von Ihnen anzugebenden Festplatten-Partition. Gleiches kann auch mit einem Remote-System durchgeführt werden (per SSH mittels Key).&lt;br /&gt;
&lt;br /&gt;
Mit der aktuellen Version lassen sich auch CPU Temperatur und Frequenz eines Raspberry Pi lokal und remote überwachen, die Systemtemperatur einer Synology Diskstation sowie per SNMP praktisch alle UNIX basierten Systeme und auch Windows und viele andere.&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen zum Modul und zur Syntax finden Sie in der [http://fhem.de/commandref.html#SYSSTAT commandref].&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
Die Definitionen und Eigenschaften (Attribute) müssen von Hand in der &#039;&#039;fhem.cfg&#039;&#039; eingetragen werden, da hier der &#039;&#039;autocreate&#039;&#039;-Mechanismus nicht greift (greifen kann).&lt;br /&gt;
&lt;br /&gt;
=== Definition ===&lt;br /&gt;
Aus der &#039;&#039;fhem.cfg&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define BBxM SYSSTAT 120 600&lt;br /&gt;
attr BBxM filesystems /dev/mmcblk0p2&lt;br /&gt;
attr BBxM room &amp;amp;lt;Ihr Raum&amp;amp;gt;&lt;br /&gt;
attr BBxM showpercent 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Anmerkungen ===&lt;br /&gt;
&lt;br /&gt;
* Die Load-Daten werden alle 120 (Default-Wert: 60) &#039;&#039;&#039;Sekunden&#039;&#039;&#039; gelesen und es wird dabei die Partition &#039;&#039;/dev/mmcblk0p2&#039;&#039; alle 600 Sekunden überwacht. Die Belegung der Partition wird in Prozent angegeben. Wie die Partitionen auf ihrem Linux-System benannt sind erfahren Sie z.B. über den &#039;&#039;mount&#039;&#039;-Befehl.&lt;br /&gt;
* Wird kein Auslese-Interval für die Partitionen angegeben, so wird dieses auf den ersten Wert &amp;lt;ins&amp;gt;mit 60 multipliziert&amp;lt;/ins&amp;gt; gesetzt. So würde im o.a. Beispiel aus dem ersten Wert 120 (für das System-load) ein Auslesewert von 7.200 Sekunden, also 120 Minuten bzw. 2 Stunden.&lt;br /&gt;
&lt;br /&gt;
Weitere Definitionen in der &#039;&#039;fhem.cfg&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FileLog_BBxM FileLog /opt/fhem/log/BBxM-%Y-%m.log BBxM&lt;br /&gt;
attr FileLog_BBxM archivedir /opt/fhem/archive/&lt;br /&gt;
attr FileLog_BBxM logtype sysstat:Plot,text&lt;br /&gt;
attr FileLog_BBxM nrarchive 1&lt;br /&gt;
attr FileLog_BBxM room &amp;amp;lt;Ihr Raum&amp;amp;gt;&lt;br /&gt;
define Stats_BBxM weblink fileplot FileLog_BBxM:mysysstat:CURRENT       &amp;amp;lt;&amp;amp;lt;&amp;amp;lt;==== siehe unten&lt;br /&gt;
attr Stats_BBxM alias Systemlast&lt;br /&gt;
attr Stats_BBxM label &amp;quot;Systemlast von BBxM Min: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}&amp;quot;&lt;br /&gt;
attr Stats_BBxM room &amp;amp;lt;Ihr Raum&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Plot ==&lt;br /&gt;
Standard ist die Angabe von &#039;&#039;define Stats_BBxM weblink fileplot FileLog_BBxM:&#039;&#039;&#039;sysstat&#039;&#039;&#039;:CURRENT&#039;&#039;. Dadurch wird nur die Systemlast grafisch (Plot) dargestellt. Wenn Sie auch die Belegung einer Partition im Plot sehen wollen, können Sie folgende Datei (die Sie sich als &#039;&#039;mysysstat.gplot&#039;&#039;unterhalb von &#039;&#039;&amp;amp;lt;Ihr-FHEM-Verzeichnis&amp;amp;gt;/www/gplot&#039;&#039;speichern müssten, damit die o.a. Konfiguration greift) verwenden&lt;br /&gt;
&lt;br /&gt;
=== Definition ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;############################&lt;br /&gt;
# Display the sysload and diskusage values &lt;br /&gt;
# Corresponding FileLog definition:&lt;br /&gt;
# define deviceLog FileLog ./log/device-%Y-%m.log device&lt;br /&gt;
set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;amp;quot;%Y-%m-%d_%H:%M:%S&amp;amp;quot;&lt;br /&gt;
set xlabel &amp;amp;quot; &amp;amp;quot;&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set ylabel &amp;amp;quot;Load&amp;amp;quot;&lt;br /&gt;
set y2label &amp;amp;quot;/ belegt&amp;amp;#160;%&amp;amp;quot;&lt;br /&gt;
set y2range [0:100]&lt;br /&gt;
#FileLog 4:load:0:&lt;br /&gt;
#FileLog 4:/\x3a:0:&lt;br /&gt;
plot &amp;amp;quot;&amp;amp;lt; awk &#039;/load:/ {print $1, $4}&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;amp;quot; using 1:2 ls l0 axes x1y1 title &#039;Load&#039; with lines&lt;br /&gt;
plot &amp;amp;quot;&amp;amp;lt; awk &#039;//:/ {print $1, $4}&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;amp;quot; using 1:2 ls l2fill axes x1y2 title &#039;Disk&#039; with lines&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Anmerkungen ===&lt;br /&gt;
* Die Zeile &amp;quot;#FileLog 4:/\x3a:0:&amp;quot; muss evtl. an ihre Gegebenheiten angepasst werden, wenn Sie nicht das root-Volume überwachen (wollen).&lt;br /&gt;
* Beachten Sie, dass die Sequenz &amp;quot;\x3a&amp;quot; der vorgenannten Zeile den Filter auf &amp;quot;/:&amp;quot; legt. Eine Angabe wie &amp;quot;#FileLog 4:/:&#039;&#039;&#039;:&#039;&#039;&#039;0:&amp;quot; funktioniert nicht, da der Doppelpunkt eine besondere Bedeutung hat. Er muss also &amp;quot;maskiert&amp;quot; werden. Die &#039;&#039;awk&#039;&#039;-Sequenz (&amp;quot;awk &#039;//:/&amp;quot;) ist für die Plot-Ausgabe nicht relevant.&lt;br /&gt;
* Regulär würde ein &amp;quot;#FileLog 4:/:0:&amp;quot; für die root-Partition ausreichen (was den Filter auf &amp;quot;/&amp;quot; legt), aber spätestens, wenn Sie ein 2. Volume (z.B. &amp;quot;/mount/usb&amp;quot;) im Plot anzeigen wollen, trifft der Filter &amp;quot;/&amp;quot; auf beide Volumes zu. Dies führt dann zu eigenartigen Effekten im Plot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Einrichtung über SNMP unter Windows 7 ==&lt;br /&gt;
Um SYSSTAT unter Windows verwenden zu können, muss&lt;br /&gt;
* der SNMP-Dienst installiert und aktiviert sein&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Systemsteuerung -&amp;gt; Programme -&amp;gt; Windows-Funktionen aktivieren oder deaktivieren -&amp;gt; Simple Network Management-Protokoll (SNMP)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* ein Communityname &#039;&#039;&#039;public&#039;&#039;&#039; ohne Passwort und mit Leserechten eingerichtet sein&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Computerverwaltung -&amp;gt; Dienste und Anwendungen -&amp;gt; Dienste -&amp;gt; Eigenschaften von SNMP-Dienst&lt;br /&gt;
-&amp;gt; Sicherheit -&amp;gt; Hinzufügen... -&amp;gt; Communityrechte: NUR LESEN; Communityname: public&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* in der Perl-Installation das Paket Net::SNMP installiert sein&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ActivePerl: Perl Package Manager -&amp;gt; View all packages -&amp;gt; Net-SNMP -&amp;gt; Mark for install -&amp;gt; Run marked actions&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* in fhem das Attribut &#039;&#039;&#039;snmp 1&#039;&#039;&#039; gesetzt sein&lt;br /&gt;
&lt;br /&gt;
Beispielkonfiguration:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define sysstat SYSSTAT 60 600&lt;br /&gt;
attr sysstat filesystems 1,4,6,7&lt;br /&gt;
attr sysstat room System&lt;br /&gt;
attr sysstat showpercent 1&lt;br /&gt;
attr sysstat snmp 1&lt;br /&gt;
attr sysstat uptime 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anmerkung: die IDs der zu loggenden Datenspeicher bekommt man mit &amp;quot;get sysstat filesystems&amp;quot; heraus.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* FHEM-Forum: [http://forum.fhem.de/index.php/topic,10573.0.html Inoffizielles Modul]&lt;br /&gt;
* FHEM-Forum: [http://forum.fhem.de/index.php/topic,10888.0.html Ankündigung als offizielles Modul]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Glossary]]&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=SYSSTAT&amp;diff=5926</id>
		<title>SYSSTAT</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=SYSSTAT&amp;diff=5926"/>
		<updated>2014-04-18T23:44:11Z</updated>

		<summary type="html">&lt;p&gt;Spiff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Seit dem 06.02.2013 gibt es ein neues und offizielles FHEM-Modul namens &#039;&#039;&#039;sysstat&#039;&#039;&#039;. Es ermöglicht das Logging und die (grafische) Anzeige der Auslastung (load) ihres &#039;&#039;&#039;Linux&#039;&#039;&#039;-Systems, auf dem FHEM läuft. Daneben ermöglicht es auch die gleichen Auswertungsmöglichkeiten für die Belegung (in Bytes oder Prozent) einer von Ihnen anzugebenden Festplatten-Partition. Gleiches kann auch mit einem Remote-System durchgeführt werden (per SSH mittels Key).&lt;br /&gt;
&lt;br /&gt;
Mit der aktuellen Version lassen sich auch CPU Temperatur und Frequenz eines Raspberry Pi lokal und remote überwachen, die Systemtemperatur einer Synology Diskstation sowie per SNMP praktisch alle UNIX basierten Systeme und auch Windows und viele andere.&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen zum Modul und zur Syntax finden Sie in der [http://fhem.de/commandref.html#SYSSTAT commandref].&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
Die Definitionen und Eigenschaften (Attribute) müssen von Hand in der &#039;&#039;fhem.cfg&#039;&#039; eingetragen werden, da hier der &#039;&#039;autocreate&#039;&#039;-Mechanismus nicht greift (greifen kann).&lt;br /&gt;
&lt;br /&gt;
=== Definition ===&lt;br /&gt;
Aus der &#039;&#039;fhem.cfg&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define BBxM SYSSTAT 120 600&lt;br /&gt;
attr BBxM filesystems /dev/mmcblk0p2&lt;br /&gt;
attr BBxM room &amp;amp;lt;Ihr Raum&amp;amp;gt;&lt;br /&gt;
attr BBxM showpercent 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Anmerkungen ===&lt;br /&gt;
&lt;br /&gt;
* Die Load-Daten werden alle 120 (Default-Wert: 60) &#039;&#039;&#039;Sekunden&#039;&#039;&#039; gelesen und es wird dabei die Partition &#039;&#039;/dev/mmcblk0p2&#039;&#039; alle 600 Sekunden überwacht. Die Belegung der Partition wird in Prozent angegeben. Wie die Partitionen auf ihrem Linux-System benannt sind erfahren Sie z.B. über den &#039;&#039;mount&#039;&#039;-Befehl.&lt;br /&gt;
* Wird kein Auslese-Interval für die Partitionen angegeben, so wird dieses auf den ersten Wert &amp;lt;ins&amp;gt;mit 60 multipliziert&amp;lt;/ins&amp;gt; gesetzt. So würde im o.a. Beispiel aus dem ersten Wert 120 (für das System-load) ein Auslesewert von 7.200 Sekunden, also 120 Minuten bzw. 2 Stunden.&lt;br /&gt;
&lt;br /&gt;
Weitere Definitionen in der &#039;&#039;fhem.cfg&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define FileLog_BBxM FileLog /opt/fhem/log/BBxM-%Y-%m.log BBxM&lt;br /&gt;
attr FileLog_BBxM archivedir /opt/fhem/archive/&lt;br /&gt;
attr FileLog_BBxM logtype sysstat:Plot,text&lt;br /&gt;
attr FileLog_BBxM nrarchive 1&lt;br /&gt;
attr FileLog_BBxM room &amp;amp;lt;Ihr Raum&amp;amp;gt;&lt;br /&gt;
define Stats_BBxM weblink fileplot FileLog_BBxM:mysysstat:CURRENT       &amp;amp;lt;&amp;amp;lt;&amp;amp;lt;==== siehe unten&lt;br /&gt;
attr Stats_BBxM alias Systemlast&lt;br /&gt;
attr Stats_BBxM label &amp;quot;Systemlast von BBxM Min: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}&amp;quot;&lt;br /&gt;
attr Stats_BBxM room &amp;amp;lt;Ihr Raum&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Plot ==&lt;br /&gt;
Standard ist die Angabe von &#039;&#039;define Stats_BBxM weblink fileplot FileLog_BBxM:&#039;&#039;&#039;sysstat&#039;&#039;&#039;:CURRENT&#039;&#039;. Dadurch wird nur die Systemlast grafisch (Plot) dargestellt. Wenn Sie auch die Belegung einer Partition im Plot sehen wollen, können Sie folgende Datei (die Sie sich als &#039;&#039;mysysstat.gplot&#039;&#039;unterhalb von &#039;&#039;&amp;amp;lt;Ihr-FHEM-Verzeichnis&amp;amp;gt;/www/gplot&#039;&#039;speichern müssten, damit die o.a. Konfiguration greift) verwenden&lt;br /&gt;
&lt;br /&gt;
=== Definition ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;############################&lt;br /&gt;
# Display the sysload and diskusage values &lt;br /&gt;
# Corresponding FileLog definition:&lt;br /&gt;
# define deviceLog FileLog ./log/device-%Y-%m.log device&lt;br /&gt;
set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;amp;quot;%Y-%m-%d_%H:%M:%S&amp;amp;quot;&lt;br /&gt;
set xlabel &amp;amp;quot; &amp;amp;quot;&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set ylabel &amp;amp;quot;Load&amp;amp;quot;&lt;br /&gt;
set y2label &amp;amp;quot;/ belegt&amp;amp;#160;%&amp;amp;quot;&lt;br /&gt;
set y2range [0:100]&lt;br /&gt;
#FileLog 4:load:0:&lt;br /&gt;
#FileLog 4:/\x3a:0:&lt;br /&gt;
plot &amp;amp;quot;&amp;amp;lt; awk &#039;/load:/ {print $1, $4}&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;amp;quot; using 1:2 ls l0 axes x1y1 title &#039;Load&#039; with lines&lt;br /&gt;
plot &amp;amp;quot;&amp;amp;lt; awk &#039;//:/ {print $1, $4}&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;amp;quot; using 1:2 ls l2fill axes x1y2 title &#039;Disk&#039; with lines&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Anmerkungen ===&lt;br /&gt;
* Die Zeile &amp;quot;#FileLog 4:/\x3a:0:&amp;quot; muss evtl. an ihre Gegebenheiten angepasst werden, wenn Sie nicht das root-Volume überwachen (wollen).&lt;br /&gt;
* Beachten Sie, dass die Sequenz &amp;quot;\x3a&amp;quot; der vorgenannten Zeile den Filter auf &amp;quot;/:&amp;quot; legt. Eine Angabe wie &amp;quot;#FileLog 4:/:&#039;&#039;&#039;:&#039;&#039;&#039;0:&amp;quot; funktioniert nicht, da der Doppelpunkt eine besondere Bedeutung hat. Er muss also &amp;quot;maskiert&amp;quot; werden. Die &#039;&#039;awk&#039;&#039;-Sequenz (&amp;quot;awk &#039;//:/&amp;quot;) ist für die Plot-Ausgabe nicht relevant.&lt;br /&gt;
* Regulär würde ein &amp;quot;#FileLog 4:/:0:&amp;quot; für die root-Partition ausreichen (was den Filter auf &amp;quot;/&amp;quot; legt), aber spätestens, wenn Sie ein 2. Volume (z.B. &amp;quot;/mount/usb&amp;quot;) im Plot anzeigen wollen, trifft der Filter &amp;quot;/&amp;quot; auf beide Volumes zu. Dies führt dann zu eigenartigen Effekten im Plot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Einrichtung über SNMP unter Windows 7 ==&lt;br /&gt;
Um SYSSTAT unter Windows verwenden zu können, muss&lt;br /&gt;
* der SNMP-Dienst installiert und aktiviert sein&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Systemsteuerung -&amp;gt; Programme -&amp;gt; Windows-Funktionen aktivieren oder deaktivieren -&amp;gt; Simple Network management-Protokoll (SNMP)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* ein Communityname &#039;&#039;&#039;public&#039;&#039;&#039; ohne Passwort und mit Leserechten eingerichtet sein&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Computerverwaltung -&amp;gt; Dienste und Anwendungen -&amp;gt; Dienste -&amp;gt; Eigenschaften von SNMP-Dienst&lt;br /&gt;
-&amp;gt; Sicherheit -&amp;gt; Hinzufügen... -&amp;gt; Communityrechte: NUR LESEN; Communityname: public&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* in der Perl-Installation das Paket Net::SNMP installiert sein&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ActivePerl: Perl Package Manager -&amp;gt; View all packages -&amp;gt; Net-SNMP -&amp;gt; Mark for Install -&amp;gt; Run Marked Actions&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* in fhem das Attribut &#039;&#039;&#039;snmp 1&#039;&#039;&#039; gesetzt sein&lt;br /&gt;
&lt;br /&gt;
Beispielkonfiguration:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define sysstat SYSSTAT 60 600&lt;br /&gt;
attr sysstat filesystems 1,4,6,7&lt;br /&gt;
attr sysstat room System&lt;br /&gt;
attr sysstat showpercent 1&lt;br /&gt;
attr sysstat snmp 1&lt;br /&gt;
attr sysstat uptime 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anmerkung: die IDs der zu loggenden Datenspeicher bekommt man mit &amp;quot;get sysstat filesystems&amp;quot; heraus.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* FHEM-Forum: [http://forum.fhem.de/index.php/topic,10573.0.html Inoffizielles Modul]&lt;br /&gt;
* FHEM-Forum: [http://forum.fhem.de/index.php/topic,10888.0.html Ankündigung als offizielles Modul]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Glossary]]&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4675</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4675"/>
		<updated>2014-01-26T18:19:18Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* ECMD-Modul */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: wer statt des Erklärungstextes die reine Konfiguration sucht, kann sie im [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung vorletzten Abschnitt] einsehen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
Da im ECMD-Modul einige Befehle fehlen, werden diese über das readingsProxy-Modul emuliert. Dieses gibt die Befehle dann über das ECMD-Modul an DMXControl weiter.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
[[Datei:DMXControl_Kanaele.png|thumb|DMXControl Kanalübersicht]][[Datei:DMXControl_Terminal.png|thumb|DMXControl Terminal]]&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;[http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
&lt;br /&gt;
Ein &#039;&#039;set (ECMDDevice) rgb (Farbe RRGGBB)&#039;&#039; soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Der Postprozessor ist notwendig, um die Antwort von DMXControl in ein FHEM-gerechte Format zu konvertieren.&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
[[Datei:FHEMWEB_Colorpicker.png|thumb|FHEMWEB-Colorpicker]]&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB (hex). Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
Damit der Colorpicker überhaupt aktiviert wird, muss er beispielsweise in der 99_myUtils.pm initialisiert werden, siehe [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung hier].&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:andFHEM_Colorpicker.png|thumb|andFHEM-Colorpicker]]&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App [http://andfhem.klass.li andFHEM] verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, müssen folgende Attribute gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Konfiguration mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S realtimePicker lightSceneParamsToSave&lt;br /&gt;
 &lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef:DMXControl_Effects=ECMD\DMXControl_Effects.classdef&lt;br /&gt;
 &lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
 &lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
 &lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
 &lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Effects.classdef &#039;&#039;(oben noch nicht beschrieben)&#039;&#039;&lt;br /&gt;
 # Notifcations&lt;br /&gt;
 set Klingel cmd {&amp;quot;runcommand 7 17 3&amp;quot;}&lt;br /&gt;
 set Tueroeffner cmd {&amp;quot;runcommand 7 18 3&amp;quot;}&lt;br /&gt;
 set Nachricht cmd {&amp;quot;runcommand 7 19 3&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
 #statische Beleuchtungs-Presets&lt;br /&gt;
 set Licht_0 cmd {&amp;quot;runcommand 7 7 3&amp;quot;}&lt;br /&gt;
 set Licht_1 cmd {&amp;quot;runcommand 7 8 3&amp;quot;}&lt;br /&gt;
 set Licht_2 cmd {&amp;quot;runcommand 7 9 3&amp;quot;}&lt;br /&gt;
 set Licht_3 cmd {&amp;quot;runcommand 7 10 3&amp;quot;}&lt;br /&gt;
 set Licht_4 cmd {&amp;quot;runcommand 7 11 3&amp;quot;}&lt;br /&gt;
 set Licht_5 cmd {&amp;quot;runcommand 7 12 3&amp;quot;}&lt;br /&gt;
 set Licht_6 cmd {&amp;quot;runcommand 7 13 3&amp;quot;}&lt;br /&gt;
 set Licht_7 cmd {&amp;quot;runcommand 7 14 3&amp;quot;}&lt;br /&gt;
 set Licht_8 cmd {&amp;quot;runcommand 7 15 3&amp;quot;}&lt;br /&gt;
 set Licht_9 cmd {&amp;quot;runcommand 7 16 3&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 99_myUtils.pm (in &#039;&#039;&#039;fett&#039;&#039;&#039; die notwendigen Änderungen zum Initialisieren des Colorpickers)&lt;br /&gt;
 # start-of-template&lt;br /&gt;
 package main;&lt;br /&gt;
 &lt;br /&gt;
 use strict;&lt;br /&gt;
 use warnings;&lt;br /&gt;
 use POSIX;&lt;br /&gt;
 ##### wichtig, da die in Color; verwendete Variable $FW_ME sonst noch nicht definiert ist #####&lt;br /&gt;
 &#039;&#039;&#039;use vars qw($FW_ME);&#039;&#039;&#039; &lt;br /&gt;
 &#039;&#039;&#039;use Color;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 sub&lt;br /&gt;
 myUtils_Initialize($$)&lt;br /&gt;
 {&lt;br /&gt;
 	my ($hash) = @_;&lt;br /&gt;
 &#039;&#039;&#039;FHEM_colorpickerInit();&#039;&#039;&#039;	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # start with your own functions below this line&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # behind your last function, we need the following&lt;br /&gt;
 1;&lt;br /&gt;
 # end-of-template&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: &#039;&#039;&#039;Rudolf König&#039;&#039;&#039; stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: &#039;&#039;&#039;Dr. Boris Neubert&#039;&#039;&#039;&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: &#039;&#039;&#039;Andre (justme1968)&#039;&#039;&#039;, ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: &#039;&#039;&#039;Matthias Klass&#039;&#039;&#039;, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: &#039;&#039;&#039;Stefan Krupop&#039;&#039;&#039; stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: &#039;&#039;&#039;Bill&#039;&#039;&#039;... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4669</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4669"/>
		<updated>2014-01-26T17:58:29Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* Lightscene */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: wer statt des Erklärungstextes die reine Konfiguration sucht, kann sie im [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung vorletzten Abschnitt] einsehen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
Da im ECMD-Modul einige Befehle fehlen, werden diese über das readingsProxy-Modul emuliert. Dieses gibt die Befehle dann über das ECMD-Modul an DMXControl weiter.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
[[Datei:DMXControl_Kanaele.png|thumb|DMXControl Kanalübersicht]][[Datei:DMXControl_Terminal.png|thumb|DMXControl Terminal]]&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;[http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
&lt;br /&gt;
Ein &#039;&#039;set (ECMDDevice) rgb (Farbe RRGGBB)&#039;&#039; soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
[[Datei:FHEMWEB_Colorpicker.png|thumb|FHEMWEB-Colorpicker]]&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB (hex). Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
Damit der Colorpicker überhaupt aktiviert wird, muss er beispielsweise in der 99_myUtils.pm initialisiert werden, siehe [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung hier].&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:andFHEM_Colorpicker.png|thumb|andFHEM-Colorpicker]]&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App [http://andfhem.klass.li andFHEM] verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, müssen folgende Attribute gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Konfiguration mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S realtimePicker lightSceneParamsToSave&lt;br /&gt;
 &lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef:DMXControl_Effects=ECMD\DMXControl_Effects.classdef&lt;br /&gt;
 &lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
 &lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
 &lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
 &lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Effects.classdef &#039;&#039;(oben noch nicht beschrieben)&#039;&#039;&lt;br /&gt;
 # Notifcations&lt;br /&gt;
 set Klingel cmd {&amp;quot;runcommand 7 17 3&amp;quot;}&lt;br /&gt;
 set Tueroeffner cmd {&amp;quot;runcommand 7 18 3&amp;quot;}&lt;br /&gt;
 set Nachricht cmd {&amp;quot;runcommand 7 19 3&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
 #statische Beleuchtungs-Presets&lt;br /&gt;
 set Licht_0 cmd {&amp;quot;runcommand 7 7 3&amp;quot;}&lt;br /&gt;
 set Licht_1 cmd {&amp;quot;runcommand 7 8 3&amp;quot;}&lt;br /&gt;
 set Licht_2 cmd {&amp;quot;runcommand 7 9 3&amp;quot;}&lt;br /&gt;
 set Licht_3 cmd {&amp;quot;runcommand 7 10 3&amp;quot;}&lt;br /&gt;
 set Licht_4 cmd {&amp;quot;runcommand 7 11 3&amp;quot;}&lt;br /&gt;
 set Licht_5 cmd {&amp;quot;runcommand 7 12 3&amp;quot;}&lt;br /&gt;
 set Licht_6 cmd {&amp;quot;runcommand 7 13 3&amp;quot;}&lt;br /&gt;
 set Licht_7 cmd {&amp;quot;runcommand 7 14 3&amp;quot;}&lt;br /&gt;
 set Licht_8 cmd {&amp;quot;runcommand 7 15 3&amp;quot;}&lt;br /&gt;
 set Licht_9 cmd {&amp;quot;runcommand 7 16 3&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 99_myUtils.pm (in &#039;&#039;&#039;fett&#039;&#039;&#039; die notwendigen Änderungen zum Initialisieren des Colorpickers)&lt;br /&gt;
 # start-of-template&lt;br /&gt;
 package main;&lt;br /&gt;
 &lt;br /&gt;
 use strict;&lt;br /&gt;
 use warnings;&lt;br /&gt;
 use POSIX;&lt;br /&gt;
 ##### wichtig, da die in Color; verwendete Variable $FW_ME sonst noch nicht definiert ist #####&lt;br /&gt;
 &#039;&#039;&#039;use vars qw($FW_ME);&#039;&#039;&#039; &lt;br /&gt;
 &#039;&#039;&#039;use Color;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 sub&lt;br /&gt;
 myUtils_Initialize($$)&lt;br /&gt;
 {&lt;br /&gt;
 	my ($hash) = @_;&lt;br /&gt;
 &#039;&#039;&#039;FHEM_colorpickerInit();&#039;&#039;&#039;	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # start with your own functions below this line&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # behind your last function, we need the following&lt;br /&gt;
 1;&lt;br /&gt;
 # end-of-template&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: &#039;&#039;&#039;Rudolf König&#039;&#039;&#039; stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: &#039;&#039;&#039;Dr. Boris Neubert&#039;&#039;&#039;&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: &#039;&#039;&#039;Andre (justme1968)&#039;&#039;&#039;, ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: &#039;&#039;&#039;Matthias Klass&#039;&#039;&#039;, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: &#039;&#039;&#039;Stefan Krupop&#039;&#039;&#039; stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: &#039;&#039;&#039;Bill&#039;&#039;&#039;... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4668</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4668"/>
		<updated>2014-01-26T17:57:58Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* Colorpicker &amp;amp; readingsProxy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: wer statt des Erklärungstextes die reine Konfiguration sucht, kann sie im [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung vorletzten Abschnitt] einsehen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
Da im ECMD-Modul einige Befehle fehlen, werden diese über das readingsProxy-Modul emuliert. Dieses gibt die Befehle dann über das ECMD-Modul an DMXControl weiter.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
[[Datei:DMXControl_Kanaele.png|thumb|DMXControl Kanalübersicht]][[Datei:DMXControl_Terminal.png|thumb|DMXControl Terminal]]&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;[http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
&lt;br /&gt;
Ein &#039;&#039;set (ECMDDevice) rgb (Farbe RRGGBB)&#039;&#039; soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
[[Datei:FHEMWEB_Colorpicker.png|thumb|FHEMWEB-Colorpicker]]&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB (hex). Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
Damit der Colorpicker überhaupt aktiviert wird, muss er beispielsweise in der 99_myUtils.pm initialisiert werden, siehe [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung hier].&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:andFHEM_Colorpicker.png|thumb|andFHEM-Colorpicker]]&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App [http://andfhem.klass.li andFHEM] verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Konfiguration mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S realtimePicker lightSceneParamsToSave&lt;br /&gt;
 &lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef:DMXControl_Effects=ECMD\DMXControl_Effects.classdef&lt;br /&gt;
 &lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
 &lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
 &lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
 &lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Effects.classdef &#039;&#039;(oben noch nicht beschrieben)&#039;&#039;&lt;br /&gt;
 # Notifcations&lt;br /&gt;
 set Klingel cmd {&amp;quot;runcommand 7 17 3&amp;quot;}&lt;br /&gt;
 set Tueroeffner cmd {&amp;quot;runcommand 7 18 3&amp;quot;}&lt;br /&gt;
 set Nachricht cmd {&amp;quot;runcommand 7 19 3&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
 #statische Beleuchtungs-Presets&lt;br /&gt;
 set Licht_0 cmd {&amp;quot;runcommand 7 7 3&amp;quot;}&lt;br /&gt;
 set Licht_1 cmd {&amp;quot;runcommand 7 8 3&amp;quot;}&lt;br /&gt;
 set Licht_2 cmd {&amp;quot;runcommand 7 9 3&amp;quot;}&lt;br /&gt;
 set Licht_3 cmd {&amp;quot;runcommand 7 10 3&amp;quot;}&lt;br /&gt;
 set Licht_4 cmd {&amp;quot;runcommand 7 11 3&amp;quot;}&lt;br /&gt;
 set Licht_5 cmd {&amp;quot;runcommand 7 12 3&amp;quot;}&lt;br /&gt;
 set Licht_6 cmd {&amp;quot;runcommand 7 13 3&amp;quot;}&lt;br /&gt;
 set Licht_7 cmd {&amp;quot;runcommand 7 14 3&amp;quot;}&lt;br /&gt;
 set Licht_8 cmd {&amp;quot;runcommand 7 15 3&amp;quot;}&lt;br /&gt;
 set Licht_9 cmd {&amp;quot;runcommand 7 16 3&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 99_myUtils.pm (in &#039;&#039;&#039;fett&#039;&#039;&#039; die notwendigen Änderungen zum Initialisieren des Colorpickers)&lt;br /&gt;
 # start-of-template&lt;br /&gt;
 package main;&lt;br /&gt;
 &lt;br /&gt;
 use strict;&lt;br /&gt;
 use warnings;&lt;br /&gt;
 use POSIX;&lt;br /&gt;
 ##### wichtig, da die in Color; verwendete Variable $FW_ME sonst noch nicht definiert ist #####&lt;br /&gt;
 &#039;&#039;&#039;use vars qw($FW_ME);&#039;&#039;&#039; &lt;br /&gt;
 &#039;&#039;&#039;use Color;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 sub&lt;br /&gt;
 myUtils_Initialize($$)&lt;br /&gt;
 {&lt;br /&gt;
 	my ($hash) = @_;&lt;br /&gt;
 &#039;&#039;&#039;FHEM_colorpickerInit();&#039;&#039;&#039;	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # start with your own functions below this line&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # behind your last function, we need the following&lt;br /&gt;
 1;&lt;br /&gt;
 # end-of-template&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: &#039;&#039;&#039;Rudolf König&#039;&#039;&#039; stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: &#039;&#039;&#039;Dr. Boris Neubert&#039;&#039;&#039;&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: &#039;&#039;&#039;Andre (justme1968)&#039;&#039;&#039;, ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: &#039;&#039;&#039;Matthias Klass&#039;&#039;&#039;, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: &#039;&#039;&#039;Stefan Krupop&#039;&#039;&#039; stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: &#039;&#039;&#039;Bill&#039;&#039;&#039;... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4667</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4667"/>
		<updated>2014-01-26T17:55:56Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* Colorpicker &amp;amp; readingsProxy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: wer statt des Erklärungstextes die reine Konfiguration sucht, kann sie im [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung vorletzten Abschnitt] einsehen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
Da im ECMD-Modul einige Befehle fehlen, werden diese über das readingsProxy-Modul emuliert. Dieses gibt die Befehle dann über das ECMD-Modul an DMXControl weiter.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
[[Datei:DMXControl_Kanaele.png|thumb|DMXControl Kanalübersicht]][[Datei:DMXControl_Terminal.png|thumb|DMXControl Terminal]]&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;[http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
&lt;br /&gt;
Ein &#039;&#039;set (ECMDDevice) rgb (Farbe RRGGBB)&#039;&#039; soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
[[Datei:FHEMWEB_Colorpicker.png|thumb|FHEMWEB-Colorpicker]]&lt;br /&gt;
[[Datei:andFHEM_Colorpicker.png|thumb|andFHEM-Colorpicker]]&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB (hex). Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
Damit der Colorpicker überhaupt aktiviert wird, muss er beispielsweise in der 99_myUtils.pm initialisiert werden, siehe [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung hier].&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App [http://andfhem.klass.li andFHEM] verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Konfiguration mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S realtimePicker lightSceneParamsToSave&lt;br /&gt;
 &lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef:DMXControl_Effects=ECMD\DMXControl_Effects.classdef&lt;br /&gt;
 &lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
 &lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
 &lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
 &lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Effects.classdef &#039;&#039;(oben noch nicht beschrieben)&#039;&#039;&lt;br /&gt;
 # Notifcations&lt;br /&gt;
 set Klingel cmd {&amp;quot;runcommand 7 17 3&amp;quot;}&lt;br /&gt;
 set Tueroeffner cmd {&amp;quot;runcommand 7 18 3&amp;quot;}&lt;br /&gt;
 set Nachricht cmd {&amp;quot;runcommand 7 19 3&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
 #statische Beleuchtungs-Presets&lt;br /&gt;
 set Licht_0 cmd {&amp;quot;runcommand 7 7 3&amp;quot;}&lt;br /&gt;
 set Licht_1 cmd {&amp;quot;runcommand 7 8 3&amp;quot;}&lt;br /&gt;
 set Licht_2 cmd {&amp;quot;runcommand 7 9 3&amp;quot;}&lt;br /&gt;
 set Licht_3 cmd {&amp;quot;runcommand 7 10 3&amp;quot;}&lt;br /&gt;
 set Licht_4 cmd {&amp;quot;runcommand 7 11 3&amp;quot;}&lt;br /&gt;
 set Licht_5 cmd {&amp;quot;runcommand 7 12 3&amp;quot;}&lt;br /&gt;
 set Licht_6 cmd {&amp;quot;runcommand 7 13 3&amp;quot;}&lt;br /&gt;
 set Licht_7 cmd {&amp;quot;runcommand 7 14 3&amp;quot;}&lt;br /&gt;
 set Licht_8 cmd {&amp;quot;runcommand 7 15 3&amp;quot;}&lt;br /&gt;
 set Licht_9 cmd {&amp;quot;runcommand 7 16 3&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 99_myUtils.pm (in &#039;&#039;&#039;fett&#039;&#039;&#039; die notwendigen Änderungen zum Initialisieren des Colorpickers)&lt;br /&gt;
 # start-of-template&lt;br /&gt;
 package main;&lt;br /&gt;
 &lt;br /&gt;
 use strict;&lt;br /&gt;
 use warnings;&lt;br /&gt;
 use POSIX;&lt;br /&gt;
 ##### wichtig, da die in Color; verwendete Variable $FW_ME sonst noch nicht definiert ist #####&lt;br /&gt;
 &#039;&#039;&#039;use vars qw($FW_ME);&#039;&#039;&#039; &lt;br /&gt;
 &#039;&#039;&#039;use Color;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 sub&lt;br /&gt;
 myUtils_Initialize($$)&lt;br /&gt;
 {&lt;br /&gt;
 	my ($hash) = @_;&lt;br /&gt;
 &#039;&#039;&#039;FHEM_colorpickerInit();&#039;&#039;&#039;	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # start with your own functions below this line&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # behind your last function, we need the following&lt;br /&gt;
 1;&lt;br /&gt;
 # end-of-template&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: &#039;&#039;&#039;Rudolf König&#039;&#039;&#039; stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: &#039;&#039;&#039;Dr. Boris Neubert&#039;&#039;&#039;&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: &#039;&#039;&#039;Andre (justme1968)&#039;&#039;&#039;, ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: &#039;&#039;&#039;Matthias Klass&#039;&#039;&#039;, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: &#039;&#039;&#039;Stefan Krupop&#039;&#039;&#039; stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: &#039;&#039;&#039;Bill&#039;&#039;&#039;... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4666</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4666"/>
		<updated>2014-01-26T17:54:39Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* Colorpicker &amp;amp; readingsProxy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: wer statt des Erklärungstextes die reine Konfiguration sucht, kann sie im [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung vorletzten Abschnitt] einsehen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
Da im ECMD-Modul einige Befehle fehlen, werden diese über das readingsProxy-Modul emuliert. Dieses gibt die Befehle dann über das ECMD-Modul an DMXControl weiter.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
[[Datei:DMXControl_Kanaele.png|thumb|DMXControl Kanalübersicht]][[Datei:DMXControl_Terminal.png|thumb|DMXControl Terminal]]&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;[http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
&lt;br /&gt;
Ein &#039;&#039;set (ECMDDevice) rgb (Farbe RRGGBB)&#039;&#039; soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
[[Datei:FHEMWEB_Colorpicker.png|thumb|FHEMWEB-Colorpicker]]&lt;br /&gt;
[[Datei:andFHEM_Colorpicker.png|thumb|andFHEM-Colorpicker]]&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB (hex). Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
Damit der Colorpicker überhaupt aktiviert wird, muss in der 99_myUtils.pm initialisiert werden, siehe [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung hier].&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App [http://andfhem.klass.li andFHEM] verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Konfiguration mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S realtimePicker lightSceneParamsToSave&lt;br /&gt;
 &lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef:DMXControl_Effects=ECMD\DMXControl_Effects.classdef&lt;br /&gt;
 &lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
 &lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
 &lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
 &lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Effects.classdef &#039;&#039;(oben noch nicht beschrieben)&#039;&#039;&lt;br /&gt;
 # Notifcations&lt;br /&gt;
 set Klingel cmd {&amp;quot;runcommand 7 17 3&amp;quot;}&lt;br /&gt;
 set Tueroeffner cmd {&amp;quot;runcommand 7 18 3&amp;quot;}&lt;br /&gt;
 set Nachricht cmd {&amp;quot;runcommand 7 19 3&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
 #statische Beleuchtungs-Presets&lt;br /&gt;
 set Licht_0 cmd {&amp;quot;runcommand 7 7 3&amp;quot;}&lt;br /&gt;
 set Licht_1 cmd {&amp;quot;runcommand 7 8 3&amp;quot;}&lt;br /&gt;
 set Licht_2 cmd {&amp;quot;runcommand 7 9 3&amp;quot;}&lt;br /&gt;
 set Licht_3 cmd {&amp;quot;runcommand 7 10 3&amp;quot;}&lt;br /&gt;
 set Licht_4 cmd {&amp;quot;runcommand 7 11 3&amp;quot;}&lt;br /&gt;
 set Licht_5 cmd {&amp;quot;runcommand 7 12 3&amp;quot;}&lt;br /&gt;
 set Licht_6 cmd {&amp;quot;runcommand 7 13 3&amp;quot;}&lt;br /&gt;
 set Licht_7 cmd {&amp;quot;runcommand 7 14 3&amp;quot;}&lt;br /&gt;
 set Licht_8 cmd {&amp;quot;runcommand 7 15 3&amp;quot;}&lt;br /&gt;
 set Licht_9 cmd {&amp;quot;runcommand 7 16 3&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 99_myUtils.pm (in &#039;&#039;&#039;fett&#039;&#039;&#039; die notwendigen Änderungen zum Initialisieren des Colorpickers)&lt;br /&gt;
 # start-of-template&lt;br /&gt;
 package main;&lt;br /&gt;
 &lt;br /&gt;
 use strict;&lt;br /&gt;
 use warnings;&lt;br /&gt;
 use POSIX;&lt;br /&gt;
 ##### wichtig, da die in Color; verwendete Variable $FW_ME sonst noch nicht definiert ist #####&lt;br /&gt;
 &#039;&#039;&#039;use vars qw($FW_ME);&#039;&#039;&#039; &lt;br /&gt;
 &#039;&#039;&#039;use Color;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 sub&lt;br /&gt;
 myUtils_Initialize($$)&lt;br /&gt;
 {&lt;br /&gt;
 	my ($hash) = @_;&lt;br /&gt;
 &#039;&#039;&#039;FHEM_colorpickerInit();&#039;&#039;&#039;	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # start with your own functions below this line&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # behind your last function, we need the following&lt;br /&gt;
 1;&lt;br /&gt;
 # end-of-template&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: &#039;&#039;&#039;Rudolf König&#039;&#039;&#039; stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: &#039;&#039;&#039;Dr. Boris Neubert&#039;&#039;&#039;&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: &#039;&#039;&#039;Andre (justme1968)&#039;&#039;&#039;, ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: &#039;&#039;&#039;Matthias Klass&#039;&#039;&#039;, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: &#039;&#039;&#039;Stefan Krupop&#039;&#039;&#039; stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: &#039;&#039;&#039;Bill&#039;&#039;&#039;... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4665</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4665"/>
		<updated>2014-01-26T17:52:46Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* ECMD-Modul */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: wer statt des Erklärungstextes die reine Konfiguration sucht, kann sie im [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung vorletzten Abschnitt] einsehen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
Da im ECMD-Modul einige Befehle fehlen, werden diese über das readingsProxy-Modul emuliert. Dieses gibt die Befehle dann über das ECMD-Modul an DMXControl weiter.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
[[Datei:DMXControl_Kanaele.png|thumb|DMXControl Kanalübersicht]][[Datei:DMXControl_Terminal.png|thumb|DMXControl Terminal]]&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;[http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
&lt;br /&gt;
Ein &#039;&#039;set (ECMDDevice) rgb (Farbe RRGGBB)&#039;&#039; soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
[[Datei:FHEMWEB_Colorpicker.png|thumb|FHEMWEB-Colorpicker]]&lt;br /&gt;
[[Datei:andFHEM_Colorpicker.png|thumb|andFHEM-Colorpicker]]&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB. Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
Damit der Colorpicker überhaupt aktiviert wird, muss in der 99_myUtils.pm initialisiert werden, siehe [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung hier].&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App [http://andfhem.klass.li andFHEM] verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Konfiguration mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S realtimePicker lightSceneParamsToSave&lt;br /&gt;
 &lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef:DMXControl_Effects=ECMD\DMXControl_Effects.classdef&lt;br /&gt;
 &lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
 &lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
 &lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
 &lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Effects.classdef &#039;&#039;(oben noch nicht beschrieben)&#039;&#039;&lt;br /&gt;
 # Notifcations&lt;br /&gt;
 set Klingel cmd {&amp;quot;runcommand 7 17 3&amp;quot;}&lt;br /&gt;
 set Tueroeffner cmd {&amp;quot;runcommand 7 18 3&amp;quot;}&lt;br /&gt;
 set Nachricht cmd {&amp;quot;runcommand 7 19 3&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
 #statische Beleuchtungs-Presets&lt;br /&gt;
 set Licht_0 cmd {&amp;quot;runcommand 7 7 3&amp;quot;}&lt;br /&gt;
 set Licht_1 cmd {&amp;quot;runcommand 7 8 3&amp;quot;}&lt;br /&gt;
 set Licht_2 cmd {&amp;quot;runcommand 7 9 3&amp;quot;}&lt;br /&gt;
 set Licht_3 cmd {&amp;quot;runcommand 7 10 3&amp;quot;}&lt;br /&gt;
 set Licht_4 cmd {&amp;quot;runcommand 7 11 3&amp;quot;}&lt;br /&gt;
 set Licht_5 cmd {&amp;quot;runcommand 7 12 3&amp;quot;}&lt;br /&gt;
 set Licht_6 cmd {&amp;quot;runcommand 7 13 3&amp;quot;}&lt;br /&gt;
 set Licht_7 cmd {&amp;quot;runcommand 7 14 3&amp;quot;}&lt;br /&gt;
 set Licht_8 cmd {&amp;quot;runcommand 7 15 3&amp;quot;}&lt;br /&gt;
 set Licht_9 cmd {&amp;quot;runcommand 7 16 3&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 99_myUtils.pm (in &#039;&#039;&#039;fett&#039;&#039;&#039; die notwendigen Änderungen zum Initialisieren des Colorpickers)&lt;br /&gt;
 # start-of-template&lt;br /&gt;
 package main;&lt;br /&gt;
 &lt;br /&gt;
 use strict;&lt;br /&gt;
 use warnings;&lt;br /&gt;
 use POSIX;&lt;br /&gt;
 ##### wichtig, da die in Color; verwendete Variable $FW_ME sonst noch nicht definiert ist #####&lt;br /&gt;
 &#039;&#039;&#039;use vars qw($FW_ME);&#039;&#039;&#039; &lt;br /&gt;
 &#039;&#039;&#039;use Color;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 sub&lt;br /&gt;
 myUtils_Initialize($$)&lt;br /&gt;
 {&lt;br /&gt;
 	my ($hash) = @_;&lt;br /&gt;
 &#039;&#039;&#039;FHEM_colorpickerInit();&#039;&#039;&#039;	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # start with your own functions below this line&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # behind your last function, we need the following&lt;br /&gt;
 1;&lt;br /&gt;
 # end-of-template&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: &#039;&#039;&#039;Rudolf König&#039;&#039;&#039; stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: &#039;&#039;&#039;Dr. Boris Neubert&#039;&#039;&#039;&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: &#039;&#039;&#039;Andre (justme1968)&#039;&#039;&#039;, ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: &#039;&#039;&#039;Matthias Klass&#039;&#039;&#039;, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: &#039;&#039;&#039;Stefan Krupop&#039;&#039;&#039; stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: &#039;&#039;&#039;Bill&#039;&#039;&#039;... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4664</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4664"/>
		<updated>2014-01-26T17:52:14Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* ECMD-Modul */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: wer statt des Erklärungstextes die reine Konfiguration sucht, kann sie im [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung vorletzten Abschnitt] einsehen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
Da im ECMD-Modul einige Befehle fehlen, werden diese über das readingsProxy-Modul emuliert. Dieses gibt die Befehle dann über das ECMD-Modul an DMXControl weiter.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
[[Datei:DMXControl_Kanaele.png|thumb|DMXControl Kanalübersicht]][[Datei:DMXControl_Terminal.png|thumb|DMXControl Terminal]]&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;[http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
&lt;br /&gt;
Ein &#039;&#039;set (ECMDDevice) rgb (Farbe RRGGBB)&#039;&#039; soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
[[Datei:FHEMWEB_Colorpicker.png|thumb|FHEMWEB-Colorpicker]]&lt;br /&gt;
[[Datei:andFHEM_Colorpicker.png|thumb|andFHEM-Colorpicker]]&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB. Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
Damit der Colorpicker überhaupt aktiviert wird, muss in der 99_myUtils.pm initialisiert werden, siehe [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung hier].&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App [http://andfhem.klass.li andFHEM] verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Konfiguration mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S realtimePicker lightSceneParamsToSave&lt;br /&gt;
 &lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef:DMXControl_Effects=ECMD\DMXControl_Effects.classdef&lt;br /&gt;
 &lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
 &lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
 &lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
 &lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Effects.classdef &#039;&#039;(oben noch nicht beschrieben)&#039;&#039;&lt;br /&gt;
 # Notifcations&lt;br /&gt;
 set Klingel cmd {&amp;quot;runcommand 7 17 3&amp;quot;}&lt;br /&gt;
 set Tueroeffner cmd {&amp;quot;runcommand 7 18 3&amp;quot;}&lt;br /&gt;
 set Nachricht cmd {&amp;quot;runcommand 7 19 3&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
 #statische Beleuchtungs-Presets&lt;br /&gt;
 set Licht_0 cmd {&amp;quot;runcommand 7 7 3&amp;quot;}&lt;br /&gt;
 set Licht_1 cmd {&amp;quot;runcommand 7 8 3&amp;quot;}&lt;br /&gt;
 set Licht_2 cmd {&amp;quot;runcommand 7 9 3&amp;quot;}&lt;br /&gt;
 set Licht_3 cmd {&amp;quot;runcommand 7 10 3&amp;quot;}&lt;br /&gt;
 set Licht_4 cmd {&amp;quot;runcommand 7 11 3&amp;quot;}&lt;br /&gt;
 set Licht_5 cmd {&amp;quot;runcommand 7 12 3&amp;quot;}&lt;br /&gt;
 set Licht_6 cmd {&amp;quot;runcommand 7 13 3&amp;quot;}&lt;br /&gt;
 set Licht_7 cmd {&amp;quot;runcommand 7 14 3&amp;quot;}&lt;br /&gt;
 set Licht_8 cmd {&amp;quot;runcommand 7 15 3&amp;quot;}&lt;br /&gt;
 set Licht_9 cmd {&amp;quot;runcommand 7 16 3&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 99_myUtils.pm (in &#039;&#039;&#039;fett&#039;&#039;&#039; die notwendigen Änderungen zum Initialisieren des Colorpickers)&lt;br /&gt;
 # start-of-template&lt;br /&gt;
 package main;&lt;br /&gt;
 &lt;br /&gt;
 use strict;&lt;br /&gt;
 use warnings;&lt;br /&gt;
 use POSIX;&lt;br /&gt;
 ##### wichtig, da die in Color; verwendete Variable $FW_ME sonst noch nicht definiert ist #####&lt;br /&gt;
 &#039;&#039;&#039;use vars qw($FW_ME);&#039;&#039;&#039; &lt;br /&gt;
 &#039;&#039;&#039;use Color;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 sub&lt;br /&gt;
 myUtils_Initialize($$)&lt;br /&gt;
 {&lt;br /&gt;
 	my ($hash) = @_;&lt;br /&gt;
 &#039;&#039;&#039;FHEM_colorpickerInit();&#039;&#039;&#039;	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # start with your own functions below this line&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # behind your last function, we need the following&lt;br /&gt;
 1;&lt;br /&gt;
 # end-of-template&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: &#039;&#039;&#039;Rudolf König&#039;&#039;&#039; stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: &#039;&#039;&#039;Dr. Boris Neubert&#039;&#039;&#039;&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: &#039;&#039;&#039;Andre (justme1968)&#039;&#039;&#039;, ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: &#039;&#039;&#039;Matthias Klass&#039;&#039;&#039;, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: &#039;&#039;&#039;Stefan Krupop&#039;&#039;&#039; stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: &#039;&#039;&#039;Bill&#039;&#039;&#039;... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4663</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4663"/>
		<updated>2014-01-26T17:49:03Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* Funktionsbeschreibung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: wer statt des Erklärungstextes die reine Konfiguration sucht, kann sie im [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung vorletzten Abschnitt] einsehen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
Da im ECMD-Modul einige Befehle fehlen, werden diese über das readingsProxy-Modul emuliert. Dieses gibt die Befehle dann über das ECMD-Modul an DMXControl weiter.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
[[Datei:DMXControl_Kanaele.png|thumb|DMXControl Kanalübersicht]][[Datei:DMXControl_Terminal.png|thumb|DMXControl Terminal]]&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;[http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst  noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
ein set (ECMDDevice) rgb (Farbe RRGGBB) soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
[[Datei:FHEMWEB_Colorpicker.png|thumb|FHEMWEB-Colorpicker]]&lt;br /&gt;
[[Datei:andFHEM_Colorpicker.png|thumb|andFHEM-Colorpicker]]&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB. Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
Damit der Colorpicker überhaupt aktiviert wird, muss in der 99_myUtils.pm initialisiert werden, siehe [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung hier].&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App [http://andfhem.klass.li andFHEM] verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Konfiguration mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S realtimePicker lightSceneParamsToSave&lt;br /&gt;
 &lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef:DMXControl_Effects=ECMD\DMXControl_Effects.classdef&lt;br /&gt;
 &lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
 &lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
 &lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
 &lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Effects.classdef &#039;&#039;(oben noch nicht beschrieben)&#039;&#039;&lt;br /&gt;
 # Notifcations&lt;br /&gt;
 set Klingel cmd {&amp;quot;runcommand 7 17 3&amp;quot;}&lt;br /&gt;
 set Tueroeffner cmd {&amp;quot;runcommand 7 18 3&amp;quot;}&lt;br /&gt;
 set Nachricht cmd {&amp;quot;runcommand 7 19 3&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
 #statische Beleuchtungs-Presets&lt;br /&gt;
 set Licht_0 cmd {&amp;quot;runcommand 7 7 3&amp;quot;}&lt;br /&gt;
 set Licht_1 cmd {&amp;quot;runcommand 7 8 3&amp;quot;}&lt;br /&gt;
 set Licht_2 cmd {&amp;quot;runcommand 7 9 3&amp;quot;}&lt;br /&gt;
 set Licht_3 cmd {&amp;quot;runcommand 7 10 3&amp;quot;}&lt;br /&gt;
 set Licht_4 cmd {&amp;quot;runcommand 7 11 3&amp;quot;}&lt;br /&gt;
 set Licht_5 cmd {&amp;quot;runcommand 7 12 3&amp;quot;}&lt;br /&gt;
 set Licht_6 cmd {&amp;quot;runcommand 7 13 3&amp;quot;}&lt;br /&gt;
 set Licht_7 cmd {&amp;quot;runcommand 7 14 3&amp;quot;}&lt;br /&gt;
 set Licht_8 cmd {&amp;quot;runcommand 7 15 3&amp;quot;}&lt;br /&gt;
 set Licht_9 cmd {&amp;quot;runcommand 7 16 3&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 99_myUtils.pm (in &#039;&#039;&#039;fett&#039;&#039;&#039; die notwendigen Änderungen zum Initialisieren des Colorpickers)&lt;br /&gt;
 # start-of-template&lt;br /&gt;
 package main;&lt;br /&gt;
 &lt;br /&gt;
 use strict;&lt;br /&gt;
 use warnings;&lt;br /&gt;
 use POSIX;&lt;br /&gt;
 ##### wichtig, da die in Color; verwendete Variable $FW_ME sonst noch nicht definiert ist #####&lt;br /&gt;
 &#039;&#039;&#039;use vars qw($FW_ME);&#039;&#039;&#039; &lt;br /&gt;
 &#039;&#039;&#039;use Color;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 sub&lt;br /&gt;
 myUtils_Initialize($$)&lt;br /&gt;
 {&lt;br /&gt;
 	my ($hash) = @_;&lt;br /&gt;
 &#039;&#039;&#039;FHEM_colorpickerInit();&#039;&#039;&#039;	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # start with your own functions below this line&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # behind your last function, we need the following&lt;br /&gt;
 1;&lt;br /&gt;
 # end-of-template&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: &#039;&#039;&#039;Rudolf König&#039;&#039;&#039; stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: &#039;&#039;&#039;Dr. Boris Neubert&#039;&#039;&#039;&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: &#039;&#039;&#039;Andre (justme1968)&#039;&#039;&#039;, ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: &#039;&#039;&#039;Matthias Klass&#039;&#039;&#039;, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: &#039;&#039;&#039;Stefan Krupop&#039;&#039;&#039; stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: &#039;&#039;&#039;Bill&#039;&#039;&#039;... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4662</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4662"/>
		<updated>2014-01-26T17:46:48Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* Einleitung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: wer statt des Erklärungstextes die reine Konfiguration sucht, kann sie im [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung vorletzten Abschnitt] einsehen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
[[Datei:DMXControl_Kanaele.png|thumb|DMXControl Kanalübersicht]][[Datei:DMXControl_Terminal.png|thumb|DMXControl Terminal]]&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;[http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst  noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
ein set (ECMDDevice) rgb (Farbe RRGGBB) soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
[[Datei:FHEMWEB_Colorpicker.png|thumb|FHEMWEB-Colorpicker]]&lt;br /&gt;
[[Datei:andFHEM_Colorpicker.png|thumb|andFHEM-Colorpicker]]&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB. Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
Damit der Colorpicker überhaupt aktiviert wird, muss in der 99_myUtils.pm initialisiert werden, siehe [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung hier].&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App [http://andfhem.klass.li andFHEM] verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Konfiguration mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S realtimePicker lightSceneParamsToSave&lt;br /&gt;
 &lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef:DMXControl_Effects=ECMD\DMXControl_Effects.classdef&lt;br /&gt;
 &lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
 &lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
 &lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
 &lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Effects.classdef &#039;&#039;(oben noch nicht beschrieben)&#039;&#039;&lt;br /&gt;
 # Notifcations&lt;br /&gt;
 set Klingel cmd {&amp;quot;runcommand 7 17 3&amp;quot;}&lt;br /&gt;
 set Tueroeffner cmd {&amp;quot;runcommand 7 18 3&amp;quot;}&lt;br /&gt;
 set Nachricht cmd {&amp;quot;runcommand 7 19 3&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
 #statische Beleuchtungs-Presets&lt;br /&gt;
 set Licht_0 cmd {&amp;quot;runcommand 7 7 3&amp;quot;}&lt;br /&gt;
 set Licht_1 cmd {&amp;quot;runcommand 7 8 3&amp;quot;}&lt;br /&gt;
 set Licht_2 cmd {&amp;quot;runcommand 7 9 3&amp;quot;}&lt;br /&gt;
 set Licht_3 cmd {&amp;quot;runcommand 7 10 3&amp;quot;}&lt;br /&gt;
 set Licht_4 cmd {&amp;quot;runcommand 7 11 3&amp;quot;}&lt;br /&gt;
 set Licht_5 cmd {&amp;quot;runcommand 7 12 3&amp;quot;}&lt;br /&gt;
 set Licht_6 cmd {&amp;quot;runcommand 7 13 3&amp;quot;}&lt;br /&gt;
 set Licht_7 cmd {&amp;quot;runcommand 7 14 3&amp;quot;}&lt;br /&gt;
 set Licht_8 cmd {&amp;quot;runcommand 7 15 3&amp;quot;}&lt;br /&gt;
 set Licht_9 cmd {&amp;quot;runcommand 7 16 3&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 99_myUtils.pm (in &#039;&#039;&#039;fett&#039;&#039;&#039; die notwendigen Änderungen zum Initialisieren des Colorpickers)&lt;br /&gt;
 # start-of-template&lt;br /&gt;
 package main;&lt;br /&gt;
 &lt;br /&gt;
 use strict;&lt;br /&gt;
 use warnings;&lt;br /&gt;
 use POSIX;&lt;br /&gt;
 ##### wichtig, da die in Color; verwendete Variable $FW_ME sonst noch nicht definiert ist #####&lt;br /&gt;
 &#039;&#039;&#039;use vars qw($FW_ME);&#039;&#039;&#039; &lt;br /&gt;
 &#039;&#039;&#039;use Color;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 sub&lt;br /&gt;
 myUtils_Initialize($$)&lt;br /&gt;
 {&lt;br /&gt;
 	my ($hash) = @_;&lt;br /&gt;
 &#039;&#039;&#039;FHEM_colorpickerInit();&#039;&#039;&#039;	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # start with your own functions below this line&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # behind your last function, we need the following&lt;br /&gt;
 1;&lt;br /&gt;
 # end-of-template&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: &#039;&#039;&#039;Rudolf König&#039;&#039;&#039; stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: &#039;&#039;&#039;Dr. Boris Neubert&#039;&#039;&#039;&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: &#039;&#039;&#039;Andre (justme1968)&#039;&#039;&#039;, ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: &#039;&#039;&#039;Matthias Klass&#039;&#039;&#039;, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: &#039;&#039;&#039;Stefan Krupop&#039;&#039;&#039; stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: &#039;&#039;&#039;Bill&#039;&#039;&#039;... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4661</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4661"/>
		<updated>2014-01-26T17:43:57Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* Danksagung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: wer statt dem Erklärungstext die reine Konfiguration sucht, kann sie im [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung vorletzten Abschnitt] einsehen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
[[Datei:DMXControl_Kanaele.png|thumb|DMXControl Kanalübersicht]][[Datei:DMXControl_Terminal.png|thumb|DMXControl Terminal]]&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;[http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst  noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
ein set (ECMDDevice) rgb (Farbe RRGGBB) soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
[[Datei:FHEMWEB_Colorpicker.png|thumb|FHEMWEB-Colorpicker]]&lt;br /&gt;
[[Datei:andFHEM_Colorpicker.png|thumb|andFHEM-Colorpicker]]&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB. Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
Damit der Colorpicker überhaupt aktiviert wird, muss in der 99_myUtils.pm initialisiert werden, siehe [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung hier].&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App [http://andfhem.klass.li andFHEM] verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Konfiguration mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S realtimePicker lightSceneParamsToSave&lt;br /&gt;
 &lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef:DMXControl_Effects=ECMD\DMXControl_Effects.classdef&lt;br /&gt;
 &lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
 &lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
 &lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
 &lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Effects.classdef &#039;&#039;(oben noch nicht beschrieben)&#039;&#039;&lt;br /&gt;
 # Notifcations&lt;br /&gt;
 set Klingel cmd {&amp;quot;runcommand 7 17 3&amp;quot;}&lt;br /&gt;
 set Tueroeffner cmd {&amp;quot;runcommand 7 18 3&amp;quot;}&lt;br /&gt;
 set Nachricht cmd {&amp;quot;runcommand 7 19 3&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
 #statische Beleuchtungs-Presets&lt;br /&gt;
 set Licht_0 cmd {&amp;quot;runcommand 7 7 3&amp;quot;}&lt;br /&gt;
 set Licht_1 cmd {&amp;quot;runcommand 7 8 3&amp;quot;}&lt;br /&gt;
 set Licht_2 cmd {&amp;quot;runcommand 7 9 3&amp;quot;}&lt;br /&gt;
 set Licht_3 cmd {&amp;quot;runcommand 7 10 3&amp;quot;}&lt;br /&gt;
 set Licht_4 cmd {&amp;quot;runcommand 7 11 3&amp;quot;}&lt;br /&gt;
 set Licht_5 cmd {&amp;quot;runcommand 7 12 3&amp;quot;}&lt;br /&gt;
 set Licht_6 cmd {&amp;quot;runcommand 7 13 3&amp;quot;}&lt;br /&gt;
 set Licht_7 cmd {&amp;quot;runcommand 7 14 3&amp;quot;}&lt;br /&gt;
 set Licht_8 cmd {&amp;quot;runcommand 7 15 3&amp;quot;}&lt;br /&gt;
 set Licht_9 cmd {&amp;quot;runcommand 7 16 3&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 99_myUtils.pm (in &#039;&#039;&#039;fett&#039;&#039;&#039; die notwendigen Änderungen zum Initialisieren des Colorpickers)&lt;br /&gt;
 # start-of-template&lt;br /&gt;
 package main;&lt;br /&gt;
 &lt;br /&gt;
 use strict;&lt;br /&gt;
 use warnings;&lt;br /&gt;
 use POSIX;&lt;br /&gt;
 ##### wichtig, da die in Color; verwendete Variable $FW_ME sonst noch nicht definiert ist #####&lt;br /&gt;
 &#039;&#039;&#039;use vars qw($FW_ME);&#039;&#039;&#039; &lt;br /&gt;
 &#039;&#039;&#039;use Color;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 sub&lt;br /&gt;
 myUtils_Initialize($$)&lt;br /&gt;
 {&lt;br /&gt;
 	my ($hash) = @_;&lt;br /&gt;
 &#039;&#039;&#039;FHEM_colorpickerInit();&#039;&#039;&#039;	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # start with your own functions below this line&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # behind your last function, we need the following&lt;br /&gt;
 1;&lt;br /&gt;
 # end-of-template&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: &#039;&#039;&#039;Rudolf König&#039;&#039;&#039; stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: &#039;&#039;&#039;Dr. Boris Neubert&#039;&#039;&#039;&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: &#039;&#039;&#039;Andre (justme1968)&#039;&#039;&#039;, ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: &#039;&#039;&#039;Matthias Klass&#039;&#039;&#039;, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: &#039;&#039;&#039;Stefan Krupop&#039;&#039;&#039; stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: &#039;&#039;&#039;Bill&#039;&#039;&#039;... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4660</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4660"/>
		<updated>2014-01-26T17:42:40Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* DMXControl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: wer statt dem Erklärungstext die reine Konfiguration sucht, kann sie im [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung vorletzten Abschnitt] einsehen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
[[Datei:DMXControl_Kanaele.png|thumb|DMXControl Kanalübersicht]][[Datei:DMXControl_Terminal.png|thumb|DMXControl Terminal]]&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;[http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst  noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
ein set (ECMDDevice) rgb (Farbe RRGGBB) soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
[[Datei:FHEMWEB_Colorpicker.png|thumb|FHEMWEB-Colorpicker]]&lt;br /&gt;
[[Datei:andFHEM_Colorpicker.png|thumb|andFHEM-Colorpicker]]&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB. Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
Damit der Colorpicker überhaupt aktiviert wird, muss in der 99_myUtils.pm initialisiert werden, siehe [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung hier].&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App [http://andfhem.klass.li andFHEM] verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Konfiguration mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S realtimePicker lightSceneParamsToSave&lt;br /&gt;
 &lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef:DMXControl_Effects=ECMD\DMXControl_Effects.classdef&lt;br /&gt;
 &lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
 &lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
 &lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
 &lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Effects.classdef &#039;&#039;(oben noch nicht beschrieben)&#039;&#039;&lt;br /&gt;
 # Notifcations&lt;br /&gt;
 set Klingel cmd {&amp;quot;runcommand 7 17 3&amp;quot;}&lt;br /&gt;
 set Tueroeffner cmd {&amp;quot;runcommand 7 18 3&amp;quot;}&lt;br /&gt;
 set Nachricht cmd {&amp;quot;runcommand 7 19 3&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
 #statische Beleuchtungs-Presets&lt;br /&gt;
 set Licht_0 cmd {&amp;quot;runcommand 7 7 3&amp;quot;}&lt;br /&gt;
 set Licht_1 cmd {&amp;quot;runcommand 7 8 3&amp;quot;}&lt;br /&gt;
 set Licht_2 cmd {&amp;quot;runcommand 7 9 3&amp;quot;}&lt;br /&gt;
 set Licht_3 cmd {&amp;quot;runcommand 7 10 3&amp;quot;}&lt;br /&gt;
 set Licht_4 cmd {&amp;quot;runcommand 7 11 3&amp;quot;}&lt;br /&gt;
 set Licht_5 cmd {&amp;quot;runcommand 7 12 3&amp;quot;}&lt;br /&gt;
 set Licht_6 cmd {&amp;quot;runcommand 7 13 3&amp;quot;}&lt;br /&gt;
 set Licht_7 cmd {&amp;quot;runcommand 7 14 3&amp;quot;}&lt;br /&gt;
 set Licht_8 cmd {&amp;quot;runcommand 7 15 3&amp;quot;}&lt;br /&gt;
 set Licht_9 cmd {&amp;quot;runcommand 7 16 3&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 99_myUtils.pm (in &#039;&#039;&#039;fett&#039;&#039;&#039; die notwendigen Änderungen zum Initialisieren des Colorpickers)&lt;br /&gt;
 # start-of-template&lt;br /&gt;
 package main;&lt;br /&gt;
 &lt;br /&gt;
 use strict;&lt;br /&gt;
 use warnings;&lt;br /&gt;
 use POSIX;&lt;br /&gt;
 ##### wichtig, da die in Color; verwendete Variable $FW_ME sonst noch nicht definiert ist #####&lt;br /&gt;
 &#039;&#039;&#039;use vars qw($FW_ME);&#039;&#039;&#039; &lt;br /&gt;
 &#039;&#039;&#039;use Color;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 sub&lt;br /&gt;
 myUtils_Initialize($$)&lt;br /&gt;
 {&lt;br /&gt;
 	my ($hash) = @_;&lt;br /&gt;
 &#039;&#039;&#039;FHEM_colorpickerInit();&#039;&#039;&#039;	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # start with your own functions below this line&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # behind your last function, we need the following&lt;br /&gt;
 1;&lt;br /&gt;
 # end-of-template&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: Rudolf König stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: Dr. Boris Neubert&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: Andre (justme1968), ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: Matthias Klass, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: Stefan Krupop stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: Bill... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4659</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4659"/>
		<updated>2014-01-26T17:37:43Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* DMXControl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: wer statt dem Erklärungstext die reine Konfiguration sucht, kann sie im [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung vorletzten Abschnitt] einsehen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
[[Datei:DMXControl_Kanaele.png|thumb|DMXControl Kanalübersicht]]&lt;br /&gt;
[[Datei:DMXControl_Terminal.png|thumb|DMXControl Terminal]]&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;[http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst  noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
ein set (ECMDDevice) rgb (Farbe RRGGBB) soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
[[Datei:FHEMWEB_Colorpicker.png|thumb|FHEMWEB-Colorpicker]]&lt;br /&gt;
[[Datei:andFHEM_Colorpicker.png|thumb|andFHEM-Colorpicker]]&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB. Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
Damit der Colorpicker überhaupt aktiviert wird, muss in der 99_myUtils.pm initialisiert werden, siehe [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung hier].&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App [http://andfhem.klass.li andFHEM] verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Konfiguration mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S realtimePicker lightSceneParamsToSave&lt;br /&gt;
 &lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef:DMXControl_Effects=ECMD\DMXControl_Effects.classdef&lt;br /&gt;
 &lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
 &lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
 &lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
 &lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Effects.classdef &#039;&#039;(oben noch nicht beschrieben)&#039;&#039;&lt;br /&gt;
 # Notifcations&lt;br /&gt;
 set Klingel cmd {&amp;quot;runcommand 7 17 3&amp;quot;}&lt;br /&gt;
 set Tueroeffner cmd {&amp;quot;runcommand 7 18 3&amp;quot;}&lt;br /&gt;
 set Nachricht cmd {&amp;quot;runcommand 7 19 3&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
 #statische Beleuchtungs-Presets&lt;br /&gt;
 set Licht_0 cmd {&amp;quot;runcommand 7 7 3&amp;quot;}&lt;br /&gt;
 set Licht_1 cmd {&amp;quot;runcommand 7 8 3&amp;quot;}&lt;br /&gt;
 set Licht_2 cmd {&amp;quot;runcommand 7 9 3&amp;quot;}&lt;br /&gt;
 set Licht_3 cmd {&amp;quot;runcommand 7 10 3&amp;quot;}&lt;br /&gt;
 set Licht_4 cmd {&amp;quot;runcommand 7 11 3&amp;quot;}&lt;br /&gt;
 set Licht_5 cmd {&amp;quot;runcommand 7 12 3&amp;quot;}&lt;br /&gt;
 set Licht_6 cmd {&amp;quot;runcommand 7 13 3&amp;quot;}&lt;br /&gt;
 set Licht_7 cmd {&amp;quot;runcommand 7 14 3&amp;quot;}&lt;br /&gt;
 set Licht_8 cmd {&amp;quot;runcommand 7 15 3&amp;quot;}&lt;br /&gt;
 set Licht_9 cmd {&amp;quot;runcommand 7 16 3&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 99_myUtils.pm (in &#039;&#039;&#039;fett&#039;&#039;&#039; die notwendigen Änderungen zum Initialisieren des Colorpickers)&lt;br /&gt;
 # start-of-template&lt;br /&gt;
 package main;&lt;br /&gt;
 &lt;br /&gt;
 use strict;&lt;br /&gt;
 use warnings;&lt;br /&gt;
 use POSIX;&lt;br /&gt;
 ##### wichtig, da die in Color; verwendete Variable $FW_ME sonst noch nicht definiert ist #####&lt;br /&gt;
 &#039;&#039;&#039;use vars qw($FW_ME);&#039;&#039;&#039; &lt;br /&gt;
 &#039;&#039;&#039;use Color;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 sub&lt;br /&gt;
 myUtils_Initialize($$)&lt;br /&gt;
 {&lt;br /&gt;
 	my ($hash) = @_;&lt;br /&gt;
 &#039;&#039;&#039;FHEM_colorpickerInit();&#039;&#039;&#039;	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # start with your own functions below this line&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # behind your last function, we need the following&lt;br /&gt;
 1;&lt;br /&gt;
 # end-of-template&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: Rudolf König stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: Dr. Boris Neubert&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: Andre (justme1968), ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: Matthias Klass, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: Stefan Krupop stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: Bill... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:DMXControl_Terminal.png&amp;diff=4658</id>
		<title>Datei:DMXControl Terminal.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:DMXControl_Terminal.png&amp;diff=4658"/>
		<updated>2014-01-26T17:35:38Z</updated>

		<summary type="html">&lt;p&gt;Spiff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:DMXControl_Kanaele.png&amp;diff=4657</id>
		<title>Datei:DMXControl Kanaele.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:DMXControl_Kanaele.png&amp;diff=4657"/>
		<updated>2014-01-26T17:35:21Z</updated>

		<summary type="html">&lt;p&gt;Spiff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4656</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4656"/>
		<updated>2014-01-26T17:28:35Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* Colorpicker &amp;amp; readingsProxy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: wer statt dem Erklärungstext die reine Konfiguration sucht, kann sie im [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung vorletzten Abschnitt] einsehen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;Terminal-Schnittstelle&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst  noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
ein set (ECMDDevice) rgb (Farbe RRGGBB) soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
[[Datei:FHEMWEB_Colorpicker.png|thumb|FHEMWEB-Colorpicker]]&lt;br /&gt;
[[Datei:andFHEM_Colorpicker.png|thumb|andFHEM-Colorpicker]]&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB. Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
Damit der Colorpicker überhaupt aktiviert wird, muss in der 99_myUtils.pm initialisiert werden, siehe [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung hier].&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App [http://andfhem.klass.li andFHEM] verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Konfiguration mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S realtimePicker lightSceneParamsToSave&lt;br /&gt;
 &lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef:DMXControl_Effects=ECMD\DMXControl_Effects.classdef&lt;br /&gt;
 &lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
 &lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
 &lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
 &lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Effects.classdef &#039;&#039;(oben noch nicht beschrieben)&#039;&#039;&lt;br /&gt;
 # Notifcations&lt;br /&gt;
 set Klingel cmd {&amp;quot;runcommand 7 17 3&amp;quot;}&lt;br /&gt;
 set Tueroeffner cmd {&amp;quot;runcommand 7 18 3&amp;quot;}&lt;br /&gt;
 set Nachricht cmd {&amp;quot;runcommand 7 19 3&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
 #statische Beleuchtungs-Presets&lt;br /&gt;
 set Licht_0 cmd {&amp;quot;runcommand 7 7 3&amp;quot;}&lt;br /&gt;
 set Licht_1 cmd {&amp;quot;runcommand 7 8 3&amp;quot;}&lt;br /&gt;
 set Licht_2 cmd {&amp;quot;runcommand 7 9 3&amp;quot;}&lt;br /&gt;
 set Licht_3 cmd {&amp;quot;runcommand 7 10 3&amp;quot;}&lt;br /&gt;
 set Licht_4 cmd {&amp;quot;runcommand 7 11 3&amp;quot;}&lt;br /&gt;
 set Licht_5 cmd {&amp;quot;runcommand 7 12 3&amp;quot;}&lt;br /&gt;
 set Licht_6 cmd {&amp;quot;runcommand 7 13 3&amp;quot;}&lt;br /&gt;
 set Licht_7 cmd {&amp;quot;runcommand 7 14 3&amp;quot;}&lt;br /&gt;
 set Licht_8 cmd {&amp;quot;runcommand 7 15 3&amp;quot;}&lt;br /&gt;
 set Licht_9 cmd {&amp;quot;runcommand 7 16 3&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 99_myUtils.pm (in &#039;&#039;&#039;fett&#039;&#039;&#039; die notwendigen Änderungen zum Initialisieren des Colorpickers)&lt;br /&gt;
 # start-of-template&lt;br /&gt;
 package main;&lt;br /&gt;
 &lt;br /&gt;
 use strict;&lt;br /&gt;
 use warnings;&lt;br /&gt;
 use POSIX;&lt;br /&gt;
 ##### wichtig, da die in Color; verwendete Variable $FW_ME sonst noch nicht definiert ist #####&lt;br /&gt;
 &#039;&#039;&#039;use vars qw($FW_ME);&#039;&#039;&#039; &lt;br /&gt;
 &#039;&#039;&#039;use Color;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 sub&lt;br /&gt;
 myUtils_Initialize($$)&lt;br /&gt;
 {&lt;br /&gt;
 	my ($hash) = @_;&lt;br /&gt;
 &#039;&#039;&#039;FHEM_colorpickerInit();&#039;&#039;&#039;	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # start with your own functions below this line&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # behind your last function, we need the following&lt;br /&gt;
 1;&lt;br /&gt;
 # end-of-template&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: Rudolf König stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: Dr. Boris Neubert&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: Andre (justme1968), ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: Matthias Klass, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: Stefan Krupop stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: Bill... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:FHEMWEB_Colorpicker.png&amp;diff=4655</id>
		<title>Datei:FHEMWEB Colorpicker.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:FHEMWEB_Colorpicker.png&amp;diff=4655"/>
		<updated>2014-01-26T17:16:23Z</updated>

		<summary type="html">&lt;p&gt;Spiff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Datei:AndFHEM_Colorpicker.png&amp;diff=4654</id>
		<title>Datei:AndFHEM Colorpicker.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Datei:AndFHEM_Colorpicker.png&amp;diff=4654"/>
		<updated>2014-01-26T17:11:23Z</updated>

		<summary type="html">&lt;p&gt;Spiff: Colorpicker in der Android-App andFHEM&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Colorpicker in der Android-App andFHEM&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4653</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4653"/>
		<updated>2014-01-26T17:09:48Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* Konfig-Zusammenfassung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: wer statt dem Erklärungstext die reine Konfiguration sucht, kann sie im [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung vorletzten Abschnitt] einsehen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;Terminal-Schnittstelle&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst  noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
ein set (ECMDDevice) rgb (Farbe RRGGBB) soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB. Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
Damit der Colorpicker überhaupt aktiviert wird, muss in der 99_myUtils.pm initialisiert werden, siehe [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung hier].&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App [http://andfhem.klass.li andFHEM] verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Konfiguration mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S realtimePicker lightSceneParamsToSave&lt;br /&gt;
 &lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef:DMXControl_Effects=ECMD\DMXControl_Effects.classdef&lt;br /&gt;
 &lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
 &lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
 &lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
 &lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Effects.classdef &#039;&#039;(oben noch nicht beschrieben)&#039;&#039;&lt;br /&gt;
 # Notifcations&lt;br /&gt;
 set Klingel cmd {&amp;quot;runcommand 7 17 3&amp;quot;}&lt;br /&gt;
 set Tueroeffner cmd {&amp;quot;runcommand 7 18 3&amp;quot;}&lt;br /&gt;
 set Nachricht cmd {&amp;quot;runcommand 7 19 3&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
 #statische Beleuchtungs-Presets&lt;br /&gt;
 set Licht_0 cmd {&amp;quot;runcommand 7 7 3&amp;quot;}&lt;br /&gt;
 set Licht_1 cmd {&amp;quot;runcommand 7 8 3&amp;quot;}&lt;br /&gt;
 set Licht_2 cmd {&amp;quot;runcommand 7 9 3&amp;quot;}&lt;br /&gt;
 set Licht_3 cmd {&amp;quot;runcommand 7 10 3&amp;quot;}&lt;br /&gt;
 set Licht_4 cmd {&amp;quot;runcommand 7 11 3&amp;quot;}&lt;br /&gt;
 set Licht_5 cmd {&amp;quot;runcommand 7 12 3&amp;quot;}&lt;br /&gt;
 set Licht_6 cmd {&amp;quot;runcommand 7 13 3&amp;quot;}&lt;br /&gt;
 set Licht_7 cmd {&amp;quot;runcommand 7 14 3&amp;quot;}&lt;br /&gt;
 set Licht_8 cmd {&amp;quot;runcommand 7 15 3&amp;quot;}&lt;br /&gt;
 set Licht_9 cmd {&amp;quot;runcommand 7 16 3&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 99_myUtils.pm (in &#039;&#039;&#039;fett&#039;&#039;&#039; die notwendigen Änderungen zum Initialisieren des Colorpickers)&lt;br /&gt;
 # start-of-template&lt;br /&gt;
 package main;&lt;br /&gt;
 &lt;br /&gt;
 use strict;&lt;br /&gt;
 use warnings;&lt;br /&gt;
 use POSIX;&lt;br /&gt;
 ##### wichtig, da die in Color; verwendete Variable $FW_ME sonst noch nicht definiert ist #####&lt;br /&gt;
 &#039;&#039;&#039;use vars qw($FW_ME);&#039;&#039;&#039; &lt;br /&gt;
 &#039;&#039;&#039;use Color;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 sub&lt;br /&gt;
 myUtils_Initialize($$)&lt;br /&gt;
 {&lt;br /&gt;
 	my ($hash) = @_;&lt;br /&gt;
 &#039;&#039;&#039;FHEM_colorpickerInit();&#039;&#039;&#039;	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # start with your own functions below this line&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # behind your last function, we need the following&lt;br /&gt;
 1;&lt;br /&gt;
 # end-of-template&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: Rudolf König stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: Dr. Boris Neubert&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: Andre (justme1968), ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: Matthias Klass, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: Stefan Krupop stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: Bill... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4652</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4652"/>
		<updated>2014-01-26T17:09:25Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* Colorpicker &amp;amp; readingsProxy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: wer statt dem Erklärungstext die reine Konfiguration sucht, kann sie im [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung vorletzten Abschnitt] einsehen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;Terminal-Schnittstelle&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst  noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
ein set (ECMDDevice) rgb (Farbe RRGGBB) soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB. Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
Damit der Colorpicker überhaupt aktiviert wird, muss in der 99_myUtils.pm initialisiert werden, siehe [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung hier].&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App [http://andfhem.klass.li andFHEM] verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Konfiguration mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S realtimePicker lightSceneParamsToSave&lt;br /&gt;
 &lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef:DMXControl_Effects=ECMD\DMXControl_Effects.classdef&lt;br /&gt;
 &lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
 &lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
 &lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
 &lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Effects.classdef &#039;&#039;(oben noch nicht beschrieben)&#039;&#039;&lt;br /&gt;
 # Notifcations&lt;br /&gt;
 set Klingel cmd {&amp;quot;runcommand 7 17 3&amp;quot;}&lt;br /&gt;
 set Tueroeffner cmd {&amp;quot;runcommand 7 18 3&amp;quot;}&lt;br /&gt;
 set Nachricht cmd {&amp;quot;runcommand 7 19 3&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
 #statische Beleuchtungs-Presets&lt;br /&gt;
 set Licht_0 cmd {&amp;quot;runcommand 7 7 3&amp;quot;}&lt;br /&gt;
 set Licht_1 cmd {&amp;quot;runcommand 7 8 3&amp;quot;}&lt;br /&gt;
 set Licht_2 cmd {&amp;quot;runcommand 7 9 3&amp;quot;}&lt;br /&gt;
 set Licht_3 cmd {&amp;quot;runcommand 7 10 3&amp;quot;}&lt;br /&gt;
 set Licht_4 cmd {&amp;quot;runcommand 7 11 3&amp;quot;}&lt;br /&gt;
 set Licht_5 cmd {&amp;quot;runcommand 7 12 3&amp;quot;}&lt;br /&gt;
 set Licht_6 cmd {&amp;quot;runcommand 7 13 3&amp;quot;}&lt;br /&gt;
 set Licht_7 cmd {&amp;quot;runcommand 7 14 3&amp;quot;}&lt;br /&gt;
 set Licht_8 cmd {&amp;quot;runcommand 7 15 3&amp;quot;}&lt;br /&gt;
 set Licht_9 cmd {&amp;quot;runcommand 7 16 3&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 99_myUtils.pm (in &#039;&#039;&#039;fett&#039;&#039;&#039; die notwendigen Änderungen)&lt;br /&gt;
 # start-of-template&lt;br /&gt;
 package main;&lt;br /&gt;
 &lt;br /&gt;
 use strict;&lt;br /&gt;
 use warnings;&lt;br /&gt;
 use POSIX;&lt;br /&gt;
 ##### wichtig, da die in Color; verwendete Variable $FW_ME sonst noch nicht definiert ist #####&lt;br /&gt;
 &#039;&#039;&#039;use vars qw($FW_ME);&#039;&#039;&#039; &lt;br /&gt;
 &#039;&#039;&#039;use Color;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 sub&lt;br /&gt;
 myUtils_Initialize($$)&lt;br /&gt;
 {&lt;br /&gt;
 	my ($hash) = @_;&lt;br /&gt;
 &#039;&#039;&#039;FHEM_colorpickerInit();&#039;&#039;&#039;	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # start with your own functions below this line&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # behind your last function, we need the following&lt;br /&gt;
 1;&lt;br /&gt;
 # end-of-template&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: Rudolf König stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: Dr. Boris Neubert&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: Andre (justme1968), ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: Matthias Klass, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: Stefan Krupop stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: Bill... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4651</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4651"/>
		<updated>2014-01-26T16:57:18Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* Live-Colorpicker */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: wer statt dem Erklärungstext die reine Konfiguration sucht, kann sie im [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung vorletzten Abschnitt] einsehen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;Terminal-Schnittstelle&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst  noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
ein set (ECMDDevice) rgb (Farbe RRGGBB) soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB. Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App [http://andfhem.klass.li andFHEM] verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Konfiguration mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S realtimePicker lightSceneParamsToSave&lt;br /&gt;
 &lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef:DMXControl_Effects=ECMD\DMXControl_Effects.classdef&lt;br /&gt;
 &lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
 &lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
 &lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
 &lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Effects.classdef &#039;&#039;(oben noch nicht beschrieben)&#039;&#039;&lt;br /&gt;
 # Notifcations&lt;br /&gt;
 set Klingel cmd {&amp;quot;runcommand 7 17 3&amp;quot;}&lt;br /&gt;
 set Tueroeffner cmd {&amp;quot;runcommand 7 18 3&amp;quot;}&lt;br /&gt;
 set Nachricht cmd {&amp;quot;runcommand 7 19 3&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
 #statische Beleuchtungs-Presets&lt;br /&gt;
 set Licht_0 cmd {&amp;quot;runcommand 7 7 3&amp;quot;}&lt;br /&gt;
 set Licht_1 cmd {&amp;quot;runcommand 7 8 3&amp;quot;}&lt;br /&gt;
 set Licht_2 cmd {&amp;quot;runcommand 7 9 3&amp;quot;}&lt;br /&gt;
 set Licht_3 cmd {&amp;quot;runcommand 7 10 3&amp;quot;}&lt;br /&gt;
 set Licht_4 cmd {&amp;quot;runcommand 7 11 3&amp;quot;}&lt;br /&gt;
 set Licht_5 cmd {&amp;quot;runcommand 7 12 3&amp;quot;}&lt;br /&gt;
 set Licht_6 cmd {&amp;quot;runcommand 7 13 3&amp;quot;}&lt;br /&gt;
 set Licht_7 cmd {&amp;quot;runcommand 7 14 3&amp;quot;}&lt;br /&gt;
 set Licht_8 cmd {&amp;quot;runcommand 7 15 3&amp;quot;}&lt;br /&gt;
 set Licht_9 cmd {&amp;quot;runcommand 7 16 3&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 99_myUtils.pm (in &#039;&#039;&#039;fett&#039;&#039;&#039; die notwendigen Änderungen)&lt;br /&gt;
 # start-of-template&lt;br /&gt;
 package main;&lt;br /&gt;
 &lt;br /&gt;
 use strict;&lt;br /&gt;
 use warnings;&lt;br /&gt;
 use POSIX;&lt;br /&gt;
 ##### wichtig, da die in Color; verwendete Variable $FW_ME sonst noch nicht definiert ist #####&lt;br /&gt;
 &#039;&#039;&#039;use vars qw($FW_ME);&#039;&#039;&#039; &lt;br /&gt;
 &#039;&#039;&#039;use Color;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 sub&lt;br /&gt;
 myUtils_Initialize($$)&lt;br /&gt;
 {&lt;br /&gt;
 	my ($hash) = @_;&lt;br /&gt;
 &#039;&#039;&#039;FHEM_colorpickerInit();&#039;&#039;&#039;	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # start with your own functions below this line&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # behind your last function, we need the following&lt;br /&gt;
 1;&lt;br /&gt;
 # end-of-template&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: Rudolf König stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: Dr. Boris Neubert&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: Andre (justme1968), ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: Matthias Klass, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: Stefan Krupop stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: Bill... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4649</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4649"/>
		<updated>2014-01-26T16:52:37Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* Konfig-Zusammenfassung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: wer statt dem Erklärungstext die reine Konfiguration sucht, kann sie im [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung vorletzten Abschnitt] einsehen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;Terminal-Schnittstelle&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst  noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
ein set (ECMDDevice) rgb (Farbe RRGGBB) soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB. Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App andFHEM verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Konfiguration mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S realtimePicker lightSceneParamsToSave&lt;br /&gt;
 &lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef:DMXControl_Effects=ECMD\DMXControl_Effects.classdef&lt;br /&gt;
 &lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
 &lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
 &lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
 &lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Effects.classdef &#039;&#039;(oben noch nicht beschrieben)&#039;&#039;&lt;br /&gt;
 # Notifcations&lt;br /&gt;
 set Klingel cmd {&amp;quot;runcommand 7 17 3&amp;quot;}&lt;br /&gt;
 set Tueroeffner cmd {&amp;quot;runcommand 7 18 3&amp;quot;}&lt;br /&gt;
 set Nachricht cmd {&amp;quot;runcommand 7 19 3&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
 #statische Beleuchtungs-Presets&lt;br /&gt;
 set Licht_0 cmd {&amp;quot;runcommand 7 7 3&amp;quot;}&lt;br /&gt;
 set Licht_1 cmd {&amp;quot;runcommand 7 8 3&amp;quot;}&lt;br /&gt;
 set Licht_2 cmd {&amp;quot;runcommand 7 9 3&amp;quot;}&lt;br /&gt;
 set Licht_3 cmd {&amp;quot;runcommand 7 10 3&amp;quot;}&lt;br /&gt;
 set Licht_4 cmd {&amp;quot;runcommand 7 11 3&amp;quot;}&lt;br /&gt;
 set Licht_5 cmd {&amp;quot;runcommand 7 12 3&amp;quot;}&lt;br /&gt;
 set Licht_6 cmd {&amp;quot;runcommand 7 13 3&amp;quot;}&lt;br /&gt;
 set Licht_7 cmd {&amp;quot;runcommand 7 14 3&amp;quot;}&lt;br /&gt;
 set Licht_8 cmd {&amp;quot;runcommand 7 15 3&amp;quot;}&lt;br /&gt;
 set Licht_9 cmd {&amp;quot;runcommand 7 16 3&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 99_myUtils.pm (in &#039;&#039;&#039;fett&#039;&#039;&#039; die notwendigen Änderungen)&lt;br /&gt;
 # start-of-template&lt;br /&gt;
 package main;&lt;br /&gt;
 &lt;br /&gt;
 use strict;&lt;br /&gt;
 use warnings;&lt;br /&gt;
 use POSIX;&lt;br /&gt;
 ##### wichtig, da die in Color; verwendete Variable $FW_ME sonst noch nicht definiert ist #####&lt;br /&gt;
 &#039;&#039;&#039;use vars qw($FW_ME);&#039;&#039;&#039; &lt;br /&gt;
 &#039;&#039;&#039;use Color;&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 sub&lt;br /&gt;
 myUtils_Initialize($$)&lt;br /&gt;
 {&lt;br /&gt;
 	my ($hash) = @_;&lt;br /&gt;
 &#039;&#039;&#039;FHEM_colorpickerInit();&#039;&#039;&#039;	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # start with your own functions below this line&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # behind your last function, we need the following&lt;br /&gt;
 1;&lt;br /&gt;
 # end-of-template&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: Rudolf König stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: Dr. Boris Neubert&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: Andre (justme1968), ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: Matthias Klass, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: Stefan Krupop stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: Bill... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4648</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4648"/>
		<updated>2014-01-26T16:46:53Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* Konfig-Zusammenfassung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: wer statt dem Erklärungstext die reine Konfiguration sucht, kann sie im [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung vorletzten Abschnitt] einsehen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;Terminal-Schnittstelle&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst  noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
ein set (ECMDDevice) rgb (Farbe RRGGBB) soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB. Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App andFHEM verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Konfiguration mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S realtimePicker lightSceneParamsToSave&lt;br /&gt;
 &lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef:DMXControl_Effects=ECMD\DMXControl_Effects.classdef&lt;br /&gt;
 &lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
 &lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
 &lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
 &lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Effects.classdef &#039;&#039;(oben noch nicht beschrieben)&#039;&#039;&lt;br /&gt;
 # Notifcations&lt;br /&gt;
 set Klingel cmd {&amp;quot;runcommand 7 17 3&amp;quot;}&lt;br /&gt;
 set Tueroeffner cmd {&amp;quot;runcommand 7 18 3&amp;quot;}&lt;br /&gt;
 set Nachricht cmd {&amp;quot;runcommand 7 19 3&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
 #statische Beleuchtungs-Presets&lt;br /&gt;
 set Licht_0 cmd {&amp;quot;runcommand 7 7 3&amp;quot;}&lt;br /&gt;
 set Licht_1 cmd {&amp;quot;runcommand 7 8 3&amp;quot;}&lt;br /&gt;
 set Licht_2 cmd {&amp;quot;runcommand 7 9 3&amp;quot;}&lt;br /&gt;
 set Licht_3 cmd {&amp;quot;runcommand 7 10 3&amp;quot;}&lt;br /&gt;
 set Licht_4 cmd {&amp;quot;runcommand 7 11 3&amp;quot;}&lt;br /&gt;
 set Licht_5 cmd {&amp;quot;runcommand 7 12 3&amp;quot;}&lt;br /&gt;
 set Licht_6 cmd {&amp;quot;runcommand 7 13 3&amp;quot;}&lt;br /&gt;
 set Licht_7 cmd {&amp;quot;runcommand 7 14 3&amp;quot;}&lt;br /&gt;
 set Licht_8 cmd {&amp;quot;runcommand 7 15 3&amp;quot;}&lt;br /&gt;
 set Licht_9 cmd {&amp;quot;runcommand 7 16 3&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: Rudolf König stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: Dr. Boris Neubert&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: Andre (justme1968), ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: Matthias Klass, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: Stefan Krupop stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: Bill... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4646</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4646"/>
		<updated>2014-01-26T16:39:33Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* Konfig-Zusammenfassung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: wer statt dem Erklärungstext die reine Konfiguration sucht, kann sie im [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung vorletzten Abschnitt] einsehen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;Terminal-Schnittstelle&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst  noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
ein set (ECMDDevice) rgb (Farbe RRGGBB) soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB. Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App andFHEM verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Konfiguration mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S realtimePicker lightSceneParamsToSave&lt;br /&gt;
 &lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 &lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
 &lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
 &lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
 &lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: Rudolf König stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: Dr. Boris Neubert&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: Andre (justme1968), ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: Matthias Klass, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: Stefan Krupop stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: Bill... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4645</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4645"/>
		<updated>2014-01-26T16:34:33Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* Einleitung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: wer statt dem Erklärungstext die reine Konfiguration sucht, kann sie im [http://www.fhemwiki.de/wiki/DMXControl#Konfig-Zusammenfassung vorletzten Abschnitt] einsehen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;Terminal-Schnittstelle&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst  noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
ein set (ECMDDevice) rgb (Farbe RRGGBB) soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB. Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App andFHEM verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Config mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S realtimePicker lightSceneParamsToSave&lt;br /&gt;
 &lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 &lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
 &lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
 &lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
 &lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: Rudolf König stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: Dr. Boris Neubert&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: Andre (justme1968), ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: Matthias Klass, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: Stefan Krupop stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: Bill... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4644</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4644"/>
		<updated>2014-01-26T16:33:26Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* Konfig-Zusammenfassung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: wer statt dem Erklärungstext die reine Konfiguration sucht, kann sie im vorletzten Abschnitt einsehen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;Terminal-Schnittstelle&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst  noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
ein set (ECMDDevice) rgb (Farbe RRGGBB) soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB. Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App andFHEM verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Config mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S realtimePicker lightSceneParamsToSave&lt;br /&gt;
 &lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 &lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
 &lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
 &lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
 &lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: Rudolf König stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: Dr. Boris Neubert&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: Andre (justme1968), ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: Matthias Klass, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: Stefan Krupop stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: Bill... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4643</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4643"/>
		<updated>2014-01-26T16:23:14Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* Einleitung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis: wer statt dem Erklärungstext die reine Konfiguration sucht, kann sie im vorletzten Abschnitt einsehen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;Terminal-Schnittstelle&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst  noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
ein set (ECMDDevice) rgb (Farbe RRGGBB) soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB. Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App andFHEM verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Config mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: Rudolf König stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: Dr. Boris Neubert&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: Andre (justme1968), ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: Matthias Klass, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: Stefan Krupop stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: Bill... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4642</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4642"/>
		<updated>2014-01-26T16:21:54Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* ECMD-Modul */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;Terminal-Schnittstelle&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
Damit die Farben im Format RRGGBB gesendet werden können, müssen für jede Farbe und die sonst  noch benötigten DMX-Kanäle eigene globale Userattribute erstellt werden. In alphabetischer Reihenfolge sieht das dann so aus:&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
ein set (ECMDDevice) rgb (Farbe RRGGBB) soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB. Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App andFHEM verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Config mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: Rudolf König stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: Dr. Boris Neubert&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: Andre (justme1968), ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: Matthias Klass, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: Stefan Krupop stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: Bill... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4641</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4641"/>
		<updated>2014-01-26T15:59:46Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* Einleitung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;Terminal-Schnittstelle&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
ein set (ECMDDevice) rgb (Farbe RRGGBB) soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB. Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App andFHEM verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Config mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: Rudolf König stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: Dr. Boris Neubert&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: Andre (justme1968), ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: Matthias Klass, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: Stefan Krupop stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: Bill... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4640</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4640"/>
		<updated>2014-01-26T15:59:26Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* Einleitung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
** [http://andfhem.klass.li andFHEM]&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;Terminal-Schnittstelle&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
ein set (ECMDDevice) rgb (Farbe RRGGBB) soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB. Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App andFHEM verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Config mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: Rudolf König stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: Dr. Boris Neubert&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: Andre (justme1968), ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: Matthias Klass, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: Stefan Krupop stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: Bill... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4639</id>
		<title>DMXControl</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DMXControl&amp;diff=4639"/>
		<updated>2014-01-26T15:57:55Z</updated>

		<summary type="html">&lt;p&gt;Spiff: /* Einleitung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
Diese Seite zeigt, wie man die Integration von DMX-Geräten über die Windows-Software DMXControl in FHEM realisieren kann.&lt;br /&gt;
&lt;br /&gt;
Funktionalität:&lt;br /&gt;
* Steuerung der DMX-Geräte via FHEMWEB oder der Android-App andFHEM mit Live-Colorpicker&lt;br /&gt;
* Abrufen von Effekten (z.B. Farbverläufe)&lt;br /&gt;
&lt;br /&gt;
Benötigte Software &amp;amp; Module:&lt;br /&gt;
* FHEM&lt;br /&gt;
** [http://fhem.de/commandref.html#ECMD ECMD]&lt;br /&gt;
** [http://fhem.de/commandref.html#readingsProxy readingsProxy]&lt;br /&gt;
** [http://www.fhemwiki.de/wiki/Color Colorpicker]&lt;br /&gt;
** [http://fhem.de/commandref.html#LightScene Lightscene] (optional)&lt;br /&gt;
&lt;br /&gt;
* [http://www.dmxcontrol.org DMXControl]&lt;br /&gt;
** [http://www.dmxcontrol.de/wiki/Terminal_Schnittstelle Terminal-Schnittstelle]&lt;br /&gt;
&lt;br /&gt;
== Funktionsbeschreibung ==&lt;br /&gt;
In DMXControl werden die DMX-Geräte definiert und entsprechende Effekte wie Farbverläufe generiert.&lt;br /&gt;
&lt;br /&gt;
FHEM stellt über das Modul ECMD eine Verbindung zur Terminal-Schnittstelle von DMXControl her.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Zur Bedienung von Farb-LEDs bietet sich der FHEMWEB-Colorpicker an, der auch über eine Live-Farbänderungsfunktion verfügt.&lt;br /&gt;
&lt;br /&gt;
== DMXControl ==&lt;br /&gt;
In meiner Konfiguration hat jede RGB-LED 5 DMX-Kanäle:&lt;br /&gt;
* 1 = Rot&lt;br /&gt;
* 2 = Grün&lt;br /&gt;
* 3 = Blau&lt;br /&gt;
* 4 = Master (Helligkeit)&lt;br /&gt;
* 5 = Strobe (Blinken)&lt;br /&gt;
&lt;br /&gt;
Das Modul &amp;quot;PDA-Fernsteuerung&amp;quot; aka &amp;quot;Terminal-Schnittstelle&amp;quot; muss aktiviert sein. Ich benutze die Standard-Konfiguration auf COM1, 115200 kbps und Port 2145.&lt;br /&gt;
&lt;br /&gt;
== ECMD-Modul ==&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
 attr global userattr DMX_B DMX_G DMX_M DMX_R DMX_S&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Jedes ECMDDevice benötigt eine eigene Konfigurationsdatei, eine sog. classdef.&lt;br /&gt;
In ihr wird beschrieben, welche Attribute konfiguriert werden können sollen.&lt;br /&gt;
Für die DMX-Geräte heisst sie bei mir DMXControl_Devices.classdef und liegt im FHEM\ECMD-Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
Sie fängt so an:&lt;br /&gt;
 params DMX_R DMX_G DMX_B DMX_M DMX_S&lt;br /&gt;
&lt;br /&gt;
Dann kommt die Übersetzung der Befehle, die an die Terminal-Schnittstelle von DMXControl gesendet werden, jeweils für ein set und ein get.&lt;br /&gt;
ein set (ECMDDevice) rgb (Farbe RRGGBB) soll folgende Aktionen ausführen:&lt;br /&gt;
&lt;br /&gt;
* Senden der Farbe Rot an den 1. Kanal der RGB-LED [in DMXControl: &amp;quot;sc (DMX-Kanal 1) (Rot-Wert)&amp;quot;]&lt;br /&gt;
* Senden der Farbe Grün an den 2. Kanal der RGB-LED&lt;br /&gt;
* Senden der Farbe Blau an den 3. Kanal der RGB-LED&lt;br /&gt;
* Einstellen auf maximale Helligkeit (da im Format RRGGBB die Helligkeitsinformation schon enthalten ist. Der Colorpicker funktioniert z.B. so.)&lt;br /&gt;
&lt;br /&gt;
Die zu sendende Farbe wird vorher über den Colorpicker als oben beschriebene Attribute des jeweiligen Geräts eingestellt. Siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # SET&lt;br /&gt;
 set rgb cmd {&amp;quot;sc %DMX_R &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_R&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_G &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_G&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_B &amp;quot; . AttrVal(&amp;quot;%NAME&amp;quot;,&amp;quot;DMX_B&amp;quot;,&amp;quot;&amp;quot;) . &amp;quot;\nsc %DMX_M 255&amp;quot;}&lt;br /&gt;
 set rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
 # GET&lt;br /&gt;
 get rgb cmd {&amp;quot;gc %DMX_R &amp;quot; . &amp;quot;\ngc %DMX_G &amp;quot; . &amp;quot;\ngc %DMX_B &amp;quot;}&lt;br /&gt;
 get rgb postproc {sprintf(&amp;quot;%%02x%%02x%%02x&amp;quot;, (split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[2],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[5],(split(&amp;quot; &amp;quot;, &amp;quot;$_&amp;quot;))[8])}&lt;br /&gt;
&lt;br /&gt;
Nun kann das ECMD-Modul zum Definieren von ECMD-Devices in der fhem.cfg definiert werden:&lt;br /&gt;
Hinweis: bei mir laufen DMXControl und FHEM auf einem Server, deswegen ist die IP &amp;quot;localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 define DMXControl ECMD telnet localhost:2145&lt;br /&gt;
 attr DMXControl classdefs DMXControl_Devices=ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
Nun kann die erste RGB-LED in der fhem.cfg definiert werden:&lt;br /&gt;
 define RGB1 ECMDDevice DMXControl_Devices 1 2 3 4 5&lt;br /&gt;
 attr RGB1 DMX_B 0&lt;br /&gt;
 attr RGB1 DMX_G 0&lt;br /&gt;
 attr RGB1 DMX_M 0&lt;br /&gt;
 attr RGB1 DMX_R 0&lt;br /&gt;
 attr RGB1 DMX_S 0&lt;br /&gt;
 attr RGB1 room hidden&lt;br /&gt;
&lt;br /&gt;
Die zweite RGB-LED wäre bei mir:&lt;br /&gt;
 define RGB2 ECMDDevice DMXControl_Devices 6 7 8 9 10&lt;br /&gt;
 attr RGB2 DMX_B 0&lt;br /&gt;
 attr RGB2 DMX_G 0&lt;br /&gt;
 attr RGB2 DMX_M 0&lt;br /&gt;
 attr RGB2 DMX_R 0&lt;br /&gt;
 attr RGB2 DMX_S 0&lt;br /&gt;
 attr RGB2 room hidden&lt;br /&gt;
&lt;br /&gt;
== Colorpicker &amp;amp; readingsProxy ==&lt;br /&gt;
Eigentlich kann man jetzt schon die LEDs ansteuern. Man muss nur die Attribute des jeweiligen RGB-Geräts verändern und ein &amp;quot;set RGB1 rgb&amp;quot; ausführen.&lt;br /&gt;
Da man so aber keine Möglichkeit hat, die Farbe direkt in einem Farbfeld auszuwählen, fügen wir diese Funktionalität nun mit dem [http://www.fhemwiki.de/wiki/Color Colorpicker] hinzu.&lt;br /&gt;
Damit dem ECMD-Device die dafür erforderlichen Befehle &amp;quot;beigebracht&amp;quot; werden, muss das Modul [http://fhem.de/commandref.html#readingsProxy readingsProxy] zwischen das [http://fhem.de/commandref.html#ECMD ECMD-Modul] und den Colorpicker geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Standard-Format für die Farbeinstellung im Colorpicker ist RRGGBB. Da DMXControl jede Farbe einzeln benötigt und das auch noch im Dezimal-Format, wird der readingsProxy so eingestellt, dass er bei einem &amp;quot;set (Readingsproxy) rgb RRGGBB&amp;quot; die Farben extrahiert, ins Dezimalformat umwandelt und sie als einzelne Attribute in das ECMD-Device (RGB1) schreibt.&lt;br /&gt;
Zum Schluss wird der Befehl gegeben, die jetzt als Attribut vorhandenen Farben über das ECMD-Modul an DMXControl zu senden.&lt;br /&gt;
Die darauffolgenden setreadings werden für die Iconfarbe benötigt, siehe unten.&lt;br /&gt;
&lt;br /&gt;
 define LED1 readingsProxy RGB1:state&lt;br /&gt;
 attr LED1 setFn {fhem (&amp;quot;attr RGB1 DMX_R &amp;quot;.hex(substr($ARGS,0,2)));;fhem (&amp;quot;attr RGB1 DMX_G &amp;quot;.hex(substr($ARGS,2,2)));;fhem (&amp;quot;attr RGB1 DMX_B &amp;quot;.hex(substr($ARGS,4,2)));;fhem (&amp;quot;set RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading $name RGB $ARGS&amp;quot;);;fhem (&amp;quot;setreading $name rgb $ARGS&amp;quot;);;return undef}&lt;br /&gt;
 attr LED1 setList rgb:colorpicker,RGB on off&lt;br /&gt;
 attr LED1 webCmd rgb:rgb FF0000:rgb C8FF12:rgb 0000FF:rgb 000000&lt;br /&gt;
&lt;br /&gt;
=== Iconfarbe in LED-Farbe ===&lt;br /&gt;
&lt;br /&gt;
Damit die Icon-Farbe automatisch die jeweils eingestellte LED-Farbe einnimmt, fügen wir folgende Attribute hinzu:&lt;br /&gt;
 attr LED1 getList rgb&lt;br /&gt;
 attr LED1 getFn {fhem (&amp;quot;get RGB1 rgb&amp;quot;);;fhem (&amp;quot;setreading LED1a RGB &amp;quot;.ReadingsVal(&amp;quot;RGB1&amp;quot;,&amp;quot;rgb&amp;quot;,&amp;quot;000000&amp;quot;));;(ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;),1) }&lt;br /&gt;
 attr LED1 devStateIcon {Color_devStateIcon (ReadingsVal($name,&amp;quot;RGB&amp;quot;,&amp;quot;000000&amp;quot;))}&lt;br /&gt;
&lt;br /&gt;
Anmerkung: dies funktioniert nur mit den SVG-Icons!&lt;br /&gt;
&lt;br /&gt;
=== Live-Colorpicker ===&lt;br /&gt;
&lt;br /&gt;
Das i-Tüpfelchen ist jetzt der Live-Colorpicker, mit dem man über das Farbfeld fahren kann und die Farbe, die das Fadenkreuz markiert, sofort eingestellt wird.&lt;br /&gt;
Dazu benötigen wir ein globales Attribut:&lt;br /&gt;
 attr global userattr realtimePicker&lt;br /&gt;
&lt;br /&gt;
und schalten dieses auf den readingsProxy scharf:&lt;br /&gt;
 attr LED1 realtimePicker 1&lt;br /&gt;
&lt;br /&gt;
Die Android-App andFHEM verfügt ebenfalls über einen Live-Colorpicker, der automatisch erscheint, wenn man den Colorpicker in der fhem.cfg definiert hat.&lt;br /&gt;
&lt;br /&gt;
== Lightscene ==&lt;br /&gt;
Damit die eingestellte Farbe auch mit dem [http://fhem.de/commandref.html#LightScene Lightscene-Modul] funktioniert, muss folgendes Attribut gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
Global:&lt;br /&gt;
 attr global userattr lightSceneParamsToSave &lt;br /&gt;
Gerät: &lt;br /&gt;
 attr LED1 lightSceneParamsToSave RGB -&amp;gt; rgb&lt;br /&gt;
&lt;br /&gt;
== Konfig-Zusammenfassung ==&lt;br /&gt;
Zusammenfassung der Config mit allen oben beschriebenen Funktionen:&lt;br /&gt;
* fhem.cfg&lt;br /&gt;
&lt;br /&gt;
* FHEM\ECMD\DMXControl_Devices.classdef&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Danksagung ==&lt;br /&gt;
Ich bedanke mich für die Bereitstellung der Software und die Hilfe bei:&lt;br /&gt;
* FHEM: Rudolf König stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* ECMD: Dr. Boris Neubert&lt;br /&gt;
* readingsProxy, Lightscene, Colorpicker: Andre (justme1968), ganz besonders, weil er viele meiner Wünsche nachträglich implementiert hat&lt;br /&gt;
* andFHEM: Matthias Klass, auch für meinen Wunsch des Live-Colorpickers in Verbindung mit ECMD-Devices&lt;br /&gt;
* DMXControl: Stefan Krupop stellvertretend für alle anderen Mitentwickler&lt;br /&gt;
* Windows: Bill... ach ne, doch nicht. :)&lt;/div&gt;</summary>
		<author><name>Spiff</name></author>
	</entry>
</feed>