Logik: Zeitsteuerung


In Skripten gibt es die Möglichkeit Automatisierungen anhand der Uhrzeit oder des Sonnenstandes zu erstellen. Zur Verfügung stehen dazu die Funktionen AtTime und AtSunset/AtSunrise.

Sehen wir uns ein einfaches Beispiel an. In folgendem Skript wird jeden Tag um 8:15 das Bit 1 an die Gruppenadresse 0/0/1 gesendet.

Ablaufdiagramm

Folgendes Ablaufdiagramm zeigt eine grafische Darstellung der Zeitsteuerung.

F o r - S S t c a h r l t e i f e B i W t a r 1 t e a n n b 0 i / s 0 / 8 1 : 1 s 5 e n d e n

Skriptcode

Der Skriptcode dazu sieht dann so aus.

1var hkknx = import("hkknx")
2var ch = hkknx.AtTime(8, 15, 0)
3for {
4    <-ch
5    hkknx.GroupWrite(true, "0/0/1")
6}

Beim Aufruf der Funktion AtTime wird die Uhrzeit angegeben – also 8 Uhr 15 Minuten 0 Sekunden. Der Rückgabewert wird dann in die Variable ch gespeichert. (ch steht für Channel.)

Der Rückgabewert von der Funktion ist angegeben als <- chan *time.Time. Somit ist ch ein Channel, von dem Werte empfangen werden können. Die empfangenen Werte haben den Datentyp *time.Time.

Für was verwendet man nun die Variable ch?

In unserem Beispiel kann man also von der Variable ch um genau 8:15 einen Wert empfangen. Der Aufruf mit dem <- Operator wartet solange, bis ein Wert empfangen wird.

1var hkknx = import("hkknx")
2var ch = hkknx.AtTime(8, 15, 0)
3for {
4    <-ch
5    hkknx.GroupWrite(true, "0/0/1")
6}

Sobald ein Wert empfangen wird, läuft das Skript weiter und sendet das Bit 1 an die Gruppenadresse 0/0/1.

1var hkknx = import("hkknx")
2var ch = hkknx.AtTime(8, 15, 0)
3for {
4    <-ch
5    hkknx.GroupWrite(true, "0/0/1")
6}

Danach wird an den Anfang der For-Schleife gesprungen

1var hkknx = import("hkknx")
2var ch = hkknx.AtTime(8, 15, 0)
3for {
4    <-ch
5    hkknx.GroupWrite(true, "0/0/1")
6}

und gewartet, bis die Uhrzeit 8:15 am nächsten Tag eintritt.


Auf dieser Seite
Ähnliche Beiträge
© Matthias Hochgatterer – MastodonGithubRésumé