diff --git a/templates/definition/vehicle/renault.yaml b/templates/definition/vehicle/renault.yaml index 721f888956..8c921f3f83 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 7aa410f108..141bebe710 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 4a84f36d0f..c302a51a46 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) {