From da966f5d84a65049684c3a73bcfac3150b5d7961 Mon Sep 17 00:00:00 2001 From: andig Date: Wed, 10 Jan 2024 21:55:23 +0100 Subject: [PATCH] Renault: add alternative wakeup (#11537) --- templates/definition/vehicle/renault.yaml | 7 +++++++ vehicle/renault.go | 3 ++- vehicle/renault/provider.go | 5 ++++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/templates/definition/vehicle/renault.yaml b/templates/definition/vehicle/renault.yaml index 721f88895..8c921f3f8 100644 --- a/templates/definition/vehicle/renault.yaml +++ b/templates/definition/vehicle/renault.yaml @@ -6,7 +6,14 @@ params: - preset: vehicle-identify - name: vin example: WREN... + - name: alternativewakeup + type: bool + description: + de: Alternativer Aufweckmechanismus + en: Alternative wakeup mechanism + advanced: true render: | type: renault {{ include "vehicle-base" . }} {{ include "vehicle-identify" . }} + alternativewakeup: {{ .alternativewakeup }} diff --git a/vehicle/renault.go b/vehicle/renault.go index 7aa410f10..141bebe71 100644 --- a/vehicle/renault.go +++ b/vehicle/renault.go @@ -40,6 +40,7 @@ func NewRenaultDaciaFromConfig(brand string, other map[string]interface{}) (api. cc := struct { embed `mapstructure:",squash"` User, Password, Region, VIN string + AlternativeWakeup bool Cache time.Duration Timeout time.Duration }{ @@ -93,7 +94,7 @@ func NewRenaultDaciaFromConfig(brand string, other map[string]interface{}) (api. err = vehicle.Available() } - v.Provider = renault.NewProvider(api, accountID, vehicle.VIN, cc.Cache) + v.Provider = renault.NewProvider(api, accountID, vehicle.VIN, cc.AlternativeWakeup, cc.Cache) return v, err } diff --git a/vehicle/renault/provider.go b/vehicle/renault/provider.go index 4a84f36d0..c302a51a4 100644 --- a/vehicle/renault/provider.go +++ b/vehicle/renault/provider.go @@ -23,7 +23,7 @@ type Provider struct { } // NewProvider creates a vehicle api provider -func NewProvider(api *kamereon.API, accountID, vin string, cache time.Duration) *Provider { +func NewProvider(api *kamereon.API, accountID, vin string, alternativeWakeup bool, cache time.Duration) *Provider { impl := &Provider{ batteryG: provider.Cached(func() (kamereon.Response, error) { return api.Battery(accountID, vin) @@ -35,6 +35,9 @@ func NewProvider(api *kamereon.API, accountID, vin string, cache time.Duration) return api.Hvac(accountID, vin) }, cache), wakeup: func() (kamereon.Response, error) { + if alternativeWakeup { + return api.Action(accountID, kamereon.ActionStart, vin) + } return api.WakeUp(accountID, vin) }, position: func() (kamereon.Response, error) {