Auf Alter von Readings im Dummy triggern. Syntax?

Begonnen von Frank_Huber, 11 August 2017, 09:14:19

Vorheriges Thema - Nächstes Thema

Frank_Huber

Zitat von: Ellert am 15 August 2017, 13:21:21
Dann müsstest Du time+600 noch in HH:MM:SS umwandeln siehe http://search.cpan.org/~dexter/POSIX-strftime-GNU-0.02/lib/POSIX/strftime/GNU.pm

*LOL* als ob och das hinkriegen würde. ;-)

Habs mittlerweile über den at Vorschlag von amenomade gelöst.
Zitat von: amenomade am 15 August 2017, 11:39:12
Getestete Lösung: ein "at", der regelmässig die ReadingsAge prüft:

nils_

Zitat von: Frank_Huber am 15 August 2017, 12:45:56
Bei der Idee von Nils dürfte aber auch $EVENT nichts vernünftiges liefern oder?

war ja auch nur ne idee.
hat Per aber auch schon erwähnt.

vielleicht geht ja sowas  :o
define DOIF_Watchdog_Temp DOIF ([+:01] and [?Temperaturen:.*:sec] > 600) ((set TelegramBot message Temperatur [@Temperaturen:.*]  scheint offline zu sein, bitte prüfen!))
ich bin immer noch am DOIF lernen!!


aber da du ja eine funktionierende lösung hast, ist ja alles gut :D

viele Wege in FHEM es gibt!

Ellert

#32
Zitat von: Frank_Huber am 15 August 2017, 09:09:48
So, kann heute wieder etwas testen...
Ich vermute DOIF wird nicht wirklich funktionieren weil ja die 14 verschiedenen readings jeweils den vorigen Befehl innerhalb vom Wait überschreiben.
Es sei denn ich mach 14 DOIF Pfade. Und da fänd ich den notify mit at sinnvoller. zudem ich da dann auch mit EVTPART0$ arbeiten kann.
Nein, es sind benannte sleep-Befehle, die werden nur überschrieben, wenn sie mit ihrem Namen erneut gesetzt werden.
["^Temperaturen$:":"(.*)?:\s"] ist genauer als $EVTPART0, der Inhalt von $EVTPART0 schliesst mit einem Doppelpunkt ab, den müsstest Du wieder herausfiltern, dann kannst Du auch gleich das Reading aus dem Event herausfiltern.

Ellert

Zitat von: Frank_Huber am 15 August 2017, 13:24:08
*LOL* als ob och das hinkriegen würde. ;-)

Habs mittlerweile über den at Vorschlag von amenomade gelöst.
Ich wollte die Antwort nicht schuldig bleiben.

Frank_Huber

Zitat von: Ellert am 15 August 2017, 13:31:10
Nein, es sind benannte sleep-Befehle, die werden nur überschrieben, wenn sie mit ihrem Namen erneut gesetzt werden.
["^Temperaturen$:":"(.*)?:\s"] ist genauer als $EVTPART0, der Inhalt von $EVTPART0 mit einem Doppelpunkt ab, den müsstest Du wieder herausfiltern, dann kannst Du auch gleich das Reading aus dem Event herausfiltern.

ah, OK. nur gab es da ne Fehlermeldung:
Zitatdefmod Temperaruren["^Temperaturen$:":"(.*)?:\s"] at {time+600} set TelegramBot message Temperatur OG_Schlafzimmer: 22.125 scheint offline zu sein, bitte prüfen!:
Invalid characters in name (not A-Za-z0-9._): Temperaruren["^Temperaturen$:":"(.*)?:\s"]

Frank_Huber

Zitat von: Ellert am 15 August 2017, 13:32:38
Ich wollte die Antwort nicht schuldig bleiben.
finde ich auch gut. So ist die Antwort im Thema. :)

Ellert

#36
Zitat von: Frank_Huber am 15 August 2017, 13:33:11
ah, OK. nur gab es da ne Fehlermeldung:
Dann funktioniert die Ausgabeformatierung hinsichtlich des Triggers im Befehlsteil nicht so, wie ich gedacht hatte, schade eigentlich. Das hatte ich ja vorausgesetzt.

Mit einem Notify und $EVTPART0 müsste es auch klappen. Das wäre etwas eleganter als alle 10 s zu pollen.

Temperaturen:.* {fhem "sleep 600 $NAME".chop($EVENTPART0). " quiet;set TelegramBot message Temperatur $EVENT scheint offline zu sein, bitte prüfen!"}
Ungetestet, Syntax nicht geprüft.