From 90fc0bc71b9f18313dbc7be4694de3f113768f25 Mon Sep 17 00:00:00 2001 From: andig Date: Mon, 20 Jul 2026 10:39:45 +0200 Subject: [PATCH] Vehicle: restore streaming param on EU Data Act templates (#31970) --- templates/definition/vehicle/audi.yaml | 2 ++ .../vehicle/drivesomethinggreater.yaml | 2 ++ templates/definition/vehicle/seat-cupra.yaml | 2 ++ templates/definition/vehicle/seat.yaml | 2 ++ templates/definition/vehicle/vw.yaml | 2 ++ vehicle/template_test.go | 17 ++++++++++++++++- 6 files changed, 26 insertions(+), 1 deletion(-) diff --git a/templates/definition/vehicle/audi.yaml b/templates/definition/vehicle/audi.yaml index cb1aab78f..86ec3c24b 100644 --- a/templates/definition/vehicle/audi.yaml +++ b/templates/definition/vehicle/audi.yaml @@ -34,6 +34,8 @@ params: - name: welcomecharge advanced: true deprecated: true + - name: streaming + deprecated: true - preset: vehicle-online render: | type: drivesomethinggreater diff --git a/templates/definition/vehicle/drivesomethinggreater.yaml b/templates/definition/vehicle/drivesomethinggreater.yaml index a17cad613..98030744a 100644 --- a/templates/definition/vehicle/drivesomethinggreater.yaml +++ b/templates/definition/vehicle/drivesomethinggreater.yaml @@ -52,6 +52,8 @@ params: - name: welcomecharge advanced: true deprecated: true + - name: streaming + deprecated: true - preset: vehicle-online render: | type: drivesomethinggreater diff --git a/templates/definition/vehicle/seat-cupra.yaml b/templates/definition/vehicle/seat-cupra.yaml index 7663eff88..d6255837f 100644 --- a/templates/definition/vehicle/seat-cupra.yaml +++ b/templates/definition/vehicle/seat-cupra.yaml @@ -30,6 +30,8 @@ params: - name: welcomecharge advanced: true deprecated: true + - name: streaming + deprecated: true - preset: vehicle-online render: | type: drivesomethinggreater diff --git a/templates/definition/vehicle/seat.yaml b/templates/definition/vehicle/seat.yaml index 18108dc12..539140f29 100644 --- a/templates/definition/vehicle/seat.yaml +++ b/templates/definition/vehicle/seat.yaml @@ -31,6 +31,8 @@ params: - name: welcomecharge advanced: true deprecated: true + - name: streaming + deprecated: true - preset: vehicle-online render: | type: drivesomethinggreater diff --git a/templates/definition/vehicle/vw.yaml b/templates/definition/vehicle/vw.yaml index 4c9b94081..d41aa09ad 100644 --- a/templates/definition/vehicle/vw.yaml +++ b/templates/definition/vehicle/vw.yaml @@ -39,6 +39,8 @@ params: - name: welcomecharge advanced: true deprecated: true + - name: streaming + deprecated: true - preset: vehicle-online render: | type: drivesomethinggreater diff --git a/vehicle/template_test.go b/vehicle/template_test.go index 846d796e5..166365aab 100644 --- a/vehicle/template_test.go +++ b/vehicle/template_test.go @@ -1,6 +1,7 @@ package vehicle import ( + "slices" "strings" "testing" @@ -44,7 +45,18 @@ func TestTemplates(t *testing.T) { // onlineVehicleFeatures render via the shared vehicle-features include, so a // stored config may carry them; dropping the param breaks reload (discussion #31291). -var onlineVehicleFeatures = []string{"climaterdisabled", "autodetectdisabled", "wakeupdisabled"} +var onlineVehicleFeatures = []string{"streaming", "coarsecurrent", "welcomecharge", "climaterdisabled", "autodetectdisabled", "wakeupdisabled"} + +// requiredFeatureParams lists features these templates once offered as user +// params. Stored configs carry the key, so undeclaring it makes evcc fail to +// boot on the next restart (#31962). Deprecate such params, never remove them. +var requiredFeatureParams = map[string][]string{ + "vw": {"streaming", "coarsecurrent", "welcomecharge"}, + "audi": {"streaming", "coarsecurrent", "welcomecharge"}, + "seat": {"streaming", "coarsecurrent", "welcomecharge"}, + "seat-cupra": {"streaming", "coarsecurrent", "welcomecharge"}, + "drivesomethinggreater": {"streaming", "coarsecurrent", "welcomecharge"}, +} func TestVehicleFeatureParamsConsistent(t *testing.T) { for _, tmpl := range templates.ByClass(templates.Vehicle, templates.WithDeprecated()) { @@ -55,6 +67,9 @@ func TestVehicleFeatureParamsConsistent(t *testing.T) { for _, feat := range onlineVehicleFeatures { // not every template ever offered every feature (e.g. wakeupdisabled is new) if i, _ := tmpl.ParamByName(feat); i < 0 { + if slices.Contains(requiredFeatureParams[tmpl.Template], feat) { + t.Errorf("%s: feature %q must stay a declared param", tmpl.Template, feat) + } continue }