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:00Device 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.
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.
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?