From 34ee73e4ae914919139e1e4ba5a3908136fe5f96 Mon Sep 17 00:00:00 2001 From: andig Date: Wed, 19 May 2021 12:22:20 +0200 Subject: [PATCH] Tesla: fix charge start (#1038) --- internal/vehicle/tesla.go | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/internal/vehicle/tesla.go b/internal/vehicle/tesla.go index 05f0e73e5..c3c3b2c01 100644 --- a/internal/vehicle/tesla.go +++ b/internal/vehicle/tesla.go @@ -188,25 +188,29 @@ var _ api.VehicleStartCharge = (*Tesla)(nil) // StartCharge implements the api.VehicleStartCharge interface func (v *Tesla) StartCharge() error { - timer := time.NewTimer(10 * time.Second) + err := v.vehicle.StartCharging() - for { - select { - case <-timer.C: - return errors.New("timeout") - default: - _, err := v.vehicle.Wakeup() - if err == nil { - return v.vehicle.StartCharging() + if err != nil && err.Error() == "408 Request Timeout" { + if _, err := v.vehicle.Wakeup(); err != nil { + return err + } + + timer := time.NewTimer(30 * time.Second) + + for { + select { + case <-timer.C: + return api.ErrTimeout + default: + time.Sleep(2 * time.Second) + if err := v.vehicle.StartCharging(); err == nil || err.Error() != "408 Request Timeout" { + return err + } } - - if err.Error() != "408 Request Timeout" { - return err - } - - time.Sleep(time.Second) } } + + return err } var _ api.VehicleStopCharge = (*Tesla)(nil)