InfluxDB
Mit dem “influxdb” Package können Daten an einen InfluxDB v2 Server gesendet werden. Das Package ist seit hkknx v2.8.0 verfügbar.
In folgenden Beispiel werden Temperaturwerte von Gruppenadressen im Bereich von 1/0/0 bis 1/0/255 empfangen und an den InfluxDB Server gesendet.
Die Authentifizierung gegenüber den Server erfolgt über einen Token.
1var influxdb, hkknx = import("influxdb"), import("hkknx")
2
3// Create an influxdb client
4var client = influxdb.NewClient("http://localhost:8086", "secret-token")
5var bucket = client.Bucket("my org", "knx")
6
7// Create a channel to receive telegrams for group addresses
8// in the range of "1/0/0-255".
9var ch = hkknx.GroupWriteTelegramNotify("1/0/*")
10for {
11 // Wait for a telegram to arrive
12 var telegram = <-ch
13 // Decode the telegram bytes as 9.001
14 var temp = hkknx.ParseDPT9001(telegram.Bytes)
15
16 // Create a new influxdb datapoint for the measurement "temperature"
17 // and set the group address and temperature value.
18 var point = influxdb.NewPointWithMeasurement("temperature")
19 point.AddTag("address", telegram.Addr)
20 point.AddField("value", temp)
21
22 // Send the data to the server.
23 var err = bucket.Write(point)
24 if err != nil {
25 println(err)
26 }
27}
Die Daten werden im Bucket knx
und als Messwert temperature
gespeichert.
Der Temperaturwert wird dem Feld value
zugewiesen.
Die Gruppenaddresse wirds als Tag address
gespeichert.
Im Line-Protokoll würde das folgenden Text ergeben:
temperature,address=<group address> value=<temp value> <timestamp>
zB temperature,address=1/0/125 value=19.5 1704892410000000000