Nachrichten nur an Geräte senden die "present" im Status haben

Begonnen von Wassergerd, 10 November 2019, 20:27:00

Vorheriges Thema - Nächstes Thema

Wassergerd

Schönen guten Abend.
Mit einem DOIF lasse ich mich nach 15 Min benachrichtigen wenn das Fenster zu lange offen ist.
Nun würde ich gerne alle die Zuhause sind benachrichtigen. Ich überprüfe mit PRESENCE wer da ist. Ich habe aber keine Idee wie ich das DOIF so anpassen kann dass nur die anwesenden benachrichtigt werden.
Hier mal das DOIF welches z.Z. einwandfrei funktioniert:
define di_Fensterkontakt_BadEG DOIF ([Bdkl_Fensterkontakt] eq "open" and [Heizperiode] eq "ja" and [Wetter:temperature] < 15 )\
(set Telegram message Fenster im Bad ist ganz schön lange auf. Machs zu!) \
DOELSE
attr di_Fensterkontakt_BadEG repeatcmd 600
attr di_Fensterkontakt_BadEG room Bad_EG
attr di_Fensterkontakt_BadEG wait 900

Und hier die Presence Überprüfung:
define Pr_Gerd_d PRESENCE function {checkAllFritzMACpresent("XX:XX:XX:XX:XX:XX")} 60 60
attr Pr_Gerd_d event-on-change-reading .*
attr Pr_Gerd_d room TEST

Die gleiche Überprüfung findet noch für 4 weitere Handys statt.
Schönen Dank im voraus

Pfriemler

#1
Tja ... so eine schöne Filterfunktion im Set-Befehl (gibt es ja als Beispiel: Lampen nur einschalten wenn sie nicht schon an sind) geht hier nicht.

Spontan fallen mir prinzipiell drei Möglichkeiten ein:
1. in einer Sub in myUtils als Schleife über alle TYPE=PRESENCE die betreffenden Telegram-Usernamen zusammenzukratzen und in der Benachrichtigung mit anzugeben.
2. Wenn bei jedem PRESENCE-Wechsel ohnhin schon irgendwas läuft, dort die anwesenden Telegram-Usernamen zwischenspeichern und beim Sendebefehl abrufen
3. (quick & dirty) im Ausführungsteil den Befehl für alle in Frage kommenden Hausbewohner duplizieren (mit zusätzlicher Angabe des Adressaten) und mit einem IF zuvor die PRESENCE abzufragen.

Benachrichtigungsfunktionen über zu lange geöffnete Fenster gibt es natürlich auch im Rahmen diverser umfänglicher Automatiserungsmodule...
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

amenomade

Mit Perl und Aggregationsfunktion @ des DOIFs, kann man wahrscheinlich etwas basteln

{foreach (AggrDoIf('@','^Pr_','state','"present"')) {message an $_}
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Wassergerd

@Pfriemler
Welche Automatisierungsmodule kämen da in Frage?

@amenomade
Hört sich sehr interessant an,  da muss ich mich mal einlesen.