DOIF wenn readings time älter als x

Begonnen von LamerMmc, 01 Dezember 2021, 10:58:34

Vorheriges Thema - Nächstes Thema

LamerMmc

Hallo,

ich möchte gerne mit einem DOIF eine Aktion triggern, wenn der Zeitstempel eines readings älter als x ist (im folgenden Beispiel 300 Sekunden).
Leider klappt das nicht so ganz.
Folgendes habe ich:
define doif_jee_reset DOIF
(time - time_str2num(ReadingsTimestamp("jee","state",'')) > 300)
(set jee reset)


Ich habe einen JeeLink Stick der sich hin und wieder aufhängt. Mit dem reset Befehl lässt sich das beheben. Dies will ich automatisieren.
Wenn aktuelle Zeit minus Zeitstempel des Readings größer als 300 Sekunden ist, resette den JeeLink Stick.

Fehlermeldungen kommen keine, funktionieren tut es allerdings auch nicht.

Ich vermute mal dass es ein Syntax Problem ist, oder ich bin das ganze komplett falsch angegangen.
Hoffe ihr könnt mir dabei helfen.
Danke.

Beta-User

Vorab mal willkommen im FHEM-Forum!

Vermutlich triggert da nichts, und von daher weiß das DOIF auch nicht, dass es "loslaufen" soll.

(Falls es keine interne Funktion an dem JeeLink-Modul gibt), würde ich das mit einem at lösen, das alle 5 Minuten prüft, ob ReadingsAge zu alt ist und dann den reset ausführt...).

Ins Unreine:
demod a_jeereset at +*00:05 { fhem("set jee reset") if ReadingsAge("jee","state",'500') > 300 }
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

LamerMmc

Danke.
Scheint zu funktionieren.
Habe es mit einer Lampe getestet.
define at_jee_reset at +*00:01 { fhem("set lr_light_small toggle") if ReadingsAge("lr_light_small","state",'500') > 50 }

Was bedeutet eigentlich die 500 bei ReadingsAge?

Als Doif ist das ganze nicht möglich?

danke.

Beta-User

#3
Zitat von: LamerMmc am 01 Dezember 2021, 11:40:05
Was bedeutet eigentlich die 500 bei ReadingsAge?
Das ist der "default"-Wert, siehe die Perl-Specials in der commandref. Der wird zurückgegeben, wenn (hier in diesem Fall) das Reading z.B. gelöscht wurde.

Zitat
Als Doif ist das ganze nicht möglich?
Bestimmt. Ich weiß nur nicht wie und werde mich mit DOIF auch nicht beschäftigen, aber es gibt eine ausufernde (de-) commandref dazu, in der sich ganz bestimmt irgendwo ein passendes Beispiel findet.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files