Compare commits

...

2 Commits

Author SHA1 Message Date
97c6a045d2 sensor labels
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-07-31 16:14:29 +02:00
f10f9afd8b sensor labels
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2024-07-31 16:10:52 +02:00

View File

@ -4,8 +4,10 @@ import (
"log"
"fmt"
"bytes"
"strconv"
"encoding/base64"
"encoding/binary"
"encoding/json"
"udi/database"
)
@ -20,8 +22,25 @@ type hottisThreeWayThermometerValues struct {
Value3 int32
}
func getSensorName(sensorsMap *map[string]string, sensorAddress uint64) string {
key := strconv.FormatUint(sensorAddress, 10)
if sensorName, exists := (*sensorsMap)[key]; exists {
return sensorName
}
return "Sensor" + key
}
func Parse(fPort int, _ []byte, frmPayload string, variables *map[string]database.VariableType, attributes *map[string]interface{}, _ *database.Device) error {
sensorsMap := make(map[string]string)
sensorsJSON, ok := (*attributes)["Sensors"].(string)
if !ok {
return fmt.Errorf("Unable to load sensor map from attributes")
}
errJ := json.Unmarshal([]byte(sensorsJSON), &sensorsMap)
if errJ != nil {
return fmt.Errorf("Unable to parse sensor map: %v", errJ)
}
if fPort != 2 {
return fmt.Errorf("Unexpected fPort %d", fPort)
}
@ -56,19 +75,19 @@ func Parse(fPort int, _ []byte, frmPayload string, variables *map[string]databas
Value: battery,
}
(*variables)["Temperature1"] = database.VariableType {
Label: "Temperature1",
Label: getSensorName(&sensorsMap, values.SensorAddress1),
Variable: "Temperature",
Unit: "°C",
Value: value1,
}
(*variables)["Temperature2"] = database.VariableType {
Label: "Temperature2",
Label: getSensorName(&sensorsMap, values.SensorAddress2),
Variable: "Temperature",
Unit: "°C",
Value: value2,
}
(*variables)["Temperature3"] = database.VariableType {
Label: "Temperature3",
Label: getSensorName(&sensorsMap, values.SensorAddress3),
Variable: "Temperature",
Unit: "°C",
Value: value3,