Templates: remove per-template config defaults (#6465)
This commit is contained in:
parent
48931c4a65
commit
7412b0a4a9
53 changed files with 182 additions and 189 deletions
|
|
@ -263,10 +263,10 @@ func (c *CmdConfigure) configureMQTT(templateItem templates.Template) (map[strin
|
|||
|
||||
for {
|
||||
fmt.Println()
|
||||
_, paramHost := templateItem.ConfigDefaults.ParamByName("host")
|
||||
_, paramPort := templateItem.ConfigDefaults.ParamByName("port")
|
||||
_, paramUser := templateItem.ConfigDefaults.ParamByName("user")
|
||||
_, paramPassword := templateItem.ConfigDefaults.ParamByName("password")
|
||||
_, paramHost := templates.ConfigDefaults.ParamByName("host")
|
||||
_, paramPort := templates.ConfigDefaults.ParamByName("port")
|
||||
_, paramUser := templates.ConfigDefaults.ParamByName("user")
|
||||
_, paramPassword := templates.ConfigDefaults.ParamByName("password")
|
||||
|
||||
host := c.askParam(paramHost)
|
||||
port := c.askParam(paramPort)
|
||||
|
|
@ -309,7 +309,6 @@ func (c *CmdConfigure) fetchElements(deviceCategory DeviceCategory) []templates.
|
|||
for _, t := range tmpl.Titles(c.lang) {
|
||||
titleTmpl := templates.Template{
|
||||
TemplateDefinition: tmpl.TemplateDefinition,
|
||||
ConfigDefaults: tmpl.ConfigDefaults,
|
||||
}
|
||||
title := t
|
||||
groupTitle := titleTmpl.GroupTitle(c.lang)
|
||||
|
|
@ -500,7 +499,7 @@ func (c *CmdConfigure) processModbusConfig(templateItem *templates.Template, dev
|
|||
return
|
||||
}
|
||||
|
||||
config := templateItem.ConfigDefaults.Modbus
|
||||
config := templates.ConfigDefaults.Modbus
|
||||
|
||||
for _, choice := range modbusParam.Choice {
|
||||
if config.Interfaces[choice] == nil {
|
||||
|
|
|
|||
|
|
@ -8,6 +8,6 @@ capabilities: ["mA"]
|
|||
requirements:
|
||||
evcc: ["eebus"]
|
||||
params:
|
||||
- preset: eebusmeter
|
||||
- preset: eebus-meter
|
||||
render: |
|
||||
{{ include "eebus-meter" . }}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ requirements:
|
|||
|
||||
The support is in beta state and problems can occur!
|
||||
params:
|
||||
- preset: eebusnometer
|
||||
- preset: eebus-no-meter
|
||||
- name: ip
|
||||
required: true
|
||||
render: |
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ requirements:
|
|||
|
||||
The support is in beta state and problems can occur!
|
||||
params:
|
||||
- preset: eebusmeter
|
||||
- preset: eebus-meter
|
||||
- name: ip
|
||||
required: true
|
||||
render: |
|
||||
|
|
|
|||
|
|
@ -7,6 +7,6 @@ capabilities: ["iso151182", "mA"]
|
|||
requirements:
|
||||
evcc: ["eebus"]
|
||||
params:
|
||||
- preset: eebusmeter
|
||||
- preset: eebus-meter
|
||||
render: |
|
||||
{{ include "eebus-meter" . }}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,6 @@ products:
|
|||
requirements:
|
||||
evcc: ["eebus"]
|
||||
params:
|
||||
- preset: eebusmeter
|
||||
- preset: eebus-meter
|
||||
render: |
|
||||
{{ include "eebus-meter" . }}
|
||||
|
|
|
|||
|
|
@ -2,10 +2,5 @@ package definition
|
|||
|
||||
import "embed"
|
||||
|
||||
var (
|
||||
//go:embed charger/*.yaml meter/*.yaml vehicle/*.yaml
|
||||
YamlTemplates embed.FS
|
||||
|
||||
//go:embed defaults.yaml
|
||||
DefaultsContent string
|
||||
)
|
||||
//go:embed charger/*.yaml meter/*.yaml vehicle/*.yaml
|
||||
var YamlTemplates embed.FS
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ template: aiways
|
|||
products:
|
||||
- brand: Aiways
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
- name: vin
|
||||
required: true
|
||||
render: |
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ products:
|
|||
description:
|
||||
generic: e-tron
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
- name: vin
|
||||
example: WAUZZZ...
|
||||
render: |
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ products:
|
|||
de: Andere
|
||||
en: Others
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
- name: vin
|
||||
example: WAUZZZ...
|
||||
render: |
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ template: bmw
|
|||
products:
|
||||
- brand: BMW
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
- name: vin
|
||||
example: WBMW...
|
||||
render: |
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ products:
|
|||
description:
|
||||
generic: Leaf (pre 2019)
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
render: |
|
||||
type: carwings
|
||||
{{ include "vehicle-base" . }}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ template: citroen
|
|||
products:
|
||||
- brand: Citroën
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
render: |
|
||||
type: citroen
|
||||
{{ include "vehicle-base" . }}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ template: dacia
|
|||
products:
|
||||
- brand: Dacia
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
- name: capacity
|
||||
default: 27.4
|
||||
render: |
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ template: ds
|
|||
products:
|
||||
- brand: DS
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
render: |
|
||||
type: ds
|
||||
{{ include "vehicle-base" . }}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ params:
|
|||
- name: icon
|
||||
default: car
|
||||
advanced: true
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-identify
|
||||
render: |
|
||||
type: custom
|
||||
{{- if ne .title "" }}
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@ template: fiat
|
|||
products:
|
||||
- brand: Fiat
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicle-base
|
||||
- name: vin
|
||||
example: ZFAE...
|
||||
- name: pin
|
||||
mask: true
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-identify
|
||||
render: |
|
||||
type: fiat
|
||||
{{ include "vehicle-base" . }}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ template: ford
|
|||
products:
|
||||
- brand: Ford
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
- name: vin
|
||||
example: WF0FXX...
|
||||
render: |
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@ products:
|
|||
description:
|
||||
generic: Bluelink
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehiclelanguage
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-language
|
||||
- preset: vehicle-identify
|
||||
render: |
|
||||
type: hyundai
|
||||
{{ include "vehicle-base" . }}
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ products:
|
|||
- brand: Jaguar
|
||||
- brand: Land Rover
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
render: |
|
||||
type: jaguar
|
||||
{{ include "vehicle-base" . }}
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@ products:
|
|||
description:
|
||||
generic: Bluelink
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehiclelanguage
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-language
|
||||
- preset: vehicle-identify
|
||||
render: |
|
||||
type: kia
|
||||
{{ include "vehicle-base" . }}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ template: mini
|
|||
products:
|
||||
- brand: Mini
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
- name: vin
|
||||
example: WBMW...
|
||||
render: |
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ products:
|
|||
description:
|
||||
generic: Leaf
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
render: |
|
||||
type: nissan
|
||||
{{ include "vehicle-base" . }}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ params:
|
|||
default: 4
|
||||
- name: icon
|
||||
default: scooter
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-identify
|
||||
render: |
|
||||
type: niu
|
||||
{{- if ne .title "" }}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ template: opel
|
|||
products:
|
||||
- brand: Opel
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
- name: vin
|
||||
example: WP0...
|
||||
render: |
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ params:
|
|||
- name: icon
|
||||
default: car
|
||||
advanced: true
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-identify
|
||||
render: |
|
||||
type: ovms
|
||||
{{- if ne .title "" }}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ template: peugeot
|
|||
products:
|
||||
- brand: Peugeot
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
render: |
|
||||
type: peugeot
|
||||
{{ include "vehicle-base" . }}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ template: porsche
|
|||
products:
|
||||
- brand: Porsche
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
render: |
|
||||
type: porsche
|
||||
{{ include "vehicle-base" . }}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ template: renault
|
|||
products:
|
||||
- brand: Renault
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
- name: vin
|
||||
example: WREN...
|
||||
render: |
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ products:
|
|||
description:
|
||||
generic: Cupra Born, My Cupra
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
render: |
|
||||
type: cupra
|
||||
{{ include "vehicle-base" . }}
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ products:
|
|||
de: Andere
|
||||
en: Others
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
render: |
|
||||
type: seat
|
||||
{{ include "vehicle-base" . }}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ products:
|
|||
# generic: MÓ
|
||||
group: scooter
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicle-base
|
||||
- name: vin
|
||||
example: W...
|
||||
- name: icon
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ products:
|
|||
description:
|
||||
generic: Enyaq
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
render: |
|
||||
type: enyaq
|
||||
{{ include "vehicle-base" . }}
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ products:
|
|||
de: Andere
|
||||
en: Others
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
render: |
|
||||
type: skoda
|
||||
{{ include "vehicle-base" . }}
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ products:
|
|||
description:
|
||||
generic: EQ
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
- name: capacity
|
||||
default: 17.6
|
||||
render: |
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ params:
|
|||
- name: icon
|
||||
default: car
|
||||
advanced: true
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-identify
|
||||
render: |
|
||||
type: tesla
|
||||
{{- if ne .title "" }}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ params:
|
|||
- name: icon
|
||||
default: car
|
||||
advanced: true
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-identify
|
||||
render: |
|
||||
type: tronity
|
||||
{{- if ne .title "" }}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ template: volvo-connected
|
|||
products:
|
||||
- brand: Volvo
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
- name: vccapikey
|
||||
required: true
|
||||
help:
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ template: volvo
|
|||
products:
|
||||
- brand: Volvo (legacy)
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
render: |
|
||||
type: volvo
|
||||
{{ include "vehicle-base" . }}
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ requirements:
|
|||
de: ID.3, ID.4 (funktioniert auch für e-Golf, e-Up)
|
||||
en: ID.3, ID.4 (also works for e-Golf, e-Up)
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
- name: vin
|
||||
example: WVWZZZ...
|
||||
render: |
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ requirements:
|
|||
de: ältere Modelle wie e-Up, e-Golf, etc.
|
||||
en: older Models like e-Up, e-Golf, etc.
|
||||
params:
|
||||
- preset: vehiclebase
|
||||
- preset: vehicleidentify
|
||||
- preset: vehicle-base
|
||||
- preset: vehicle-identify
|
||||
- name: vin
|
||||
example: WVWZZZ...
|
||||
render: |
|
||||
|
|
|
|||
|
|
@ -1,17 +1,19 @@
|
|||
package templates
|
||||
|
||||
import (
|
||||
_ "embed"
|
||||
"fmt"
|
||||
|
||||
"github.com/evcc-io/evcc/templates/definition"
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
type ConfigDefaults struct {
|
||||
//go:embed defaults.yaml
|
||||
var defaults []byte
|
||||
|
||||
type configDefaults struct {
|
||||
Params []Param // Default values for common parameters
|
||||
Presets map[string]struct {
|
||||
Params []Param
|
||||
Render string
|
||||
}
|
||||
Modbus struct { // Details about possible ModbusInterfaces and ModbusConnectionTypes
|
||||
Interfaces map[string][]string // Information about physical modbus interface types (rs485, tcpip)
|
||||
|
|
@ -24,13 +26,13 @@ type ConfigDefaults struct {
|
|||
}
|
||||
|
||||
// read the actual config into the struct, but only once
|
||||
func (c *ConfigDefaults) LoadDefaults() {
|
||||
func (c *configDefaults) Load() {
|
||||
// if params are initialized, defaults have been loaded
|
||||
if c.Params != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if err := yaml.Unmarshal([]byte(definition.DefaultsContent), &c); err != nil {
|
||||
if err := yaml.Unmarshal(defaults, &c); err != nil {
|
||||
panic(fmt.Errorf("failed to parse deviceGroupListDefinition: %v", err))
|
||||
}
|
||||
|
||||
|
|
@ -55,7 +57,7 @@ func (c *ConfigDefaults) LoadDefaults() {
|
|||
}
|
||||
|
||||
// return the param with the given name
|
||||
func (c *ConfigDefaults) ParamByName(name string) (int, Param) {
|
||||
func (c *configDefaults) ParamByName(name string) (int, Param) {
|
||||
for i, param := range c.Params {
|
||||
if param.Name == name {
|
||||
return i, param
|
||||
|
|
@ -290,7 +290,7 @@ params:
|
|||
de: Die AIN ist auf dem Typenschild auf der Geräterückseite aufgedruckt. Bei führenden Nullen bitte in doppelte Hochkommata setzen.
|
||||
|
||||
presets:
|
||||
vehiclebase:
|
||||
vehicle-base:
|
||||
params:
|
||||
- name: title
|
||||
- name: user
|
||||
|
|
@ -308,30 +308,7 @@ presets:
|
|||
default: 15m
|
||||
advanced: true
|
||||
type: duration
|
||||
render: |
|
||||
{{define "vehicle-base"}}
|
||||
{{- if ne .title "" }}
|
||||
title: {{ .title }}
|
||||
{{- end }}
|
||||
{{- if ne .icon "" }}
|
||||
icon: {{ .icon }}
|
||||
{{- end }}
|
||||
user: {{ .user }}
|
||||
password: {{ .password }}
|
||||
{{- if ne .capacity "" }}
|
||||
capacity: {{ .capacity }}
|
||||
{{- end }}
|
||||
{{- if ne .vin "" }}
|
||||
vin: {{ .vin }}
|
||||
{{- end }}
|
||||
{{- if ne .phases "" }}
|
||||
phases: {{ .phases }}
|
||||
{{- end }}
|
||||
{{- if ne .cache "" }}
|
||||
cache: {{ .cache }}
|
||||
{{- end }}
|
||||
{{end}}
|
||||
vehicleidentify:
|
||||
vehicle-identify:
|
||||
params:
|
||||
- name: mode
|
||||
advanced: true
|
||||
|
|
@ -348,64 +325,17 @@ presets:
|
|||
type: stringlist
|
||||
- name: priority
|
||||
advanced: true
|
||||
render: |
|
||||
{{define "vehicle-identify"}}
|
||||
{{- if or (ne .mode "") (ne .minSoc "") (ne .targetSoc "") (ne .minCurrent "") (ne .maxCurrent "") (ne .priority "") }}
|
||||
onIdentify:
|
||||
{{- if (ne .mode "") }}
|
||||
mode: {{ .mode }}
|
||||
{{- end }}
|
||||
{{- if (ne .minSoc "") }}
|
||||
minSoc: {{ .minSoc }}
|
||||
{{- end }}
|
||||
{{- if (ne .targetSoc "") }}
|
||||
targetSoc: {{ .targetSoc }}
|
||||
{{- end }}
|
||||
{{- if (ne .minCurrent "") }}
|
||||
minCurrent: {{ .minCurrent }}
|
||||
{{- end }}
|
||||
{{- if (ne .maxCurrent "") }}
|
||||
maxCurrent: {{ .maxCurrent }}
|
||||
{{- end }}
|
||||
{{- if (ne .priority "") }}
|
||||
- priority: {{ .priority }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if ne (len .identifiers) 0 }}
|
||||
identifiers:
|
||||
{{- range .identifiers }}
|
||||
- {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{end}}
|
||||
vehiclelanguage:
|
||||
vehicle-language:
|
||||
params:
|
||||
- name: language
|
||||
render: |
|
||||
{{define "vehicle-language"}}
|
||||
language: {{ .language }}
|
||||
{{end}}
|
||||
eebusmeter:
|
||||
eebus-meter:
|
||||
params:
|
||||
- name: ski
|
||||
- name: ip
|
||||
render: |
|
||||
{{define "eebus-meter"}}
|
||||
type: eebus
|
||||
ski: {{ .ski }}
|
||||
{{ if ne .ip "" }}ip: {{ .ip }}{{ end }}
|
||||
meter: true
|
||||
{{end}}
|
||||
eebusnometer:
|
||||
eebus-no-meter:
|
||||
params:
|
||||
- name: ski
|
||||
- name: ip
|
||||
render: |
|
||||
{{define "eebus-no-meter"}}
|
||||
type: eebus
|
||||
ski: {{ .ski }}
|
||||
{{ if ne .ip "" }}ip: {{ .ip }}{{ end }}
|
||||
{{end}}
|
||||
switchsocket:
|
||||
params:
|
||||
- name: integrateddevice
|
||||
|
|
@ -416,9 +346,6 @@ presets:
|
|||
en: Integrated device (no vehicle connection)
|
||||
- name: icon
|
||||
advanced: true
|
||||
render: |
|
||||
{{ if eq .integrateddevice "true" }}features: ["integrateddevice"]{{ end }}
|
||||
{{ if ne .icon "" }}icon: {{ .icon }}{{ end }}
|
||||
|
||||
modbus:
|
||||
interfaces:
|
||||
|
|
@ -96,10 +96,9 @@ func (t *Template) RenderDocumentation(product Product, values map[string]interf
|
|||
}
|
||||
|
||||
tmpl, err := template.New("yaml").Funcs(template.FuncMap(sprig.FuncMap())).Parse(documentationTmpl)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
if err == nil {
|
||||
err = tmpl.Execute(out, data)
|
||||
}
|
||||
err = tmpl.Execute(out, data)
|
||||
|
||||
// trim empty lines with whitespace
|
||||
regex, _ := regexp.Compile("\n *\n")
|
||||
6
util/templates/includes/eebus-meter.tpl
Normal file
6
util/templates/includes/eebus-meter.tpl
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{{define "eebus-meter"}}
|
||||
type: eebus
|
||||
ski: {{ .ski }}
|
||||
{{ if ne .ip "" }}ip: {{ .ip }}{{ end }}
|
||||
meter: true
|
||||
{{end}}
|
||||
5
util/templates/includes/eebus-no-meter.tpl
Normal file
5
util/templates/includes/eebus-no-meter.tpl
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{{define "eebus-no-meter"}}
|
||||
type: eebus
|
||||
ski: {{ .ski }}
|
||||
{{ if ne .ip "" }}ip: {{ .ip }}{{ end }}
|
||||
{{end}}
|
||||
4
util/templates/includes/switchsocket.tpl
Normal file
4
util/templates/includes/switchsocket.tpl
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{{define "switchsocket"}}
|
||||
{{ if eq .integrateddevice "true" }}features: ["integrateddevice"]{{ end }}
|
||||
{{ if ne .icon "" }}icon: {{ .icon }}{{ end }}
|
||||
{{end}}
|
||||
22
util/templates/includes/vehicle-base.tpl
Normal file
22
util/templates/includes/vehicle-base.tpl
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
{{define "vehicle-base"}}
|
||||
{{- if ne .title "" }}
|
||||
title: {{ .title }}
|
||||
{{- end }}
|
||||
{{- if ne .icon "" }}
|
||||
icon: {{ .icon }}
|
||||
{{- end }}
|
||||
user: {{ .user }}
|
||||
password: {{ .password }}
|
||||
{{- if ne .capacity "" }}
|
||||
capacity: {{ .capacity }}
|
||||
{{- end }}
|
||||
{{- if ne .vin "" }}
|
||||
vin: {{ .vin }}
|
||||
{{- end }}
|
||||
{{- if ne .phases "" }}
|
||||
phases: {{ .phases }}
|
||||
{{- end }}
|
||||
{{- if ne .cache "" }}
|
||||
cache: {{ .cache }}
|
||||
{{- end }}
|
||||
{{end}}
|
||||
29
util/templates/includes/vehicle-identify.tpl
Normal file
29
util/templates/includes/vehicle-identify.tpl
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
{{define "vehicle-identify"}}
|
||||
{{- if or (ne .mode "") (ne .minSoc "") (ne .targetSoc "") (ne .minCurrent "") (ne .maxCurrent "") (ne .priority "") }}
|
||||
onIdentify:
|
||||
{{- if (ne .mode "") }}
|
||||
mode: {{ .mode }}
|
||||
{{- end }}
|
||||
{{- if (ne .minSoc "") }}
|
||||
minSoc: {{ .minSoc }}
|
||||
{{- end }}
|
||||
{{- if (ne .targetSoc "") }}
|
||||
targetSoc: {{ .targetSoc }}
|
||||
{{- end }}
|
||||
{{- if (ne .minCurrent "") }}
|
||||
minCurrent: {{ .minCurrent }}
|
||||
{{- end }}
|
||||
{{- if (ne .maxCurrent "") }}
|
||||
maxCurrent: {{ .maxCurrent }}
|
||||
{{- end }}
|
||||
{{- if (ne .priority "") }}
|
||||
- priority: {{ .priority }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if ne (len .identifiers) 0 }}
|
||||
identifiers:
|
||||
{{- range .identifiers }}
|
||||
- {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{end}}
|
||||
3
util/templates/includes/vehicle-language.tpl
Normal file
3
util/templates/includes/vehicle-language.tpl
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
{{define "vehicle-language"}}
|
||||
language: {{ .language }}
|
||||
{{end}}
|
||||
|
|
@ -2,10 +2,12 @@ package templates
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"embed"
|
||||
"fmt"
|
||||
"io/fs"
|
||||
"path"
|
||||
"sync"
|
||||
"text/template"
|
||||
|
||||
"github.com/evcc-io/evcc/templates/definition"
|
||||
"golang.org/x/exp/slices"
|
||||
|
|
@ -13,15 +15,22 @@ import (
|
|||
)
|
||||
|
||||
var (
|
||||
templates = make(map[Class][]Template)
|
||||
configDefaults = ConfigDefaults{}
|
||||
//go:embed includes/*.tpl
|
||||
includeFS embed.FS
|
||||
|
||||
// baseTmpl holds all included template definitions
|
||||
baseTmpl *template.Template
|
||||
|
||||
templates = make(map[Class][]Template)
|
||||
ConfigDefaults configDefaults
|
||||
mu sync.Mutex
|
||||
encoderLanguage string
|
||||
)
|
||||
|
||||
func init() {
|
||||
configDefaults.LoadDefaults()
|
||||
ConfigDefaults.Load()
|
||||
|
||||
baseTmpl = template.Must(template.ParseFS(includeFS, "includes/*.tpl"))
|
||||
|
||||
loadTemplates(Charger)
|
||||
loadTemplates(Meter)
|
||||
|
|
@ -40,7 +49,6 @@ func FromBytes(b []byte) (Template, error) {
|
|||
|
||||
tmpl := Template{
|
||||
TemplateDefinition: definition,
|
||||
ConfigDefaults: configDefaults,
|
||||
}
|
||||
|
||||
err := tmpl.ResolvePresets()
|
||||
|
|
|
|||
|
|
@ -16,8 +16,6 @@ import (
|
|||
type Template struct {
|
||||
TemplateDefinition
|
||||
|
||||
ConfigDefaults ConfigDefaults `json:"-"`
|
||||
|
||||
title string
|
||||
titles []string
|
||||
}
|
||||
|
|
@ -31,7 +29,7 @@ func (t *Template) GuidedSetupEnabled() bool {
|
|||
// UpdateParamWithDefaults adds default values to specific param name entries
|
||||
func (t *Template) UpdateParamsWithDefaults() error {
|
||||
for i, p := range t.Params {
|
||||
if index, resultMapItem := t.ConfigDefaults.ParamByName(strings.ToLower(p.Name)); index > -1 {
|
||||
if index, resultMapItem := ConfigDefaults.ParamByName(strings.ToLower(p.Name)); index > -1 {
|
||||
t.Params[i].OverwriteProperties(resultMapItem)
|
||||
}
|
||||
}
|
||||
|
|
@ -115,7 +113,7 @@ func (t *Template) ResolvePresets() error {
|
|||
t.Params = []Param{}
|
||||
for _, p := range currentParams {
|
||||
if p.Preset != "" {
|
||||
base, ok := t.ConfigDefaults.Presets[p.Preset]
|
||||
base, ok := ConfigDefaults.Presets[p.Preset]
|
||||
if !ok {
|
||||
return fmt.Errorf("could not find preset definition: %s", p.Preset)
|
||||
}
|
||||
|
|
@ -142,7 +140,7 @@ func (t *Template) ResolveGroup() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
_, ok := t.ConfigDefaults.DeviceGroups[t.Group]
|
||||
_, ok := ConfigDefaults.DeviceGroups[t.Group]
|
||||
if !ok {
|
||||
return fmt.Errorf("could not find devicegroup definition: %s", t.Group)
|
||||
}
|
||||
|
|
@ -152,7 +150,7 @@ func (t *Template) ResolveGroup() error {
|
|||
|
||||
// return the language specific group title
|
||||
func (t *Template) GroupTitle(lang string) string {
|
||||
tl := t.ConfigDefaults.DeviceGroups[t.Group]
|
||||
tl := ConfigDefaults.DeviceGroups[t.Group]
|
||||
return tl.String(lang)
|
||||
}
|
||||
|
||||
|
|
@ -277,13 +275,6 @@ func (t *Template) RenderResult(renderMode string, other map[string]interface{})
|
|||
|
||||
t.ModbusValues(renderMode, values)
|
||||
|
||||
// add the common templates
|
||||
for _, v := range t.ConfigDefaults.Presets {
|
||||
if !strings.Contains(t.Render, v.Render) {
|
||||
t.Render += "\n" + v.Render
|
||||
}
|
||||
}
|
||||
|
||||
res := make(map[string]interface{})
|
||||
|
||||
// TODO this is an utterly horrible hack
|
||||
|
|
@ -350,7 +341,10 @@ func (t *Template) RenderResult(renderMode string, other map[string]interface{})
|
|||
},
|
||||
}
|
||||
|
||||
tmpl, err := tmpl.Funcs(template.FuncMap(sprig.FuncMap())).Funcs(funcMap).Parse(t.Render)
|
||||
tmpl, err := baseTmpl.Clone()
|
||||
if err == nil {
|
||||
tmpl, err = tmpl.Funcs(sprig.FuncMap()).Funcs(funcMap).Parse(t.Render)
|
||||
}
|
||||
if err != nil {
|
||||
return nil, res, err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ func (t *Template) ModbusParams(modbusType string, values map[string]interface{}
|
|||
return
|
||||
}
|
||||
|
||||
modbusParams := t.ConfigDefaults.Modbus.Types[values[ParamModbus].(string)].Params
|
||||
modbusParams := ConfigDefaults.Modbus.Types[values[ParamModbus].(string)].Params
|
||||
|
||||
// add the modbus params at the beginning
|
||||
t.Params = append(modbusParams, t.Params...)
|
||||
|
|
@ -46,7 +46,7 @@ func (t *Template) ModbusValues(renderMode string, values map[string]interface{}
|
|||
t.Render = fmt.Sprintf("%s\n%s", t.Render, modbusTmpl)
|
||||
}
|
||||
|
||||
modbusConfig := t.ConfigDefaults.Modbus
|
||||
modbusConfig := ConfigDefaults.Modbus
|
||||
_, modbusParam := t.ParamByName(ParamModbus)
|
||||
|
||||
modbusInterfaces := []string{}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue