diff --git a/vehicle/ford/provider.go b/vehicle/ford/provider.go index 30e4e9aaf8..dccc1fe98a 100644 --- a/vehicle/ford/provider.go +++ b/vehicle/ford/provider.go @@ -112,3 +112,27 @@ func (v *Provider) Status() (api.ChargeStatus, error) { return status, err } + +var _ api.VehicleOdometer = (*Provider)(nil) + +// Odometer implements the api.VehicleOdometer interface +func (v *Provider) Odometer() (float64, error) { + res, err := v.statusG() + if res, ok := res.(StatusResponse); err == nil && ok { + return res.VehicleStatus.Odometer.Value, nil + } + + return 0, err +} + +var _ api.VehiclePosition = (*Provider)(nil) + +// Position implements the api.VehiclePosition interface +func (v *Provider) Position() (float64, float64, error) { + res, err := v.statusG() + if res, ok := res.(StatusResponse); err == nil && ok { + return res.VehicleStatus.Gps.Latitude, res.VehicleStatus.Gps.Longitude, nil + } + + return 0, 0, err +} diff --git a/vehicle/ford/types.go b/vehicle/ford/types.go index a445e9b374..b406ea0dba 100644 --- a/vehicle/ford/types.go +++ b/vehicle/ford/types.go @@ -32,6 +32,16 @@ type StatusResponse struct { Value int Timestamp Timestamp } + Odometer struct { + Value float64 + Timestamp Timestamp + } + Gps struct { + Latitude float64 `json:",string"` + Longitude float64 `json:",string"` + GpsState string + Timestamp Timestamp + } LastRefresh Timestamp } Status int