diff --git a/src/udi/handlers/ttn/models/hottisThreeWayThermometer/hottisThreeWayThermometer.go b/src/udi/handlers/ttn/models/hottisThreeWayThermometer/hottisThreeWayThermometer.go index 9009355..2c4789a 100644 --- a/src/udi/handlers/ttn/models/hottisThreeWayThermometer/hottisThreeWayThermometer.go +++ b/src/udi/handlers/ttn/models/hottisThreeWayThermometer/hottisThreeWayThermometer.go @@ -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,