This commit is contained in:
@ -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,
|
||||
|
Reference in New Issue
Block a user