Beispiel: Lichtsteuerung


In diesem Beispiel wird eine Lichtsteuerung realisiert, welche das Licht 1 Minute nach dem Einschalten wieder ausschaltet.

Um ein Licht einzuschalten, wird eine 1 and 0/0/1 gesendet. Ändert sich der Status des Lichts, so wird das über die Status-Gruppenadresse 0/0/2 mitgeteilt.

Das Skript fängt Schreib-Telegramme an die 0/0/2 ab und überprüft ob das Licht eingeschaltet wurde. Dann wird ein Timer von 1 Minute gestartet. Nach Ablauf des Timers wird das Licht, durch Senden von 0 an 0/0/1 wieder ausgeschaltet.

 1// This script turns off a light 1 minute after it was turned on.
 2hkknx, time = import("hkknx"), import("time")
 3
 4// Use a channel which delivers *true* if light is turned on.
 5ch = hkknx.GroupWriteBoolNotify("0/0/2")
 6
 7for {
 8    on = <-ch
 9	if on {
10		println("light is turned on → start timer")
11        // Use a channel which returns the time 1 minute from now.
12        walltime = time.After(1 * time.Minute)
13        
14        for {
15            // Wait until 
16            // - walltime is reached
17            // - or light is turned off again
18            select {
19            case on = <-ch:
20                if !on {
21                    println("light is turned off → stop timer")
22                    break // break out of the loop
23                }
24            case <-walltime:
25				println("turning off light")
26				hkknx.GroupWrite(false, "0/0/1")
27                break // break out of the loop
28            }
29        }
30    }
31}

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