This page is also available in the other languages: English Deutsch

Zeit

Sende Datum und Uhrzeit auf den KNX Bus.

Auf einem KNX-Bus ist standardmäßig die aktuelle Zeit (Datum & Uhrzeit) nicht bekannt. Es ist auch nicht zwingend erforderlich, dass diese Information verfügbar ist. KNX-Geräte funktionieren auch ohne die aktuelle Zeit zu kennen.

Dennoch kann es nützlich sein, dass die aktuelle Zeit über den KNX-Bus verfügbar ist – zB um die Uhrzeit auf einem Display anzuzeigen.

Mit einem Skript kann man die aktuelle Zeit an eine Gruppenadresse senden. Als Zeitquelle kann man entweder die Systemzeit oder NTP verwenden. Je nach Anforderungen kann in KNX die Zeit als Datentyp 10.001 (Uhrzeit), 11.001 (Datum) oder 19.001 (Datum und Uhrzeit) kodiert werden.

Systemzeit

Die Systemzeit ist die Zeit des laufenden Systems. Wenn hkknx auf einem Rasbperry Pi läuft, dann ist die Systemzeit die eingestellte Zeit auf dem Raspberry Pi.

Hinweis
Die Systemzeit wird bei einem Neustart des Raspberry Pis zurückgesetzt. Das Raspberry Pi OS aktualisiert die Systemzeit dann mit Hilfe von timesyncd über NTP. Ist der Raspberry Pi nicht mit dem Internet verbunden, dann ist die Systemzeit falsch.

Im einem Skript wird die Systemzeit mit der Funktion Now im “time” Package abgefragt. Im folgenden Skript wird jede Minute die Systemzeit als Datentyp 19.001 an die Gruppenadresse 1/0/3 gesendet.

 1var hkknx = import("hkknx")
 2var time = import("time")
 3
 4for {
 5    // Systemzeit abfragen
 6    var now = time.Now()
 7    // Zeit in den Datentyp 19.001 umwandeln
 8    var dateTime = hkknx.DPT19001(now)
 9    // Wert an die Gruppenadresse 1/0/3 senden
10    hkknx.GroupWrite(dateTime, "1/0/3")
11    // 1 Minute warten
12    <-time.After(1 * time.Minute)
13}

NTP

Das Network Time Protocol (NTP) ist ein Standard, um intelligente Endgeräte über das Internet mit einer Uhrzeit zu versorgen. Es kann in Skripten dazu verwendet werden, um die aktuelle Zeit abzufragen und an eine Gruppenadresse zu senden.

Seit hkknx v2.8.0 gibt es im “ntp” Package die Funktion Time, um die Zeit von einem NTP-Server abzugefragen.

Im folgenden Skript wird jede Minute die aktuelle Zeit vom NTP-Server pool.ntp.org abgefragt und als Datentyp 19.001 an die Gruppenadresse 1/0/3 gesendet.

 1var ntp = import("ntp")
 2var log = import("log")
 3var hkknx = import("hkknx")
 4var time = import("time")
 5
 6for {
 7    var t, err = ntp.Time("pool.ntp.org")
 8    if err != nil { // Auf Fehler überprüfen
 9        // Den Fehler in das Log schreiben
10    	log.Println(err)
11    } else {
12        // Zeit in den Datentyp 19.001 umwandeln
13        var dateTime = hkknx.DPT19001(t)
14        // Wert an die Gruppenadresse 1/0/3 senden
15        hkknx.GroupWrite(dateTime, "1/0/3")
16    }
17    
18    // 1 Minute warten
19    <-time.After(1 * time.Minute)
20}

Eine Liste von NTP Servern ist verfügbar unter www.ntppool.org.


Auf dieser Seite
© Matthias Hochgatterer – MastodonGithubRésumé