Various configure / template updates (#1956)

- Standardize file and template names
- Move Senec template to http plugin
- Template fixes
- Added template documentation
- Update generation doc yaml files
- Visually separate eebus and sponsorship config
- Rename vzlogger templates to Volkszähler
- Add vzlogger template
- Remove loglevel support
This commit is contained in:
Andreas Linde 2021-12-01 10:31:54 +01:00 • committed by GitHub
parent 03e5f3f50c
commit 73016595c2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
89 changed files with 258 additions and 561 deletions

View file

@ -3,11 +3,9 @@ package configure
import (
"bytes"
_ "embed"
"fmt"
"text/template"
"github.com/Masterminds/sprig/v3"
"github.com/thoas/go-funk"
)
type device struct {
@ -40,7 +38,6 @@ type config struct {
PVs []string
Batteries []string
}
LogLevels []string
Hems string
EEBUS string
SponsorToken string
@ -50,26 +47,13 @@ type Configure struct {
config config
}
// AddLogLevel adds a log level for a specific device name to the configuration
func (c *Configure) AddLogLevel(name string) {
if name == "" || funk.ContainsString(c.config.LogLevels, name) {
return
}
c.config.LogLevels = append(c.config.LogLevels, name)
}
// AddDevice adds a device reference of a specific category to the configuration
// e.g. a PV meter to site.PVs
func (c *Configure) AddDevice(d device, category DeviceCategory) {
switch DeviceCategories[category].class {
case DeviceClassCharger:
c.AddLogLevel(d.LogLevel)
if c.config.EEBUS != "" {
c.AddLogLevel("eebus")
}
c.config.Chargers = append(c.config.Chargers, d)
case DeviceClassMeter:
c.AddLogLevel(d.LogLevel)
c.config.Meters = append(c.config.Meters, d)
switch DeviceCategories[category].categoryFilter {
case DeviceCategoryGridMeter:
@ -80,7 +64,6 @@ func (c *Configure) AddDevice(d device, category DeviceCategory) {
c.config.Site.Batteries = append(c.config.Site.Batteries, d.Name)
}
case DeviceClassVehicle:
c.AddLogLevel(d.LogLevel)
c.config.Vehicles = append(c.config.Vehicles, d)
}
}
@ -101,7 +84,6 @@ func (c *Configure) DevicesOfClass(class DeviceClass) []device {
// AddLoadpoint adds a loadpoint to the configuration
func (c *Configure) AddLoadpoint(l loadpoint) {
c.config.Loadpoints = append(c.config.Loadpoints, l)
c.AddLogLevel(fmt.Sprintf("lp-%d", 1+len(c.config.Loadpoints)))
}
// MetersOfCategory returns the number of configured meters of a given DeviceCategory

View file

@ -2,13 +2,6 @@ uri: 0.0.0.0:7070 # uri for ui
interval: 10s # control cycle interval
log: info
levels:
core: info
{{- if ne (len .LogLevels) 0 }}
{{- range .LogLevels }}
{{ . }}: info
{{- end }}
{{- end }}
{{- if ne (len .Meters) 0 }}
meters:

View file

@ -107,7 +107,6 @@ func (c *CmdConfigure) processDeviceValues(values map[string]interface{}, templa
// processDeviceRequirements handles device requirements
func (c *CmdConfigure) processDeviceRequirements(templateItem templates.Template) error {
if len(templateItem.Requirements.Description.String(c.lang)) > 0 {
fmt.Println()
fmt.Println(c.localizedString("Requirements_Title", nil))
fmt.Println(" ", templateItem.Requirements.Description.String(c.lang))
if len(templateItem.Requirements.URI) > 0 {
@ -117,6 +116,7 @@ func (c *CmdConfigure) processDeviceRequirements(templateItem templates.Template
// check if sponsorship is required
if templateItem.Requirements.Sponsorship && c.configuration.config.SponsorToken == "" {
fmt.Println("-- Sponsorship -----------------------------")
fmt.Println()
fmt.Println(c.localizedString("Requirements_Sponsorship_Title", nil))
fmt.Println()
@ -128,6 +128,8 @@ func (c *CmdConfigure) processDeviceRequirements(templateItem templates.Template
required: true})
c.configuration.config.SponsorToken = sponsortoken
sponsor.Subject = sponsortoken
fmt.Println()
fmt.Println("--------------------------------------------")
}
// check if we need to setup a HEMS
@ -141,6 +143,9 @@ func (c *CmdConfigure) processDeviceRequirements(templateItem templates.Template
// check if we need to setup an EEBUS HEMS
if templateItem.Requirements.Eebus {
if c.configuration.config.EEBUS == "" {
fmt.Println()
fmt.Println("-- EEBUS -----------------------------------")
fmt.Println()
eebusConfig, err := c.eebusCertificate()
if err != nil {
return fmt.Errorf("%s: %s", c.localizedString("Requirements_EEBUS_Cert_Error", nil), err)
@ -156,6 +161,8 @@ func (c *CmdConfigure) processDeviceRequirements(templateItem templates.Template
return err
}
c.configuration.config.EEBUS = string(eebusYaml)
fmt.Println()
fmt.Println("--------------------------------------------")
}
fmt.Println()

125
templates/README.md Normal file
View file

@ -0,0 +1,125 @@
# Templates folder documentation
## Folders
- defintion: hold all device templates definitons in yaml files
- charger: all charger templates
- meter: all meter templates
- vehicle: all vehicle templates
- docs: content is generated via `go generate ./..` using the above templates for the evcc documentation page to be used
## Template Documentation
The following describes each possible element in a yaml file
## `template`
`template` expects a unique template name for the current device class (charger, meter, vehicle are device classes)
## `description`
`description` expects a human readable description of the device, best language neutral and containing the name of the product
## `generic`
`generic: true` defines templates that are typically not a hardware product, but rather generic implementations that can be used by a variety of products (e.g. inverters with sunspec support) or for software components like vzlogger.
## `guidedsetup`
`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.
### `enable`
`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
#### `template`
`template` expects the linked device `template` value
#### `usage`
`usage` expects the meter usage type this device will be used for
**Possible values**:
- `grid`: for grid meters
- `pv`: for pv inverter/meter
- `battery`: for battery inverter/meter
## `requirements`
`requirements` provides an option to define various requirements / dependencies that need to be setup
**Possible Values**:
- `sponsorshipt: true`: If the device requires a sponsorship token
- `eebus: true`: If the device is accessed via the eebus protocol and thus requires the corresponding setup
- `hems: sma`: If the device can be used as an SMA HEMS device, only used for the SMA Home Manager 2.0 right now
- `description`: expects language specific texts via `de`, `en` to provide specific things the user has to do, e.g. minimum firmware versions or specific hardware setup requirements
- `uri`: a link providing more help on the requirements
## `loglevel`
`loglevel` defindes the name that can be used in the `levels` configuration for adjusting the log level of individual devices/components/...
## `paramsbase`
`paramsbase` allows to use a predefined set of params, so they don't need to be redefined in each template. The `example` and `default` values for each predefined value can be overwritten.
**Possible values**:
- `vehicle`: Provides a set of params that are used in most vehicles
## ´params`
`params` describes the set of parameters the user needs to provide a value for.
### `name`
`name` expects a name for the parameter, which will be used in the `render` section to reference the param and provide the user entered value.
**Note**: There a few default `name` values with specific internal meaning and consequences!
**Predefined name values**:
- `usage`: specifies a list of meter classes, the device can be used for. Possible values are `grid`, `pv`, `battery`, and `charger`
- `modbus`: specifies that this device is accessed via modbus. It requires the `choice` property to have a list of possible interface values the device provides. These values can be `rs485` and `tcpip`. The command will use either to ask the appropriate questions and settings. The `render` section needs to include the string `{{include "modbus" .}}` in all places where the configuration needs modbus settings.
### `required`
`required: true` defines if the user has to provide a value. Default is `false`
### `mask`
`mask: true` defines if the user input should be masked, e.g. for passwords. Defaut is `false`
### `default`
`default` defines a default value to be used. For these cases the user can then simply press enter in the CLI.
### `example`
`example` provides an example value, so the user can get an idea of what is expected and what to look out for
### `valuetype`
`valuetype` allows to define the value type to let the CLI verify the user provided content
**Possible values**:
- `string`: for string values (default)
- `bool`: for `true` and `false` values
- `number`: for int values
- `float`: for float values
### `help`
`help` expects language specific help texts via `de`, `en`
## `render`
`render` contains the internal device configuration. All `param` `name` values can be used as a template variable, e.g. `{{ .host }}` for a param named `host`. The content is a go template, so all of go template feature can be used, e.g. `{{- if ... }}` statements, etc.

View file

@ -6,7 +6,6 @@ requirements:
params:
- name: ski
required: true
example:
help:
en: The SKI of the wallbox, can usually be found on the web interface of the wallbox
de: Die SKI der Wallbox, ist üblicherweise im Web Interface der Wallbox zu finden

View file

@ -1,21 +0,0 @@
template: pmcc
description: Porsche Mobile Charger Connect
loglevel: eebus
requirements:
eebus: true
params:
- name: ski
required: true
help:
en: The SKI of the wallbox, can usually be found on the web interface of the wallbox
de: Die SKI der Wallbox, ist üblicherweise im Web Interface der Wallbox zu finden
- name: enforcePVLimits
default: true
valuetype: bool
help:
en: Use PV charging via overload protection (just as usual wallboxes do it) with vehicles supporting ISO15519
de: Verwende PV Laden über eine Ladebegrenzung (wie herkömmliche Wallboxen) bei Fahrzeugen mit Unterstützung von ISO15118
render: |
type: eebus
ski: {{ .ski }}
forcePVLimits: {{ .enforcePVLimits }}

View file

@ -1,14 +0,0 @@
template: pmcc_http
description: Porsche Mobile Charger Connect (HTTP API)
loglevel: mcc
params:
- name: host
required: true
example: 192.0.2.2
- name: password
mask: true
required: true
render: |
type: mcc
uri: https://{{ .host }}
password: {{ .password }}

View file

@ -1,15 +0,0 @@
template: pmcp
description: Porsche Mobile Charger Plus
loglevel: eebus
requirements:
eebus: true
params:
- name: ski
required: true
help:
en: The SKI of the wallbox, can usually be found on the web interface of the wallbox
de: Die SKI der Wallbox, ist üblicherweise im Web Interface der Wallbox zu finden
render: |
type: eebus
ski: {{ .ski }}
forcePVLimits: true

View file

@ -1,23 +0,0 @@
template: tinkerforge_warp
description: TinkerForge WARP Charger
requirements:
description:
en: A MQTT Broker software needs to be running on a computer. The MQTT connection also needs to be configured in the wallbox.
de: Es muss ein sogennanter MQTT Broker auf einem Computer installiert sein. Die MQTT Verbindung muss in der Wallbox eingerichtet sein.
uri: https://docs.evcc.io/docs/devices/chargers#tinkerforge-warp-charger
params:
- name: host
required: true
example: 192.0.2.2
- name: port
default: 1883
- name: topic
default: warp
- name: timeout
default: 30s
render: |
type: warp
broker: {{ .host }}:{{ .port }}
topic: {{ .topic }}
useMeter: false
timeout: {{ .timeout }}

View file

@ -1,23 +0,0 @@
template: tinkerforge_warp_pro
description: TinkerForge WARP Charger
requirements:
description:
en: A MQTT Broker software needs to be running on a computer. The MQTT connection also needs to be configured in the wallbox.
de: Es muss ein sogennanter MQTT Broker auf einem Computer installiert sein. Die MQTT Verbindung muss in der Wallbox eingerichtet sein.
uri: https://docs.evcc.io/docs/devices/chargers#tinkerforge-warp-charger
params:
- name: host
required: true
example: 192.0.2.2
- name: port
default: 1883
- name: topic
default: warp
- name: timeout
default: 30s
render: |
type: warp
broker: {{ .host }}:{{ .port }}
topic: {{ .topic }}
useMeter: true
timeout: {{ .timeout }}

View file

@ -1,17 +0,0 @@
template: wallbe_pre2019
description: Wallbe (Eco, Pro) (pre ~2019)
requirements:
description:
en: The Wallbe must be connected using Ethernet and the DIP switch 10 must be set to 'ON'.
de: Die Wallbox muss über ein Netzwerkkabel angebunden sein und im Gerät muss der DIP Schalter 10 auf 'ON' gestellt sein.
uri: https://docs.evcc.io/docs/devices/chargers#wallbe-ecopro
params:
- name: host
required: true
example: 192.0.2.2
- name: port
default: 502
render: |
type: wallbe
uri: {{ .host }}:{{ .port }}
legacy: true # set only for older Wallbe devices (pre ~2019, old controller firmware)

View file

@ -1,21 +0,0 @@
template: wallbe_pre2019_meter
description: Wallbe (Eco, Pro) (pre ~2019) with Meter
requirements:
description:
en: The Wallbe must be connected using Ethernet and the DIP switch 10 must be set to 'ON'.
de: Die Wallbox muss über ein Netzwerkkabel angebunden sein und im Gerät muss der DIP Schalter 10 auf 'ON' gestellt sein.
uri: https://docs.evcc.io/docs/devices/chargers#wallbe-ecopro
params:
- name: host
required: true
example: 192.0.2.2
- name: port
default: 502
render: |
type: wallbe
uri: {{ .host }}:{{ .port }}
legacy: true # set only for older Wallbe devices (pre ~2019, old controller firmware)
meter: # only if a charge meter is connected to the controller
power: true
energy: true
currents: true

View file

@ -1,21 +0,0 @@
template: wallbe_meter
description: Wallbe (Eco, Pro) with Meter
requirements:
description:
en: The Wallbe must be connected using Ethernet and the DIP switch 10 must be set to 'ON'.
de: Die Wallbox muss über ein Netzwerkkabel angebunden sein und im Gerät muss der DIP Schalter 10 auf 'ON' gestellt sein.
uri: https://docs.evcc.io/docs/devices/chargers#wallbe-ecopro
params:
- name: host
required: true
example: 192.0.2.2
- name: port
default: 502
render: |
type: wallbe
uri: {{ .host }}:{{ .port }}
legacy: false # set only for older Wallbe devices (pre ~2019, old controller firmware)
meter: # only if a charge meter is connected to the controller
power: true
energy: true
currents: true

View file

@ -1,22 +0,0 @@
template: wallbe_sdm
description: Wallbe (Eco, Pro) with SDM Meter
requirements:
description:
en: The Wallbe must be connected using Ethernet and the DIP switch 10 must be set to 'ON'.
de: Die Wallbox muss über ein Netzwerkkabel angebunden sein und im Gerät muss der DIP Schalter 10 auf 'ON' gestellt sein.
uri: https://docs.evcc.io/docs/devices/chargers#wallbe-ecopro
params:
- name: host
required: true
example: 192.0.2.2
- name: port
default: 502
render: |
type: wallbe
uri: {{ .host }}:{{ .port }}
legacy: false # set only for older Wallbe devices (pre ~2019, old controller firmware)
meter: # only if a charge meter is connected to the controller
power: true
energy: true
currents: true
encoding: sdm # add only when SDM meter is connected, see https://github.com/evcc-io/evcc/discussions/1398

View file

@ -1,4 +1,4 @@
template: cfos_meter
template: cfos-meter
description: cFos PowerBrain
requirements:
sponsorship: true

View file

@ -1,4 +1,4 @@
template: huawei_sun2000_8ktl
template: huawei-sun2000-8ktl
description: Huawei SUN2000-8KTL
params:
- name: usage

View file

@ -1,4 +1,4 @@
template: kostal_piko_energy_meter
template: kostal-piko-energy-meter
description: Kostal Piko (BA) Energy Meter
params:
- name: usage

View file

@ -1,4 +1,4 @@
template: kostal_piko
template: kostal-piko
description: Kostal Piko + Piko BA
guidedsetup:
enable: true

View file

@ -1,9 +1,9 @@
template: kostal_plenticore
template: kostal-plenticore
description: Kostal Plenticore Hybrid
guidedsetup:
enable: true
linked:
- template: kostal_smart_energy_meter
- template: kostal-smart-energy-meter
usage: grid
params:
- name: usage

View file

@ -1,4 +1,4 @@
template: kostal_smart_energy_meter
template: kostal-smart-energy-meter
description: Kostal Smart Energy Meter
params:
- name: usage

View file

@ -1,22 +0,0 @@
template: lg_ess_home_8_10
description: LG ESS Home 8/10
guidedsetup:
enable: true
params:
- name: usage
choice: [ "grid", "pv", "battery" ]
- name: host
required: true
example: 192.0.2.2
- name: registration
required: true
example: "DE200..."
help:
en: Registration number of the LG ESS HOME inverter.
de: Registriernummer des LG ESS HOME Wechselrichters.
render: |
type: lgess
usage: {{ .usage }}
# uri and password are only required once if multiple lgess usages are defined
uri: https://{{ .host }}
password: {{ .registration }}

View file

@ -1,4 +1,4 @@
template: powerfox_poweropti
template: powerfox-poweropti
description: Powerfox Poweropti (Cloud)
params:
- name: usage

View file

@ -1,15 +0,0 @@
template: rct_power
description: RCT Power
guidedsetup:
enable: true
params:
- name: usage
choice: [ "grid", "pv", "battery" ]
- name: host
required: true
example: 192.0.2.2
render: |
type: rct
uri: {{ .host }}
usage: {{ .usage }}
cache: 2s

View file

@ -1,5 +1,5 @@
template: senec_home_linux
description: SENEC.Home (Linux)
template: senec-home
description: SENEC.Home
guidedsetup:
enable: true
params:
@ -13,22 +13,34 @@ params:
render: |
type: custom
power:
source: script
timeout: 5s
cmd: >
source: http
unpack: hex
decode: float32
uri: http://{{ .host }}/lala.cgi
method: POST
headers:
- content-type: application/json
{{- if eq .usage "grid" }}
/bin/bash -c "set +H; curl --data '{\"ENERGY\":{\"GUI_GRID_POW\":\"\"}}' --header \"Content-Type: application/json\" --request POST http://{{ .host }}/lala.cgi | jq .ENERGY.GUI_GRID_POW | python3 -c 'import struct;print(struct.unpack(\"!f\",bytes.fromhex(input()[4:12]))[0])'"
body: '{"ENERGY":{"GUI_GRID_POW":""}}'
jq: .ENERGY.GUI_GRID_POW | sub("fl_"; "")
scale: -1
{{- end }}
{{- if eq .usage "pv" }}
/bin/bash -c "set +H; curl --data '{\"ENERGY\":{\"GUI_INVERTER_POWER\":\"\"}}' --header \"Content-Type: application/json\" --request POST http://{{ .host }}/lala.cgi | jq .ENERGY.GUI_INVERTER_POWER | python3 -c 'import struct;print(struct.unpack(\"!f\",bytes.fromhex(input()[4:12]))[0])'"
body: '{"ENERGY":{"GUI_INVERTER_POWER":""}}'
jq: .ENERGY.GUI_INVERTER_POWER | sub("fl_"; "")
{{- end }}
{{- if eq .usage "battery" }}
/bin/bash -c "set +H; curl --data '{\"ENERGY\":{\"GUI_BAT_DATA_POWER\":\"\"}}' --header \"Content-Type: application/json\" --request POST http://{{ .host }}/lala.cgi | jq .ENERGY.GUI_BAT_DATA_POWER | python3 -c 'import struct;print(struct.unpack(\"!f\",bytes.fromhex(input()[4:12]))[0])'"
body: '{"ENERGY":{"GUI_BAT_DATA_POWER":""}}'
jq: .ENERGY.GUI_BAT_DATA_POWER | sub("fl_"; "")
scale: -1
soc:
source: script
cmd: >
/bin/bash -c "set +H; curl --data '{\"ENERGY\":{\"GUI_BAT_DATA_FUEL_CHARGE\":\"\"}}' --header \"Content-Type: application/json\" --request POST http://{{ .host }}/lala.cgi | jq .ENERGY.GUI_BAT_DATA_FUEL_CHARGE | python3 -c 'import struct;print(struct.unpack(\"!f\",bytes.fromhex(input()[4:12]))[0])'"
timeout: 5s
source: http
uri: http://{{ .host }}/lala.cgi
method: POST
headers:
- content-type: application/json
body: '{"ENERGY":{"GUI_BAT_DATA_FUEL_CHARGE":""}}'
jq: .ENERGY.GUI_BAT_DATA_FUEL_CHARGE | sub("fl_"; "")
unpack: hex
decode: float32
{{- end }}

View file

@ -1,29 +0,0 @@
template: shelly_3em
description: Shelly 3EM
params:
- name: usage
choice: [ "grid" ]
- name: host
required: true
example: 192.0.2.2
render: |
type: custom
power:
source: http
uri: http://{{ .host }}/status
jq: .emeters | map(.power) | add
energy:
source: http
uri: http://{{ .host }}/status
jq: .emeters | map(.total) | add
scale: 0.001
currents:
- source: http
uri: http://{{ .host }}/emeter/0
jq: .current
- source: http
uri: http://{{ .host }}/emeter/1
jq: .current
- source: http
uri: http://{{ .host }}/emeter/2
jq: .current

View file

@ -1,28 +0,0 @@
template: solarwatt_myreserve
description: Solarwatt MyReserve
guidedsetup:
enable: true
params:
- name: usage
choice: [ "grid", "pv", "battery" ]
- name: host
required: true
example: 192.0.2.2
render: |
type: custom
power:
source: http
uri: http://{{ .host }}/rest/kiwigrid/wizard/devices # EnergyManager
{{- if eq .usage "grid" }}
jq: .result.items[] | select(.deviceModel[].deviceClass == "com.kiwigrid.devices.location.Location" ) | .tagValues.PowerConsumedFromGrid.value - .tagValues.PowerOut.value
{{- end }}
{{- if eq .usage "pv" }}
jq: .result.items[] | select(.deviceModel[].deviceClass == "com.kiwigrid.devices.location.Location" ) | .tagValues.PowerProduced.value
{{- end }}
{{- if eq .usage "battery" }}
jq: .result.items[] | select(.deviceModel[].deviceClass == "com.kiwigrid.devices.location.Location" ) | .tagValues.PowerConsumedFromStorage.value - .tagValues.PowerBuffered.value
soc:
source: http
uri: http://{{ .host }}/rest/kiwigrid/wizard/devices # EnergyManager
jq: .result.items[] | select(.deviceModel[].deviceClass == "com.kiwigrid.devices.solarwatt.MyReserve") | .tagValues.StateOfCharge.value
{{- end }}

View file

@ -1,31 +0,0 @@
template: sonnenbatterie_eco10
description: Sonnenbatterie Eco/10
guidedsetup:
enable: true
params:
- name: usage
choice: [ "grid", "pv", "battery" ]
- name: host
required: true
example: 192.0.2.2
- name: port
default: 8080
render: |
type: custom
power:
source: http
uri: http://{{ .host }}:{{ .port }}/api/v1/status
{{- if eq .usage "grid" }}
jq: .GridFeedIn_W
scale: -1 # reverse direction
{{- end }}
{{- if eq .usage "pv" }}
jq: .Production_W
{{- end }}
{{- if eq .usage "battery" }}
jq: .Pac_total_W
soc:
source: http
uri: http://{{ .host }}:{{ .port }}/api/v1/status
jq: .USOC
{{- end }}

View file

@ -1,5 +1,5 @@
template: sunspec
description: SunSpec compliant inverter
description: Inverter / Wechselrichter (SunSpec)
generic: true
params:
- name: usage

View file

@ -1,4 +1,4 @@
template: tesla_powerwall
template: tesla-powerwall
description: Tesla Powerwall
guidedsetup:
enable: true

View file

@ -1,4 +1,4 @@
template: varta_energiespeicher
template: varta-energiespeicher
description: VARTA Energiespeicher
guidedsetup:
enable: true

View file

@ -1,5 +1,5 @@
template: vzlogger_http
description: vzlogger (HTTP)
template: volkszaehler-http
description: Volkszähler (HTTP API)
generic: true
params:
- name: usage

View file

@ -1,5 +1,5 @@
template: vzlogger_importexport
description: vzlogger (Import & Export getrennt)
template: volkszaehler-importexport
description: Volkszähler (HTTP API, Import & Export)
generic: true
params:
- name: usage

View file

@ -1,5 +1,5 @@
template: vzlogger_ws
description: vzlogger (Websocket)
template: volkszaehler-ws
description: Volkszähler (WebSocket API)
generic: true
params:
- name: usage

View file

@ -0,0 +1,19 @@
template: vzlogger
description: vzlogger
generic: true
params:
- name: usage
choice: [ "grid" ]
- name: host
example: 192.0.2.2
required: true
- name: port
default: 8081
- name: uuid
required: true
render: |
type: custom
power: # power reading
source: http # use http plugin
uri: http://{{ .host }}:{{ .port }}/
jq: .data[] | select(.uuid=="{{ .uuid }}") | .tuples[0][1] # parse response json

View file

@ -1,20 +0,0 @@
template: niu
description: NIU E-Scooter
params:
- name: title
- name: user
required: true
- name: password
required: true
mask: true
- name: serial
required: true
render: |
type: niu
{{- if ne .title "" }}
title: {{ .title }}
{{- end }}
user: {{ .user }} # NIU app user
password: {{ .password }} # NIU app password
serial: {{ .serial }} # NIU E-Scooter serial number like shown in app
capacity: 4

View file

@ -1,5 +0,0 @@
type: template
template: pmcc
description: Porsche Mobile Charger Connect
ski: # Die SKI der Wallbox, ist üblicherweise im Web Interface der Wallbox zu finden
enforcePVLimits: true # Verwende PV Laden über eine Ladebegrenzung (wie herkömmliche Wallboxen) bei Fahrzeugen mit Unterstützung von ISO15118

View file

@ -1,5 +0,0 @@
type: template
template: pmcc_http
description: Porsche Mobile Charger Connect (HTTP API)
host: 192.0.2.2
password:

View file

@ -1,4 +0,0 @@
type: template
template: pmcp
description: Porsche Mobile Charger Plus
ski: # Die SKI der Wallbox, ist üblicherweise im Web Interface der Wallbox zu finden

View file

@ -1,7 +0,0 @@
type: template
template: tinkerforge_warp
description: TinkerForge WARP Charger
host: 192.0.2.2
port: 1883
topic: warp
timeout: 30s

View file

@ -1,7 +0,0 @@
type: template
template: tinkerforge_warp_pro
description: TinkerForge WARP Charger
host: 192.0.2.2
port: 1883
topic: warp
timeout: 30s

View file

@ -1,5 +0,0 @@
type: template
template: wallbe_meter
description: Wallbe (Eco, Pro) with Meter
host: 192.0.2.2
port: 502

View file

@ -1,5 +0,0 @@
type: template
template: wallbe_pre2019
description: Wallbe (Eco, Pro) (pre ~2019)
host: 192.0.2.2
port: 502

View file

@ -1,5 +0,0 @@
type: template
template: wallbe_pre2019_meter
description: Wallbe (Eco, Pro) (pre ~2019) with Meter
host: 192.0.2.2
port: 502

View file

@ -1,5 +0,0 @@
type: template
template: wallbe_sdm
description: Wallbe (Eco, Pro) with SDM Meter
host: 192.0.2.2
port: 502

View file

@ -1,4 +1,4 @@
type: template
template: cfos_meter
template: cfos-meter
description: cFos PowerBrain
usage: charger

View file

@ -1,4 +1,4 @@
type: template
template: huawei_sun2000_8ktl
template: huawei-sun2000-8ktl
description: Huawei SUN2000-8KTL
usage: pv

View file

@ -1,5 +1,5 @@
type: template
template: kostal_piko_energy_meter
template: kostal-piko-energy-meter
description: Kostal Piko (BA) Energy Meter
usage: grid
host: 192.0.2.2

View file

@ -1,5 +1,5 @@
type: template
template: kostal_piko
template: kostal-piko
description: Kostal Piko + Piko BA
usage: grid
host: 192.0.2.2

View file

@ -1,5 +1,5 @@
type: template
template: kostal_piko
template: kostal-piko
description: Kostal Piko + Piko BA
usage: pv
host: 192.0.2.2

View file

@ -1,5 +1,5 @@
type: template
template: kostal_plenticore
template: kostal-plenticore
description: Kostal Plenticore Hybrid
usage: battery
host: 192.0.2.2

View file

@ -1,5 +1,5 @@
type: template
template: kostal_plenticore
template: kostal-plenticore
description: Kostal Plenticore Hybrid
usage: pv
host: 192.0.2.2

View file

@ -1,5 +1,5 @@
type: template
template: kostal_smart_energy_meter
template: kostal-smart-energy-meter
description: Kostal Smart Energy Meter
usage: grid
host: 192.0.2.2

View file

@ -1,6 +0,0 @@
type: template
template: lg_ess_home_8_10
description: LG ESS Home 8/10
usage: battery
host: 192.0.2.2
registration: DE200... # Registriernummer des LG ESS HOME Wechselrichters.

View file

@ -1,6 +0,0 @@
type: template
template: lg_ess_home_8_10
description: LG ESS Home 8/10
usage: grid
host: 192.0.2.2
registration: DE200... # Registriernummer des LG ESS HOME Wechselrichters.

View file

@ -1,6 +0,0 @@
type: template
template: lg_ess_home_8_10
description: LG ESS Home 8/10
usage: pv
host: 192.0.2.2
registration: DE200... # Registriernummer des LG ESS HOME Wechselrichters.

View file

@ -1,5 +1,5 @@
type: template
template: powerfox_poweropti
template: powerfox-poweropti
description: Powerfox Poweropti (Cloud)
usage: grid
user:

View file

@ -1,5 +0,0 @@
type: template
template: rct_power
description: RCT Power
usage: battery
host: 192.0.2.2

View file

@ -1,5 +0,0 @@
type: template
template: rct_power
description: RCT Power
usage: grid
host: 192.0.2.2

View file

@ -1,5 +0,0 @@
type: template
template: rct_power
description: RCT Power
usage: pv
host: 192.0.2.2

View file

@ -0,0 +1,6 @@
type: template
template: senec-home
description: SENEC.Home
usage: battery
host: 192.0.2.2
port: 8080

View file

@ -0,0 +1,6 @@
type: template
template: senec-home
description: SENEC.Home
usage: grid
host: 192.0.2.2
port: 8080

View file

@ -0,0 +1,6 @@
type: template
template: senec-home
description: SENEC.Home
usage: pv
host: 192.0.2.2
port: 8080

View file

@ -1,6 +0,0 @@
type: template
template: senec_home_linux
description: SENEC.Home (Linux)
usage: battery
host: 192.0.2.2
port: 8080

View file

@ -1,6 +0,0 @@
type: template
template: senec_home_linux
description: SENEC.Home (Linux)
usage: grid
host: 192.0.2.2
port: 8080

View file

@ -1,6 +0,0 @@
type: template
template: senec_home_linux
description: SENEC.Home (Linux)
usage: pv
host: 192.0.2.2
port: 8080

View file

@ -1,5 +0,0 @@
type: template
template: shelly_3em
description: Shelly 3EM
usage: grid
host: 192.0.2.2

View file

@ -1,5 +0,0 @@
type: template
template: solarwatt_myreserve
description: Solarwatt MyReserve
usage: battery
host: 192.0.2.2

View file

@ -1,5 +0,0 @@
type: template
template: solarwatt_myreserve
description: Solarwatt MyReserve
usage: grid
host: 192.0.2.2

View file

@ -1,5 +0,0 @@
type: template
template: solarwatt_myreserve
description: Solarwatt MyReserve
usage: pv
host: 192.0.2.2

View file

@ -1,6 +0,0 @@
type: template
template: sonnenbatterie_eco10
description: Sonnenbatterie Eco/10
usage: battery
host: 192.0.2.2
port: 8080

View file

@ -1,6 +0,0 @@
type: template
template: sonnenbatterie_eco10
description: Sonnenbatterie Eco/10
usage: grid
host: 192.0.2.2
port: 8080

View file

@ -1,6 +0,0 @@
type: template
template: sonnenbatterie_eco10
description: Sonnenbatterie Eco/10
usage: pv
host: 192.0.2.2
port: 8080

View file

@ -1,6 +1,6 @@
type: template
template: sunspec
description: SunSpec compliant inverter
description: Inverter / Wechselrichter (SunSpec)
usage: battery
host: 192.0.2.2
id: 1

View file

@ -1,6 +1,6 @@
type: template
template: sunspec
description: SunSpec compliant inverter
description: Inverter / Wechselrichter (SunSpec)
usage: grid
host: 192.0.2.2
id: 1

View file

@ -1,6 +1,6 @@
type: template
template: sunspec
description: SunSpec compliant inverter
description: Inverter / Wechselrichter (SunSpec)
usage: pv
host: 192.0.2.2
id: 1

View file

@ -1,5 +1,5 @@
type: template
template: tesla_powerwall
template: tesla-powerwall
description: Tesla Powerwall
usage: battery
host: 192.0.2.2

View file

@ -1,5 +1,5 @@
type: template
template: tesla_powerwall
template: tesla-powerwall
description: Tesla Powerwall
usage: grid
host: 192.0.2.2

View file

@ -1,5 +1,5 @@
type: template
template: tesla_powerwall
template: tesla-powerwall
description: Tesla Powerwall
usage: pv
host: 192.0.2.2

View file

@ -1,5 +1,5 @@
type: template
template: varta_energiespeicher
template: varta-energiespeicher
description: VARTA Energiespeicher
usage: battery
host: 192.0.2.2

View file

@ -1,5 +1,5 @@
type: template
template: varta_energiespeicher
template: varta-energiespeicher
description: VARTA Energiespeicher
usage: grid
host: 192.0.2.2

View file

@ -1,5 +1,5 @@
type: template
template: varta_energiespeicher
template: varta-energiespeicher
description: VARTA Energiespeicher
usage: pv
host: 192.0.2.2

View file

@ -0,0 +1,7 @@
type: template
template: volkszaehler-http
description: Volkszähler (HTTP API)
usage: grid
host: 192.0.2.2
port: 80
uuid:

View file

@ -0,0 +1,8 @@
type: template
template: volkszaehler-importexport
description: Volkszähler (HTTP API, Import & Export)
usage: grid
host: 192.0.2.2
port: 80
importuuid:
exportuuid:

View file

@ -0,0 +1,7 @@
type: template
template: volkszaehler-ws
description: Volkszähler (WebSocket API)
usage: grid
host: 192.0.2.2
port: 8082
uuid:

View file

@ -0,0 +1,7 @@
type: template
template: vzlogger
description: vzlogger
usage: grid
host: 192.0.2.2
port: 8081
uuid:

View file

@ -1,7 +0,0 @@
type: template
template: vzlogger_http
description: vzlogger (HTTP)
usage: grid
host: 192.0.2.2
port: 80
uuid:

View file

@ -1,8 +0,0 @@
type: template
template: vzlogger_importexport
description: vzlogger (Import & Export getrennt)
usage: grid
host: 192.0.2.2
port: 80
importuuid:
exportuuid:

View file

@ -1,7 +0,0 @@
type: template
template: vzlogger_ws
description: vzlogger (Websocket)
usage: grid
host: 192.0.2.2
port: 8082
uuid:

View file

@ -1,6 +0,0 @@
type: template
template: niu
description: NIU E-Scooter
user:
password:
serial: