Ankündigung

Einklappen
Keine Ankündigung bisher.

LOGIKEN: funktioniert "watch_item" auch ohne Zustandsänderung?

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

    LOGIKEN: funktioniert "watch_item" auch ohne Zustandsänderung?

    Hallo,
    ich würde eine Logik gerne über ein "watch_item" auslösen und zwar auch dann, wenn keine Zustandsänderung passiert. Anders gesagt auch dann, wenn beim physischen Lichtschalter auf "Aus" gedrückt wird, obwohl das Licht bereits aus ist. Der KNX-Busmonitor zeigt mir, dass zwar ein KNX-Telegramm gesendet wird, der Aktor aber nicht reagiert, da er ja bereits auf "Aus" ist.

    Mit der Standard-Konfig der Logik scheint dies aber nicht zu bewerkstelligen:

    MeineLogik:
    filename: my_logic.py
    watch_item: kueche.spots
    So wird die Logik aber nur ausgelöst, wenn auch eine tatsächliche Änderung von z.B. 0 auf 1 passiert. Fällt hier jemanden ein Workaround ein?

    Vielen lieben Dank.

    #2
    probiere es mal mit "enforce_updates: yes" in der Definition des items kueche.spots

    Gruß
    Wolfram

    Kommentar


      #3
      Hallo wvhn ,
      danke für den Input, das werde ich abends nach der Arbeit gleich testen und mich hier nochmal melden, ob es den gewünschten Effekt hatte.

      Grüße

      Kommentar


        #4
        Servus,
        leider hat das "enforce_updates: yes" beim Item nichts bewirkt, die Logik wird weiterhin nicht angeworfen.
        Hat vielleicht wer noch eine andere Idee, wie man das bewerkstelligen könnte?

        Vielen lieben Dank,
        Grüße

        Kommentar


          #5
          Ich hatte das gestern extra noch getestet. Schau mal im Admin-Interface, ob enforce_updates bei dem item aktiv ist. In der Doku gibt es verschiedene Beispiele mit „yes“ order „True“. True ist wohl die bevorzugte Variante. Neustart von shNG hattest Du sicherlich gemacht.

          enforce_updates setzt allerdings voraus, dass auf der in knx_listen definierten GA immer ein Telegramm ankommt, auch wenn sich der Wert nicht ändert. Das kannst Du im Webinterface des knx-Plugins oder mit den knxtools von knxd prüfen.

          Gruß
          Wolfram

          Kommentar


            #6
            Idealerweise nicht "True", sondern "true" schreiben. Yaml importiert "True" als string "True", "true" als bool True. "yes" und "True" sollten eigentlich konvertiert werden, aber wer weiß, woran das konkret hängt...

            Du kannst auch im AdminUI beim Item sehen, wann die letzte Änderung und as letzte Update (Änderung auf denselben Wert) erfolgt ist. Wenn die Zeiten nicht plausibel sind, kommt ggf. nix an, dann im knx-Plugin weitersuchen wie beschrieben

            Kommentar


              #7
              Dank euch beiden für die Inputs.
              Jap, Neustart wurde gemacht. Also im Admin Interface seh ich bei dem Item unter "Initialisierungs-, Evaluations- und Trigger-Konfiguration:", dass die "enforce_updates" config auf "on" steht. Interessant, einmal "yes", einmal "true" und einmal "on" :-) egal - ich denke, das sollte also passen.

              Leider hab ich mit der Triggerung der Logik ohne Zustandsänderung weiterhin keinen Erfolg. Mein Item hat die Sende-GA 0/0/89 und die Listen-GA 0/0/90. Wenn ich den Lichtschalter auf "Aus" drücke, während das Licht aus ist, wird auf die Adresse 0/0/89 : 0 geschickt, laut Busmonitor. Deshalb löst die Logik über das Watch (selbst mit enforce_updates) nicht aus, wie wvhn beschrieben hat. Soweit ich das verstanden habe, kommt die Antwort (im Zustandswechsel-fall) ja vom Aktor auf 0/0/90, der dann sozusagen "meldet", dass er nun umgeschalten hat.

              Hab überlegt, ein zweites "virtuelles" item zu erzeugen, dass nur eine Listen-GA auf 0/0/89 hat (+enforce_update) und dann das Watch der Logik auf dieses Item zu geben. Ist das überhaupt gültig, dass diese GA dann zweimal existiert? Keine Ahnung, ob das was bringen würde...

              Kommentar


                #8
                Zuerst mal würde ich prüfen, ob man den Aktor so konfigurieren kann, dass er nach einem Schaltbefehl den Status zurück meldet, auch wenn dieser sich nicht geändert hat. Also quasi ein enforce_updates für den Aktor.

                Wenn das nicht geht, kannst Du ein Hilfsitem anlegen, das auf 0/0/89 hört. Das würde ich mit knx_listen machen, so dass es einfach nur auf dem Bus mithört, aber keine Werte aktiv abfragt. Dieses item kannst Du dann in die Liste der watch_items eintragen.

                Gruß
                Wolfram

                Kommentar


                  #9
                  Zitat von harrywa Beitrag anzeigen
                  Dank euch beiden für die Inputs.
                  Also im Admin Interface seh ich bei dem Item unter "Initialisierungs-, Evaluations- und Trigger-Konfiguration:", dass die "enforce_updates" config auf "on" steht. Interessant, einmal "yes", einmal "true" und einmal "on" :-) egal - ich denke, das sollte also passen.
                  .
                  Du musst enforce_updates auf True setzen (damit es wirkt)
                  siehe Doku: https://docs.smarthomeng.de//referenz/items/standard_attribute/standard_attribute.html
                  Viele Grüße
                  Martin

                  There is no cloud. It's only someone else's computer.

                  Kommentar


                    #10
                    Zitat von wvhn Beitrag anzeigen
                    Wenn das nicht geht, kannst Du ein Hilfsitem anlegen, das auf 0/0/89 hört. Das würde ich mit knx_listen machen, so dass es einfach nur auf dem Bus mithört, aber keine Werte aktiv abfragt. Dieses item kannst Du dann in die Liste der watch_items eintragen.
                    Das mit dem Hilfsitem hat auf die Schnelle mal funktioniert, damit kann ich erstmal arbeiten. Bei Gelegenheit werde ich mir aber auch noch das "enforce_updates" mit "True" anschauen, ob das einen Unterschied macht. Danke für den Hinweis an Msinn !

                    Danke an alle, Grüße

                    Kommentar

                    Lädt...
                    X