Hauptmenü

Doif triggert zu oft

Begonnen von slor, 19 Mai 2018, 22:30:41

Vorheriges Thema - Nächstes Thema

slor

Hallo zusammen,

ich habe ein Doif definiert, welches bei einem offenen Fenster nach 10 Min das erste mal und danach noch 2x alle 10 Minuten eine Nachricht via Telegram senden soll.
Nun triggert das Doif auch 3x wenn das Fenster schon geschlossen ist. Wo ist mein Denkfehler?

([EG_KU_TK:state] eq "open") (set Telegram_Bot message @-123456789 Die Terrassentür ist seit {(int([EG_KU_TK:state:sec] / 60))} Minuten offen)
Attributes:
   do         always
   repeatcmd  600
   repeatsame 3
    wait       601


Der Kontakt der Terrassentür liefert in diesem Fall korrekt open oder closed zurück.

Wenn wir schon dabei sind, Kann ich das Doif auch so universell bauen, dass es auf alle Fenster und Türen reagiert? Aktuell habe ich für jedes Fenster und jeder Tür ein eigenes Doif definert.
Fhem auf Raspberry Pi 4
CCU3 mit RaspberryMatic mit HMCCU an FHEM
HMCCU, Telegram, Conbee2 und Hue/Tradfri/Osram Lampen AQARA Sensoren, HomeConnect

slor

gerade wieder

Tür um 22:52 geschlossen.
Um 23:02 kam die Meldung, dass die Tür seit 10 min auf ist.
Das steht in den Readings:
Readings
Device EG_KU_TK 2018-05-19 22:52:54
cmd 1 2018-05-19 23:02:18
Cmd_count 1 2018-05-19 23:02:18
cmd_event EG_KU_TK 2018-05-19 23:02:18
cmd_nr 1 2018-05-19 23:02:18
e_EG_KU_TK_state closed 2018-05-19 22:52:54
mode enabled 2018-05-03 21:12:28
state cmd_1 2018-05-19 23:02:18
wait_timer 19.05.2018 23:12:18 cmd_1 EG_KU_TK 2018-05-19 23:02:18
Fhem auf Raspberry Pi 4
CCU3 mit RaspberryMatic mit HMCCU an FHEM
HMCCU, Telegram, Conbee2 und Hue/Tradfri/Osram Lampen AQARA Sensoren, HomeConnect

moskito

Hi,

kann es sein, dass vor dem "closed" noch ein anderes Event von dem Kontakt übermittelt wird?
Kannst Du im Event Monitor überprüfen.
Aus der Commandref:

ZitatAnwendungsbeispiel: Einfache Ereignissteuerung mit einmaliger Ausführung beim Zustandswechsel, "remotecontrol" ist hier ein Device, es wird in eckigen Klammern angegeben. Ausgewertet wird der Status des Devices - nicht das Event.

define di_garage DOIF ([remotecontrol] eq "on") (set garage on) DOELSEIF ([remotecontrol] eq "off") (set garage off)

Das Modul wird getriggert, sobald das angegebene Device hier "remotecontrol" ein Event erzeugt. Das geschieht, wenn irgendein Reading oder der Status von "remotecontrol" aktualisiert wird. Ausgewertet wird hier der Zustand des Status von remotecontrol nicht das Event selbst.

Ansonsten probiere es mal mit dem Attribut "checkReadingEvent".

Gruß
Danny
FHEM auf Intel NUC/Proxmox & Debian 12 + HM-CFG-USB + zigbee2mqtt + Zwave + Enocean

amenomade

Füge ein leeres DOELSE am Ende deiner Definition hinzu.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Per

Das repeat (oder wait) wird abgebrochen, wenn DOIF einen anderern Status annimmt. Kann er bei dir nicht, mangels anderen Status :D.

Also:
Zitat von: amenomade am 20 Mai 2018, 00:07:02
Füge ein leeres DOELSE am Ende deiner Definition hinzu.
Dann kann DOIF dahin wechseln und bricht das repeat ab.

slor

danke, eingebaut. Bin nur zu faul runter zu laufen um das zu testen gerade.
Brauche ich eigentlich das Do Always?
Fhem auf Raspberry Pi 4
CCU3 mit RaspberryMatic mit HMCCU an FHEM
HMCCU, Telegram, Conbee2 und Hue/Tradfri/Osram Lampen AQARA Sensoren, HomeConnect

slor

sodele, läuft nun wie gewünscht. auch ohne das do always.

Folgendes habe ich nun:
([EG_KU_TK:state] eq "open") (set Telegram_Bot message @-123456789 Die Terrassentür ist seit {(int([EG_KU_TK:state:sec] / 60))} Minuten offen) DOELSE ()

kann ich das etwas generischer gestalten, dass ich nicht für jede Tür / Fenster so ein Doif schreiben muss?
Terassentür steht im Attribut Alias. Das könnte man da rausnehmen. Auf den Artikel kann kann ich auch verzichten. Bzw. es ist ja immer Die Tür und Das Fenster.

Alle Fenster / Türen haben die gleiche Benamung und enden auf _TK oder _FK.
Fhem auf Raspberry Pi 4
CCU3 mit RaspberryMatic mit HMCCU an FHEM
HMCCU, Telegram, Conbee2 und Hue/Tradfri/Osram Lampen AQARA Sensoren, HomeConnect

Per

Zitat von: slor am 22 Mai 2018, 16:36:39kann ich das etwas generischer gestalten, dass ich nicht für jede Tür / Fenster so ein Doif schreiben muss?
Schwer, da DOIF (siehe oben) nur einen Wait-Timer verwaltet. Du müsstest für jeden Sensor (ginge aber automatisch) einen Merker anlegen und diese abfragen.

Vllt. mit dem Perl-DOIF, da kann ich dir aber nicht weiterhelfen.

Ellert

Zitatkann ich das etwas generischer gestalten, dass ich nicht für jede Tür / Fenster so ein Doif schreiben muss?

Du könntest Dir ein Template anlegen und dann beim Anlegen der Definitionen nur den Namen angeben oder aus eines Datei einlesen, siehe https://fhem.de/commandref_DE.html#template

slor

cool, danke.
Mein Ziel ist es nicht so viele Definitionen zu haben.

Wird Fhem nicht theoretisch langsamer, wenn man hunderte von Doif oder notifys hat? die müssen ja alle auf Events gematched werden.
Fhem auf Raspberry Pi 4
CCU3 mit RaspberryMatic mit HMCCU an FHEM
HMCCU, Telegram, Conbee2 und Hue/Tradfri/Osram Lampen AQARA Sensoren, HomeConnect

Ellert

Zitat von: slor am 23 Mai 2018, 16:10:18
cool, danke.
Mein Ziel ist es nicht so viele Definitionen zu haben.

Wird Fhem nicht theoretisch langsamer, wenn man hunderte von Doif oder notifys hat? die müssen ja alle auf Events gematched werden.
Theoretisch ja, praktisch nicht, siehe https://forum.fhem.de/index.php/topic,87006.0.html

slor

Ok, dann ist meine Sorge unbegründet. Wenn die doifs erst mal angelegt sind muss ich da ja nicht mehr dran.
Fhem auf Raspberry Pi 4
CCU3 mit RaspberryMatic mit HMCCU an FHEM
HMCCU, Telegram, Conbee2 und Hue/Tradfri/Osram Lampen AQARA Sensoren, HomeConnect