User Tools

Site Tools


wiki:user:minou65:raumlicht-de

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

Hinzufügen von 3 Ausgängen. Kennung eintragen, bei Optionen Farbe auswählen und bei Typ Beleuchtung

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

Nun muss noch ein Wetter erstellt werden. diese kann den eigenen Bedürfnissen angepasst werden

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>

Beispielplan

wiki/user/minou65/raumlicht-de.txt · Last modified: 2018/11/12 08:56 by 127.0.0.1