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

Aus FHEMWiki
(→‎Beispiele: erweitert)
KKeine Bearbeitungszusammenfassung
 
(4 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Mit dem Befehl [[at]] können in Fhem Aktionen zu einem definierten Zeitpunkt ausgeführt werden:
'''Achtung:''' der Befehl [[at]] kennt im Gegensatz zur Behauptung im Artikel unten durchaus Ausführungen zu einem bestimmten 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:


  <nowiki>define morgens_Licht_an at *07:15:00 set Licht1 on</nowiki>
  <nowiki>define morgens_Licht_an at *07:15:00 set Licht1 on</nowiki>
Zeile 6: Zeile 21:
Allerdings kann die Ausführung an Bedingungen geknüpft sein, wie z.b. bestimmte Wochentage oder nur am Wochenende:
Allerdings kann die Ausführung an Bedingungen geknüpft sein, wie z.b. bestimmte Wochentage oder nur am Wochenende:


  <nowiki>define morgens_Licht_Wochenende at *07:15:00 {if (!($we)) set Licht1 on }</nowiki>
  <nowiki>define morgens_Licht_Wochenende at *07:15:00 {if (!($we)) {fhem("set Licht1 on")} }</nowiki>
Auf die selbe Art kann auch auf ein Ausführungsdatum geprüft werden.
Auf die selbe Art kann auch auf ein Ausführungsdatum geprüft werden.


Zeile 15: Zeile 30:


<pre>define Licht_25_Januar_an at *07:15:00 {if($year==2011 &amp;&amp; $month==1 &amp;&amp; $mday==25) \
<pre>define Licht_25_Januar_an at *07:15:00 {if($year==2011 &amp;&amp; $month==1 &amp;&amp; $mday==25) \
{fhem "set Licht1 on";; fhem "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]]

Aktuelle Version vom 3. November 2023, 17:30 Uhr

Achtung: der Befehl at kennt im Gegensatz zur Behauptung im Artikel unten durchaus Ausführungen zu einem bestimmten 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"} }