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)
|
rows = add(rows, "location", fields)
|
||||||
case envelope.ProtocolYutongMQTT:
|
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
|
return rows
|
||||||
}
|
}
|
||||||
@@ -171,6 +177,8 @@ func stringifyKVValue(value any) (string, string, bool) {
|
|||||||
return strconv.FormatFloat(typed, 'f', -1, 64), "number", true
|
return strconv.FormatFloat(typed, 'f', -1, 64), "number", true
|
||||||
case float32:
|
case float32:
|
||||||
return strconv.FormatFloat(float64(typed), 'f', -1, 64), "number", true
|
return strconv.FormatFloat(float64(typed), 'f', -1, 64), "number", true
|
||||||
|
case json.Number:
|
||||||
|
return typed.String(), "number", strings.TrimSpace(typed.String()) != ""
|
||||||
case int:
|
case int:
|
||||||
return strconv.Itoa(typed), "number", true
|
return strconv.Itoa(typed), "number", true
|
||||||
case int8, int16, int32, int64:
|
case int8, int16, int32, int64:
|
||||||
|
|||||||
@@ -62,11 +62,27 @@ func TestRealtimeKVFieldsFromJT808LocationAndMQTTFields(t *testing.T) {
|
|||||||
envelope.FieldSOCPercent: 76,
|
envelope.FieldSOCPercent: 76,
|
||||||
"gear": 3,
|
"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)
|
mqttValues := kvMap(mqttRows)
|
||||||
if mqttValues["vehicle/soc_percent"] != "76" || mqttValues["vehicle/gear"] != "3" {
|
if mqttValues["vehicle/soc_percent"] != "76" || mqttValues["vehicle/gear"] != "3" {
|
||||||
t.Fatalf("mqtt vehicle kv missing: %#v", mqttValues)
|
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 {
|
func kvMap(rows []RealtimeKVField) map[string]string {
|
||||||
|
|||||||
Reference in New Issue
Block a user