From 880557594fab024eabd0d86bd70baa8d28cce207 Mon Sep 17 00:00:00 2001 From: andig Date: Sun, 2 Oct 2022 19:09:30 +0200 Subject: [PATCH] Templates: simplify guided setup (#4698) --- cmd/configure/flow.go | 2 +- cmd/configure/helper.go | 2 +- templates/README.md | 14 +++----- templates/definition/meter/e3dc.yaml | 2 -- templates/definition/meter/fronius-gen24.yaml | 2 -- .../definition/meter/fronius-solarapi-v1.yaml | 2 -- .../huawei-sun2000-dongle-powersensor.yaml | 2 -- .../definition/meter/kostal-piko-mp-plus.yaml | 14 ++++---- templates/definition/meter/kostal-piko.yaml | 2 -- .../definition/meter/kostal-plenticore.yaml | 14 ++++---- .../definition/meter/lg-ess-home-8-10.yaml | 2 -- templates/definition/meter/openems.yaml | 2 -- templates/definition/meter/powerdog.yaml | 2 -- templates/definition/meter/rct-power.yaml | 2 -- templates/definition/meter/senec-home.yaml | 2 -- .../definition/meter/sma-datamanager.yaml | 2 -- .../definition/meter/sma-homemanager.yaml | 36 +++++++++---------- .../definition/meter/solaredge-hybrid.yaml | 2 -- .../definition/meter/solaredge-inverter.yaml | 2 -- templates/definition/meter/solarlog.yaml | 4 +-- .../meter/solarwatt-myreserve-matrix.yaml | 4 +-- templates/definition/meter/solarwatt.yaml | 2 -- .../definition/meter/solax-hybrid-cloud.yaml | 2 -- templates/definition/meter/solax.yaml | 2 -- .../definition/meter/sonnenbatterie.yaml | 2 -- .../definition/meter/sungrow-hybrid.yaml | 2 -- .../definition/meter/sungrow-inverter.yaml | 2 -- .../definition/meter/tesla-powerwall.yaml | 2 -- .../varta-energiespeicher-battery-only.yaml | 2 -- .../meter/varta-energiespeicher.yaml | 2 -- .../definition/meter/victron-energy.yaml | 2 -- templates/docs/meter/solarlog_0.yaml | 2 +- util/templates/template.go | 6 ++++ util/templates/template_types.go | 9 ++--- 34 files changed, 47 insertions(+), 106 deletions(-) diff --git a/cmd/configure/flow.go b/cmd/configure/flow.go index 4d07ccd4f..8ee7712f4 100644 --- a/cmd/configure/flow.go +++ b/cmd/configure/flow.go @@ -95,7 +95,7 @@ func (c *CmdConfigure) configureDeviceGuidedSetup() { // configureLinkedTypes lets the user configure devices that are marked as being linked to a guided device // e.g. SMA Inverters, Energy Meter with SMA Home Manager func (c *CmdConfigure) configureLinkedTypes(templateItem templates.Template) { - linkedTemplates := templateItem.GuidedSetup.Linked + linkedTemplates := templateItem.Linked deviceOfTemplateAdded := make(map[string]bool) diff --git a/cmd/configure/helper.go b/cmd/configure/helper.go index 5625fc0e3..8e80a44cb 100644 --- a/cmd/configure/helper.go +++ b/cmd/configure/helper.go @@ -342,7 +342,7 @@ func (c *CmdConfigure) fetchElements(deviceCategory DeviceCategory) []templates. titleTmpl.SetTitle(title) if deviceCategory == DeviceCategoryGuidedSetup { - if tmpl.GuidedSetup.Enable { + if tmpl.GuidedSetupEnabled() { items = append(items, titleTmpl) } } else { diff --git a/templates/README.md b/templates/README.md index 8c2be29c8..2429c9bfc 100644 --- a/templates/README.md +++ b/templates/README.md @@ -29,19 +29,15 @@ Either `brand`, or `description` need to be set. ## `group` -`group` contains the reference to a `groups.yaml` entry. This is used to group switchable sockets and generic device support (e.g. SunSpec) templates. +`group` is used to group switchable sockets and generic device support (e.g. SunSpec) templates. -## `guidedsetup` +## `guidedsetup` (Obsolete) -`guidedsetup` if the device can be used for a guided setup, which are devices that provide multiple meter usages, or meter devices that are typically installed with specific other devices. Mostly used for meter devices that provided multiple usage data with the same user input. These devices are then sorted at the bottom of the product list. +`guidedsetup` is enabled when the device has linked templates or >1 usage. It is used with devices that provide multiple meter usages, or meter devices that are typically installed with specific other devices. Mostly used for meter devices that provided multiple usage data with the same user input. These devices are then sorted at the bottom of the product list. -### `enable` +## `linked` -`enable: true` to define that this device can be used for `guidedsetup` - -### `linked` - -Allows to define a list of meter devices that are typically installed with this device +Allows to define a list of meter devices that are typically installed with this device. Enables `guidedsetup` mode. #### `template` diff --git a/templates/definition/meter/e3dc.yaml b/templates/definition/meter/e3dc.yaml index e421c0f4e..20e8f7f1c 100644 --- a/templates/definition/meter/e3dc.yaml +++ b/templates/definition/meter/e3dc.yaml @@ -1,8 +1,6 @@ template: e3dc products: - brand: E3DC -guidedsetup: - enable: true params: - name: usage choice: ["grid", "pv", "battery"] diff --git a/templates/definition/meter/fronius-gen24.yaml b/templates/definition/meter/fronius-gen24.yaml index 711aebc59..62e680ed6 100644 --- a/templates/definition/meter/fronius-gen24.yaml +++ b/templates/definition/meter/fronius-gen24.yaml @@ -6,8 +6,6 @@ products: - brand: Fronius description: generic: Primo GEN24 Plus -guidedsetup: - enable: true params: - name: usage choice: ["grid", "pv", "battery"] diff --git a/templates/definition/meter/fronius-solarapi-v1.yaml b/templates/definition/meter/fronius-solarapi-v1.yaml index 08321755c..26ba24514 100644 --- a/templates/definition/meter/fronius-solarapi-v1.yaml +++ b/templates/definition/meter/fronius-solarapi-v1.yaml @@ -3,8 +3,6 @@ products: - brand: Fronius description: generic: Solar API V1 -guidedsetup: - enable: true params: - name: usage choice: ["grid", "pv", "battery"] diff --git a/templates/definition/meter/huawei-sun2000-dongle-powersensor.yaml b/templates/definition/meter/huawei-sun2000-dongle-powersensor.yaml index 62d266b3b..1787df026 100644 --- a/templates/definition/meter/huawei-sun2000-dongle-powersensor.yaml +++ b/templates/definition/meter/huawei-sun2000-dongle-powersensor.yaml @@ -3,8 +3,6 @@ products: - brand: Huawei description: generic: SUN2000 with SDongle & Power Sensor -guidedsetup: - enable: true params: - name: usage choice: ["grid", "pv", "battery"] diff --git a/templates/definition/meter/kostal-piko-mp-plus.yaml b/templates/definition/meter/kostal-piko-mp-plus.yaml index c3d98639a..dce123579 100644 --- a/templates/definition/meter/kostal-piko-mp-plus.yaml +++ b/templates/definition/meter/kostal-piko-mp-plus.yaml @@ -3,14 +3,12 @@ products: - brand: Kostal description: generic: Piko MP Plus -guidedsetup: - enable: true - linked: - - template: kostal-ksem-inverter - usage: grid - - template: kostal-ksem - usage: grid - excludetemplate: kostal-ksem-inverter +linked: + - template: kostal-ksem-inverter + usage: grid + - template: kostal-ksem + usage: grid + excludetemplate: kostal-ksem-inverter params: - name: usage choice: ["pv"] diff --git a/templates/definition/meter/kostal-piko.yaml b/templates/definition/meter/kostal-piko.yaml index 93a7d15b0..28c3b2c2c 100644 --- a/templates/definition/meter/kostal-piko.yaml +++ b/templates/definition/meter/kostal-piko.yaml @@ -3,8 +3,6 @@ products: - brand: Kostal description: generic: Piko, Piko BA -guidedsetup: - enable: true params: - name: usage choice: ["grid", "pv", "battery"] diff --git a/templates/definition/meter/kostal-plenticore.yaml b/templates/definition/meter/kostal-plenticore.yaml index fa14024b8..2fb7fd3ab 100644 --- a/templates/definition/meter/kostal-plenticore.yaml +++ b/templates/definition/meter/kostal-plenticore.yaml @@ -3,14 +3,12 @@ products: - brand: Kostal description: generic: Plenticore Hybrid -guidedsetup: - enable: true - linked: - - template: kostal-ksem-inverter - usage: grid - - template: kostal-ksem - usage: grid - excludetemplate: kostal-ksem-inverter +linked: + - template: kostal-ksem-inverter + usage: grid + - template: kostal-ksem + usage: grid + excludetemplate: kostal-ksem-inverter params: - name: usage choice: ["pv", "battery"] diff --git a/templates/definition/meter/lg-ess-home-8-10.yaml b/templates/definition/meter/lg-ess-home-8-10.yaml index 0eecb183d..c62582a60 100644 --- a/templates/definition/meter/lg-ess-home-8-10.yaml +++ b/templates/definition/meter/lg-ess-home-8-10.yaml @@ -3,8 +3,6 @@ products: - brand: LG description: generic: ESS Home 8/10 -guidedsetup: - enable: true params: - name: usage choice: ["grid", "pv", "battery"] diff --git a/templates/definition/meter/openems.yaml b/templates/definition/meter/openems.yaml index 98f9e9ff0..e05ce7754 100644 --- a/templates/definition/meter/openems.yaml +++ b/templates/definition/meter/openems.yaml @@ -2,8 +2,6 @@ template: openems products: - brand: OpenEMS - brand: FENECON -guidedsetup: - enable: true params: - name: usage choice: ["grid", "pv", "battery"] diff --git a/templates/definition/meter/powerdog.yaml b/templates/definition/meter/powerdog.yaml index 3dbd41a93..f40d2b482 100644 --- a/templates/definition/meter/powerdog.yaml +++ b/templates/definition/meter/powerdog.yaml @@ -2,8 +2,6 @@ template: powerdog products: - description: generic: Powerdog -guidedsetup: - enable: true params: - name: usage choice: ["grid", "pv"] diff --git a/templates/definition/meter/rct-power.yaml b/templates/definition/meter/rct-power.yaml index 5b6f30782..f0db112de 100644 --- a/templates/definition/meter/rct-power.yaml +++ b/templates/definition/meter/rct-power.yaml @@ -3,8 +3,6 @@ products: - brand: RCT description: generic: Power -guidedsetup: - enable: true params: - name: usage choice: ["grid", "pv", "battery"] diff --git a/templates/definition/meter/senec-home.yaml b/templates/definition/meter/senec-home.yaml index 808f46205..10c047e9b 100644 --- a/templates/definition/meter/senec-home.yaml +++ b/templates/definition/meter/senec-home.yaml @@ -3,8 +3,6 @@ products: - brand: SENEC description: generic: .Home -guidedsetup: - enable: true params: - name: usage choice: ["grid", "pv", "battery"] diff --git a/templates/definition/meter/sma-datamanager.yaml b/templates/definition/meter/sma-datamanager.yaml index 7c4b6ec93..86f2a2ecb 100644 --- a/templates/definition/meter/sma-datamanager.yaml +++ b/templates/definition/meter/sma-datamanager.yaml @@ -5,8 +5,6 @@ products: - brand: SMA description: generic: Data Manager -guidedsetup: - enable: true requirements: description: de: In der Weboberfläche des SMA Data Manager muss im Bereich "Externe Kommunikation" der Schalter "Modbus Server aktivieren" eingeschaltet sein. diff --git a/templates/definition/meter/sma-homemanager.yaml b/templates/definition/meter/sma-homemanager.yaml index 0cc93f908..190426a99 100644 --- a/templates/definition/meter/sma-homemanager.yaml +++ b/templates/definition/meter/sma-homemanager.yaml @@ -4,25 +4,23 @@ products: description: generic: Sunny Home Manager 2.0 capabilities: ["smahems"] -guidedsetup: - enable: true - linked: - - template: sma-energy-meter - usage: pv - - template: sma-hybrid - usage: pv - multiple: true - excludetemplate: sma-energy-meter - - template: sma-inverter - usage: pv - multiple: true - excludetemplate: sma-energy-meter - - template: sma-hybrid - usage: battery - multiple: true - - template: sma-inverter - usage: battery - multiple: true +linked: + - template: sma-energy-meter + usage: pv + - template: sma-hybrid + usage: pv + multiple: true + excludetemplate: sma-energy-meter + - template: sma-inverter + usage: pv + multiple: true + excludetemplate: sma-energy-meter + - template: sma-hybrid + usage: battery + multiple: true + - template: sma-inverter + usage: battery + multiple: true params: - name: usage choice: ["grid"] diff --git a/templates/definition/meter/solaredge-hybrid.yaml b/templates/definition/meter/solaredge-hybrid.yaml index f036cd430..ef87f228e 100644 --- a/templates/definition/meter/solaredge-hybrid.yaml +++ b/templates/definition/meter/solaredge-hybrid.yaml @@ -3,8 +3,6 @@ products: - brand: SolarEdge description: generic: Hybrid Inverter -guidedsetup: - enable: true requirements: description: de: Nur ein System kann auf den Wechselrichter zugreifen! diff --git a/templates/definition/meter/solaredge-inverter.yaml b/templates/definition/meter/solaredge-inverter.yaml index 964c4826d..b6a5abb1f 100644 --- a/templates/definition/meter/solaredge-inverter.yaml +++ b/templates/definition/meter/solaredge-inverter.yaml @@ -4,8 +4,6 @@ products: description: de: Wechselrichter en: Inverter -guidedsetup: - enable: true params: - name: usage choice: ["grid", "pv"] diff --git a/templates/definition/meter/solarlog.yaml b/templates/definition/meter/solarlog.yaml index 5f7fafd5b..7b7e1b640 100644 --- a/templates/definition/meter/solarlog.yaml +++ b/templates/definition/meter/solarlog.yaml @@ -2,12 +2,10 @@ template: solarlog products: - description: generic: Solarlog -guidedsetup: - enable: true requirements: description: de: | - Wir empfehlen dieses Gerät für den Netzbezug/Einspeisewerte nur zu verwenden, wenn kein anderes Gerät diese Daten liefert. + Wir empfehlen dieses Gerät für den Netzbezug/Einspeisewerte nur zu verwenden, wenn kein anderes Gerät diese Daten liefert. Falls eine Hausbatterie angeschlossen ist sollte dieses Gerät auf keinen Fall für die erwähnten Werte verwendet werden! en: | We recommend to use this device for grid power values only, if no other device is available providing this data. diff --git a/templates/definition/meter/solarwatt-myreserve-matrix.yaml b/templates/definition/meter/solarwatt-myreserve-matrix.yaml index 471fd331e..e813fb965 100644 --- a/templates/definition/meter/solarwatt-myreserve-matrix.yaml +++ b/templates/definition/meter/solarwatt-myreserve-matrix.yaml @@ -3,8 +3,6 @@ products: - brand: Solarwatt description: generic: MyReserve Matrix (LAN oder PowerGateway) -guidedsetup: - enable: true params: - name: usage choice: ["grid", "pv", "battery"] @@ -24,7 +22,7 @@ render: | {{- end }} {{- if eq .usage "battery" }} jq: .FData.IBat * .FData.VBat - soc: + soc: source: http uri: http://{{ .host }}:{{ .port }}/ jq: .SData.SoC diff --git a/templates/definition/meter/solarwatt.yaml b/templates/definition/meter/solarwatt.yaml index f00f54f36..2a43594c7 100644 --- a/templates/definition/meter/solarwatt.yaml +++ b/templates/definition/meter/solarwatt.yaml @@ -7,8 +7,6 @@ products: - brand: Solarwatt description: generic: EnergyManager, EnergyManager Pro -guidedsetup: - enable: true params: - name: usage choice: ["grid", "pv", "battery"] diff --git a/templates/definition/meter/solax-hybrid-cloud.yaml b/templates/definition/meter/solax-hybrid-cloud.yaml index 31e10a893..0bfac10f3 100644 --- a/templates/definition/meter/solax-hybrid-cloud.yaml +++ b/templates/definition/meter/solax-hybrid-cloud.yaml @@ -14,8 +14,6 @@ requirements: The Solax hybrid inverter has to be registered in the SolaxCloud. **Attention**: Values can only be fetched every 150s and then also can be 5 minutes old. Charging by PV will not be optimal because of this! Only use as fallback if no local access is available. -guidedsetup: - enable: true params: - name: usage choice: ["grid", "pv", "battery"] diff --git a/templates/definition/meter/solax.yaml b/templates/definition/meter/solax.yaml index 2110d0c7b..aeb9e97f6 100644 --- a/templates/definition/meter/solax.yaml +++ b/templates/definition/meter/solax.yaml @@ -7,8 +7,6 @@ products: - brand: Qcells description: generic: Q.HOME ESS HYB-G3 -guidedsetup: - enable: true params: - name: usage choice: ["grid", "pv", "battery"] diff --git a/templates/definition/meter/sonnenbatterie.yaml b/templates/definition/meter/sonnenbatterie.yaml index c452d77d1..db34b95f1 100644 --- a/templates/definition/meter/sonnenbatterie.yaml +++ b/templates/definition/meter/sonnenbatterie.yaml @@ -4,8 +4,6 @@ products: - brand: Sonnen description: generic: sonnenBatterie -guidedsetup: - enable: true params: - name: usage choice: ["grid", "pv", "battery"] diff --git a/templates/definition/meter/sungrow-hybrid.yaml b/templates/definition/meter/sungrow-hybrid.yaml index e42cf82b2..dbbf46600 100644 --- a/templates/definition/meter/sungrow-hybrid.yaml +++ b/templates/definition/meter/sungrow-hybrid.yaml @@ -4,8 +4,6 @@ products: - brand: Sungrow description: generic: SH Series Hybrid Inverter -guidedsetup: - enable: true requirements: description: de: Die Verbindung ist nur seriell (RS485) oder TCP (mit dem WiNet-S-Dongle) möglich. diff --git a/templates/definition/meter/sungrow-inverter.yaml b/templates/definition/meter/sungrow-inverter.yaml index e2ec635da..9f846fe28 100644 --- a/templates/definition/meter/sungrow-inverter.yaml +++ b/templates/definition/meter/sungrow-inverter.yaml @@ -3,8 +3,6 @@ products: - brand: Sungrow description: generic: SG Series Inverter -guidedsetup: - enable: true requirements: description: de: Die Verbindung ist nur seriell (RS485) oder TCP (mit dem WiNet-S-Dongle) möglich. diff --git a/templates/definition/meter/tesla-powerwall.yaml b/templates/definition/meter/tesla-powerwall.yaml index ac27841a9..04d637fd1 100644 --- a/templates/definition/meter/tesla-powerwall.yaml +++ b/templates/definition/meter/tesla-powerwall.yaml @@ -3,8 +3,6 @@ products: - brand: Tesla description: generic: Powerwall -guidedsetup: - enable: true params: - name: usage choice: ["grid", "pv", "battery"] diff --git a/templates/definition/meter/varta-energiespeicher-battery-only.yaml b/templates/definition/meter/varta-energiespeicher-battery-only.yaml index 1da153e4f..5840b5de2 100644 --- a/templates/definition/meter/varta-energiespeicher-battery-only.yaml +++ b/templates/definition/meter/varta-energiespeicher-battery-only.yaml @@ -4,8 +4,6 @@ products: description: de: Energiespeicher (kein PV-Sensor) en: Energiespeicher (without PV Sensor) -guidedsetup: - enable: true params: - name: usage choice: ["grid", "battery"] diff --git a/templates/definition/meter/varta-energiespeicher.yaml b/templates/definition/meter/varta-energiespeicher.yaml index 0c4ccfe9a..de652f84e 100644 --- a/templates/definition/meter/varta-energiespeicher.yaml +++ b/templates/definition/meter/varta-energiespeicher.yaml @@ -4,8 +4,6 @@ products: description: de: Energiespeicher (mit PV-Sensor) en: Energiespeicher (with PV Sensor) -guidedsetup: - enable: true params: - name: usage choice: ["grid", "pv", "battery"] diff --git a/templates/definition/meter/victron-energy.yaml b/templates/definition/meter/victron-energy.yaml index 92cb52da3..d0b4cd890 100644 --- a/templates/definition/meter/victron-energy.yaml +++ b/templates/definition/meter/victron-energy.yaml @@ -3,8 +3,6 @@ products: - brand: Victron description: generic: Energy -guidedsetup: - enable: true params: - name: usage choice: ["grid", "pv", "battery"] diff --git a/templates/docs/meter/solarlog_0.yaml b/templates/docs/meter/solarlog_0.yaml index 204cc75b1..98ac4269a 100644 --- a/templates/docs/meter/solarlog_0.yaml +++ b/templates/docs/meter/solarlog_0.yaml @@ -1,7 +1,7 @@ product: description: Solarlog description: | - Wir empfehlen dieses Gerät für den Netzbezug/Einspeisewerte nur zu verwenden, wenn kein anderes Gerät diese Daten liefert. + Wir empfehlen dieses Gerät für den Netzbezug/Einspeisewerte nur zu verwenden, wenn kein anderes Gerät diese Daten liefert. Falls eine Hausbatterie angeschlossen ist sollte dieses Gerät auf keinen Fall für die erwähnten Werte verwendet werden! render: diff --git a/util/templates/template.go b/util/templates/template.go index f2dfcaaa7..0cafda7c4 100644 --- a/util/templates/template.go +++ b/util/templates/template.go @@ -24,6 +24,12 @@ type Template struct { titles []string } +// GuidedSetupEnabled returns true if there are linked templates or >1 usage +func (t *Template) GuidedSetupEnabled() bool { + _, p := t.ParamByName(ParamUsage) + return len(t.Linked) > 0 || len(p.Choice) > 1 +} + // UpdateParamWithDefaults adds default values to specific param name entries func (t *Template) UpdateParamsWithDefaults() error { for i, p := range t.Params { diff --git a/util/templates/template_types.go b/util/templates/template_types.go index 9268fb25d..0f887698b 100644 --- a/util/templates/template_types.go +++ b/util/templates/template_types.go @@ -169,11 +169,6 @@ type Requirements struct { URI string // URI to a webpage with more details about the preparation requirements } -type GuidedSetup struct { - Enable bool // if true, guided setup is possible - Linked []LinkedTemplate // a list of templates that should be processed as part of the guided setup -} - // Linked Template type LinkedTemplate struct { Template string @@ -291,12 +286,12 @@ type Product struct { // TemplateDefinition contains properties of a device template type TemplateDefinition struct { Template string + Group string // the group this template belongs to, references groupList entries Covers []string // list of covered outdated template names Products []Product // list of products this template is compatible with Capabilities []string Requirements Requirements - GuidedSetup GuidedSetup - Group string // the group this template belongs to, references groupList entries + Linked []LinkedTemplate // a list of templates that should be processed as part of the guided setup Params []Param Render string // rendering template }