fix(go): project full yutong mqtt data to realtime kv

This commit is contained in:
lingniu
2026-07-03 12:01:32 +08:00
parent 0344c65e5b
commit 7bf78f91ba
2 changed files with 26 additions and 2 deletions

View File

@@ -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:

View File

@@ -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 {