sensor labels
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed

This commit is contained in:
2024-07-31 16:10:52 +02:00
parent 64f74c60f3
commit f10f9afd8b

View File

@ -6,6 +6,7 @@ import (
"bytes"
"encoding/base64"
"encoding/binary"
"encoding/json"
"udi/database"
)
@ -20,8 +21,25 @@ type hottisThreeWayThermometerValues struct {
Value3 int32
}
func getSensorName(sensorsMap *map[string]string, uint64_t sensorAddress) 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 +74,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,