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

Aus FHEMWiki
(fehler in der Syntax korrigiert)
(Diverse Edits zusammengefasst)
 
(4 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
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:


  <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>
Es können nur relative und absolute Uhrzeiten, jedoch nicht ein bestimmtes Datum definiert werden.
Es können relative und absolute Uhrzeiten, sowie ein bestimmtes Datum definiert werden.


Allerdings kann die Ausführung an Bedingungen geknüpft sein, wie z.b. bestimmte Wochentage oder nur am Wochenende:
<nowiki>define Licht_25_Januar_an at 2011-01-25T07:15:00 set Licht1 on</nowiki>
 
Die Ausführung kann 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)) {fhem("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.
 
Theoretisch kann auf die selbe Art kann auch auf ein Ausführungsdatum geprüft werden.


  <nowiki>define Licht_25_Januar_an at *07:15:00 {if($year==2011 &amp;&amp; $month==1 &amp;&amp; $mday==25) {fhem("set Licht1 on")} }</nowiki>
  <nowiki>define Licht_25_Januar_an at *07:15:00 {if($year==2011 &amp;&amp; $month==1 &amp;&amp; $mday==25) {fhem("set Licht1 on")} }</nowiki>
Zeile 15: Zeile 18:


<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:
Grundsätzlich erfordert die Lösung, täglich bei Erreichen der gewünschten Uhrzeit zu prüfen ob der richtige Tag erreicht wurde, mehr Code und ist auch Perfomanceseitig ungünstiger. Das dies als Lösung des Problems gelegentlich empfohlen wird, basiert auf der verbreiteten, aber falschen Annahme, dass als Zeitpunkt kein bestimmtes Datum definiert werden könne.


  define Licht_25_Januar_an at 2011-01-25T07:15:00 set Licht1 on
Siehe auch  
* [[At]]
* [[Trick_der_Woche#Januar_2018]]


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

Aktuelle Version vom 19. Dezember 2025, 23:49 Uhr

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 relative und absolute Uhrzeiten, sowie ein bestimmtes Datum definiert werden.

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

Die Ausführung kann 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")} }

Theoretisch kann 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"} }

Grundsätzlich erfordert die Lösung, täglich bei Erreichen der gewünschten Uhrzeit zu prüfen ob der richtige Tag erreicht wurde, mehr Code und ist auch Perfomanceseitig ungünstiger. Das dies als Lösung des Problems gelegentlich empfohlen wird, basiert auf der verbreiteten, aber falschen Annahme, dass als Zeitpunkt kein bestimmtes Datum definiert werden könne.

Siehe auch