Ankündigung

Einklappen
Keine Ankündigung bisher.

Timer condition mit Variable

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

    [linKNX] Timer condition mit Variable

    Hallo
    erstmal vielen Dank an die Entwickler des linKNX und KnxWeb!
    Seit mehr als fünf Jahren ist es bei mir im Einsatz und steuert klaglos meine Rollladen, Zirkulationspumpe, Hausnummernbeleuchtung und Weihnachtsbeleuchtung.
    Nun ist es mal Zeit für eine Aktualisierung. Dabei kommen natürlich auch Ideen. z.B.: "Lass mal morgen die Rollladen etwas später aufgehen."
    Um diesen Wunsch schnell umsetzen zu können, müßte die "Weckzeit" in KnxWeb eingegeben werden können und auch angezeigt werden.

    Derzeit öffnen sich meine Rollladen so:
    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 hour="5" min="30" wdays="1234567"/>
                <until hour="10" min="01" wdays="1234567"/>
                </condition>
                </condition>
            </condition>
               <actionlist>
                <action type="set-value" id="Rolladen_Nacht_auf" value="on" />
               </actionlist>
        </rule
    Jetzt müßte die früheste Öffnungszeit (5:30) mit Variablen gefüttert werden:
    Code:
    <at hour="waketime_h" min="waketime_min" wdays="1234567"/>
    So geht das natürlich nicht. Aber welche Möglichkeiten gibt es da?

    Vielen Dank im Voraus

    Sven

    #2
    Hi,

    Du warst schon gar nicht mal so schlecht - so muss es aussehen:
    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="timer" trigger="true">
    					<at type="variable" time="waketime" wdays="1234567"/>
    					<until hour="10" min="01" wdays="1234567"/>
    				</condition>
    			</condition>
    			<actionlist>
    				<action type="set-value" id="Rolladen_Nacht_auf" value="on" />
    			</actionlist>
    		</rule>
    waketime muss dann den DPT 10.001 haben und dann einen Zeitpunkt enthalten.

    Gruß, Waldemar
    OpenKNX www.openknx.de

    Kommentar


      #3
      Vielen Dank für die superschnelle Antwort.

      Sieht ja viel simpler aus als ich befürchtet habe.
      Ich werde es ausprobieren und berichten.

      Grüße Sven

      Kommentar


        #4
        Möchte auch etwas ähnliches umsetzen - leider scheitere ich und finde den Fehler nicht - kann mir hier jemand auf die Sprünge helfen?

        DANKE
        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>
        </objects>
        <rules>
        <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>

        Kommentar


          #5
          So, die Konfiguration stimmt.

          schreibe ich mit:

          groupwrite ip:127.0.0.1 10/1/2 74 21 12

          die Zeit in die Datei Timer_Zeit_ein dann funktioniert es ...
          Mache ich es mit dem Editor nano ist irgendwie der Hund drinnen ...

          siehe:
          Code:
          2013-05-15 20:34:10,582 [ INFO] Object: Configured object 'Timer_aktivieren': gad=10/1/1
          2013-05-15 20:34:10,582 [ INFO] FilePersistentStorage: Reading '20:35:00
          ' for object 'Timer_Zeit_ein'
          2013-05-15 20:34:10,584 [ERROR] main: Error in config: TimeObjectValue: Bad value: '20:35:00
          '
          
          Error in config

          Kommentar


            #6
            Hallo Waldemar,
            es funktioniert!

            ich habe die Zeit erstmal fest vorgegeben:
            Code:
            <object type="10.001" id="waketime" init="05:45:00" >Wake Time</object>
            Das Formularfeld zur Eingabe dürfte nicht allzu schwierig werden.

            Danke nochmals!!

            Sven

            Kommentar


              #7
              Hi,

              ich hab das eben mal ausprobiert - exakt mit Deinem Coding. Funktioniert perfekt! Wo ist das Problem?

              Gruß, Waldemar

              P.S.: Welche linknx-Version hast Du denn?
              OpenKNX www.openknx.de

              Kommentar


                #8
                Das Problem besteht darin, das ich nicht mit einem Editor s.o. die Zeit in die Datei schreiben kann ..

                schreibe ich mit:

                groupwrite ip:127.0.0.1 10/1/2 74 21 12

                die Zeit in die Datei Timer_Zeit_ein dann funktioniert es ...
                Mache ich es mit dem Editor nano ist irgendwie der Hund drinnen ...

                Kommentar


                  #9
                  Ok, ich sehe, ich hab relativ lange für den Test gebraucht - meine Antwort bezog sich noch auf Dein erstes Post mit dem Coding...

                  Warum willst Du das denn in die Persistence-Datei schreiben? Die wird doch nur beim Start von linknx gelesen...

                  Du musst die Zeit auf die GA schicken, wie in Deinem groupwrite...

                  Gruß, Waldemar
                  OpenKNX www.openknx.de

                  Kommentar


                    #10
                    Hallo Waldemar,
                    ich weiß nicht an wen sich Deine letzte Antwort wendet.
                    mein Proglem war erledigt.
                    Allerdings hab ich noch keine Eingabemöglichkeit (Formularfeld) gefunden. Ich wollte dafür smartVisu nehmen.

                    @Tqm
                    ich denke Dein nano fügt noch ein Zeilenumbruch an. Das bringt linknx aus den tritt.

                    Grüße

                    Sven

                    Kommentar


                      #11
                      ich denke Dein nano fügt noch ein Zeilenumbruch an
                      Das sehe ich genauso - Hat hier jemand einen Lösungsansatz? Alternativ zu groupwrite...

                      Kann mann eigentlich auch eine rule z.Bsp: <rule id="Esszimmer_Licht_ein"> mittels einer Variable aktivieren u. deaktivieren?

                      Kommentar


                        #12
                        Hi Tqm,

                        Zitat von Tqm Beitrag anzeigen
                        Das sehe ich genauso - Hat hier jemand einen Lösungsansatz? Alternativ zu groupwrite...
                        groupwrite und die persistence-Datei haben doch nichts miteinander zu tun!
                        groupwrite schreibt auf den Bus, der Wert wird von linknx empfangen und in die persistence-Datei geschrieben, falls man init="persist" angegeben hat.
                        Wenn Du manuell in die persistence-Datei schreibst, wird das nur beim Start von linknx ausgewertet - was ja idealerweise nur einmal nach einer Änderung der Konfiguration passiert. Warum willst Du das machen?

                        Vorschlag: Schreib einfach, was Du machen willst, vielleicht kann man Dir dann eher helfen.

                        Zitat von Tqm Beitrag anzeigen
                        Kann mann eigentlich auch eine rule z.Bsp: <rule id="Esszimmer_Licht_ein"> mittels einer Variable aktivieren u. deaktivieren?
                        Nicht über eine Variable, sondern über eine action:
                        Code:
                        <action type="set-rule-active" rule-id="irgendeineId" active="yes|no"/>
                        Dafür ist das neueste linknx notwendig.

                        Gruß, Waldemar
                        OpenKNX www.openknx.de

                        Kommentar


                          #13
                          Hi sand,

                          Zitat von sand Beitrag anzeigen
                          Hallo Waldemar,
                          ich weiß nicht an wen sich Deine letzte Antwort wendet.
                          Das ging an Tqm...

                          Zitat von sand Beitrag anzeigen
                          Allerdings hab ich noch keine Eingabemöglichkeit (Formularfeld) gefunden. Ich wollte dafür smartVisu nehmen.
                          Ich habe mal in den Tipps und Tricks eine linknx-Lösung vorgestellt, mit der man ein Datum (für Urlaubs-Abwesenheit) auswählen kann. Die ist so abstrahiert, dass sie nur 2 Buttons und 1 Textfeld braucht. Ist damit Visu-Unabhängig und läuft auch mit einem Taster, der Texte anzeigen kann (bei mir der ZAS). Das kann man auch für Zeiteingabe abwandeln... Schau Dir das mal an, vielleicht ist das was für Dich. Und falls Du Fragen hast, stell sie einfach.

                          Gruß, Waldemar
                          OpenKNX www.openknx.de

                          Kommentar


                            #14
                            O.K. Grundgedanke war eine Zeitschaltuhr in linknx zu realisieren bei welcher ich
                            a) die Zeit über eine "virtuelle Gruppenadresse" ändern kann => variable
                            b) diese Zeitschaltuhr ebenfalls über eine "virtuelle Gruppenadresse" aktivieren/deaktivieren kann

                            aber wie ich Deinem letzten Post entnehme müsste (zum Übernehmen der Änderungen) linknx jedesmal neugestartet werden ?!

                            Mfg
                            Thomas

                            Kommentar


                              #15
                              Hallo Thomas,

                              natürlich geht das, was Du vor hast - nur verstehe ich nicht, warum Du unbedingt in die persistence-Datei reinschreiben willst!

                              Du hast doch selbst rausgefunden, dass mit groupwrite die Zeit auf den Bus gebracht werden kann - und genau das ist der richtige Weg. Du musst das Zeit-Object, das im at als Variable verwendet wird, über den Bus beschreiben, und nicht über die Datei. Das ist alles, was ich gesagt habe. Deswegen hab ich gefragt, warum Du Dich so auf die Datei versteifst.

                              Du brauchst einfach 2 GA, 1 vom DPT 10.001 (Zeit) und eine mit DPT 1.001 (Ein/Aus).

                              Die Ein/Aus-GA schaltet die eigentliche Zeitschalt-Rule ein und aus. Und die Zeitschalt-Rule wertet die Zeit, die in der Zeit-GA steht, als Variable aus.

                              Gruß, Waldemar
                              OpenKNX www.openknx.de

                              Kommentar

                              Lädt...
                              X