package draginoLmds200 import ( "fmt" "encoding/json" "udi/database" ) /* "decoded_payload": { "Bat": 3.082, "DALARM_count": 0, "Distance_alarm": 0, "Interrupt_alarm": 0, "dis1": 105, "dis2": 201 }, */ type message struct { Bat float32 `json:"Bat"` DALARM_count int `json:"DALARM_count"` Distance_alarm int `json:"Distance_alarm"` Interrupt_alarm int `json:"Interrupt_alarm"` Dis1 int `json:"dis1"` Dis2 int `json:"dis2"` } func Parse(fPort int, decodedPayload []byte, variables *map[string]database.VariableType) error { if fPort != 2 { return fmt.Errorf("Unexpected fPort %d", fPort) } var message message err := json.Unmarshal(decodedPayload, &message) if err != nil { return fmt.Errorf("Unable to parse payload, fPort %d, error %s", fPort, err) } (*variables)["Battery"] = database.VariableType { Label: "Battery", Variable: "Voltage", Unit: "V", Value: message.Bat, } (*variables)["Distance1"] = database.VariableType { Label: "Distance1", Variable: "Level", Unit: "mm", Value: (message.Dis1 * 10), } (*variables)["Distance2"] = database.VariableType { Label: "Distance2", Variable: "Level", Unit: "mm", Value: (message.Dis2 * 10), } return nil }