Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit "on_change" und timer()

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

    Problem mit "on_change" und timer()

    Hallo an alle,

    nachdem ich selber nun nicht mehr weiter weiß:

    Ich benutzte das letzte PI-Image mit Buster und wollte ein Item verzögert schalten lassen.
    Im Wiki hab ich auch dazu was gefunden und umgesetzt:

    Code:
    wozi:
        fensterkontakte:
            erkertuer:
                name: Erkertür Wohnzimmer
                struct: knx_bool
                knx_cache: 0/3/10
                enforce_updates: true
    
                on_change: sh..t_on.timer(120,1) if value else sh..t_on.timer(0,0)
    
                t_on:
                    type: bool
    Im Struct "knx_bool" ist noch hinterlegt, dass es ein boolscher Wert ist und der Datentyp.

    Im Log entsteht dann folgender Fehler:

    Item wozi.fensterkontakte.erkertuer: 'On_Change' item-value='False' problem evaluating sh.wozi.fensterkontakte.erkertuer.t_on.timer(120,1 ) if value else sh.wozi.fensterkontakte.erkertuer.t_on.timer(0,0, caller='On_Change', source='wozi.fensterkontakte.erkertuer'): timer() got an unexpected keyword argument 'caller'

    Das sieht so aus, als fehlt die zweite Klammer bei "timer(0,0)"

    Wo ist mein Fehler?

    Grüße
    Pierre
    Zuletzt geändert von Pigaro; 07.01.2022, 20:20.

    #2
    Diese Syntax ist von on_change nicht unterstützt. Aktuell zumindest.
    Fixen kannst du es vorerst selbst einfach, indem du im lib/item/item.py bei def timer (Zeile 1560 oder so?) ein caller=None mit in die Klammer setzt.
    Alternativ müsstest du dir mit Hilfsitems helfen, zB ein Item mit eval_trigger: wozi.fensterkontakte.erkertuer und eval mit dem Timer auf das andere Item

    Kommentar


      #3
      Danke für die schnelle Antwort.

      Ist so aber beschrieben:
      "https://www.smarthomeng.de/user/beispiele/eval.html" unter "Item mit verzögertem Status".

      Ich werde es mit Hilfsitems versuchen.

      Danke, mal sehen ob es klappt.

      Kommentar


        #4
        So funktioniert es. Danke

        Code:
                
                fenster:
                    name: Fenster Wohnzimmer
                    struct: knx_bool
                    knx_cache: 0/3/12
                    enforce_updates: true
        
                    on_change: sh..t_on.timer(60,1) if sh..() else sh..t_on(0)
                    t_on:
                        type: bool
                        eval: value if sh...() else 0

        Kommentar

        Lädt...
        X