Ankündigung

Einklappen
Keine Ankündigung bisher.

Einschaltverzögerung, Ausschalterverzögerung oder beides

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

    Einschaltverzögerung, Ausschalterverzögerung oder beides

    Hallo,

    Ich benutze SmarthomeNG schon seit geraumer Zeit.
    Leider bin ich in Python nicht so fit und daher meine Frage:
    Hat jemand eine Logik, mit der ich eine Einschaltverzögerung programmieren kann ?
    Und zwar sollte es so laufen:
    Wenn eine 1 kommt, soll nach angegebener Zeit ein weiteres Item auf 1 gehen.
    Wenn aber innerhalb der Zeit wieder eine 0 kommt, dann ändert das 2. Item den Wert auf 1 natürlich nicht.
    Genau das gleiche soll auch mit einer Ausschaltverzögerung realisiert werden.
    Mit der ein-/ausschaltverzögerung möchte ich einen einfachen Debounce realisieren.

    Freue mich schon auf eure Lösungen

    #2
    Hi,

    mein Pattern für eine Einschaltverzögerung ist:

    Code:
    Switch:
        type: bool
        knx_dpt: 1
        knx_listen: <schalt-GA>
        DelayOn:
            type: bool
            knx_dpt: 1
            knx_send: <verzöger-GA>
            # Verzoegerung um 100 Sekunden
            autotimer: 100 = 2
            eval: ..() if value == 2 else 0
            eval_trigger: ..
    Folgendes passiert:
    • Switch = DelayOn = 0 (Ausgangssituation)
    • Switch geht auf 1: DelayOn wird getriggert, value ist 1, damit bleibt DelayOn = 0
    • Switch geht auf 0 (vor 100 Sekunden): DelayOn wird getriggert, value ist 0, damit bleibt DelayOn = 0
    • Nach 100 Sekunden (egal ob Switch = 1 oder 0): DelayOn wird getriggert, value ist 2, DelayOn = Switch, wenn Switch also noch 1 ist, wird jetzt verzögert geschaltet
    Ausschaltverzögerung sollte analog gehen.

    Gruß, Waldemar

    OpenKNX www.openknx.de

    Kommentar


      #3
      Danke für das Beispiel.
      Hat mir sehr geholfen.

      Hier noch ein Beispiel / Testcode für Einschalt-/Ausschalt- und Ein/Ausschaltverzögerung.
      Gleich mit Visu, damit man das auch schön testen kann.

      PHP-Code:
      Test:
          
      nameTest_Room
          sv_page
      room
          sv_img
      scene_sleeping.png
          
      Switch:
              
      name: switch
              
      typebool
              visu_acl
      rw
              sv_widget
      "item.name{{ basic.flip('item.name', 'item','Ein','Aus') }}"
              
      knx_dpt1
              knx_listen
      : <schalt-GA>
              
      DelayOn:
                  
      namedelay_on
                  visu_acl
      rw
                  sv_widget
      "item.name{{ basic.flip('item.name', 'item','Ein','Aus') }}"
                  
      typenum
                  knx_dpt
      1
                  knx_send
      : <verzöger-GA>
                  
      # Verzoegerung um 100 Sekunden
                  
      autotimer100 latest
                  
      eval: sh...() if value == else 0
                  eval_trigger
      : ..
              
      DelayOff:
                  
      namedelay_Off
                  visu_acl
      rw
                  sv_widget
      "item.name{{ basic.flip('item.name', 'item','Ein','Aus') }}"
                  
      typenum
                  knx_dpt
      1
                  knx_send
      : <verzöger-GA>
                  
      # Verzoegerung um 100 Sekunden
                  
      autotimer100 latest
                  
      eval: sh...() if value == else 1
                  eval_trigger
      : ..
              
      DelayOnOff:
                  
      namedelay_OnOff
                  visu_acl
      rw
                  sv_widget
      "item.name{{ basic.flip('item.name', 'item','Ein','Aus') }}"
                  
      typenum
                  knx_dpt
      1
                  knx_send
      : <verzöger-GA>
                  
      # Verzoegerung um 100 Sekunden
                  
      autotimer100 latest
                  
      eval: sh...() if value == else sh..()
                  
      eval_trigger: .. 
      Das latest bei autotimer braucht man wegen dem eval und ab smarthomeng 1.3.
      Der Type vom DelayXX muß aber zwingend num sein, da bool 2 nicht darstellen kann und somit funktionierts auch nicht.

      Danke für die Hilfe.

      Kommentar

      Lädt...
      X