FHEM Forum

FHEM => Automatisierung => Thema gestartet von: yersinia am 11 März 2026, 15:47:45

Titel: notify Status während disabledAfterTrigger bzw disabledForIntervals
Beitrag von: yersinia am 11 März 2026, 15:47:45
Ich hab eine (eher kosmetische, völlig unkritische) Frage zu notify in Verbindung mit disabledAfterTrigger und disabledForIntervals.

Ich nutze, vereinfacht, folgende funktionierende(!) notify Definiton:
defmod notify_test notify Device:.* { \
    Log(3, "Yeah, Event triggered");;\
}
attr notify_test disabledAfterTrigger 30
attr notify_test disabledForIntervals 20:00-24:00 00:00-08:00
Device generiert alle 60s Events für mehrere Readings (ist gewollt und imho ok); disabledAfterTrigger 30 nutze ich zum entprellen - also die Aktion nur einmalig auszuführen nachdem das erste Reading aus dem Device ein Event erzeugt hat.
Zwischen 20Uhr und 8Uhr benötige ich das notify gar nicht, daher disabledForIntervals.
Das alles funktioniert wie erwartet.

Was mich etwas verwirrt ist die Tatsache, dass ich im FHEMWEB nicht einfach erkennen kann, ob das notify Device gerade disabled ist (auf Basis der zwei Attribute) oder es keinen triggernden Event gab. STATE liefert die letzte Triggerzeit (mWn) und state, dass das notify aktiv ist:
   NOTIFYDEV  Device
   NR         474
   NTFY_ORDER 50-notify_test
   REGEXP     Device:.*
   STATE      2026-03-11 15:44:47
   TRIGGERTIME 1773240287.61623
   TYPE       notify
   READINGS:
     2026-03-11 09:04:05   state           active

Natürlich kann ich im Device nachsehen, wann der letzte Trigger war und es dann ausrechnen/abschätzen - aber gibt es auch einen eleganteren Weg zu erkennen, ob
- das notify Device gerade (temporär) disabled ist nach einem trigger (disabledAfterTrigger) aber nach Ablauf der Zeit (hier 30s) wieder aktiv lauscht?
- das notify Device gerade (temporär) disabled ist wegen (disabledForIntervals)?
- das notify Device nicht getriggert hat, weil es keinen passenden Event gegeben hat?

Generell sind STATE und state für mich so auch in Ordnung: ich finde es praktisch, dass STATE den letzten Trigger anzeigt. Ich finde auch den generellen state active passend, weil im Prinzip das Device auch nicht disabled/inactive und somit aktiv ist.
Titel: Aw: notify Status während disabledAfterTrigger bzw disabledForIntervals
Beitrag von: betateilchen am 11 März 2026, 16:12:32
Zitat von: yersinia am 11 März 2026, 15:47:45gibt es auch einen eleganteren Weg zu erkennen, ob
- das notify Device gerade (temporär) disabled ist nach einem trigger (disabledAfterTrigger) aber nach Ablauf der Zeit (hier 30s) wieder aktiv lauscht?
- das notify Device gerade (temporär) disabled ist wegen (disabledForIntervals)?
- das notify Device nicht getriggert hat, weil es keinen passenden Event gegeben hat?


Das notify wird IMMER getriggered und ausgeführt. Es prüft erst bei der Ausführung für sich selbst, ob es aufgrund irgendwelcher Attribute (oder set active/inactive) disabled ist oder nicht.

Sollte es zu der Erkenntnis kommen, dass es gerade nicht aktiv sein soll, dann bricht es die Verarbeitung einfach ab.

Es gibt aber zumindest einen eleganten Weg, herauszufinden, ob ein device disabled ist oder nicht:

{IsDisabled("at_nextion")}
liefert eine 1 wenn das device "at_nextion" disabled ist.
Den Grund für das disable findest Du so aber auch nicht heraus.
Titel: Aw: notify Status während disabledAfterTrigger bzw disabledForIntervals
Beitrag von: Guybrush am 11 März 2026, 16:21:55
ich glaub das was du willst geht vom Modul her nicht. das wird meine ich nur intern berücksichtigt.

Du könntest aber zb im notify ein reading 'temporaryDisabled' (oder anders benannt) im notify_test device auf true oder 1 setzen. Dann noch ein at device mit +30 sek anlegen, was das reading wieder auf false oder 0 setzt. ob man das wirklich braucht bezweifel ich, da man 30 sekunden ja auch schnell am timestamp ablesen kann und das ja eigentlich nur fürs konfiguieren wenn überhaupt nötig ist?