fix(go): project full yutong mqtt data to realtime kv
This commit is contained in:
@@ -90,7 +90,13 @@ func realtimeKVFields(env envelope.FrameEnvelope, parsed map[string]any) []Realt
|
||||
}
|
||||
rows = add(rows, "location", fields)
|
||||
case envelope.ProtocolYutongMQTT:
|
||||
rows = add(rows, "vehicle", cloneFields(env.Fields))
|
||||
fields := cloneFields(env.Fields)
|
||||
if data, ok := parsed["data"].(map[string]any); ok {
|
||||
for key, value := range data {
|
||||
fields[key] = value
|
||||
}
|
||||
}
|
||||
rows = add(rows, "vehicle", fields)
|
||||
}
|
||||
return rows
|
||||
}
|
||||
@@ -171,6 +177,8 @@ func stringifyKVValue(value any) (string, string, bool) {
|
||||
return strconv.FormatFloat(typed, 'f', -1, 64), "number", true
|
||||
case float32:
|
||||
return strconv.FormatFloat(float64(typed), 'f', -1, 64), "number", true
|
||||
case json.Number:
|
||||
return typed.String(), "number", strings.TrimSpace(typed.String()) != ""
|
||||
case int:
|
||||
return strconv.Itoa(typed), "number", true
|
||||
case int8, int16, int32, int64:
|
||||
|
||||
@@ -62,11 +62,27 @@ func TestRealtimeKVFieldsFromJT808LocationAndMQTTFields(t *testing.T) {
|
||||
envelope.FieldSOCPercent: 76,
|
||||
"gear": 3,
|
||||
},
|
||||
}, map[string]any{})
|
||||
}, map[string]any{
|
||||
"data": map[string]any{
|
||||
"ACC_PEDAL_APT": 14,
|
||||
"BATTERY_CAPACITY_SOC": 78.4,
|
||||
"CURRENT_OF_FC": 54.9,
|
||||
"HYDROGEN_LOW_PRESSURE": 1.41,
|
||||
"TOTAL_MILEAGE": 119925000,
|
||||
"fuelCellCoolInTempt": 59,
|
||||
},
|
||||
})
|
||||
mqttValues := kvMap(mqttRows)
|
||||
if mqttValues["vehicle/soc_percent"] != "76" || mqttValues["vehicle/gear"] != "3" {
|
||||
t.Fatalf("mqtt vehicle kv missing: %#v", mqttValues)
|
||||
}
|
||||
if mqttValues["vehicle/ACC_PEDAL_APT"] != "14" ||
|
||||
mqttValues["vehicle/CURRENT_OF_FC"] != "54.9" ||
|
||||
mqttValues["vehicle/HYDROGEN_LOW_PRESSURE"] != "1.41" ||
|
||||
mqttValues["vehicle/TOTAL_MILEAGE"] != "119925000" ||
|
||||
mqttValues["vehicle/fuelCellCoolInTempt"] != "59" {
|
||||
t.Fatalf("mqtt raw data kv missing: %#v", mqttValues)
|
||||
}
|
||||
}
|
||||
|
||||
func kvMap(rows []RealtimeKVField) map[string]string {
|
||||
|
||||
Reference in New Issue
Block a user