[Gelöst] Readings auf Änderung überwachen

Begonnen von Knallfrosch, 16 Oktober 2019, 20:39:57

Vorheriges Thema - Nächstes Thema

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

#17
Also, wenn ich selbst versuche z.B. :

DOIF ([+02:00] and [#".*Klima$":"(temperature|humidity)":ReadingsAge("$name","$_",0) > 7200]) {exmail...?

Ist $_ an der Stelle richtig, wenn ich entweder temperature oder humidity abfragen möchte?

EDIT: wobei... in der Bedingung wäre es besser nur [+02:00] zu haben, und einfach die Aggregation dann im exmail Nachricht zu machen. Aber das ist eine andere Geschichte ;)
EDIT2: und wenn $_ falsch ist, kann man auch 2x ReadingsAge mit "or" kombinieren
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Damian

defmod doif_Age DOIF {[18:00];;my $s=[?@:"":temperature:ReadingsAge($name,"temperature",0) > 3600,"keine"];;if ($s ne "keine") {exmail('FEHM@FHEM.de', 'Folgende Sensoren sind ausgefallen', $s)}}

Bedeutung: Um 18:00 Uhr gibt es eine Mail mit Sensoren, deren Reading "temperature" älter als eine Stunde ist, aber nur falls es welche gibt, sonst wird keine Mail versendet.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

crazykiwi

Zitat von: Damian am 20 Oktober 2019, 10:23:25
defmod doif_Age DOIF {[18:00];;my $s=[?@:"":temperature:ReadingsAge($name,"temperature",0) > 3600,"keine"];;if ($s ne "keine") {exmail('FEHM@FHEM.de', 'Folgende Sensoren sind ausgefallen', $s)}}

Bedeutung: Um 18:00 Uhr gibt es eine Mail mit Sensoren, deren Reading "temperature" älter als eine Stunde ist, aber nur falls es welche gibt, sonst wird keine Mail versendet.

Hi, bin gerade auf das DOIF gestoßen, das sehr vielversprechend für mein Problen klingt. Ich möchte meine LaCrosse-Temperatursensoren auf Erreichbarkeit überwachen (alle anderen Devices sind Zigbee-Devices, da habe ich ein NOTIFY auf das reachable-Reading). Readingswatcher wäre zwar eine Alternative, aber das DOIF finde ich dann doch eleganter.
Wie kann ich das DOIF ändern, damit nicht alle Devices mit einem temperature-Reading, sondern nur LaCrosse-Devices abgegriffen werden, d.h. idealerweise alle mit LaCrosse im Internal TYPE? Falls das nicht möglich ist, könnte ich natürlich auch überall LaCrosse im Namen ergänzen - das sollte dann ja auf alle Fälle gehen?
Es soll auch nicht nur einmal täglich um 18 Uhr benachrichtigen, sondern alle 2 Stunden. Das sollte mit [+02:00] gehen, oder?

Mit der Perl-Syntax komme ich bisher leider noch nicht so recht klar - das ?@:"": verstehe ich insbesondere noch nicht wirklich...

Vielen Dank für jede Hilfe!