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:
          name: Test_Room
          sv_page: room
          sv_img: scene_sleeping.png
          Switch:
              name: switch
              type: bool
              visu_acl: rw
              sv_widget: "item.name{{ basic.flip('item.name', 'item','Ein','Aus') }}"
              knx_dpt: 1
              knx_listen: <schalt-GA>
              DelayOn:
                  name: delay_on
                  visu_acl: rw
                  sv_widget: "item.name{{ basic.flip('item.name', 'item','Ein','Aus') }}"
                  type: num
                  knx_dpt: 1
                  knx_send: <verzöger-GA>
                  # Verzoegerung um 100 Sekunden
                  autotimer: 100 = 2 = latest
                  eval: sh...() if value == 2 else 0
                  eval_trigger: ..
              DelayOff:
                  name: delay_Off
                  visu_acl: rw
                  sv_widget: "item.name{{ basic.flip('item.name', 'item','Ein','Aus') }}"
                  type: num
                  knx_dpt: 1
                  knx_send: <verzöger-GA>
                  # Verzoegerung um 100 Sekunden
                  autotimer: 100 = 2 = latest
                  eval: sh...() if value == 2 else 1
                  eval_trigger: ..
              DelayOnOff:
                  name: delay_OnOff
                  visu_acl: rw
                  sv_widget: "item.name{{ basic.flip('item.name', 'item','Ein','Aus') }}"
                  type: num
                  knx_dpt: 1
                  knx_send: <verzöger-GA>
                  # Verzoegerung um 100 Sekunden
                  autotimer: 100 = 2 = latest
                  eval: sh...() if value == 2 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