Ankündigung

Einklappen
Keine Ankündigung bisher.

eval und autotimer

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

    eval und autotimer

    Hallo,

    ich will aus 5 PM-Objekten ein Anwesend Objekt machen, habe das wie folgt gelöst:

    Code:
        anwesend:
            type: bool
            autotimer: 10m = 0
            eval: 1
            eval_trigger:
            -   pm1.meldung
            -   pm2.meldung
            -   pm3.meldung
            -   pm4.meldung
            -   pm5.meldung
    Das Objekt bleibt so aber dauerhaft 1. Wirkt das eval auch beim autotimer? Wie könnte ich das sonst ohne Logik lösen? In allen PM Items ein on_update und damit das Anwesend auf 1 setzen?

    #2
    Zitat von android Beitrag anzeigen
    1. Wirkt das eval auch beim autotimer?
    Ja

    Zitat von android Beitrag anzeigen
    Wie könnte ich das sonst ohne Logik lösen? In allen PM Items ein on_update und damit das Anwesend auf 1 setzen?
    Wie funktionieren deine PM genau? Kannst du diese nicht einfach per   eval: or  verknüpfen und wenn der letzte ausschaltet geht (ganz ohne autotimer) die Anwesenheit auf 0?
    Der autotimer ist meines wissens nicht retriggerbar, er würde also immer 10min nach der ersten Präsenz auf 0 schalten.

    Kommentar


      #3
      Schade. Dachte immer das eval reagiert nur bei eval_trigger und nicht bei anderen Item-Attributen. Ne, dass ist in diesem Fall ein "Meldeobjekt" welches alle 15s sendet bei Bewegung, da ich es auch als "Alarmanlage" nutze. Das normale Präsenzlichtobjekt nutze ich nur, wenn es dunkel wird. Würde dann ja ohne Verzögerung immer nach 15s auf abwesend gehen. Laut Doku ist der autotimer retriggerbar:

      Das Attribut setzt den Wert des Items nach einer Zeitspanne auf einen bestimmten Wert. Der Timer beginnt zu laufen, wenn dem Item ein Wert zugewiesen wird. Wenn während der Autotimer läuft dem Item erneut ein Wert zugewiesen wird, beginnt der Timer erneut zu laufen. Damit lässt sich z.B. ein Treppenhauslicht realisieren.
      Werde es dann mal über on_update probieren oder im eval abfragen, ob noch ein PM-Item 1 ist.

      Kommentar


        #4
        OK, dann habe ich mich glücklicherweise geirrt.
        eval wirkt immer, z.B. auch beim direkten setzen eines Wertes durch ein Plugin oder etwa ein on_update.
        eval_trigger ist ein zusätzlicher Auslöser.

        Kommentar


          #5
          Zitat von smai Beitrag anzeigen
          Der autotimer ist meines wissens nicht retriggerbar,
          Hallo smai,

          der autotimer ist retriggerbar, es gibt noch einen timer, der ist nicht retriggerbar. Aber ich würde es auch mit einem   eval: or  machen.

          android: Du kannst Dein Problem folgendermaßen lösen:
          Code:
          anwesend:
              autotimer = 10m = 2
              eval: 1 if value < 2 else 0
              ...
          Hier wird aber anwesend auch 1, wenn die Trigger 0 senden. Nach 10 Minuten wird es dann aber 0.

          Gruß, Waldemar

          P.S.: Hab wohl zu lange das Edit-Fenster offen gehabt, ihr habt ja fleißig weiter gemacht... Wenn die Trigger nur eine 1 senden, dann kann man auch so was machen:
          Code:
          anwesend:
              autotimer = 10m = 0
              eval: 1 if value else 0
              ...
          Zuletzt geändert von mumpf; 28.03.2019, 21:24. Grund: PS zugefügt
          OpenKNX www.openknx.de

          Kommentar


            #6
            Wenn der trigger nur 1 sendet, kannst du auch einfach   value , ist dasselbe wie   1 if value else 0
             

            Kommentar


              #7
              Danke für eure Hilfe. Ich denke, das ist meine Lösung:

              Zitat von mumpf Beitrag anzeigen

              android: Du kannst Dein Problem folgendermaßen lösen:
              Code:
              anwesend:
              autotimer = 10m = 2
              eval: 1 if value < 2 else 0
              ...

              Kommentar


                #8
                Zitat von smai Beitrag anzeigen
                Wenn der trigger nur 1 sendet, kannst du auch einfach   value , ist dasselbe wie   1 if value else 0
                 
                Stimmt... (peinlich)

                Gruß, Waldemar

                OpenKNX www.openknx.de

                Kommentar

                Lädt...
                X