FHEM Forum

FHEM => Automatisierung => Thema gestartet von: dorian67 am 06 Dezember 2020, 10:43:13

Titel: [Gelöst]Aktion, wenn andere Aktion in bestimmten Zeitraum nicht ausgeführt wurde
Beitrag von: dorian67 am 06 Dezember 2020, 10:43:13
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

Titel: Antw:Aktion, wenn eine andere Aktion in bestimmten Zeitraum nicht ausgeführt wurde
Beitrag von: amenomade am 06 Dezember 2020, 10:55:52
Die Notwendigkeit eines dummys verstehe ich nicht ganz. Aber gut, wenn es geht...

Dein 2. DOIF braucht wahrscheinlich ein Attribut "do always".

Titel: Antw:Aktion, wenn eine andere Aktion in bestimmten Zeitraum nicht ausgeführt wurde
Beitrag von: betateilchen am 06 Dezember 2020, 11:02:04
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.
Titel: Antw:Aktion, wenn eine andere Aktion in bestimmten Zeitraum nicht ausgeführt wurde
Beitrag von: dorian67 am 10 Dezember 2020, 23:35:23
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