At: Unterschied zwischen den Versionen
(Ein paar Beispiele für datespec und workaround für Perlfunktion und datespec ergänzt) |
|||
Zeile 22: | Zeile 22: | ||
*<code>define MeineAktion at 02:02:00 set lamp on</code> → das nächste Mal um zwei Minuten nach 2 Uhr "lamp" einschalten | *<code>define MeineAktion at 02:02:00 set lamp on</code> → das nächste Mal um zwei Minuten nach 2 Uhr "lamp" einschalten | ||
*<code>define MeineAktion at *02:02:00 set lamp on</code> → jeden Tag um zwei Minuten nach 2 Uhr "lamp" einschalten | *<code>define MeineAktion at *02:02:00 set lamp on</code> → jeden Tag um zwei Minuten nach 2 Uhr "lamp" einschalten | ||
*<code>define MeineAktion at 2016-01-25T02:02:00 set lamp on</code> → das nächste Mal am 25.01.2016 um zwei Minuten nach 2 Uhr "lamp" einschalten | *<code>define MeineAktion at {ReadingsVal("Dummy","Zeit","")} set lamp on</code> → das nächste Mal um (Perlfunktion liest Zeit aus dem Dummy) "lamp" einschalten | ||
*<code>define MeineAktion at 2016-01-25T02:02:00 set lamp on</code> → das nächste Mal am 25.01.2016 um zwei Minuten nach 2 Uhr "lamp" einschalten (ISO 8601) | |||
*<code>define MeineAktion at 1453683720 set lamp on</code> → das nächste Mal am 25.01.2016 um zwei Minuten nach 2 Uhr "lamp" einschalten (number of sec since 1970) | |||
*<code>define MeineAktion at +02:02:00 set lamp on</code> → in zwei Stunden und 2 Minuten "lamp" einschalten | *<code>define MeineAktion at +02:02:00 set lamp on</code> → in zwei Stunden und 2 Minuten "lamp" einschalten | ||
*<code>define MeineAktion at +*02:02:00 set lamp on</code> → alle zwei Stunden und 2 Minuten "lamp" einschalten | *<code>define MeineAktion at +*02:02:00 set lamp on</code> → alle zwei Stunden und 2 Minuten "lamp" einschalten | ||
Zeile 35: | Zeile 37: | ||
=== Attribute === | === Attribute === | ||
... | ... | ||
=== Besonderheit === | |||
*timespec kann eine Perlfunktion sein. | |||
*datespec darf keine Perlfunktion sein. | |||
Siehe {{Link2Forum|Topic=91625|Message=168475}} | |||
Workaround: Perlebene, Perlfunktion und Übergabe in Variable. 2 Beispiele für "number of seconds since 1970" | |||
<syntaxhighlight lang="perl">{my $time=time_str2num("2019-09-14 23:00:00");;fhem("define MeineAktion at $time set lamp on")}</syntaxhighlight> | |||
<syntaxhighlight lang="perl">{my $time=1568494800;;fhem("define MeineAktion at $time set lamp on")}</syntaxhighlight> | |||
Beispiel im ISO 8601 Format | |||
<syntaxhighlight lang="perl">{my $time="2019-09-14T23:00:00";;fhem("define MeineAktion at $time set lamp on")}</syntaxhighlight> | |||
=== Testen === | === Testen === | ||
Zeile 49: | Zeile 62: | ||
== Links == | == Links == | ||
* Abfrage, ob at definiert ist: {{Link2Forum|Topic=23584|Message= | * Abfrage, ob at definiert ist: {{Link2Forum|Topic=23584|Message=841269}} |
Version vom 11. September 2019, 14:56 Uhr
at | |
---|---|
Zweck / Funktion | |
Setzt einen Fhem-Befehl zu einem späteren Zeitpunkt ab. | |
Allgemein | |
Typ | Hilfsmodul |
Details | |
Dokumentation | EN / DE |
Modulname | 90_at.pm |
Ersteller | rudolfkoenig / rudolfkoenig |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
at ist ein Erweiterungsmodul, mit dessen Hilfe Fhem-Befehle/-Aktionen zu einem späteren Zeitpunkt ausgeführt werden können. Es läßt sich sowohl einmalige Ausführung, als auch regelmäßige Wiederholung erzielen, Zeitangaben können relativ oder absolut erfolgen.
Voraussetzungen
Keine.
Anwendung
Define
define <name> at <timespec|datespec> <command>
Beispiele
define MeineAktion at 02:02:00 set lamp on
→ das nächste Mal um zwei Minuten nach 2 Uhr "lamp" einschaltendefine MeineAktion at *02:02:00 set lamp on
→ jeden Tag um zwei Minuten nach 2 Uhr "lamp" einschaltendefine MeineAktion at {ReadingsVal("Dummy","Zeit","")} set lamp on
→ das nächste Mal um (Perlfunktion liest Zeit aus dem Dummy) "lamp" einschaltendefine MeineAktion at 2016-01-25T02:02:00 set lamp on
→ das nächste Mal am 25.01.2016 um zwei Minuten nach 2 Uhr "lamp" einschalten (ISO 8601)define MeineAktion at 1453683720 set lamp on
→ das nächste Mal am 25.01.2016 um zwei Minuten nach 2 Uhr "lamp" einschalten (number of sec since 1970)define MeineAktion at +02:02:00 set lamp on
→ in zwei Stunden und 2 Minuten "lamp" einschaltendefine MeineAktion at +*02:02:00 set lamp on
→ alle zwei Stunden und 2 Minuten "lamp" einschalten
Mehrere Aktionen ausführen
set lampe1 on ; set lampe2 on
→ Schaltet sofort beide Lampen ein ( ein bisschen OT, weil kein at)define morgens at *7:00:00 set lampe1 on ; set lampe2 on
→ schaltet lampe 1 immer um 7 an, aber lampe2 sofort. Der erste Befehl landet in der config (im at) der zweite Befehl wird genau wie der define Befehl einfach sofort ausgeführt.define morgens at *7:00:00 set lampe1 on ;; set lampe2 on
→ schaltet BEIDE Lampen immer um 7 an. Beide Befehle landen in der config (im at), nur der define Befehl wird ausgeführtdefine morgens at *7:00:00 set lampe1,lampe2 on
→ schaltet BEIDE Lampen immer um 7 an. Geht nur wenn der gleiche Befehl an 2 oder mehr Geräte gesendet werden soll
Attribute
...
Besonderheit
- timespec kann eine Perlfunktion sein.
- datespec darf keine Perlfunktion sein.
Siehe Beitrag
Workaround: Perlebene, Perlfunktion und Übergabe in Variable. 2 Beispiele für "number of seconds since 1970"
{my $time=time_str2num("2019-09-14 23:00:00");;fhem("define MeineAktion at $time set lamp on")}
{my $time=1568494800;;fhem("define MeineAktion at $time set lamp on")}
Beispiel im ISO 8601 Format
{my $time="2019-09-14T23:00:00";;fhem("define MeineAktion at $time set lamp on")}
Testen
Mit dem Befehl
set <devspec> execNow
lässt sich eine at-Definition (einmalig, beispielsweise zu Testzwecken) unabhängig vom Erreichen der angegebenen Zeitspezifikation ausführen.
Anwendungsbeispiele
- at an einem bestimmten Wochentag ausführen
- at um eine Temperaturabhängige Nachtabsenkung zu realisieren
- at zu einem absoluten Datum ausführen
- at in Verbindung mit SUNRISE_EL
Links
- Abfrage, ob at definiert ist: Beitrag