Ankündigung

Einklappen

Serverwartung 21.2.



Am 21.2. im Laufe des späten Abends wird eine Serverwartung durchgeführt. Das Forum ist dadurch für gut zwei Stunden nicht erreichbar.
Es wird eine Wartungsseite geschaltet.

Mehr anzeigen
Weniger anzeigen

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