Ankündigung

Einklappen
Keine Ankündigung bisher.

Wert zeitverzögert setzen

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

    [callidomus] Wert zeitverzögert setzen

    Hallo Marcus,

    ich möchte ein Item auf den Wert seiner Abhängigkeit setzen, allerdings um 10 Sekunden verzögert. Wenn die Abhängigkeit also auf 1 gesetzt wird, soll das Item 10 Sekunden später ebenfalls auf 1 gesetzt werden. Mit dem Autotimer kann ich nun leider nur zeitverzögert einen festen Wert setzen. Wenn man nun beim Autotimer z.B. anstatt eines fixen Wertes sowas wie 'value' eintragen würde, könnte man in der lib/item.py in Zeile 491 das auswerten und anschließend den original gesetzten Wert verwenden.

    Was hälst du davon? übersehe ich was?

    Gruß Niko
    Mit freundlichen Grüßen
    Niko Will

    Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
    - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

    #2
    Hi Niko,

    ich arbeite hier mit einem Hilfsitem. Folgende Grundstruktur:
    Code:
    [Quelle]
        type = bool
        [[Helper]]
            type = num
            code = value
            autotimer = 10 = 2
            trigger = Quelle
    [Ziel]
        type = bool
        trigger = Quelle.Helper
        code = cd.Quelle() if cd.Quelle.Helper() == 2 else cd.Ziel()
    Ziel nimmt hier den Wert der Quelle an, 10 Sekunden später.

    Gruß, Waldemar
    OpenKNX www.openknx.de

    Kommentar


      #3
      Hallo Waldemar,

      Danke für den Tipp, sowas in die Richtung habe ich mir auch überlegt, finde ich aber unübersichtlich und auf lange Sicht schwer wartbar. Das blickt doch in ein paar Jahren keiner mehr

      Aber zur Not, wenn Marcus gegen meine Erweiterung ist, muss das wohl so gehen. Mal abwarten was er meint.

      Gruß, Niko
      Mit freundlichen Grüßen
      Niko Will

      Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
      - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

      Kommentar


        #4
        Zitat von 2ndsky Beitrag anzeigen
        Das blickt doch in ein paar Jahren keiner mehr
        Deswegen hat Waldemar ja auch das Kommentarfeld für Items erfunden :-) Kann man das gleiche nicht auch mit einer Logik machen?

        Kommentar


          #5
          Hallo Niko,

          ich denke das passt nicht zu autotimer, da bei autotimer ja erst einmal der Wert gesetzt wird und nach der definierten Zeit ein anderer.

          Das müsste ein separate Funktion werden: delay

          Angenommen ich setze den delay auf 10s. WertA kommt rein und nach 5 Sekunden kommt WertB.
          Welches Verhalten wird erwartet? (Beides konfigurierbar ist erst einmal keine valide Antwort)

          WertA wird in 5 Sekunden gesetzt. WertB in 10 Sekunden.
          WertB wird in 10 Sekunden gesetzt.

          Bis bald

          Marcus

          Kommentar


            #6
            Hi Marcus,

            Du hast noch den Fall

            WertB wird in 5 Sekunden gesetzt.

            vergessen... Also der nicht-nachtriggerbare delay.
            Aber um es nicht zu kompliziert zu machen und passend zu dem Pattern, das ich oben vorgeschlagen habe (und das ich intern am häufigsten verwende), würde ich den Fall

            WertB wird in 10 Sekunden gesetzt

            bevorzugen. Alles andere kann man dann ja über Logik lösen.

            Gruß, Waldemar
            OpenKNX www.openknx.de

            Kommentar


              #7
              Okay, dann ist doch gut, dass ich nochmal nachgefragt habe

              In dem Fall würde ich keine große magic machen... der Wert der reinkommt, wird die in delay definierte Zeit gesetzt. Also wenn Wert A zum Zeitpunkt TA reinkommt und Wert B zum Zeitpunkt TB, dann wird A zum Zeitpunkt TA + delay und B zum Zeitpunkt TB + delay gesetzt.

              Alles andere finde ich auch schwer zu dokumentieren.Warum wird wird Wert A nicht nach 'delay' Sekunden gesetzt, nur weil zwischenzeitlich Wert B reinkam? Was wenn das delay auf eine Stunde gesetzt wird und erst nach 59:59 min der Wert B reinkommt? Dann setze ich Wert A gar nicht mehr und Wert B nach einer Stunde? Finde ich komisch.

              Wenn die Anforderung aber so abwegig oder die Umsetzung bzw. deren Verwendung so viel Spekulationsspielraum lässt, kann ich das auch einfach mit einer Logik oder einem Plugin machen. Dann würde ich einfach selber ein delay Attribut für das Plugin definieren und das selber aussteuern.
              Mit freundlichen Grüßen
              Niko Will

              Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
              - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

              Kommentar


                #8
                Hihi,

                2 Leute, 2 Meinungen... Aber wenn ich es mir so recht überlege, dann kannst Du es gerne so machen, wie Niko es haben will. Das was ich wollte bekomme ich ja mit meinem Pattern einfach hin, die Lösung von Niko nicht Oder anders gesagt: Eigentlich ist es mir egal, solange es ein definiertes Verhalten gibt.

                Gruß, Waldemar
                OpenKNX www.openknx.de

                Kommentar


                  #9
                  Hallo,

                  es gibt ein neues Item Attribut: Verzögerte Aktualisierung
                  Dort kann man ein Zeitspanne eingeben um die die Aktualisierung des Items verzögert werden soll.

                  Code:
                  callidomus.core update
                  callidomus.gui build
                  Bis bald

                  Marcus

                  Kommentar


                    #10
                    Marcus, du bist der Beste! Vielen Dank. Auf welchen Branch muss ich dazu? Im stable ist es nicht drin.
                    Mit freundlichen Grüßen
                    Niko Will

                    Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                    - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                    Kommentar


                      #11
                      Hi Niko,

                      ist in testing und unstable.

                      Bis bald

                      Marcus

                      Kommentar


                        #12
                        Gerade getestet, funktioniert noch nicht. Das Item wird aber auch nicht direkt getriggert, sondern über eine Abhängigkeit mit 'value' im Codeblock. Hab aber noch nicht auf Debug log umgestellt, komm ich jetzt aber leider auch nicht mehr dazu. Werde Morgen weiter testen.
                        Mit freundlichen Grüßen
                        Niko Will

                        Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                        - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                        Kommentar


                          #13
                          Hi Marcus,

                          ich habe nochmal versucht das Verhalten zu analysieren und mir auch den Code angesehen. Sieht für mich gut aus. Dennoch funktioniert es nicht. Konfiguration siehe Screenshots.

                          Hier mal ein Auszug aus dem Log (loglevel DEBUG und Item Änderungen loggen ist aktiviert):

                          Code:
                          2016-08-10 20:05:59 INFO     Main         Item DG.Zimmer2.Licht.Deckenspots.Schalten = True via KNX 1.1.3 1/2/132
                          2016-08-10 20:05:59 INFO     Main         Item DG.Zimmer2.Licht.Deckenspots = 1.0;0.0 via Item DG.Zimmer2.Licht.Deckenspots.Schalten None
                          2016-08-10 20:05:59 INFO     Main         Item DG.Zimmer2.Licht.Deckenspots.Dimmen = 100.0 via KNX 1.1.3 1/5/132
                          2016-08-10 20:05:59 INFO     Main         Item DG.Zimmer2.Licht.Deckenspots = 1.0;100.0 via Item DG.Zimmer2.Licht.Deckenspots.Dimmen None
                          2016-08-10 20:06:00 DEBUG    location.time Triggering location.time-code - caller: Scheduler source: None dest: None value: {'caller': 'Scheduler', 'value': '1', 'd
                          2016-08-10 20:06:00 INFO     location.time-code Item location.time = 2016-08-10 20:06:00.269545+02:00 via Scheduler None None
                          2016-08-10 20:06:00 DEBUG    Scheduler    location.time next time: 2016-08-10 20:07:00+02:00
                          2016-08-10 20:06:38 INFO     Main         Item DG.Zimmer2.Licht.Deckenspots.Schalten = False via KNX 1.1.3 1/2/132
                          2016-08-10 20:06:38 INFO     Main         Item DG.Zimmer2.Licht.Deckenspots = 0.0;100.0 via Item DG.Zimmer2.Licht.Deckenspots.Schalten None
                          2016-08-10 20:06:38 INFO     Main         Item DG.Zimmer2.Licht.Deckenspots.Dimmen = 0.0 via KNX 1.1.3 1/5/132
                          2016-08-10 20:06:38 INFO     Main         Item DG.Zimmer2.Licht.Deckenspots = 0.0;0.0 via Item DG.Zimmer2.Licht.Deckenspots.Dimmen None
                          2016-08-10 20:06:40 INFO     Main         Item WS.Globalstrahlung.Nord = 6.37 via KNX 1.0.1 14/0/21
                          2016-08-10 20:06:40 INFO     Main         Item WS.Globalstrahlung = 6.37;7.7;1.05;49.64;55.24 via Item WS.Globalstrahlung.Nord None
                          2016-08-10 20:06:48 INFO     Main         Item WS.Temperatur.Wetterstation = 14.33 via KNX 1.0.1 14/0/13
                          2016-08-10 20:07:00 DEBUG    location.time Triggering location.time-code - caller: Scheduler source: None dest: None value: {'caller': 'Scheduler', 'value': '1', 'd
                          2016-08-10 20:07:00 INFO     location.time-code Item location.time = 2016-08-10 20:07:00.217572+02:00 via Scheduler None None
                          2016-08-10 20:07:00 DEBUG    Scheduler    location.time next time: 2016-08-10 20:08:00+02:00
                          2016-08-10 20:07:15 INFO     Main         Item WS.Globalstrahlung.Sky = 57.88 via KNX 1.0.1 14/0/25
                          2016-08-10 20:07:15 INFO     Main         Item WS.Globalstrahlung = 6.37;7.7;1.05;49.64;57.88 via Item WS.Globalstrahlung.Sky None
                          Angehängte Dateien
                          Mit freundlichen Grüßen
                          Niko Will

                          Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                          - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                          Kommentar


                            #14
                            Hallo Niko,

                            kannst Du es bitte noch einmal probieren und vorher ein:

                            Code:
                            callidomus.core update
                            machen?

                            Danke und bis bald

                            Marcus

                            Kommentar


                              #15
                              Es funktioniert jetzt. Super geil, vielen Dank!
                              Mit freundlichen Grüßen
                              Niko Will

                              Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                              - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                              Kommentar

                              Lädt...
                              X