Hallo,
bin auf der Suche nach einer Systematik für folgenden Anwendungsfall:
Wenn zwischen einer bestimmten Zeit ein Schalter nicht gedrückt wurde, soll eine Benachrichtigung (Mail) erfolgen.
Habe es bereits mit einem Dummy der durch einen Schalter geschalten wird, versucht.
- Der Dummy "DashMedDummy" kann den Status "leer" und "genommen" haben.
- Ein DoIf überprüft den Status des Schalters und setzt den Status des Dummy:
([DashMed] eq "present" and [16:00-18:00|So Mo Di Mi Do])(set DashMedDummy genommen)
- Über ein Doif wird zu einem bestimmten Zeitpunkt der Status überprüft:
([DashMedDummy:state] ne "genommen" and [18:03|So Mo Di Mi Do]) ({ DebianMail('name@123.de',' FHEM:Mail','Med. genommen?','');})
- kurze Zeit nach der Überprüfung wird der Dummy über ein Doif wieder zurückgesetzt:
([18:05]) (set DashMedDummy leer)
Das Ganze funktioniert aber nur einmal, wenn der Status des Schalters gesetzt wurde. Danach wird die Mail nicht mehr gesendet.
Wahrscheinlich gibt es einen eleganteren Weg es zu lösen.
Vielleicht erkennt jemand meinen Fehler oder kann mir einen besseren Weg zeigen.
Danke
Dorian
Die Notwendigkeit eines dummys verstehe ich nicht ganz. Aber gut, wenn es geht...
Dein 2. DOIF braucht wahrscheinlich ein Attribut "do always".
Würde es nicht ausreichen, jeweils um 18:03 Uhr zu prüfen, ob das ReadingsAge() des entsprechenden Schalters größer als 7380 ist?
Dann käme man mit einem einzigen simplen at device aus.
Danke für die Antworten. Das "Do always" hat geholfen.
Wenn ich demnächst Zeit habe, probiere ich vielleicht noch das "ReadingsAge()". Würde es vereinfachen.
Aber danke noch einmal
Dorian