Table of Contents
Licht und Wettersteuerung via XMLSkript
Mit dem folgend beschriebenen Skript ist es möglich das Raumlicht, in meinem Fall HUE Leuchten, mittels Buttons auf dem Gleisplan zu schalten.
Plan vorbereiten
Aktion erstellen mit dem Skript Set-Raumlicht.xml. Diese wird weiter unten beschrieben
Licht Buttons
Erstellen der Buttons als einfache Schalter, bei der Gruppenkennung überall Licht eintragen. Auf Aktionen klicken und die Kennung Set-Raumlicht auswählen. Status on und bei der Beschreibung OFF, ON oder Arbeitslicht eintragen. Diese Bezeichnung wird dann im Skript verwendet um das Licht entsprechend zu schalten
Szenen Buttons
Wie oben, erstellen der Buttons als Schalter. Bei der Gruppenkennung nun Szene eintragen.
Auf Aktionen klicken und die Kennung Set-Raumlicht auswählen. Bei der Beschreibung den Namen der Szene oder des Wetters eintragen. Unter Bedingungen eine Bedingung einrichten das der Button Szene aus der Gruppe Licht aktiv sein muss
Lampen
Variablen
Nun müssen die Variablen für die Lichtszenen erstellt werden. Dazu eine neue Variable anlegen. Prefix mus SRGB_ sein, danach folgt eine Name welcher beim Button erstellen unter Bezeichnung eingetragen wurde. Im Feld Test wird eine Komma separierte Liste eingetragen Sättigung,Rot,Grün,Blau. Die Werte müssen jeweils zwischen 0 - 255 sein.
Wetter
Skript Set-Raumlicht
Nachfolgend werden einige Funktionen aus dem Skript erklärt. Zum Schluss des Kapitels folgt dann das komplette Skript
Mit der Funktion Set-Off wird das Wetterthema ausgeschaltet und die Lampe ausgeschaltet. Welche Lampe ausgeschaltet werden soll wird über die Variable XML_hueLampe gesteuert
<function id="Set-Off"> <weather id="" cmd="setweather"/> <co id="@xml_hueLampe" cmd="off" /> </function>
Die Funktion Set-On schaltet ein Wetterthema aus und aktiviert die entsprechende Lampe und deren Helligkeit. Lampe und Helligkeit werden über die Variablen XML_hueLampe und XML_hueBrigthness gesetzt.
<function id="Set-On"> <weather id="" cmd="setweather"/> <co id="@xml_hueLampe" cmd="on" value="@xml_hueBrigthness" /> </function>
Die Funktion Set-Color schaltet eine Lampe ein und setz den Farbwert. xml_hueSRGB ist eine Kommaseparierte Liste Sättigung,Rot,Grün,Blau
<function id="Set-Color"> <weather id="" cmd="setweather"/> <co id="@xml_hueLampe" cmd="on" value="@xml_hueBrigthness"> <color saturation="@@0xml_hueSRGB" red="@@1xml_hueSRGB" blue="@@3xml_hueSRGB" green="@@2xml_hueSRGB"/> </co> </function>
Wird im Switchblock der Wert HUE_Off getriggert, werden alle Lampen ausgeschaltet
<case val="HUE_Off"> <vr id="xml_hueLampe" text="hueLampe1" generated="true" /> <call id="Set-Off"/> <vr id="xml_hueLampe" text="hueLampe2" generated="true" /> <call id="Set-Off"/> <vr id="xml_hueLampe" text="hueLampe3" generated="true" /> <call id="Set-Off"/> </case>
Wird der Wert Wetter1 getriggert wird das entsprechende Wetter aktiviert
<case val="Wetter1"> <weather id="Wetter1" cmd="setweather"/> </case>
Im default Block werden alle Lampen auf den entsprechenden Wert gedimmt und die Farben gesetzt
<default> <vr id="xml_hueSRGB" text="@SRGB_%desc%" generated="true" /> <vr id="xml_hueBrigthness" text="255" generated="true" /> <vr id="xml_hueLampe" text="hueLampe1" generated="true" /> <call id="Set-Color" /> <vr id="xml_hueLampe" text="hueLampe2" generated="true" /> <call id="Set-Color" /> <vr id="xml_hueLampe" text="hueLampe3" generated="true" /> <call id="Set-Color" /> </default>
Ab hier nun das gesamte Skript
<?xml version="1.0" encoding="UTF-8"?> <xmlscript> <!-- Mit diesem Skript und entsprechenden Buttons in einem Gleisplan, lassen sich verschiedene Lichtszenen und Wetterthemen elegant schalten Version 1.0 History: 28.02.2018 andy Inital Version --> <function id="Write-Trace"> <!-- Diese Funktion schreibt einen trace ins ServerLog von Rocrail wenn der entsprechende Tracelevel gesetzt ist. Im der Tabelle Variablen von Rocrail muss eine Variable xml_Tracelevel manuell erstellt werden. Der Wert muss auf einen der nachfolgenden Werte gesetzt sein. Wenn xml_TraceLevel 0 = keine Meldungen 1 = Errors 2 = Warnungen 3 = Infos 4 = Debug Infos Version 1.0 History: 25.02.2018 andy Inital Version --> <if condition="#xml_TraceMessage < #xml_TraceLevel|#xml_TraceMessage = #xml_TraceLevel" alltrue="false"> <then> <trace text="@xml_TraceMessage"/> </then> </if> </function> <function id="Set-Off"> <weather id="" cmd="setweather"/> <co id="@xml_hueLampe" cmd="off" /> </function> <function id="Set-On"> <weather id="" cmd="setweather"/> <co id="@xml_hueLampe" cmd="on" value="@xml_hueBrigthness" /> </function> <function id="Set-Scene"> </function> <function id="Set-Color"> <weather id="" cmd="setweather"/> <co id="@xml_hueLampe" cmd="on" value="@xml_hueBrigthness"> <color saturation="@@0xml_hueSRGB" red="@@1xml_hueSRGB" blue="@@3xml_hueSRGB" green="@@2xml_hueSRGB"/> </co> </function> <vr id="xml_TraceMessage" value="4" text="Set-Raumlicht.xml: Welcom from Set-Raumlicht." generated="true" /> <call id="Write-Trace"/> <vr id="xml_TraceMessage" value="3" text="Set-Raumlicht.xml: Set scene: %desc%." generated="true" /> <call id="Write-Trace"/> <switch var="%desc%"> <case val="HUE_Off"> <vr id="xml_hueLampe" text="hueLampe1" generated="true" /> <call id="Set-Off"/> <vr id="xml_hueLampe" text="hueLampe2" generated="true" /> <call id="Set-Off"/> <vr id="xml_hueLampe" text="hueLampe3" generated="true" /> <call id="Set-Off"/> </case> <case val="HUE_Scene"> <if state="co co130 = on"> <then> <co id="co130" cmd="on"/> </then></if> <if state="co co131 = on"> <then> <co id="co131" cmd="on"/> </then></if> <if state="co co132 = on"> <then> <co id="co132" cmd="on"/> </then></if> <if state="co co133 = on"> <then> <co id="co133" cmd="on"/> </then></if> </case> <case val="Wetter1"> <weather id="Wetter1" cmd="setweather"/> </case> <default> <vr id="xml_hueSRGB" text="@SRGB_%desc%" generated="true" /> <vr id="xml_hueBrigthness" text="255" generated="true" /> <vr id="xml_hueLampe" text="hueLampe1" generated="true" /> <call id="Set-Color" /> <vr id="xml_hueLampe" text="hueLampe2" generated="true" /> <call id="Set-Color" /> <vr id="xml_hueLampe" text="hueLampe3" generated="true" /> <call id="Set-Color" /> </default> </switch> <vr id="xml_TraceMessage" value="4" text="Set-Raumlicht.xml: Good by from Set-Raumlicht." generated="true" /> <call id="Write-Trace"/> </xmlscript>