AT zu einem absoluten Datum ausführen: Unterschied zwischen den Versionen

Aus FHEMWiki
(FHEM(R))
(Ergänzung)
Zeile 1: Zeile 1:
'''Achtung:''' der Befehl [[at]] kennt im Gegensatz zur Behauptung im Artikel unten durchaus Ausführungen zu einem bestimmtes Datum.
Das letztgenannte Beispiel kann z.b. mit
<nowiki>define Licht_25_Januar_an at 2011-01-25T07:15:00 set Licht1 on</nowiki>
Realisiert werden, siehe auch Commandrefeintrag.
Die unten dargestellt Lösung, täglich bei Erreichen der gewünschten Uhrzeit zu prüfen ob der richtige Tag erreicht wurde, erfordert mehr Code und ist auch Perfomanceseitig ungünstiger.
________________________________________________________________________________________________
Mit dem Befehl [[at]] können in FHEM Aktionen zu einem definierten Zeitpunkt ausgeführt werden:
Mit dem Befehl [[at]] können in FHEM Aktionen zu einem definierten Zeitpunkt ausgeführt werden:


Zeile 17: Zeile 32:
{fhem ("set Licht1 on; delete Licht_25_Januar_an"} }</pre>
{fhem ("set Licht1 on; delete Licht_25_Januar_an"} }</pre>


Allerdings gibt es eine wesentlich elegantere und einfachere Lösung:
define Licht_25_Januar_an at 2011-01-25T07:15:00 set Licht1 on


[[Kategorie:Code Snippets]]
[[Kategorie:Code Snippets]]

Version vom 4. Januar 2022, 17:50 Uhr

Achtung: der Befehl at kennt im Gegensatz zur Behauptung im Artikel unten durchaus Ausführungen zu einem bestimmtes Datum.

Das letztgenannte Beispiel kann z.b. mit

define Licht_25_Januar_an at 2011-01-25T07:15:00 set Licht1 on

Realisiert werden, siehe auch Commandrefeintrag.

Die unten dargestellt Lösung, täglich bei Erreichen der gewünschten Uhrzeit zu prüfen ob der richtige Tag erreicht wurde, erfordert mehr Code und ist auch Perfomanceseitig ungünstiger.



________________________________________________________________________________________________


Mit dem Befehl at können in FHEM Aktionen zu einem definierten Zeitpunkt ausgeführt werden:

define morgens_Licht_an at *07:15:00 set Licht1 on

Es können nur relative und absolute Uhrzeiten, jedoch nicht ein bestimmtes Datum definiert werden.

Allerdings kann die Ausführung an Bedingungen geknüpft sein, wie z.b. bestimmte Wochentage oder nur am Wochenende:

define morgens_Licht_Wochenende at *07:15:00 {if (!($we)) {fhem("set Licht1 on")} }

Auf die selbe Art kann auch auf ein Ausführungsdatum geprüft werden.

define Licht_25_Januar_an at *07:15:00 {if($year==2011 && $month==1 && $mday==25) {fhem("set Licht1 on")} }

In diesem Fall wird täglich um 7:15 Uhr geprüft, ob der 25. Januar 2011 ist und falls ja, wird die Aktion ausgeführt.

Da dieser Fall nur einmal zutrifft, ist es sinnvoll, die Aktion nach Auslösung zu löschen, damit nicht nach dem 25. Januar 2011 weiter täglich geprüft wird, ob das Datum nochmal auftritt:

define Licht_25_Januar_an at *07:15:00 {if($year==2011 && $month==1 && $mday==25) \
{fhem ("set Licht1 on; delete Licht_25_Januar_an"} }