Ankündigung

Einklappen
Keine Ankündigung bisher.

Timer condition mit Variable

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    Hallo Waldemar!

    Gut dann bin ich doch am richtigen Weg ...

    Die Ein/Aus-GA schaltet die eigentliche Zeitschalt-Rule ein und aus.
    Könntest Du mir das mit einem Beispiel noch verständlicher machen?

    Danke,
    Thomas

    Kommentar


      #17
      Hallo Thomas,

      da ich heute sowieso meine Testumgebung offen habe, hab ich mal Dein Coding angepasst:

      Code:
      		<object id="Esszimmer_Licht_schalten" gad="1/0/10" type="1.001" flags="cwtu" init="request" log="false">
      			<listener gad="1/0/15" read="true"/>Esszimmer_Licht_schalten
      		</object>
      		<object id="Esszimmer_Licht_schalten_Status" gad="1/0/15" type="1.001" flags="cwu" init="request" log="false">Esszimmer_Licht_schalten_Status</object>
      		<object id="Timer_Zeit_ein" gad="10/1/2" type="10.001" flags="crwtu" init="persist" log="true">Timer_Zeit_ein</object>
      		<object id="Timer_aktiv" gad="10/1/3" type="1.001" flags="crwtu">Gibt an, ob der Timer aktiv ist</object>
      	</objects>
      	<rules>
      		<rule id="Timer_aktivieren" init="false">
      			<condition type="object" id="Timer_aktiv" value="1" trigger="true"/>
      			<actionlist>
      				<action type="set-rule-active" rule-id="Esszimmer_Licht_ein" active="yes"/>
      			</actionlist>
      			<actionlist type="on-false">
      				<action type="set-rule-active" rule-id="Esszimmer_Licht_ein" active="no"/>
      			</actionlist>
      		</rule>
      		<rule id="Esszimmer_Licht_ein">
      			<condition type="timer" trigger="true">
      				<at type="variable" time="Timer_Zeit_ein" wdays="1234567" />
      			</condition>
      			<actionlist>
      				<action type="set-value" id="Esszimmer_Licht_schalten" value="1" />
      			</actionlist>
      		</rule>
      Über "Timer_aktiv" kannst Du ganz einfach Deine rule "Esszimmer_Licht_ein" ein- bzw. ausschalten.

      Gruß, Waldemar
      OpenKNX www.openknx.de

      Kommentar


        #18
        Danke

        Hallo Waldemar!
        wow, das ist ein Service - funktioniert 1A

        DANKE
        Thomas

        Kommentar


          #19
          Hi,

          danke für die Blumen - aber Du hattest nur Glück, dass ich gerade selber am rumspielen mit linknx bin. Also nicht wundern, wenn zukünftige Antworten nicht so schnell kommen...

          Gruß, Waldemar
          OpenKNX www.openknx.de

          Kommentar


            #20
            Hallo,
            der Vollständigkeit halber: Meine Lösung zur Eingabe der "Weckzeit"

            Die Objekt-definitionen:
            Code:
            <object type="10.001" id="waketime" init="05:45:00" >Wake Time</object>
            <object id="Waketimeh" type="6.xxx" init="5">Zähler Stunden</object>
            <object id="Waketimemin" type="6.xxx" init="45">Zähler Stunden</object>
            <object id="Waketimehupdown" flags="crwts" init="off">Zähler Stunden</object>
            <object id="Waketimeminupdown" flags="crwts" init="off">Zähler Minuten</object>
            Die Rules um die Tasten auszuwerten:
            Hier gibt es noch den Fehler dass zwar Waketimemin im Wert begrenzt wird nicht aber die Hilfsvariable Waketimeminupdown. Dadurch ergeben sich Tastendrücke an denen anscheinend nichts passiert, wenn man über die Grenzen (0 oder 55) kommt und wieder zurück will.

            Code:
               <rule id="Waketimercounterminupdown">
                  <!-- Zaehlt Minuten in 5er Schritten auf Tastendruck hoch bzw. runter -->
                  <condition type="object" id="Waketimeminupdown" value="1" trigger="true"/>
                      <actionlist type="if-true">
                        <action type="conditional">
                              <condition type="object" id="Waketimemin" op="lt" value="59"/>
                                 <action type="formula" id="Waketimemin" x="Waketimemin" c="5"/>
                        </action>
                    <action type="script">
                        value = obj("Waketimeh")..":"..obj("Waketimemin")..":00";
                        set("waketime", value);
                    </action>
                  </actionlist>
                  <actionlist type="if-false">
                        <action type="conditional">
                              <condition type="object" id="Waketimemin" op="gt" value="0"/>
                                  <action type="formula" id="Waketimemin" x="Waketimemin" c="-5"/>
                        </action>
                    <action type="script">
                        value = obj("Waketimeh")..":"..obj("Waketimemin")..":00";
                        set("waketime", value);
                    </action>
                  </actionlist>
               </rule>
               <rule id="Waketimercounterhupdown">
                  <!-- Zaehlt die Stunden auf Tastendruck hoch bzw. runter -->
                  <condition type="object" id="Waketimehupdown" value="1" trigger="true"/>
                      <actionlist type="if-true">
                        <action type="conditional">
                             <condition type="object" id="Waketimeh" op="lt" value="23"/>
                                  <action type="formula" id="Waketimeh" x="Waketimeh" c="1"/>
                      </action>
                    <action type="script">
                        value = obj("Waketimeh")..":"..obj("Waketimemin")..":00";
                        set("waketime", value);
                    </action>
                     </actionlist>
                      <actionlist type="if-false">
                        <action type="conditional">
                              <condition type="object" id="Waketimeh" op="gt" value="0"/>
                                  <action type="formula" id="Waketimeh" x="Waketimeh" c="-1"/>
                       </action>
                    <action type="script">
                        value = obj("Waketimeh")..":"..obj("Waketimemin")..":00";
                        set("waketime", value);
                    </action>
                  </actionlist>
            waketime wird dann hier verwendet:
            Code:
                <rule id="Sonnenaufgang">
                       <condition type="and">
                        <condition type="object" id="Rolladen_Nacht_Auto" value="on"/>
                        <condition type="timer" trigger="true">
                        <at type="sunrise" wdays="1234567" offset="-10m"/>
                        <until hour="10" min="01" wdays="1234567"/>
                        </condition>
                    <condition type="or">
                        <condition type="timer" trigger="true">
                        <at type="variable" time="waketime" wdays="1234567"/>
                        <until hour="10" min="02" wdays="1234567"/>
                        </condition>
                        </condition>
                    </condition>
                       <actionlist>
                        <action type="set-value" id="Rolladen_Nacht_auf" value="on" />
                       </actionlist>
                </rule>
            Als Frontend habe ich smartVISU genommen. knxWeb bietet aber die gleichen Möglichkeiten:
            Code:
                <h3>Weckzeit</h3>
                            Weckzeit &nbsp;&nbsp;&nbsp;&nbsp;{{ basic.button('wtb1', 'Waketimehupdown', '', 'plus', 'true', 'micro') }}
                                {{ basic.button('wtb2', 'Waketimehupdown', '', 'minus', 'false', 'micro') }}
                               &nbsp;&nbsp;{{ basic.value('waketime', 'waketime','') }}&nbsp;&nbsp;
            
                              {{ basic.button('wtb3', 'Waketimeminupdown', '', 'plus', 'true', 'micro') }}
                                {{ basic.button('wtb4', 'Waketimeminupdown', '', 'minus', 'false', 'micro') }}
                              <!-- &nbsp;&nbsp;{{ basic.value('Waketimeh_value', 'Waketimeh',':') }}  {{ basic.value('Waketimemin_value', 'Waketimemin') }} &nbsp;&nbsp; -->
            Die auskommentierte Zeile zeigt die Stunden und Minuten, vor der Objekt-zuweisung durch das Lua-script, an.

            So sieht es dann aus:
            Weckzeit.jpg

            Das Feedback ist natürlich etwas verzögert. Aber es Funktioniert!

            Dann noch schöne Pfingsten
            Sven

            Kommentar


              #21
              Hallo zusammen!

              Noch eine Frage:
              Kann man auch die Wochentage
              Code:
              wdays="1234567"
              in eine Variable packen?

              Danke
              Thomas

              Kommentar


                #22
                Hi Thomas,

                nicht dass ich wüsste... aber warum auch? Du musst ja einfach nur entsprechend viele Regeln bauen mit den entsprechenden wdays.

                Gruß, Waldemar

                P.S.: Wenn Du wirklich ein flexibles UI für ne Zeitschaltuhr bauen willst, kannst Du Dich mit der xml-Schnittstelle von linknx beschäftigen. Damit kannst Du auch das linknx.xml-File zur Laufzeit verändern und somit auch neue (Timer-)Regeln zur Laufzeit erzeugen. Ich hab das aber noch nie gemacht...
                OpenKNX www.openknx.de

                Kommentar


                  #23
                  Hallo Waldemar,

                  besten Dank für die Info - hat allerdings meinen Verdacht bestätigt das hier der Weg wohl nur noch über die xml Schnittstelle führt ...
                  Start- und Stop-Zeit sowie das generelle aktivieren der Zeitschaltfunktion funktioniert ja über die "virtuellen Gruppenadressen" wunderbar ...

                  Mfg
                  Thomas
                  Angehängte Dateien

                  Kommentar


                    #24
                    Hi Thomas,

                    sieht doch gut aus - und wenn Du zu dem UI über die XML-Schnittstelle Regeln generierst, kannst Du auch noch so Features wie exceptiondays bzw. Wiederholungspattern anbieten (wöchentlich, monatlich etc.)

                    Ich muss gestehen, ich gehe hier aber den anderen Weg und nutze für solche Sachen den Google-Kalender, den ich per Wiregate-Plugin für's Haus nutze.

                    Gruß, Waldemar
                    OpenKNX www.openknx.de

                    Kommentar

                    Lädt...
                    X