@@ -70,7 +70,7 @@ type volvoStatus struct {
7070 OdometerTimestamp string `json:"odometerTimestamp"`
7171 PrivacyPolicyEnabled bool `json:"privacyPolicyEnabled"`
7272 PrivacyPolicyEnabledTimestamp string `json:"privacyPolicyEnabledTimestamp"`
73- RemoteClimatizationStatus string `json:"remoteClimatizationStatus"`
73+ RemoteClimatizationStatus string `json:"remoteClimatizationStatus"` // CableConnectedWithoutPower
7474 RemoteClimatizationStatusTimestamp string `json:"remoteClimatizationStatusTimestamp"`
7575 ServiceWarningStatus string `json:"serviceWarningStatus"`
7676 ServiceWarningStatusTimestamp string `json:"serviceWarningStatusTimestamp"`
@@ -200,13 +200,21 @@ func (v *Volvo) VehicleRange() (int64, error) {
200200 return 0 , err
201201}
202202
203- // // FinishTime implements the ChargeFinishTimer interface
204- // func (v *Volvo) FinishTime() (time.Time, error) {
205- // res, err := v.statusG()
206- // if res, ok := res.(volvoStatus); err == nil && ok {
207- // timestamp, err := time.Parse(time.RFC3339, res.HvBattery.TimeToHVBatteryFullyChargedTimestamp)
208- // return timestamp.Add(time.Duration(res.HvBattery.DistanceToHVBatteryEmpty) * time.Minute), err
209- // }
203+ // FinishTime implements the ChargeFinishTimer interface
204+ func (v * Volvo ) FinishTime () (time.Time , error ) {
205+ res , err := v .statusG ()
206+ if res , ok := res .(volvoStatus ); err == nil && ok {
207+ timestamp , err := time .Parse ("2006-01-02T15:04:05-0700" , res .HvBattery .TimeToHVBatteryFullyChargedTimestamp )
210208
211- // return time.Time{}, err
212- // }
209+ if err == nil {
210+ timestamp = timestamp .Add (time .Duration (res .HvBattery .DistanceToHVBatteryEmpty ) * time .Minute )
211+ if timestamp .Before (time .Now ()) {
212+ return time.Time {}, api .ErrNotAvailable
213+ }
214+ }
215+
216+ return timestamp , err
217+ }
218+
219+ return time.Time {}, err
220+ }
0 commit comments