Hi!
Ich möchte gerne, dass ich bei offenem Fenster alle 15 Minuten benachrichtigt werde
define EG.Bad.Fenster.Msg DOIF ([EG.Bad.Fenster] eq "open") ({\
fhem("set <TelegramBot> message <#Empfaenger> Das Fenster im Bad ist seit 15 Minuten offen");;;;\
})
attr EG.Bad.Fenster.Msg repeatcmd 900
attr EG.Bad.Fenster.Msg wait 900
Das funktioniert soweit, nur möchte ich gerne, dass bei Wiederholung der Meldung nicht "15 Minuten" drinsteht, sondern, wie lange das Fenster bereits offen ist. Ich müsste also berechnen:
$time =(wait + [Anzahl Wiederholungen] * repeatcmd) * 60
Gibt es bei DOIF jetzt irgendwie die Möglichkeit, herauszufinden, die wievielte Wiederholung ausgeführt wird?
Oder hat jemand eine andere Idee, wie ich das gewünschte erreichen kann?
Danke schonmal für Tipps :)
Oli
Eventuell funktioniert {(int([EG.Bad.Fenster:state:sec] / 60))}
statt 15, wenn nicht, dann nimm ReadingsAge, Syntax wie ReadingsVal.
Siehe Zeitspanne_eines_Readings_seit_der_letzten_Aenderung (http://fhem.de/commandref_DE.html#DOIF_Zeitspanne_eines_Readings_seit_der_letzten_Aenderung)
Der Set-Befehl sollte auch so funktionieren set <TelegramBot> message <#Empfaenger> Das Fenster im Bad ist seit {(int([EG.Bad.Fenster:state:sec] / 60))} Minuten offen
Siehe auch DOIF: Tips leichtere Bedienung Syntaxhervorhebung Klammerprüfung Suchen&Ersetzen (https://forum.fhem.de/index.php/topic,45373.0.html)
und DOIF: Tools, Fehlersuche - qualifizierte Angaben, Verhaltensanalyse (https://forum.fhem.de/index.php/topic,58237.0.html)
define EG.Bad.Fenster.Msg DOIF ([EG.Bad.Fenster] eq "open") ({\
fhem("set <TelegramBot> message <#Empfaenger> Das Fenster im Bad ist seit mehr als" . int([EG.Bad.Fenster:state:sec] / 60) . " Minuten offen");;;;\
})
Perfekt!
Vielen Dank!
Wie gesagt, der Wechsel auf die Perl-Ebene mit {fhem "...")}
ist nicht notwendig, Du kannst den set-Befehl direkt verwenden (set <TelegramBot> message <#Empfaenger> Das Fenster im Bad ist seit {(int([EG.Bad.Fenster:state:sec] / 60))} Minuten offen)
Zitat von: Ellert am 06 Oktober 2016, 20:13:17
Wie gesagt, der Wechsel auf die Perl-Ebene mit {fhem "...")}
ist nicht notwendig, Du kannst den set-Befehl direkt verwenden (set <TelegramBot> message <#Empfaenger> Das Fenster im Bad ist seit {(int([EG.Bad.Fenster:state:sec] / 60))} Minuten offen)
Danke für die Info.
Ich hab Deine Ergänzung erst gelesen, nachdem ich es am Laufen hatte. Mittlerweile habe ich es so implementiert, wie Du vorgeschlagen hast (ohne direktes Perl).
Gruß
Oli