DriveSomethingGreater: fix timestamp error
This commit is contained in:
parent
0c4ce3f422
commit
cdf81a0d44
2 changed files with 13 additions and 9 deletions
|
|
@ -82,7 +82,7 @@ func (v *Provider) Soc() (float64, error) {
|
|||
return 0, err
|
||||
}
|
||||
|
||||
if p := lookup(data, FieldBatteryStateReportSoc, FieldSoc, FieldHvSoc); p != nil {
|
||||
if p := lookup(data, FieldBatteryStateReportSoc, FieldSoc, FieldHvSoc, FieldHvBatteryLevel); p != nil {
|
||||
return strconv.ParseFloat(p.Value, 64)
|
||||
}
|
||||
|
||||
|
|
@ -133,7 +133,7 @@ func (v *Provider) Odometer() (float64, error) {
|
|||
return 0, err
|
||||
}
|
||||
|
||||
if p := lookup(data, FieldOdometer); p != nil {
|
||||
if p := lookup(data, FieldOdometer, FieldOdometerValue); p != nil {
|
||||
return strconv.ParseFloat(p.Value, 64)
|
||||
}
|
||||
|
||||
|
|
@ -155,7 +155,8 @@ func (v *Provider) Status() (api.ChargeStatus, error) {
|
|||
status = api.StatusB
|
||||
}
|
||||
|
||||
if p := lookup(data, FieldChargingState); p != nil && strings.EqualFold(p.Value, "charging") {
|
||||
if p := lookup(data, FieldChargingState, FieldCurrentChargeState); p != nil &&
|
||||
(strings.EqualFold(p.Value, "charging") || strings.Contains(strings.ToUpper(p.Value), "CHARGING_HV")) {
|
||||
status = api.StatusC
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -82,9 +82,9 @@ type dataset struct {
|
|||
|
||||
// dataPoint is a single data point as delivered in the dataset JSON document
|
||||
type dataPoint struct {
|
||||
DataFieldName string `json:"dataFieldName"`
|
||||
Value string `json:"value"`
|
||||
TimestampUtc string `json:"timestampUtc"`
|
||||
DataFieldName string `json:"dataFieldName"`
|
||||
Value string `json:"value"`
|
||||
TimestampUtc *time.Time `json:"timestampUtc"`
|
||||
}
|
||||
|
||||
// point is a decoded data point: its value and the time it was recorded
|
||||
|
|
@ -104,11 +104,14 @@ const (
|
|||
FieldBatteryStateReportSoc = "battery_state_report.soc"
|
||||
FieldSoc = "state_of_charge"
|
||||
FieldHvSoc = "hv_soc"
|
||||
FieldHvBatteryLevel = "battery_level_HV.value"
|
||||
FieldRangeCombined = "cruising_range_combined"
|
||||
FieldRangePrimary = "cruising_range_primary_engine"
|
||||
FieldRangeSecondary = "cruising_range_secondary_engine"
|
||||
FieldOdometer = "mileage"
|
||||
FieldOdometerValue = "mileage.value"
|
||||
FieldChargingState = "charging_state"
|
||||
FieldCurrentChargeState = "charging_state_report.current_charge_state"
|
||||
FieldPlugState = "plug_state"
|
||||
FieldTargetSoc = "settings.target_soc"
|
||||
FieldRemainingTime = "remaining_charging_time"
|
||||
|
|
@ -180,9 +183,9 @@ func parseDataset(b []byte) (string, map[string]point, error) {
|
|||
continue
|
||||
}
|
||||
|
||||
ts, err := time.Parse(time.RFC3339, p.TimestampUtc)
|
||||
if err != nil {
|
||||
return "", nil, err
|
||||
var ts time.Time
|
||||
if p.TimestampUtc != nil {
|
||||
ts = *p.TimestampUtc
|
||||
}
|
||||
|
||||
if cur, ok := res[p.DataFieldName]; ok && cur.Timestamp.After(ts) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue