From 21a2b9424a4e9bb70a19f4d094df8be1e29335fc Mon Sep 17 00:00:00 2001 From: Michael Geers Date: Mon, 28 Aug 2023 22:31:00 +0200 Subject: [PATCH] translation for device templates --- docs/devices/chargers.mdx | 118 +- docs/devices/meters.mdx | 184 +- docs/devices/vehicles.mdx | 232 +- .../current/_phase_switch_supported.mdx | 2 +- .../current/devices/_category_.json | 4 + .../current/devices/chargers.mdx | 2126 ++++++ .../devices/chargers/_generic_support.mdx | 21 + .../devices/chargers/_switchable_sockets.mdx | 41 + .../current/devices/meters.mdx | 5795 +++++++++++++++++ .../devices/meters/_generic_support.mdx | 23 + .../current/devices/vehicles.mdx | 731 +++ .../devices/vehicles/_generic_support.mdx | 18 + .../current/devices/wallbe_eco_dip10.jpeg | Bin 0 -> 235407 bytes src/generateFromTemplate.js | 22 +- 14 files changed, 9042 insertions(+), 275 deletions(-) create mode 100644 i18n/en/docusaurus-plugin-content-docs/current/devices/_category_.json create mode 100644 i18n/en/docusaurus-plugin-content-docs/current/devices/chargers.mdx create mode 100644 i18n/en/docusaurus-plugin-content-docs/current/devices/chargers/_generic_support.mdx create mode 100644 i18n/en/docusaurus-plugin-content-docs/current/devices/chargers/_switchable_sockets.mdx create mode 100644 i18n/en/docusaurus-plugin-content-docs/current/devices/meters.mdx create mode 100644 i18n/en/docusaurus-plugin-content-docs/current/devices/meters/_generic_support.mdx create mode 100644 i18n/en/docusaurus-plugin-content-docs/current/devices/vehicles.mdx create mode 100644 i18n/en/docusaurus-plugin-content-docs/current/devices/vehicles/_generic_support.mdx create mode 100644 i18n/en/docusaurus-plugin-content-docs/current/devices/wallbe_eco_dip10.jpeg diff --git a/docs/devices/chargers.mdx b/docs/devices/chargers.mdx index 051ed554f8..442373ae20 100644 --- a/docs/devices/chargers.mdx +++ b/docs/devices/chargers.mdx @@ -285,7 +285,7 @@ chargers: type: template template: bender host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -438,8 +438,8 @@ chargers: - name: my_charger type: template template: daheimladen - token: # Sie bekommen dieses Access Token vom Daheimladen Support: info@daheimladen.de. (Optional) - stationid: # Die Seriennummer, welche auf dem Bildschirm der Wallbox angezeigt wird. (Optional) + token: # Sie bekommen dieses Access Token vom Daheimladen Support: info@daheimladen.de. (optional) + stationid: # Die Seriennummer, welche auf dem Bildschirm der Wallbox angezeigt wird. (optional) ``` @@ -454,7 +454,7 @@ chargers: type: template template: daheimladen-mb host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -527,7 +527,7 @@ chargers: type: template template: bender host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -637,7 +637,7 @@ chargers: type: template template: bender host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -656,7 +656,7 @@ chargers: type: template template: etrel host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -673,7 +673,7 @@ chargers: type: template template: etrel-duo host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -687,7 +687,7 @@ chargers: - name: my_charger type: template template: elvi - meter: true # Deaktiveren wenn die Wallbox keinen integrierten Zähler verbaut hat (Optional) + meter: true # Deaktiveren wenn die Wallbox keinen integrierten Zähler verbaut hat (optional) ``` @@ -738,7 +738,7 @@ chargers: type: template template: fronius-wattpilot host: 192.0.2.2 # IP-Adresse oder Hostname - password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (Optional) + password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional) ``` @@ -755,7 +755,7 @@ chargers: type: template template: bender host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -920,7 +920,7 @@ chargers: type: template template: bender host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1000,7 +1000,7 @@ chargers: type: template template: phoenix-charx host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1017,7 +1017,7 @@ chargers: type: template template: bender host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1112,8 +1112,8 @@ chargers: type: template template: openevse host: 192.0.2.2 # IP-Adresse oder Hostname - user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (Optional) - password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (Optional) + user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (optional) + password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional) ``` @@ -1158,7 +1158,7 @@ chargers: type: template template: bender host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1186,7 +1186,7 @@ chargers: type: template template: pcelectric-garo host: 192.0.2.2 # IP-Adresse oder Hostname - port: 8080 # Port (Optional) + port: 8080 # Port (optional) ``` @@ -1203,7 +1203,7 @@ chargers: type: template template: phoenix-charx host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1218,7 +1218,7 @@ chargers: type: template template: phoenix-em-eth host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1233,7 +1233,7 @@ chargers: type: template template: phoenix-ev-eth host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1272,7 +1272,7 @@ chargers: type: template template: pmcc ski: # Die SKI der Wallbox, üblicherweise im Web Interface der Wallbox zu finden - ip: 192.0.2.2 # IP-Adresse (Optional) + ip: 192.0.2.2 # IP-Adresse (optional) ``` @@ -1285,7 +1285,7 @@ chargers: type: template template: pmcp ski: # Die SKI der Wallbox, üblicherweise im Web Interface der Wallbox zu finden - ip: 192.0.2.2 # IP-Adresse (Optional) + ip: 192.0.2.2 # IP-Adresse (optional) ``` @@ -1540,7 +1540,7 @@ chargers: type: template template: etrel host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1581,7 +1581,7 @@ chargers: type: template template: bender host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1614,9 +1614,9 @@ chargers: type: template template: tinkerforge-warp host: 192.0.2.2 # IP Adresse oder der Hostname des MQTT Brokers - port: 1883 # MQTT Broker Port (Optional) - topic: warp # Topic (ohne / am Anfang) (Optional) - energymanager: # EnergyManager MQTT Topic (falls installiert) (Optional) + port: 1883 # MQTT Broker Port (optional) + topic: warp # Topic (ohne / am Anfang) (optional) + energymanager: # EnergyManager MQTT Topic (falls installiert) (optional) ``` @@ -1633,9 +1633,9 @@ chargers: type: template template: tinkerforge-warp host: 192.0.2.2 # IP Adresse oder der Hostname des MQTT Brokers - port: 1883 # MQTT Broker Port (Optional) - topic: warp # Topic (ohne / am Anfang) (Optional) - energymanager: # EnergyManager MQTT Topic (falls installiert) (Optional) + port: 1883 # MQTT Broker Port (optional) + topic: warp # Topic (ohne / am Anfang) (optional) + energymanager: # EnergyManager MQTT Topic (falls installiert) (optional) ``` @@ -1652,7 +1652,7 @@ chargers: type: template template: bender host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1732,7 +1732,7 @@ chargers: type: template template: wallbe host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1747,7 +1747,7 @@ chargers: type: template template: wallbe-meter host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1762,7 +1762,7 @@ chargers: type: template template: wallbe-pre2019 host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1777,7 +1777,7 @@ chargers: type: template template: wallbe-pre2019-meter host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1839,7 +1839,7 @@ chargers: type: template template: bender host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1856,7 +1856,7 @@ chargers: type: template template: webasto-next host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1889,9 +1889,9 @@ chargers: - name: my_charger type: template template: zaptec - id: # Wallbox ID (Optional) - user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (Optional) - password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (Optional) + id: # Wallbox ID (optional) + user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (optional) + password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional) ``` @@ -1930,7 +1930,7 @@ chargers: type: template template: eebus ski: # Die SKI der Wallbox, üblicherweise im Web Interface der Wallbox zu finden - ip: 192.0.2.2 # IP-Adresse (Optional) + ip: 192.0.2.2 # IP-Adresse (optional) ``` @@ -2012,11 +2012,11 @@ chargers: - name: my_charger type: template template: fritzdect - uri: https://fritz.box # HTTP(S) Adresse (Optional) + uri: https://fritz.box # HTTP(S) Adresse (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) ain: 307788992233 # Die AIN ist auf dem Typenschild auf der Geräterückseite aufgedruckt. Bei führenden Nullen bitte in doppelte Hochkommata setzen. - standbypower: 15 # Leistung oberhalb des angegebenen Wertes wird als Ladeleistung gewertet (Optional) + standbypower: 15 # Leistung oberhalb des angegebenen Wertes wird als Ladeleistung gewertet (optional) ``` @@ -2029,11 +2029,11 @@ chargers: type: template template: homematic host: 192.0.2.2 # IP-Adresse oder Hostname - port: 2010 # Port (Optional) + port: 2010 # Port (optional) device: '0001EE89AAD848' # Homematic Geräte Id, wie im CCU Webfrontend angezeigt. - user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (Optional) - password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (Optional) - standbypower: 15 # Leistung oberhalb des angegebenen Wertes wird als Ladeleistung gewertet (Optional) + user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (optional) + password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional) + standbypower: 15 # Leistung oberhalb des angegebenen Wertes wird als Ladeleistung gewertet (optional) ``` @@ -2046,7 +2046,7 @@ chargers: type: template template: homewizard host: 192.0.2.2 # IP-Adresse oder Hostname - standbypower: 15 # Leistung oberhalb des angegebenen Wertes wird als Ladeleistung gewertet (Optional) + standbypower: 15 # Leistung oberhalb des angegebenen Wertes wird als Ladeleistung gewertet (optional) ``` @@ -2059,7 +2059,7 @@ chargers: type: template template: mystrom host: 192.0.2.2 # IP-Adresse oder Hostname - standbypower: 15 # Leistung oberhalb des angegebenen Wertes wird als Ladeleistung gewertet (Optional) + standbypower: 15 # Leistung oberhalb des angegebenen Wertes wird als Ladeleistung gewertet (optional) ``` @@ -2072,10 +2072,10 @@ chargers: type: template template: shelly host: 192.0.2.2 # IP-Adresse oder Hostname - user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (Optional) - password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (Optional) - channel: 0 # Optional - standbypower: 15 # Leistung oberhalb des angegebenen Wertes wird als Ladeleistung gewertet (Optional) + user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (optional) + password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional) + channel: 0 # optional + standbypower: 15 # Leistung oberhalb des angegebenen Wertes wird als Ladeleistung gewertet (optional) ``` @@ -2088,10 +2088,10 @@ chargers: type: template template: tasmota host: 192.0.2.2 # IP-Adresse oder Hostname - user: # Standard-User ist admin (Optional) - password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (Optional) + user: # Standard-User ist admin (optional) + password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional) channel: 1 # Nummer des Schaltkanals (1-8), bei Geräten mit mehr als einem Schalter - standbypower: 15 # Leistung oberhalb des angegebenen Wertes wird als Ladeleistung gewertet (Optional) + standbypower: 15 # Leistung oberhalb des angegebenen Wertes wird als Ladeleistung gewertet (optional) ``` @@ -2106,7 +2106,7 @@ chargers: type: template template: tplink host: 192.0.2.2 # IP-Adresse oder Hostname - standbypower: 15 # Leistung oberhalb des angegebenen Wertes wird als Ladeleistung gewertet (Optional) + standbypower: 15 # Leistung oberhalb des angegebenen Wertes wird als Ladeleistung gewertet (optional) ``` @@ -2121,6 +2121,6 @@ chargers: host: 192.0.2.2 # IP-Adresse oder Hostname user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - standbypower: 15 # Leistung oberhalb des angegebenen Wertes wird als Ladeleistung gewertet (Optional) + standbypower: 15 # Leistung oberhalb des angegebenen Wertes wird als Ladeleistung gewertet (optional) ``` diff --git a/docs/devices/meters.mdx b/docs/devices/meters.mdx index 27f5f0e49b..01c05750d3 100644 --- a/docs/devices/meters.mdx +++ b/docs/devices/meters.mdx @@ -356,8 +356,8 @@ meters: template: solarman usage: pv host: 192.0.2.2 # IP-Adresse oder Hostname - user: admin # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (Optional) - password: admin # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (Optional) + user: admin # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (optional) + password: admin # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional) ``` @@ -529,8 +529,8 @@ meters: template: solarman usage: pv host: 192.0.2.2 # IP-Adresse oder Hostname - user: admin # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (Optional) - password: admin # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (Optional) + user: admin # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (optional) + password: admin # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional) ``` @@ -676,7 +676,7 @@ meters: template: dsmr usage: grid host: 192.0.2.2 # IP-Adresse oder Hostname - port: 1502 # Port (Optional) + port: 1502 # Port (optional) ``` @@ -718,7 +718,7 @@ meters: template: e3dc usage: grid host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -731,7 +731,7 @@ meters: template: e3dc usage: pv host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -744,7 +744,7 @@ meters: template: e3dc usage: battery host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1043,7 +1043,7 @@ meters: template: enphase usage: grid host: 192.0.2.2 # IP-Adresse oder Hostname - token: # Ab Envoy Firmware D7.x.xxx notwendig. Token ist ein Jahr gültig. Anleitung (Obtaining a token via web UI): https://enphase.com/download/accessing-iq-gateway-local-apis-or-local-ui-token-based-authentication (Optional) + token: # Ab Envoy Firmware D7.x.xxx notwendig. Token ist ein Jahr gültig. Anleitung (Obtaining a token via web UI): https://enphase.com/download/accessing-iq-gateway-local-apis-or-local-ui-token-based-authentication (optional) ``` @@ -1056,7 +1056,7 @@ meters: template: enphase usage: pv host: 192.0.2.2 # IP-Adresse oder Hostname - token: # Ab Envoy Firmware D7.x.xxx notwendig. Token ist ein Jahr gültig. Anleitung (Obtaining a token via web UI): https://enphase.com/download/accessing-iq-gateway-local-apis-or-local-ui-token-based-authentication (Optional) + token: # Ab Envoy Firmware D7.x.xxx notwendig. Token ist ein Jahr gültig. Anleitung (Obtaining a token via web UI): https://enphase.com/download/accessing-iq-gateway-local-apis-or-local-ui-token-based-authentication (optional) ``` @@ -1069,7 +1069,7 @@ meters: template: enphase usage: battery host: 192.0.2.2 # IP-Adresse oder Hostname - token: # Ab Envoy Firmware D7.x.xxx notwendig. Token ist ein Jahr gültig. Anleitung (Obtaining a token via web UI): https://enphase.com/download/accessing-iq-gateway-local-apis-or-local-ui-token-based-authentication (Optional) + token: # Ab Envoy Firmware D7.x.xxx notwendig. Token ist ein Jahr gültig. Anleitung (Obtaining a token via web UI): https://enphase.com/download/accessing-iq-gateway-local-apis-or-local-ui-token-based-authentication (optional) ``` @@ -1327,7 +1327,7 @@ meters: template: fronius-gen24 usage: grid host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1340,7 +1340,7 @@ meters: template: fronius-gen24 usage: pv host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1353,7 +1353,7 @@ meters: template: fronius-gen24 usage: battery host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1416,7 +1416,7 @@ meters: template: fronius-gen24 usage: grid host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1429,7 +1429,7 @@ meters: template: fronius-gen24 usage: pv host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1442,7 +1442,7 @@ meters: template: fronius-gen24 usage: battery host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -1459,8 +1459,8 @@ meters: template: solarman usage: pv host: 192.0.2.2 # IP-Adresse oder Hostname - user: admin # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (Optional) - password: admin # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (Optional) + user: admin # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (optional) + password: admin # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional) ``` @@ -1813,7 +1813,7 @@ meters: template: huawei-smartlogger usage: pv host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -2000,8 +2000,8 @@ meters: template: solarman usage: pv host: 192.0.2.2 # IP-Adresse oder Hostname - user: admin # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (Optional) - password: admin # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (Optional) + user: admin # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (optional) + password: admin # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional) ``` @@ -3116,8 +3116,8 @@ meters: template: shelly-pro-3em usage: grid host: 192.0.2.2 # IP-Adresse oder Hostname - user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (Optional) - password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (Optional) + user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (optional) + password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional) ``` @@ -3130,8 +3130,8 @@ meters: template: shelly-pro-3em usage: pv host: 192.0.2.2 # IP-Adresse oder Hostname - user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (Optional) - password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (Optional) + user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (optional) + password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional) ``` @@ -3144,8 +3144,8 @@ meters: template: shelly-pro-3em usage: charge host: 192.0.2.2 # IP-Adresse oder Hostname - user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (Optional) - password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (Optional) + user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (optional) + password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional) ``` @@ -3466,7 +3466,7 @@ meters: template: sma-inverter usage: pv host: 192.0.2.2 # IP-Adresse oder Hostname - password: # Passwort für Benutzergruppe Benutzer (Optional) + password: # Passwort für Benutzergruppe Benutzer (optional) ``` @@ -3479,7 +3479,7 @@ meters: template: sma-inverter usage: battery host: 192.0.2.2 # IP-Adresse oder Hostname - password: # Passwort für Benutzergruppe Benutzer (Optional) + password: # Passwort für Benutzergruppe Benutzer (optional) ``` @@ -3519,7 +3519,7 @@ meters: id: 1 host: 192.0.2.2 # Hostname port: 502 # Port - delay: 1s # Optional + delay: 1s # optional ``` @@ -3550,7 +3550,7 @@ meters: id: 1 host: 192.0.2.2 # Hostname port: 502 # Port - delay: 1s # Optional + delay: 1s # optional ``` @@ -3581,7 +3581,7 @@ meters: id: 1 host: 192.0.2.2 # Hostname port: 502 # Port - delay: 1s # Optional + delay: 1s # optional ``` @@ -3619,7 +3619,7 @@ meters: id: 1 host: 192.0.2.2 # Hostname port: 502 # Port - delay: 1s # Optional + delay: 1s # optional ``` @@ -3650,7 +3650,7 @@ meters: id: 1 host: 192.0.2.2 # Hostname port: 502 # Port - delay: 1s # Optional + delay: 1s # optional ``` @@ -3681,7 +3681,7 @@ meters: id: 1 host: 192.0.2.2 # Hostname port: 502 # Port - delay: 1s # Optional + delay: 1s # optional ``` @@ -3816,7 +3816,7 @@ meters: id: 1 host: 192.0.2.2 # Hostname port: 502 # Port - delay: 1s # Optional + delay: 1s # optional ``` @@ -3847,7 +3847,7 @@ meters: id: 1 host: 192.0.2.2 # Hostname port: 502 # Port - delay: 1s # Optional + delay: 1s # optional ``` @@ -3878,7 +3878,7 @@ meters: id: 1 host: 192.0.2.2 # Hostname port: 502 # Port - delay: 1s # Optional + delay: 1s # optional ``` @@ -3916,7 +3916,7 @@ meters: id: 1 host: 192.0.2.2 # Hostname port: 502 # Port - delay: 1s # Optional + delay: 1s # optional ``` @@ -3947,7 +3947,7 @@ meters: id: 1 host: 192.0.2.2 # Hostname port: 502 # Port - delay: 1s # Optional + delay: 1s # optional ``` @@ -3978,7 +3978,7 @@ meters: id: 1 host: 192.0.2.2 # Hostname port: 502 # Port - delay: 1s # Optional + delay: 1s # optional ``` @@ -3998,8 +3998,8 @@ meters: template: solaranzeige usage: grid host: 192.0.2.2 # IP Adresse oder der Hostname des MQTT Brokers - port: 1883 # MQTT Broker Port (Optional) - topic: solaranzeige/box1 # Topic (ohne / am Anfang) (Optional) + port: 1883 # MQTT Broker Port (optional) + topic: solaranzeige/box1 # Topic (ohne / am Anfang) (optional) ``` @@ -4012,8 +4012,8 @@ meters: template: solaranzeige usage: pv host: 192.0.2.2 # IP Adresse oder der Hostname des MQTT Brokers - port: 1883 # MQTT Broker Port (Optional) - topic: solaranzeige/box1 # Topic (ohne / am Anfang) (Optional) + port: 1883 # MQTT Broker Port (optional) + topic: solaranzeige/box1 # Topic (ohne / am Anfang) (optional) ``` @@ -4206,7 +4206,7 @@ meters: template: solarlog usage: grid host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -4219,7 +4219,7 @@ meters: template: solarlog usage: pv host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -4405,7 +4405,7 @@ meters: template: solarwatt-myreserve-matrix usage: grid host: 192.0.2.2 # IP-Adresse oder Hostname - port: 8080 # Port (Optional) + port: 8080 # Port (optional) ``` @@ -4418,7 +4418,7 @@ meters: template: solarwatt-myreserve-matrix usage: pv host: 192.0.2.2 # IP-Adresse oder Hostname - port: 8080 # Port (Optional) + port: 8080 # Port (optional) ``` @@ -4431,7 +4431,7 @@ meters: template: solarwatt-myreserve-matrix usage: battery host: 192.0.2.2 # IP-Adresse oder Hostname - port: 8080 # Port (Optional) + port: 8080 # Port (optional) ``` @@ -4620,7 +4620,7 @@ meters: template: sonnenbatterie-eco56 usage: grid host: 192.0.2.2 # IP-Adresse oder Hostname - port: 7979 # Port (Optional) + port: 7979 # Port (optional) ``` @@ -4633,7 +4633,7 @@ meters: template: sonnenbatterie-eco56 usage: pv host: 192.0.2.2 # IP-Adresse oder Hostname - port: 7979 # Port (Optional) + port: 7979 # Port (optional) ``` @@ -4646,7 +4646,7 @@ meters: template: sonnenbatterie-eco56 usage: battery host: 192.0.2.2 # IP-Adresse oder Hostname - port: 7979 # Port (Optional) + port: 7979 # Port (optional) ``` @@ -4666,7 +4666,7 @@ meters: template: sonnenbatterie usage: grid host: 192.0.2.2 # IP-Adresse oder Hostname - port: 8080 # Port (Optional) + port: 8080 # Port (optional) ``` @@ -4679,7 +4679,7 @@ meters: template: sonnenbatterie usage: pv host: 192.0.2.2 # IP-Adresse oder Hostname - port: 8080 # Port (Optional) + port: 8080 # Port (optional) ``` @@ -4692,7 +4692,7 @@ meters: template: sonnenbatterie usage: battery host: 192.0.2.2 # IP-Adresse oder Hostname - port: 8080 # Port (Optional) + port: 8080 # Port (optional) ``` @@ -5033,7 +5033,7 @@ meters: template: tibber-pulse usage: grid token: 5K4MVS-OjfWhK_4yrjOlFe1F6kJXPVf7eQYggo8ebAE - homeid: 96a14971-525a-4420-aae9-e5aedaa129ff # Optional + homeid: 96a14971-525a-4420-aae9-e5aedaa129ff # optional ``` @@ -5049,8 +5049,8 @@ meters: template: tq-em usage: grid host: 192.0.2.2 # IP-Adresse oder Hostname - port: 80 # Port (Optional) - password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (Optional) + port: 80 # Port (optional) + password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional) ``` @@ -5064,8 +5064,8 @@ meters: template: tq-em420 usage: grid host: 192.0.2.2 # IP-Adresse oder Hostname - port: 80 # Port (Optional) - device: local # JSON-Schnittstelle -> Datenendpunkt (Optional) + port: 80 # Port (optional) + device: local # JSON-Schnittstelle -> Datenendpunkt (optional) token: ey... # Token des EM420 (Erstellen unter Profil -> Zugangsschlüssel) ``` @@ -5083,7 +5083,7 @@ meters: template: varta usage: grid host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -5096,7 +5096,7 @@ meters: template: varta usage: pv host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -5109,7 +5109,7 @@ meters: template: varta usage: battery host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -5129,7 +5129,7 @@ meters: template: victron-energy usage: grid host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -5142,7 +5142,7 @@ meters: template: victron-energy usage: pv host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -5155,7 +5155,7 @@ meters: template: victron-energy usage: battery host: 192.0.2.2 # IP-Adresse oder Hostname - port: 502 # Port (Optional) + port: 502 # Port (optional) ``` @@ -5439,7 +5439,7 @@ meters: type: template template: volkszaehler-http usage: grid - url: # Beispiel: http://zaehler.network.local:8080/api/data (Optional) + url: # Beispiel: http://zaehler.network.local:8080/api/data (optional) uuid: ``` @@ -5453,7 +5453,7 @@ meters: type: template template: volkszaehler-importexport usage: grid - url: # Die URL ist zum Beispiel: http://zaehler.network.local:8080/api/data (Optional) + url: # Die URL ist zum Beispiel: http://zaehler.network.local:8080/api/data (optional) importuuid: exportuuid: ``` @@ -5469,7 +5469,7 @@ meters: template: volkszaehler-ws usage: grid host: 192.0.2.2 # IP-Adresse oder Hostname - port: 8082 # Port (Optional) + port: 8082 # Port (optional) uuid: ``` @@ -5484,7 +5484,7 @@ meters: template: vzlogger usage: grid host: 192.0.2.2 # IP-Adresse oder Hostname - port: 8081 # Port (Optional) + port: 8081 # Port (optional) uuid: ``` @@ -5570,7 +5570,7 @@ meters: type: template template: fritzdect usage: pv - uri: https://fritz.box # HTTP(S) Adresse (Optional) + uri: https://fritz.box # HTTP(S) Adresse (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) ain: 307788992233 # Die AIN ist auf dem Typenschild auf der Geräterückseite aufgedruckt. Bei führenden Nullen bitte in doppelte Hochkommata setzen. @@ -5585,7 +5585,7 @@ meters: type: template template: fritzdect usage: charge - uri: https://fritz.box # HTTP(S) Adresse (Optional) + uri: https://fritz.box # HTTP(S) Adresse (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) ain: 307788992233 # Die AIN ist auf dem Typenschild auf der Geräterückseite aufgedruckt. Bei führenden Nullen bitte in doppelte Hochkommata setzen. @@ -5609,8 +5609,8 @@ meters: usage: grid host: 192.0.2.2 # IP-Adresse oder Hostname device: '0001EE89AAD848' # Homematic Geräte Id, wie im CCU Webfrontend angezeigt. - user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (Optional) - password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (Optional) + user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (optional) + password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional) ``` @@ -5624,8 +5624,8 @@ meters: usage: pv host: 192.0.2.2 # IP-Adresse oder Hostname device: '0001EE89AAD848' # Homematic Geräte Id, wie im CCU Webfrontend angezeigt. - user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (Optional) - password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (Optional) + user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (optional) + password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional) ``` @@ -5639,8 +5639,8 @@ meters: usage: charge host: 192.0.2.2 # IP-Adresse oder Hostname device: '0001EE89AAD848' # Homematic Geräte Id, wie im CCU Webfrontend angezeigt. - user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (Optional) - password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (Optional) + user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (optional) + password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional) ``` @@ -5691,9 +5691,9 @@ meters: template: shelly-1pm usage: pv host: 192.0.2.2 # IP-Adresse oder Hostname - user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (Optional) - password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (Optional) - channel: 0 # Optional + user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (optional) + password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional) + channel: 0 # optional ``` @@ -5706,9 +5706,9 @@ meters: template: shelly-1pm usage: charge host: 192.0.2.2 # IP-Adresse oder Hostname - user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (Optional) - password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (Optional) - channel: 0 # Optional + user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (optional) + password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional) + channel: 0 # optional ``` @@ -5728,8 +5728,8 @@ meters: template: tasmota usage: grid host: 192.0.2.2 # IP-Adresse oder Hostname - user: # Standard-User ist admin (Optional) - password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (Optional) + user: # Standard-User ist admin (optional) + password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional) ``` @@ -5742,8 +5742,8 @@ meters: template: tasmota usage: pv host: 192.0.2.2 # IP-Adresse oder Hostname - user: # Standard-User ist admin (Optional) - password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (Optional) + user: # Standard-User ist admin (optional) + password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional) ``` @@ -5756,8 +5756,8 @@ meters: template: tasmota usage: battery host: 192.0.2.2 # IP-Adresse oder Hostname - user: # Standard-User ist admin (Optional) - password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (Optional) + user: # Standard-User ist admin (optional) + password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional) ``` diff --git a/docs/devices/vehicles.mdx b/docs/devices/vehicles.mdx index a94c896823..993c57c03c 100644 --- a/docs/devices/vehicles.mdx +++ b/docs/devices/vehicles.mdx @@ -47,11 +47,11 @@ vehicles: - name: my_car type: template template: aiways - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind - capacity: 50 # Akkukapazität in kWh (Optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -63,11 +63,11 @@ vehicles: - name: my_car type: template template: audi - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: WAUZZZ... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: WAUZZZ... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -79,11 +79,11 @@ vehicles: - name: my_car type: template template: bmw - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: WBMW... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: WBMW... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -95,11 +95,11 @@ vehicles: - name: my_car type: template template: citroen - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -111,11 +111,11 @@ vehicles: - name: my_car type: template template: dacia - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -127,11 +127,11 @@ vehicles: - name: my_car type: template template: ds - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -143,12 +143,12 @@ vehicles: - name: my_car type: template template: fiat - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: ZFAE... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) - pin: # Optional + vin: ZFAE... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) + pin: # optional ``` @@ -160,11 +160,11 @@ vehicles: - name: my_car type: template template: ford - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: WF0FXX... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: WF0FXX... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -176,12 +176,12 @@ vehicles: - name: my_car type: template template: hyundai - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) - language: en # 'de' für Deutsch und 'en' für Englisch (Optional) + vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) + language: en # 'de' für Deutsch und 'en' für Englisch (optional) ``` @@ -193,11 +193,11 @@ vehicles: - name: my_car type: template template: jaguar-landrover - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -209,12 +209,12 @@ vehicles: - name: my_car type: template template: fiat - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: ZFAE... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) - pin: # Optional + vin: ZFAE... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) + pin: # optional ``` @@ -226,12 +226,12 @@ vehicles: - name: my_car type: template template: kia - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) - language: en # 'de' für Deutsch und 'en' für Englisch (Optional) + vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) + language: en # 'de' für Deutsch und 'en' für Englisch (optional) ``` @@ -243,11 +243,11 @@ vehicles: - name: my_car type: template template: jaguar-landrover - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -259,11 +259,11 @@ vehicles: - name: my_car type: template template: mini - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: WBMW... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: WBMW... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -277,11 +277,11 @@ vehicles: - name: my_car type: template template: nissan - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -293,11 +293,11 @@ vehicles: - name: my_car type: template template: carwings - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -309,11 +309,11 @@ vehicles: - name: my_car type: template template: opel - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: WP0... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: WP0... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -325,11 +325,11 @@ vehicles: - name: my_car type: template template: peugeot - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -341,11 +341,11 @@ vehicles: - name: my_car type: template template: porsche - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -357,11 +357,11 @@ vehicles: - name: my_car type: template template: renault - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: WREN... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: WREN... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -375,11 +375,11 @@ vehicles: - name: my_car type: template template: seat - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -391,11 +391,11 @@ vehicles: - name: my_car type: template template: cupra - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -409,11 +409,11 @@ vehicles: - name: my_car type: template template: skoda - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -425,11 +425,11 @@ vehicles: - name: my_car type: template template: enyaq - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -441,11 +441,11 @@ vehicles: - name: my_car type: template template: smart - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -464,11 +464,11 @@ vehicles: - name: my_car type: template template: tesla - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) accessToken: # Siehe https://docs.evcc.io/docs/devices/vehicles#tesla refreshToken: # Siehe https://docs.evcc.io/docs/devices/vehicles#tesla - vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -484,11 +484,11 @@ vehicles: - name: my_car type: template template: vw - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: WVWZZZ... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: WVWZZZ... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -502,11 +502,11 @@ vehicles: - name: my_car type: template template: id - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: WVWZZZ... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: WVWZZZ... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -520,11 +520,11 @@ vehicles: - name: my_car type: template template: volvo-connected - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) vccapikey: # Volvo developer portal VCC API Key, siehe https://github.com/evcc-io/evcc/discussions/3677#discussioncomment-4106300 ``` @@ -537,11 +537,11 @@ vehicles: - name: my_car type: template template: volvo - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) - vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -574,10 +574,10 @@ vehicles: - name: my_car type: template template: evnotify - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) akey: token: - capacity: 50 # Akkukapazität in kWh (Optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -591,8 +591,8 @@ vehicles: - name: my_car type: template template: iso15118 - title: # Wird in der Benutzeroberfläche angezeigt (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -606,9 +606,9 @@ vehicles: - name: my_car type: template template: mazda2mqtt - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) vin: W... # Erforderlich - capacity: 50 # Akkukapazität in kWh (Optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -622,10 +622,10 @@ vehicles: - name: my_car type: template template: mg2mqtt - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind - capacity: 50 # Akkukapazität in kWh (Optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -637,8 +637,8 @@ vehicles: - name: my_car type: template template: offline - title: # Wird in der Benutzeroberfläche angezeigt (Optional) - capacity: 50 # Akkukapazität in kWh (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -652,11 +652,11 @@ vehicles: - name: my_car type: template template: ovms - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) vehicleid: - capacity: 12 # Akkukapazität in kWh (Optional) + capacity: 12 # Akkukapazität in kWh (optional) ``` @@ -670,10 +670,10 @@ vehicles: - name: my_car type: template template: flobz - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) url: http://192.0.2.2 vin: W... # Erforderlich - capacity: 50 # Akkukapazität in kWh (Optional) + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -687,9 +687,9 @@ vehicles: - name: my_car type: template template: teslamate - title: # Wird in der Benutzeroberfläche angezeigt (Optional) - id: 1 # Optional - capacity: 50 # Akkukapazität in kWh (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) + id: 1 # optional + capacity: 50 # Akkukapazität in kWh (optional) ``` @@ -701,11 +701,11 @@ vehicles: - name: my_car type: template template: tronity - title: # Wird in der Benutzeroberfläche angezeigt (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) clientid: # Einrichtung unter https://app.tronity.tech clientsecret: # Einrichtung unter https://app.tronity.tech - vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional) - capacity: 10 # Akkukapazität in kWh (Optional) + vin: W... # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (optional) + capacity: 10 # Akkukapazität in kWh (optional) ``` @@ -721,11 +721,11 @@ vehicles: - name: my_car type: template template: niu-e-scooter - title: # Wird in der Benutzeroberfläche angezeigt (Optional) - icon: scooter # Icon in der Benutzeroberfläche (Optional) + title: # Wird in der Benutzeroberfläche angezeigt (optional) + icon: scooter # Icon in der Benutzeroberfläche (optional) user: # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) password: # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) serial: - capacity: 4 # Akkukapazität in kWh (Optional) + capacity: 4 # Akkukapazität in kWh (optional) ``` diff --git a/i18n/en/docusaurus-plugin-content-docs/current/_phase_switch_supported.mdx b/i18n/en/docusaurus-plugin-content-docs/current/_phase_switch_supported.mdx index bce94ebae4..0f7cdbf768 100644 --- a/i18n/en/docusaurus-plugin-content-docs/current/_phase_switch_supported.mdx +++ b/i18n/en/docusaurus-plugin-content-docs/current/_phase_switch_supported.mdx @@ -1,3 +1,3 @@ :::note -Single and Three-phase circuits are supported. +Automatic 1p/3p switching is supported. ::: diff --git a/i18n/en/docusaurus-plugin-content-docs/current/devices/_category_.json b/i18n/en/docusaurus-plugin-content-docs/current/devices/_category_.json new file mode 100644 index 0000000000..fc97b2ad88 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/devices/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Devices", + "position": 4 +} \ No newline at end of file diff --git a/i18n/en/docusaurus-plugin-content-docs/current/devices/chargers.mdx b/i18n/en/docusaurus-plugin-content-docs/current/devices/chargers.mdx new file mode 100644 index 0000000000..4722dc3068 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/devices/chargers.mdx @@ -0,0 +1,2126 @@ +--- +sidebar_position: 1 +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import SponsorshipRequired from "../_sponsorship_required.mdx"; +import PhaseSwitchSupported from "../_phase_switch_supported.mdx"; + +# Chargers + +Zur Steuerung der Ladung muss evcc mit einer Wallbox kommunizieren. + +In der Konfigurationsdatei gibt es hierzu den folgenden Bereich: + +```yaml +charger: + - name: wallbox + type: ... +``` + +Auf dieser Seite findest du die Konfigurationen für alle derzeit von evcc direkt unterstützten Wallboxen. +Nachdem du das Code-Beispiel für deine Wallbox angepasst und in die `evcc.yaml` übernommen hast, kannst du die Verbindung mit dem Befehl `evcc charger` testen. Dabei werden alle konfigurierten Charger getestet. Mit dem Befehlt `evcc charger --name my_charger` kann man mittels des vergebenen Namens selektiv testen. + +``` +$ ./evcc charger + +Power: 0W +Current L1..L3: 0A 0A 0A +Charge status: A +Enabled: false +``` + + + + + +## ABB Terra AC 💚 + +Requires firmware >= 1.6.5 + +```yaml +chargers: + - name: my_charger + type: template + template: abb + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +## ABL + +### eM4 (SBCx) 💚 + +```yaml +chargers: + - name: my_charger + type: template + template: abl-em4 + + # Modbus TCP + modbus: tcpip + id: 255 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +### eMH1, eMH2 💚 + +```yaml +chargers: + - name: my_charger + type: template + template: abl + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 38400 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8E1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +## Alfen Eve 💚 + +The "Active load balancing" license is required for external Modbus control of the charger. Enable "Active Load Balancing" and select "Energy Management System" as Data Source in the configuration. When using "Double" charger both loadpoints need to be added. The the first port (or single) is accessable on ID 1, second port on ID 2. + +```yaml +chargers: + - name: my_charger + type: template + template: alfen + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + + +## Alphatec Wallbox Mini/ AW1eM 💚 + +```yaml +chargers: + - name: my_charger + type: template + template: alphatec + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +## Amperfied + +### Wallbox connect.business 💚 + +```yaml +chargers: + - name: my_charger + type: template + template: amperfied + + # Modbus TCP + modbus: tcpip + id: 255 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +### Wallbox connect.home 💚 + +```yaml +chargers: + - name: my_charger + type: template + template: amperfied + + # Modbus TCP + modbus: tcpip + id: 255 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +### Wallbox Energy Control 💚 + +Please read the wiring and configuration manual carefully. All boxes must be configured for external control in follower mode (DIP S5/4 OFF). Each box needs an individual Modbus ID (DIP S4). Ensure correct RS485 cabling including bus termination (DIP S6/2). + +```yaml +chargers: + - name: my_charger + type: template + template: heidelberg + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 19200 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8E1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +## Audi + +### Audi Wallbox pro (Beta) + +The device has to have a fix IP address (manuall or via DHCP). + +The identification of a vehicle using the RFID card is not possible. + +Important: A mostly flawless functionality can only be provided with an external energy meter and no usage of CT coils, due to sosftware bugs of the Wallbox. Using a LAN connection is highly recommended. + +```yaml +chargers: + - name: my_charger + type: template + template: ellipro + ski: # The SKI of the wallbox, usually found on the web interface of the wallbox + ip: 192.0.2.2 # IP address +``` + + + +### Wallbox plus (Beta) + +The device has to have a fix IP address (manuall or via DHCP). + +The identification of a vehicle using the RFID card is not possible. + +Important: A mostly flawless functionality can only be provided with an external energy meter and no usage of CT coils, due to sosftware bugs of the Wallbox. Using a LAN connection is highly recommended. + +Note: If you've added an energy meter to your charger please use the Pro or Connected+ integration. + +```yaml +chargers: + - name: my_charger + type: template + template: elliconnect + ski: # The SKI of the wallbox, usually found on the web interface of the wallbox + ip: 192.0.2.2 # IP address +``` + + + +## Bender CC612/613 💚 + +The 'Modbus TCP Server' must be enabled. The setting 'Register Address Set' must NOT be set to 'Phoenix' or 'TQ-DM100'. Use the third selection labeled 'Ebee', 'Bender', 'MENNEKES' etc. Set 'Allow UID Disclose' to On. + +```yaml +chargers: + - name: my_charger + type: template + template: bender + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + + +## BMW + +### i Wallbox 💚 + +Requires firmware version 3.10.42 (C-series) bzw. 1.11 (X-series). For phase switching the Keba phase switch (KeContact S10) is also required. + +```yaml +chargers: + - name: my_charger + type: template + template: keba-modbus + + # Modbus TCP + modbus: tcpip + id: 255 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + + +### i Wallbox (legacy UDP protocol) + +This requires the UDP function to be enabled with DIP 1.3 = ON, see the installation manual. + +```yaml +chargers: + - name: my_charger + type: template + template: keba + host: 192.0.2.2 # IP address or hostname +``` + + + +## cFos PowerBrain 💚 + +The meter- if present- must be configured separately as charge meter. + +```yaml +chargers: + - name: my_charger + type: template + template: cfos + host: 192.0.2.2 # IP address or hostname +``` + + + + + +## Compleo eBox 💚 + +```yaml +chargers: + - name: my_charger + type: template + template: innogy-ebox + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +## Cupra + +### Charger Connect (Beta) + +The device has to have a fix IP address (manuall or via DHCP). + +The identification of a vehicle using the RFID card is not possible. + +Important: A mostly flawless functionality can only be provided with an external energy meter and no usage of CT coils, due to sosftware bugs of the Wallbox. Using a LAN connection is highly recommended. + +Note: If you've added an energy meter to your charger please use the Pro or Connected+ integration. + +```yaml +chargers: + - name: my_charger + type: template + template: elliconnect + ski: # The SKI of the wallbox, usually found on the web interface of the wallbox + ip: 192.0.2.2 # IP address +``` + + + +### Charger Pro (Beta) + +The device has to have a fix IP address (manuall or via DHCP). + +The identification of a vehicle using the RFID card is not possible. + +Important: A mostly flawless functionality can only be provided with an external energy meter and no usage of CT coils, due to sosftware bugs of the Wallbox. Using a LAN connection is highly recommended. + +```yaml +chargers: + - name: my_charger + type: template + template: ellipro + ski: # The SKI of the wallbox, usually found on the web interface of the wallbox + ip: 192.0.2.2 # IP address +``` + + + +## Dadapower Premium Wallbox + +```yaml +chargers: + - name: my_charger + type: template + template: dadapower + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +## DaheimLaden + +### Wallbox + +For use with evcc, the wallbox must be operated in RFID mode. + +```yaml +chargers: + - name: my_charger + type: template + template: daheimladen + token: # Request your access token from Daheimladen support: info@daheimladen.de. (optional) + stationid: # Serial number as displayed on the wallbox display. (optional) +``` + + + +### Wallbox (via ModbusTCP) + +For use with evcc, the wallbox must be operated with a recent firmware including Modbus support. Please contact vendor. + +```yaml +chargers: + - name: my_charger + type: template + template: daheimladen-mb + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + +## E.ON Drive + +### eBox 💚 + +```yaml +chargers: + - name: my_charger + type: template + template: innogy-ebox + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +### vBox 💚 + +```yaml +chargers: + - name: my_charger + type: template + template: vestel + + # Modbus TCP + modbus: tcpip + id: 255 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +## Easee Home 💚 + +```yaml +chargers: + - name: my_charger + type: template + template: easee + user: # Email address + password: # same as Easee app or the web portal (https://easee.cloud) + charger: EH______ +``` + + + + + + + +## Ebee Wallbox 💚 + +The 'Modbus TCP Server' must be enabled. The setting 'Register Address Set' must NOT be set to 'Phoenix' or 'TQ-DM100'. Use the third selection labeled 'Ebee', 'Bender', 'MENNEKES' etc. Set 'Allow UID Disclose' to On. + +```yaml +chargers: + - name: my_charger + type: template + template: bender + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + + +## echarge + +### cPH1 💚 + +Charge mode must be configured as `manual` + +```yaml +chargers: + - name: my_charger + type: template + template: hardybarth-ecb1 + host: 192.0.2.2 # IP address or hostname +``` + + + + + +### cPH2, cPμ2 💚 + +```yaml +chargers: + - name: my_charger + type: template + template: hardybarth-salia + host: 192.0.2.2 # IP address or hostname +``` + + + + + +## Elli + +### Charger Connect (Beta) + +The device has to have a fix IP address (manuall or via DHCP). + +The identification of a vehicle using the RFID card is not possible. + +Important: A mostly flawless functionality can only be provided with an external energy meter and no usage of CT coils, due to sosftware bugs of the Wallbox. Using a LAN connection is highly recommended. + +Note: If you've added an energy meter to your charger please use the Pro or Connected+ integration. + +```yaml +chargers: + - name: my_charger + type: template + template: elliconnect + ski: # The SKI of the wallbox, usually found on the web interface of the wallbox + ip: 192.0.2.2 # IP address +``` + + + +### Charger Pro (Beta) + +The device has to have a fix IP address (manuall or via DHCP). + +The identification of a vehicle using the RFID card is not possible. + +Important: A mostly flawless functionality can only be provided with an external energy meter and no usage of CT coils, due to sosftware bugs of the Wallbox. Using a LAN connection is highly recommended. + +```yaml +chargers: + - name: my_charger + type: template + template: ellipro + ski: # The SKI of the wallbox, usually found on the web interface of the wallbox + ip: 192.0.2.2 # IP address +``` + + + +## EM2GO Pro Power/OCPP/ONC + +Recent firmware with Modbus support required (Pro Power: 1.01 and OCPP/ONC: 3.15) + +```yaml +chargers: + - name: my_charger + type: template + template: em2go + + # Modbus TCP + modbus: tcpip + id: 255 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + +## Ensto Chago Wallbox 💚 + +The 'Modbus TCP Server' must be enabled. The setting 'Register Address Set' must NOT be set to 'Phoenix' or 'TQ-DM100'. Use the third selection labeled 'Ebee', 'Bender', 'MENNEKES' etc. Set 'Allow UID Disclose' to On. + +```yaml +chargers: + - name: my_charger + type: template + template: bender + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + + +## Etrel + +### INCH 💚 + +The charger must be switched to "Power" charging mode. + +```yaml +chargers: + - name: my_charger + type: template + template: etrel + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + + +### INCH Duo 💚 + +The charger must be switched to "Power" charging mode. + +```yaml +chargers: + - name: my_charger + type: template + template: etrel-duo + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + + +## EVBox Elvi + +```yaml +chargers: + - name: my_charger + type: template + template: elvi + meter: true # Deactivate if the charger has no integrated metering device installed (optional) +``` + + + +## EVSE DIN + +```yaml +chargers: + - name: my_charger + type: template + template: evse-din + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + +## EVSE-WiFi + +```yaml +chargers: + - name: my_charger + type: template + template: evsewifi + host: 192.0.2.2 # IP address or hostname +``` + + + +## Fronius Wattpilot + +Requires firmware 36.3 or later. + +```yaml +chargers: + - name: my_charger + type: template + template: fronius-wattpilot + host: 192.0.2.2 # IP address or hostname + password: # Password of the user account (use single quotes in case of leading zeros) (optional) +``` + + + + + +## Garo GLB, GLB+, LS4, LS4 compact 💚 + +The 'Modbus TCP Server' must be enabled. The setting 'Register Address Set' must NOT be set to 'Phoenix' or 'TQ-DM100'. Use the third selection labeled 'Ebee', 'Bender', 'MENNEKES' etc. Set 'Allow UID Disclose' to On. + +```yaml +chargers: + - name: my_charger + type: template + template: bender + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + + +## go-eCharger + +### Gemini, HOME+, HOMEfix (V3) 💚 + +Requires firmware 052.1 or later. + +For 1P/3P-Phase switching the HTTP API v2 in the charger setup needs to be activated. + +```yaml +chargers: + - name: my_charger + type: template + template: go-e-v3 + host: 192.0.2.2 # IP address or hostname +``` + + + + + + + +### HOME+, HOMEfix, Pro 💚 + +Requires firmware 040.0 or later. HTTP API v1 or v2 must be activated. + +```yaml +chargers: + - name: my_charger + type: template + template: go-e + host: 192.0.2.2 # IP address or hostname +``` + + + + + +## HardyBarth + +### cPH1 💚 + +Charge mode must be configured as `manual` + +```yaml +chargers: + - name: my_charger + type: template + template: hardybarth-ecb1 + host: 192.0.2.2 # IP address or hostname +``` + + + + + +### cPH2, cPμ2 💚 + +```yaml +chargers: + - name: my_charger + type: template + template: hardybarth-salia + host: 192.0.2.2 # IP address or hostname +``` + + + + + +## Heidelberg Energy Control 💚 + +Please read the wiring and configuration manual carefully. All boxes must be configured for external control in follower mode (DIP S5/4 OFF). Each box needs an individual Modbus ID (DIP S4). Ensure correct RS485 cabling including bus termination (DIP S6/2). + +```yaml +chargers: + - name: my_charger + type: template + template: heidelberg + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 19200 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8E1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +## Hesotec eSat, eBox 💚 + +```yaml +chargers: + - name: my_charger + type: template + template: hesotec + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +## Innogy eBox 💚 + +```yaml +chargers: + - name: my_charger + type: template + template: innogy-ebox + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +## INRO Pantabox + +```yaml +chargers: + - name: my_charger + type: template + template: pantabox + host: 192.0.2.2 # IP address or hostname +``` + + + +## Juice Charger Me 💚 + +The 'Modbus TCP Server' must be enabled. The setting 'Register Address Set' must NOT be set to 'Phoenix' or 'TQ-DM100'. Use the third selection labeled 'Ebee', 'Bender', 'MENNEKES' etc. Set 'Allow UID Disclose' to On. + +```yaml +chargers: + - name: my_charger + type: template + template: bender + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + + +## KEBA + +### KeContact P20, P30, C/X Series 💚 + +Requires firmware version 3.10.42 (C-series) bzw. 1.11 (X-series). For phase switching the Keba phase switch (KeContact S10) is also required. + +```yaml +chargers: + - name: my_charger + type: template + template: keba-modbus + + # Modbus TCP + modbus: tcpip + id: 255 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + + +### KeContact P20, P30, C/X Series (legacy UDP protocol) + +This requires the UDP function to be enabled with DIP 1.3 = ON, see the installation manual. + +```yaml +chargers: + - name: my_charger + type: template + template: keba + host: 192.0.2.2 # IP address or hostname +``` + + + +## KSE wBX16 💚 + +```yaml +chargers: + - name: my_charger + type: template + template: kse + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 100 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8E1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 100 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +## LadeFoxx EvLoad/ Mikro 2.0 + +```yaml +chargers: + - name: my_charger + type: template + template: phoenix-charx + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + +## Mennekes + +### Amedio, Amtron ChargeControl, Professional 💚 + +The 'Modbus TCP Server' must be enabled. The setting 'Register Address Set' must NOT be set to 'Phoenix' or 'TQ-DM100'. Use the third selection labeled 'Ebee', 'Bender', 'MENNEKES' etc. Set 'Allow UID Disclose' to On. + +```yaml +chargers: + - name: my_charger + type: template + template: bender + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + + +### AMTRON XTRA, AMTRON PREMIUM 💚 + +```yaml +chargers: + - name: my_charger + type: template + template: amtron + + # Modbus TCP + modbus: tcpip + id: 255 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +## NRGKick + +### Bluetooth + +```yaml +chargers: + - name: my_charger + type: template + template: nrgkick-bluetooth + mac: + pin: +``` + + + +### Connect + +```yaml +chargers: + - name: my_charger + type: template + template: nrgkick-connect + host: 192.0.2.2 # IP address or hostname + mac: + password: # Password of the user account (use single quotes in case of leading zeros) +``` + + + +## OBO Bettermann Ion + +```yaml +chargers: + - name: my_charger + type: template + template: obo + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 101 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 19200 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8E1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 101 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 101 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + +## OpenEVSE + +Requires firmware 7.0 or later. + +```yaml +chargers: + - name: my_charger + type: template + template: openevse + host: 192.0.2.2 # IP address or hostname + user: # User account (e.g. email address, user id, etc.) (optional) + password: # Password of the user account (use single quotes in case of leading zeros) (optional) +``` + + + +## openWB + +### Pro + +```yaml +chargers: + - name: my_charger + type: template + template: openwb-pro + host: 192.0.2.2 # IP address or hostname +``` + + + + + +### series2 + +The wallbox has to be configured as loadpoint. + +```yaml +chargers: + - name: my_charger + type: template + template: openwb + host: 192.0.2.2 # IP address or hostname +``` + + + +## Optec Mobility One 💚 + +The 'Modbus TCP Server' must be enabled. The setting 'Register Address Set' must NOT be set to 'Phoenix' or 'TQ-DM100'. Use the third selection labeled 'Ebee', 'Bender', 'MENNEKES' etc. Set 'Allow UID Disclose' to On. + +```yaml +chargers: + - name: my_charger + type: template + template: bender + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + + +## Orbis Viaris Uni + +```yaml +chargers: + - name: my_charger + type: template + template: orbis-viaris +``` + + + +## PC Electric Garo 💚 + +Only devices configured as master can be used right now! + +```yaml +chargers: + - name: my_charger + type: template + template: pcelectric-garo + host: 192.0.2.2 # IP address or hostname + port: 8080 # Port (optional) +``` + + + + + +## Phoenix + +### CHARX + +```yaml +chargers: + - name: my_charger + type: template + template: phoenix-charx + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + +### EM-CP-PP-ETH (Modbus TCP) + +The Wallbe must be connected using Ethernet and the DIP switch 10 must be set to 'ON'. + +```yaml +chargers: + - name: my_charger + type: template + template: phoenix-em-eth + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + +### EV-ETH (Modbus TCP) + +The Wallbe must be connected using Ethernet and the DIP switch 10 must be set to 'ON'. + +```yaml +chargers: + - name: my_charger + type: template + template: phoenix-ev-eth + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + +### EV-SER (Modbus RTU) + +```yaml +chargers: + - name: my_charger + type: template + template: phoenix-ev-ser + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + +## Porsche + +### Mobile Charger Connect + +```yaml +chargers: + - name: my_charger + type: template + template: pmcc + ski: # The SKI of the wallbox, usually found on the web interface of the wallbox + ip: 192.0.2.2 # IP address (optional) +``` + + + +### Mobile Charger Plus + +```yaml +chargers: + - name: my_charger + type: template + template: pmcp + ski: # The SKI of the wallbox, usually found on the web interface of the wallbox + ip: 192.0.2.2 # IP address (optional) +``` + + + +## Pracht Alpha XT, XT+, Mono XT, Mono XT+, PNI 💚 + +```yaml +chargers: + - name: my_charger + type: template + template: pracht-alpha + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +## Schneider EVlink Wallbox, EVlink Parkplatz 💚 + +```yaml +chargers: + - name: my_charger + type: template + template: schneider-evlink + + # Modbus TCP + modbus: tcpip + id: 255 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +## Schrack i-CHARGE CION + +```yaml +chargers: + - name: my_charger + type: template + template: ichargecion + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + +## SENEC + +### Wallbox pro 💚 + +```yaml +chargers: + - name: my_charger + type: template + template: abl + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 38400 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8E1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +### Wallbox pro s 💚 + +Please read the wiring and configuration manual carefully. All boxes must be configured for external control in follower mode (DIP S5/4 OFF). Each box needs an individual Modbus ID (DIP S4). Ensure correct RS485 cabling including bus termination (DIP S6/2). + +```yaml +chargers: + - name: my_charger + type: template + template: heidelberg + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 19200 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8E1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +## Siemens Versicharge GEN3 💚 + +Requires firmware >= 2.121.5 + +```yaml +chargers: + - name: my_charger + type: template + template: versicharge + + # Modbus TCP + modbus: tcpip + id: 2 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +## Skoda + +### iV Charger Connect (Beta) + +The device has to have a fix IP address (manuall or via DHCP). + +The identification of a vehicle using the RFID card is not possible. + +Important: A mostly flawless functionality can only be provided with an external energy meter and no usage of CT coils, due to sosftware bugs of the Wallbox. Using a LAN connection is highly recommended. + +Note: If you've added an energy meter to your charger please use the Pro or Connected+ integration. + +```yaml +chargers: + - name: my_charger + type: template + template: elliconnect + ski: # The SKI of the wallbox, usually found on the web interface of the wallbox + ip: 192.0.2.2 # IP address +``` + + + +### iV Charger Connect+ (Beta) + +The device has to have a fix IP address (manuall or via DHCP). + +The identification of a vehicle using the RFID card is not possible. + +Important: A mostly flawless functionality can only be provided with an external energy meter and no usage of CT coils, due to sosftware bugs of the Wallbox. Using a LAN connection is highly recommended. + +```yaml +chargers: + - name: my_charger + type: template + template: ellipro + ski: # The SKI of the wallbox, usually found on the web interface of the wallbox + ip: 192.0.2.2 # IP address +``` + + + +## SMA EV Charger 💚 + +The charger must be switched to "Fast" charging mode and the user must have "Administrator" rights. + +```yaml +chargers: + - name: my_charger + type: template + template: smaevcharger + host: 192.0.2.2 # IP address or hostname + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) +``` + + + + + +## smartWB + +```yaml +chargers: + - name: my_charger + type: template + template: smartwb + host: 192.0.2.2 # IP address or hostname +``` + + + +## SolarEdge Home EV Charger 💚 + +Requires firmware version 3.10.42 (C-series) bzw. 1.11 (X-series). For phase switching the Keba phase switch (KeContact S10) is also required. + +```yaml +chargers: + - name: my_charger + type: template + template: keba-modbus + + # Modbus TCP + modbus: tcpip + id: 255 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + + +## Sonnen sonnenCharger 💚 + +The charger must be switched to "Power" charging mode. + +```yaml +chargers: + - name: my_charger + type: template + template: etrel + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + + +## Stark in Strom Easy + +```yaml +chargers: + - name: my_charger + type: template + template: evse-din + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + +## TechniSat Technivolt 💚 + +The 'Modbus TCP Server' must be enabled. The setting 'Register Address Set' must NOT be set to 'Phoenix' or 'TQ-DM100'. Use the third selection labeled 'Ebee', 'Bender', 'MENNEKES' etc. Set 'Allow UID Disclose' to On. + +```yaml +chargers: + - name: my_charger + type: template + template: bender + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + + +## Tesla TWC3 + +The TWC wallbox cannot be controlled directly. Control is via the vehicle. The vehicle must be associated with the TWC3 loadpoint. At this time only Tesla vehicles are supported. + +```yaml +chargers: + - name: my_charger + type: template + template: twc3 + host: 192.0.2.2 # IP address or hostname +``` + + + +## TinkerForge + +### WARP Charger Pro + +Firmware v2 required. Automatic phase switching requires the additional WARP Energy Manager. + +```yaml +chargers: + - name: my_charger + type: template + template: tinkerforge-warp + host: 192.0.2.2 # IP address or hostname of the MQTT broker + port: 1883 # MQTT broker port (optional) + topic: warp # Topic (omit leading /) (optional) + energymanager: # EnergyManager MQTT topic if installed (optional) +``` + + + + + +### WARP Charger Smart + +Firmware v2 required. Automatic phase switching requires the additional WARP Energy Manager. + +```yaml +chargers: + - name: my_charger + type: template + template: tinkerforge-warp + host: 192.0.2.2 # IP address or hostname of the MQTT broker + port: 1883 # MQTT broker port (optional) + topic: warp # Topic (omit leading /) (optional) + energymanager: # EnergyManager MQTT topic if installed (optional) +``` + + + + + +## Ubitricity Heinz 💚 + +The 'Modbus TCP Server' must be enabled. The setting 'Register Address Set' must NOT be set to 'Phoenix' or 'TQ-DM100'. Use the third selection labeled 'Ebee', 'Bender', 'MENNEKES' etc. Set 'Allow UID Disclose' to On. + +```yaml +chargers: + - name: my_charger + type: template + template: bender + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + + +## Vestel EVC04 Home Smart/Connect Plus 💚 + +```yaml +chargers: + - name: my_charger + type: template + template: vestel + + # Modbus TCP + modbus: tcpip + id: 255 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +## Volkswagen + +### ID. Charger Connect (Beta) + +The device has to have a fix IP address (manuall or via DHCP). + +The identification of a vehicle using the RFID card is not possible. + +Important: A mostly flawless functionality can only be provided with an external energy meter and no usage of CT coils, due to sosftware bugs of the Wallbox. Using a LAN connection is highly recommended. + +Note: If you've added an energy meter to your charger please use the Pro or Connected+ integration. + +```yaml +chargers: + - name: my_charger + type: template + template: elliconnect + ski: # The SKI of the wallbox, usually found on the web interface of the wallbox + ip: 192.0.2.2 # IP address +``` + + + +### ID. Charger Pro (Beta) + +The device has to have a fix IP address (manuall or via DHCP). + +The identification of a vehicle using the RFID card is not possible. + +Important: A mostly flawless functionality can only be provided with an external energy meter and no usage of CT coils, due to sosftware bugs of the Wallbox. Using a LAN connection is highly recommended. + +```yaml +chargers: + - name: my_charger + type: template + template: ellipro + ski: # The SKI of the wallbox, usually found on the web interface of the wallbox + ip: 192.0.2.2 # IP address +``` + + + +## Wallbe + +### Eco, Pro + +The Wallbe must be connected using Ethernet and the DIP switch 10 must be set to 'ON'. + +```yaml +chargers: + - name: my_charger + type: template + template: wallbe + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + +### Eco, Pro (pre ~2019) + +DIP switch 10 must be set to 'ON'. + +```yaml +chargers: + - name: my_charger + type: template + template: wallbe-pre2019 + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + +### Eco, Pro (pre ~2019, with meter) + +DIP switch 10 must be set to 'ON'. + +```yaml +chargers: + - name: my_charger + type: template + template: wallbe-pre2019-meter + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + +### Eco, Pro (with meter) + +DIP switch 10 must be set to 'ON'. + +```yaml +chargers: + - name: my_charger + type: template + template: wallbe-meter + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + +## wallbox Pulsar Plus / Commander 2 / Copper SB + +Setup Guide: https://support.wallbox.com/en/knowledge-base/ocpp-activation-and-setup-guide/ +* Switch on “Enable OCPP” (myWallbox app) or enable the “OCPP WebSocket connection” switch (myWallbox Portal) +* URL: ws://[evcc-adresse]:8887/ (local network connection) +* Charge Point Identity: Custom value (e.g. serial number of charger) which is reused in configuration as *stationid* +* Password: leave empty + +```yaml +chargers: + - name: my_charger + type: template + template: pulsarplus +``` + + + +## Walther Werke Basic Evo Pro 💚 + +Please read the wiring and configuration manual carefully. All boxes must be configured for external control in follower mode (DIP S5/4 OFF). Each box needs an individual Modbus ID (DIP S4). Ensure correct RS485 cabling including bus termination (DIP S6/2). + +```yaml +chargers: + - name: my_charger + type: template + template: heidelberg + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 19200 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8E1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +## Webasto + +### Live 💚 + +The 'Modbus TCP Server' must be enabled. The setting 'Register Address Set' must NOT be set to 'Phoenix' or 'TQ-DM100'. Use the third selection labeled 'Ebee', 'Bender', 'MENNEKES' etc. Set 'Allow UID Disclose' to On. + +```yaml +chargers: + - name: my_charger + type: template + template: bender + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + + +### NEXT 💚 + +Mode "HEMS activated" must be enabled. RFID tags can only be read by evcc. + +```yaml +chargers: + - name: my_charger + type: template + template: webasto-next + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + + +### Unite 💚 + +```yaml +chargers: + - name: my_charger + type: template + template: vestel + + # Modbus TCP + modbus: tcpip + id: 255 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + +## Zaptec Go/Pro 💚 + +```yaml +chargers: + - name: my_charger + type: template + template: zaptec + id: # Charger ID (optional) + user: # User account (e.g. email address, user id, etc.) (optional) + password: # Password of the user account (use single quotes in case of leading zeros) (optional) +``` + + + + + +## Generic support + +### manuell + +```yaml +chargers: + - name: my_charger + type: custom + status: # charger status A..F + source: ... + # ... + enabled: # charger enabled state (true/false or 0/1) + source: ... + # ... + enable: # set charger enabled state (true/false or 0/1) + source: ... + # ... + maxcurrent: # set charger max current (A) + source: ... + # ... +``` + +- Dokumentation der Werte für `status A..F`: https://evsim.gonium.net/#der-control-pilot-cp + +### EEBUS compatible Wallbox + +```yaml +chargers: + - name: my_charger + type: template + template: eebus + ski: # The SKI of the wallbox, usually found on the web interface of the wallbox + ip: 192.0.2.2 # IP address (optional) +``` + + + +### OCPP 1.6J compatible charger with Smart Charging Profile + +With OCPP the connection will be established from charger (client) to evcc (server). +The charger needs to be able to reach evcc via the host name (functioning DNS resolution required!) or via the IP address on port 8887. +By default, the first incoming connection with any station identifier is used. +In order to be able to clearly assign several charging points, the respective station identifier (`stationid: `) and connector number (`connector: `) must be configured. +Many wallboxes automatically add the `station id` to the backend URL, some have to do this manually `ws://:8887/`. +The charger may need a pre-configured (virtual) token ID/RFID identifier (`idtag: `) with which the charging sessions can be started without authorization. +If the charger supports sending metering values try to adjust the interval to a short time span. + +Requirements: +* If necessary, remove previously configured OCPP profiles (e.g. used for a different backend connection) in the charger configuration +* Backend URL (Central System) in the charger configuration: `ws://[evcc-adresse]:8887/` (possibly add `stationid`) +* Protocol: OCPP-J v1.6, ocpp16j, JSON, Websocket, ws:// or similar +* No encryption, no authentication, no password +* Local network connection + +```yaml +chargers: + - name: my_charger + type: template + template: ocpp +``` + + + +## Switchable sockets + +Die von evcc unterstützten schaltbaren Steckdosen und SmartHome Schalter, können in zwei Modi betrieben werden: + +- Charger Modus (Standard) +- Static-Switch Modus + +Der _Charger Modus_ erlaubt die Nutzung der schaltbaren Steckdose als Ladesteuerung von Akku betriebenen Geräten (E-Motorrad, E-Bikes ...). +Dabei wird der Ladestrom gemessen und von evcc angezeigt, sowie beim Erreichen des Erhaltungsladungsstroms ( < `standbypower`) des Akkus der Status geladen ausgegeben. + +Demgegenüber dient der _Static-Switch_ Modus zum einfachen Schalten von Verbrauchern, wie Wärmepumpen, Klimaanlagen etc. +Der von der Steckdose gelieferte Status hängt dabei direkt vom Schaltzustand der Steckdose ab (An=Lade, Aus=Geladen). + +:::note +Um im _Static-Switch_ Modus eine aussagefähige Leistungsinformation anzuzeigen, empfiehlt es sich ein separates Custom-Meter zu definieren. +::: + +Bei allen schaltbaren Steckdosen wird der Modus über den Parameter `standbypower` eingestellt. + +Ist der Wert größer oder gleich 0, ist der _Charger Modus_ aktiviert. Der eingestellte Wert dient als Schwellwert in Watt. +Solange die durch die Steckdose gemessene Leistung sich über diesem Schellwert befindet, wird der Ladevorgang gemeldet, +fällt die Leistung unter diesen Schwellwert, ist der Erhaltungsladebereich bei vollem Akku erreicht und es wird der Ladevorgang als abgeschlossen gemeldet. + +Setzt man `standbypower` auf einen negativen Wert, arbeitet die schaltbare Steckdose im _Static-Switch_ Modus. + +:::info +Der Ladepunkt-Parameter `phases` **muss** bei Nutzung einer schaltbaren Steckdose zwingend auf **1** gesetzt werden, um eine ordnungsgemäße Lade-Steuerung zu gewährleisten. +Beispiel: + +```yaml +# loadpoint describes the charger, charge meter and connected vehicle +loadpoints: + - title: Shelly # display name for UI + charger: my_charger # charger + vehicle: audi + mode: pv +--- +mincurrent: 9 # 9A*220V=1980W minimum charge current (default 6A) +maxcurrent: 10 # 10A*220V=2200W maximum charge current (default 16A) +phases: 1 # ev phases (default 3) +``` + +::: + +### AVM FritzDECT + +```yaml +chargers: + - name: my_charger + type: template + template: fritzdect + uri: https://fritz.box # HTTP(S) address (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + ain: 307788992233 # The AIN is printed on the type label on the back of the device. Embed it in double quotes in case of leading zeroes. + standbypower: 15 # Power values above this value will be considered as charging pow (optional) +``` + + + +### Homematic / Homematic IP + +```yaml +chargers: + - name: my_charger + type: template + template: homematic + host: 192.0.2.2 # IP address or hostname + port: 2010 # Port (optional) + device: '0001EE89AAD848' # Homematic device id like shown in the CCU web user interface. + user: # User account (e.g. email address, user id, etc.) (optional) + password: # Password of the user account (use single quotes in case of leading zeros) (optional) + standbypower: 15 # Power values above this value will be considered as charging pow (optional) +``` + + + +### HomeWizard + +```yaml +chargers: + - name: my_charger + type: template + template: homewizard + host: 192.0.2.2 # IP address or hostname + standbypower: 15 # Power values above this value will be considered as charging pow (optional) +``` + + + +### myStrom Switch + +```yaml +chargers: + - name: my_charger + type: template + template: mystrom + host: 192.0.2.2 # IP address or hostname + standbypower: 15 # Power values above this value will be considered as charging pow (optional) +``` + + + +### Shelly + +```yaml +chargers: + - name: my_charger + type: template + template: shelly + host: 192.0.2.2 # IP address or hostname + user: # User account (e.g. email address, user id, etc.) (optional) + password: # Password of the user account (use single quotes in case of leading zeros) (optional) + channel: 0 # optional + standbypower: 15 # Power values above this value will be considered as charging pow (optional) +``` + + + +### Tasmota + +```yaml +chargers: + - name: my_charger + type: template + template: tasmota + host: 192.0.2.2 # IP address or hostname + user: # admin is default (optional) + password: # Password of the user account (use single quotes in case of leading zeros) (optional) + channel: 1 # Device relay channel number (allowed range 1-8) + standbypower: 15 # Power values above this value will be considered as charging pow (optional) +``` + + + +### TP-Link + +#### H-Series Smart Plug + +```yaml +chargers: + - name: my_charger + type: template + template: tplink + host: 192.0.2.2 # IP address or hostname + standbypower: 15 # Power values above this value will be considered as charging pow (optional) +``` + + + +#### Tapo P-Series Smart Plug + +```yaml +chargers: + - name: my_charger + type: template + template: tapo + host: 192.0.2.2 # IP address or hostname + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + standbypower: 15 # Power values above this value will be considered as charging pow (optional) +``` + diff --git a/i18n/en/docusaurus-plugin-content-docs/current/devices/chargers/_generic_support.mdx b/i18n/en/docusaurus-plugin-content-docs/current/devices/chargers/_generic_support.mdx new file mode 100644 index 0000000000..197faa1cca --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/devices/chargers/_generic_support.mdx @@ -0,0 +1,21 @@ +### manuell + +```yaml +chargers: + - name: my_charger + type: custom + status: # charger status A..F + source: ... + # ... + enabled: # charger enabled state (true/false or 0/1) + source: ... + # ... + enable: # set charger enabled state (true/false or 0/1) + source: ... + # ... + maxcurrent: # set charger max current (A) + source: ... + # ... +``` + +- Dokumentation der Werte für `status A..F`: https://evsim.gonium.net/#der-control-pilot-cp diff --git a/i18n/en/docusaurus-plugin-content-docs/current/devices/chargers/_switchable_sockets.mdx b/i18n/en/docusaurus-plugin-content-docs/current/devices/chargers/_switchable_sockets.mdx new file mode 100644 index 0000000000..f755b743d0 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/devices/chargers/_switchable_sockets.mdx @@ -0,0 +1,41 @@ +Die von evcc unterstützten schaltbaren Steckdosen und SmartHome Schalter, können in zwei Modi betrieben werden: + +- Charger Modus (Standard) +- Static-Switch Modus + +Der _Charger Modus_ erlaubt die Nutzung der schaltbaren Steckdose als Ladesteuerung von Akku betriebenen Geräten (E-Motorrad, E-Bikes ...). +Dabei wird der Ladestrom gemessen und von evcc angezeigt, sowie beim Erreichen des Erhaltungsladungsstroms ( < `standbypower`) des Akkus der Status geladen ausgegeben. + +Demgegenüber dient der _Static-Switch_ Modus zum einfachen Schalten von Verbrauchern, wie Wärmepumpen, Klimaanlagen etc. +Der von der Steckdose gelieferte Status hängt dabei direkt vom Schaltzustand der Steckdose ab (An=Lade, Aus=Geladen). + +:::note +Um im _Static-Switch_ Modus eine aussagefähige Leistungsinformation anzuzeigen, empfiehlt es sich ein separates Custom-Meter zu definieren. +::: + +Bei allen schaltbaren Steckdosen wird der Modus über den Parameter `standbypower` eingestellt. + +Ist der Wert größer oder gleich 0, ist der _Charger Modus_ aktiviert. Der eingestellte Wert dient als Schwellwert in Watt. +Solange die durch die Steckdose gemessene Leistung sich über diesem Schellwert befindet, wird der Ladevorgang gemeldet, +fällt die Leistung unter diesen Schwellwert, ist der Erhaltungsladebereich bei vollem Akku erreicht und es wird der Ladevorgang als abgeschlossen gemeldet. + +Setzt man `standbypower` auf einen negativen Wert, arbeitet die schaltbare Steckdose im _Static-Switch_ Modus. + +:::info +Der Ladepunkt-Parameter `phases` **muss** bei Nutzung einer schaltbaren Steckdose zwingend auf **1** gesetzt werden, um eine ordnungsgemäße Lade-Steuerung zu gewährleisten. +Beispiel: + +```yaml +# loadpoint describes the charger, charge meter and connected vehicle +loadpoints: + - title: Shelly # display name for UI + charger: my_charger # charger + vehicle: audi + mode: pv +--- +mincurrent: 9 # 9A*220V=1980W minimum charge current (default 6A) +maxcurrent: 10 # 10A*220V=2200W maximum charge current (default 16A) +phases: 1 # ev phases (default 3) +``` + +::: diff --git a/i18n/en/docusaurus-plugin-content-docs/current/devices/meters.mdx b/i18n/en/docusaurus-plugin-content-docs/current/devices/meters.mdx new file mode 100644 index 0000000000..55063f1555 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/devices/meters.mdx @@ -0,0 +1,5795 @@ +--- +sidebar_position: 2 +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import SponsorshipRequired from "../_sponsorship_required.mdx"; + +# Meters / Site + +Die aufgelisteten Geräte können als `meter` für verschiedene Zwecke eingebunden werden. Um die Ströme am Netzanschluss `grid` zu erhalten, die PV Leistung `pv`, die Hausbatterie `battery` oder die Ladeleistung des EV `charge`. + +In der Konfigurationsdatei gibt es hierzu den folgenden Bereich: + +```yaml +meters: + - name: grid + type: ... + - name: pv + type: ... + - name: battery + type: ... +``` + +Auf dieser Seite findest du die Konfigurationen für alle von evcc bekannterweise unterstützte Komponenten die als Energiemesspunkte (Zähler) eingebunden werden kann. +Nachdem du das Code-Beispiel für deine Zähler angepasst und in die `evcc.yaml` übernommen hast, kannst du die Verbindung mit dem Befehl `evcc meter` testen. Dabei werden alle konfigurierten Zähler getestet. Mit dem Befehl `evcc meter --name my_meter` kann man mittels des vergebenen Namens selektiv testen. + +``` +$ ./evcc meter + +grid +----- +Power: -31W +Energy: 5195.5kWh +Current L1..L3: 3.05A 1.07A 1.15A +``` + +:::note +Die meisten modernen PV-Technikkomponenten, insbesondere Wechselrichter und Batteriespeicher aber auch manche Smart Meter sind mit den s.g. SunSpec-Schemata über ein standardisiertes Datenmodell via Modbus/TCP abfragbar, ohne dass man dazu auf spezielle gerätespezifische Datenregister o. ä. zugreifen muss. Sollten hier bekannte Systeme also nicht mit einer eigenen Konfiguration namentlich aufgeführt sein, bedeutet dies in der Regel, dass diese vollständig SunSpec-kompatibel sind und somit keiner gerätespezifischen Sonderkonfiguration bedürfen. +::: + + + + + +## ABB A43, A44, B23, B24 + + + + +```yaml +meters: + - name: my_grid + type: template + template: abb-ab + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: abb-ab + usage: charge + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## Acrel ADW300 Wireless Metering Meter + + + + +```yaml +meters: + - name: my_grid + type: template + template: acrel-adw300 + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 1200 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: acrel-adw300 + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 1200 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: acrel-adw300 + usage: charge + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 1200 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## Alpha ESS Storion SMILE + + + + +```yaml +meters: + - name: my_grid + type: template + template: alpha-ess-smile + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 85 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 85 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 85 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: alpha-ess-smile + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 85 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 85 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 85 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: alpha-ess-smile + usage: battery + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 85 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 85 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 85 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## Bernecker Engineering MPM3PM + + + + +```yaml +meters: + - name: my_grid + type: template + template: mpm3pm + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: mpm3pm + usage: charge + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## Bosswerk MI series micro inverter + +```yaml +meters: + - name: my_pv + type: template + template: solarman + usage: pv + host: 192.0.2.2 # IP address or hostname + user: admin # User account (e.g. email address, user id, etc.) (optional) + password: admin # Password of the user account (use single quotes in case of leading zeros) (optional) +``` + + + +## Carlo Gavazzi + +### EM/ET 330/340 + + + + +```yaml +meters: + - name: my_grid + type: template + template: cg-emt3xx + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: cg-emt3xx + usage: charge + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +### EM24 + + + + +```yaml +meters: + - name: my_grid + type: template + template: cg-em24 + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: cg-em24 + usage: charge + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## cFos PowerBrain Meter 💚 + +```yaml +meters: + - name: my_charger + type: template + template: cfos + usage: charge + + # Modbus TCP + modbus: tcpip + id: 2 + host: 192.0.2.2 # Hostname + port: 4702 # Port +``` + + + + + +## Deye + +### SUN series micro inverter + +```yaml +meters: + - name: my_pv + type: template + template: solarman + usage: pv + host: 192.0.2.2 # IP address or hostname + user: admin # User account (e.g. email address, user id, etc.) (optional) + password: admin # Password of the user account (use single quotes in case of leading zeros) (optional) +``` + + + +### SUN-(5/6/8/10/12)K-SG04LP3-EU series hybrid inverter + + + + +```yaml +meters: + - name: my_grid + type: template + template: deye-hybrid + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: deye-hybrid + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: deye-hybrid + usage: battery + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## Discovergy + + + + +```yaml +meters: + - name: my_grid + type: template + template: discovergy + usage: grid + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + meter: 1ESY1161229886 +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: discovergy + usage: pv + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + meter: 1ESY1161229886 +``` + + + + + + +## DSMR + +```yaml +meters: + - name: my_grid + type: template + template: dsmr + usage: grid + host: 192.0.2.2 # IP address or hostname + port: 1502 # Port (optional) +``` + + + +## DZG DVH4013 + +```yaml +meters: + - name: my_charger + type: template + template: dzg + usage: charge + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + +## E3/DC + + + + +```yaml +meters: + - name: my_grid + type: template + template: e3dc + usage: grid + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: e3dc + usage: pv + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: e3dc + usage: battery + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + + + +## Eastron + +### SDM120-Modbus + + + + +```yaml +meters: + - name: my_grid + type: template + template: eastron-sdm120 + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: eastron-sdm120 + usage: charge + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +### SDM220/230 + + + + +```yaml +meters: + - name: my_grid + type: template + template: eastron-sdm220_230 + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: eastron-sdm220_230 + usage: charge + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +### SDM630-Modbus + + + + +```yaml +meters: + - name: my_grid + type: template + template: eastron + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: eastron + usage: charge + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +### SDM72D-M + + + + +```yaml +meters: + - name: my_grid + type: template + template: eastron-sdm72 + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: eastron-sdm72 + usage: charge + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +### SDM72DM-V2 + + + + +```yaml +meters: + - name: my_grid + type: template + template: eastron + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: eastron + usage: charge + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## Enphase IQ Envoy + +Only batteries of type "AC Battery" are currently supported by Enphase-API. + + + + +```yaml +meters: + - name: my_grid + type: template + template: enphase + usage: grid + host: 192.0.2.2 # IP address or hostname + token: # Required if Envoy Firmware D7.x.xxx. Token is valid for one year. Instructions for obtaining a token via web UI: https://enphase.com/download/accessing-iq-gateway-local-apis-or-local-ui-token-based-authentication (optional) +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: enphase + usage: pv + host: 192.0.2.2 # IP address or hostname + token: # Required if Envoy Firmware D7.x.xxx. Token is valid for one year. Instructions for obtaining a token via web UI: https://enphase.com/download/accessing-iq-gateway-local-apis-or-local-ui-token-based-authentication (optional) +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: enphase + usage: battery + host: 192.0.2.2 # IP address or hostname + token: # Required if Envoy Firmware D7.x.xxx. Token is valid for one year. Instructions for obtaining a token via web UI: https://enphase.com/download/accessing-iq-gateway-local-apis-or-local-ui-token-based-authentication (optional) +``` + + + + + + +## ESPHome DSMR + +```yaml +meters: + - name: my_grid + type: template + template: slimmelezer + usage: grid + host: 192.0.2.2 # IP address or hostname +``` + + + +## FENECON + + + + +```yaml +meters: + - name: my_grid + type: template + template: openems + usage: grid + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: openems + usage: pv + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: openems + usage: battery + host: 192.0.2.2 # IP address or hostname +``` + + + + + + +## FoxESS + +### FoxESS via RS485 Modbus + + + + +```yaml +meters: + - name: my_grid + type: template + template: fox-ess-rs485 + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: fox-ess-rs485 + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: fox-ess-rs485 + usage: battery + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +### H1 via Ethernet + + + + +```yaml +meters: + - name: my_pv + type: template + template: fox-ess-h1 + usage: pv + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: fox-ess-h1 + usage: battery + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +### H3 via Ethernet + + + + +```yaml +meters: + - name: my_grid + type: template + template: fox-ess-h3 + usage: grid + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: fox-ess-h3 + usage: pv + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: fox-ess-h3 + usage: battery + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## Fronius + +### Primo GEN24 Plus + + + + +```yaml +meters: + - name: my_grid + type: template + template: fronius-gen24 + usage: grid + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: fronius-gen24 + usage: pv + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: fronius-gen24 + usage: battery + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + + + +### Solar API V1 + + + + +```yaml +meters: + - name: my_grid + type: template + template: fronius-solarapi-v1 + usage: grid + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: fronius-solarapi-v1 + usage: pv + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: fronius-solarapi-v1 + usage: battery + host: 192.0.2.2 # IP address or hostname +``` + + + + + + +### Symo GEN24 Plus + + + + +```yaml +meters: + - name: my_grid + type: template + template: fronius-gen24 + usage: grid + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: fronius-gen24 + usage: pv + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: fronius-gen24 + usage: battery + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + + + +## Ginlong Solis inverter + +```yaml +meters: + - name: my_pv + type: template + template: solarman + usage: pv + host: 192.0.2.2 # IP address or hostname + user: admin # User account (e.g. email address, user id, etc.) (optional) + password: admin # Password of the user account (use single quotes in case of leading zeros) (optional) +``` + + + +## GoodWe ET/EH/BH/BT Hybrid Inverter + + + + +```yaml +meters: + - name: my_grid + type: template + template: goodwe-hybrid + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 247 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 247 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 247 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: goodwe-hybrid + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 247 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 247 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 247 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: goodwe-hybrid + usage: battery + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 247 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 247 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 247 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## Growatt + +### Hybrid Inverter + + + + +```yaml +meters: + - name: my_grid + type: template + template: growatt-hybrid + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: growatt-hybrid + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: growatt-hybrid + usage: battery + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +### TL-X(H) Hybrid Inverter + + + + +```yaml +meters: + - name: my_grid + type: template + template: growatt-hybrid-tlxh + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: growatt-hybrid-tlxh + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: growatt-hybrid-tlxh + usage: battery + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## HomeWizard Wi-Fi P1 Meter + + + + +```yaml +meters: + - name: my_grid + type: template + template: homewizard + usage: grid + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: homewizard + usage: pv + host: 192.0.2.2 # IP address or hostname +``` + + + + + + +## Hoymiles HM and HMS Series (via OpenDTU) + +```yaml +meters: + - name: my_pv + type: template + template: hoymiles-opendtu + usage: pv + host: 192.0.2.2 # IP address or hostname +``` + + + +## Huawei + +### SmartLogger + +```yaml +meters: + - name: my_pv + type: template + template: huawei-smartlogger + usage: pv + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + +### SUN2000 via RS485 Modbus + + + + +```yaml +meters: + - name: my_grid + type: template + template: huawei-sun2000-rs485 + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: huawei-sun2000-rs485 + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: huawei-sun2000-rs485 + usage: battery + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +### SUN2000 with SDongle + +```yaml +meters: + - name: my_pv + type: template + template: huawei-dongle + usage: pv + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + +### SUN2000 with SDongle & Power Sensor + + + + +```yaml +meters: + - name: my_grid + type: template + template: huawei-dongle-powersensor + usage: grid + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: huawei-dongle-powersensor + usage: pv + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: huawei-dongle-powersensor + usage: battery + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## IGEN Tech Solarman Logger + +```yaml +meters: + - name: my_pv + type: template + template: solarman + usage: pv + host: 192.0.2.2 # IP address or hostname + user: admin # User account (e.g. email address, user id, etc.) (optional) + password: admin # Password of the user account (use single quotes in case of leading zeros) (optional) +``` + + + +## inepro PRO380-MOD + + + + +```yaml +meters: + - name: my_grid + type: template + template: inepro + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: inepro + usage: charge + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## Janitza B series, UMG series + + + + +```yaml +meters: + - name: my_grid + type: template + template: janitza + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: janitza + usage: charge + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## Kostal + +### Piko (legacy) + +```yaml +meters: + - name: my_pv + type: template + template: kostal-piko-legacy + usage: pv + host: 192.0.2.2 # IP address or hostname + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) +``` + + + +### Piko Hybrid + + + + +```yaml +meters: + - name: my_grid + type: template + template: kostal-piko-hybrid + usage: grid + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: kostal-piko-hybrid + usage: pv + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: kostal-piko-hybrid + usage: battery + host: 192.0.2.2 # IP address or hostname +``` + + + + + + +### Piko MP Plus + +```yaml +meters: + - name: my_pv + type: template + template: kostal-piko-mp-plus + usage: pv + host: 192.0.2.2 # IP address or hostname +``` + + + +### Piko, Piko BA + + + + +```yaml +meters: + - name: my_grid + type: template + template: kostal-piko-pv + usage: grid + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: kostal-piko-pv + usage: pv + host: 192.0.2.2 # IP address or hostname +``` + + + + + + +### Plenticore Hybrid + + + + +```yaml +meters: + - name: my_pv + type: template + template: kostal-plenticore + usage: pv + + # Modbus TCP + modbus: tcpip + id: 71 + host: 192.0.2.2 # Hostname + port: 1502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: kostal-plenticore + usage: battery + + # Modbus TCP + modbus: tcpip + id: 71 + host: 192.0.2.2 # Hostname + port: 1502 # Port +``` + + + + + + +### Smart Energy Meter + +```yaml +meters: + - name: my_grid + type: template + template: kostal-ksem + usage: grid + + # Modbus TCP + modbus: tcpip + id: 71 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + +### Smart Energy Meter (via inverter) + +The energy meter must be installed in sensor position 2 (grid connection). Sensor position 1 (House consumption) is not supported. + +```yaml +meters: + - name: my_grid + type: template + template: kostal-ksem-inverter + usage: grid + + # Modbus TCP + modbus: tcpip + id: 71 + host: 192.0.2.2 # Hostname + port: 1502 # Port +``` + + + +## LG ESS Home 8/10 + + + + +```yaml +meters: + - name: my_grid + type: template + template: lg-ess-home-8-10 + usage: grid + host: 192.0.2.2 # IP address or hostname + registration: DE200... # Registration number of the LG ESS HOME inverter. +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: lg-ess-home-8-10 + usage: pv + host: 192.0.2.2 # IP address or hostname + registration: DE200... # Registration number of the LG ESS HOME inverter. +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: lg-ess-home-8-10 + usage: battery + host: 192.0.2.2 # IP address or hostname + registration: DE200... # Registration number of the LG ESS HOME inverter. +``` + + + + + + +## M-TEC + +### Energy Butler GEN2 + + + + +```yaml +meters: + - name: my_grid + type: template + template: mtec-eb-gen2 + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 247 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 247 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: mtec-eb-gen2 + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 247 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 247 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: mtec-eb-gen2 + usage: battery + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 247 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 247 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +### Energy Butler GEN3 + + + + +```yaml +meters: + - name: my_grid + type: template + template: mtec-eb-gen3 + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 247 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 247 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: mtec-eb-gen3 + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 247 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 247 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: mtec-eb-gen3 + usage: battery + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 247 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 247 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## my-PV WiFi Meter + +```yaml +meters: + - name: my_grid + type: template + template: mypv-wifi-meter + usage: grid + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + +## OpenEMS + + + + +```yaml +meters: + - name: my_grid + type: template + template: openems + usage: grid + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: openems + usage: pv + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: openems + usage: battery + host: 192.0.2.2 # IP address or hostname +``` + + + + + + +## Orno OR-WE-516, OR-WE-517 + + + + +```yaml +meters: + - name: my_grid + type: template + template: orno + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: orno + usage: charge + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## Powerdog + + + + +```yaml +meters: + - name: my_grid + type: template + template: powerdog + usage: grid + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: powerdog + usage: pv + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## Powerfox Poweropti + + + + +```yaml +meters: + - name: my_grid + type: template + template: powerfox-poweropti + usage: grid + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: powerfox-poweropti + usage: pv + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) +``` + + + + + + +## Qcells Q.HOME ESS HYB-G3 + + + + +```yaml +meters: + - name: my_grid + type: template + template: solax + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 19200 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: solax + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 19200 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: solax + usage: battery + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 19200 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## RCT Power + + + + +```yaml +meters: + - name: my_grid + type: template + template: rct-power + usage: grid + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: rct-power + usage: pv + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: rct-power + usage: battery + host: 192.0.2.2 # IP address or hostname +``` + + + + + + +## Saia-Burgess Controls ALE3, AWD3 + + + + +```yaml +meters: + - name: my_grid + type: template + template: sbc-axx3 + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: sbc-axx3 + usage: charge + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## SAX Homespeicher + + + + +```yaml +meters: + - name: my_grid + type: template + template: sax + usage: grid + + # Modbus TCP + modbus: tcpip + id: 64 + host: 192.0.2.2 # Hostname + port: 3600 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: sax + usage: battery + + # Modbus TCP + modbus: tcpip + id: 64 + host: 192.0.2.2 # Hostname + port: 3600 # Port +``` + + + + + + +## Schneider Electric iEM3xxx Modbus + + + + +```yaml +meters: + - name: my_grid + type: template + template: schneider-iem3000 + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: schneider-iem3000 + usage: charge + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## SENEC .Home + + + + +```yaml +meters: + - name: my_grid + type: template + template: senec-home + usage: grid + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: senec-home + usage: pv + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: senec-home + usage: battery + host: 192.0.2.2 # IP address or hostname +``` + + + + + + +## Senergy SE 4/5/6KTL-S1/G2 Inverter + +```yaml +meters: + - name: my_pv + type: template + template: senergy + usage: pv + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + +## Shelly + +### 3EM + + + + +```yaml +meters: + - name: my_grid + type: template + template: shelly-3em + usage: grid + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: shelly-3em + usage: pv + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: shelly-3em + usage: charge + host: 192.0.2.2 # IP address or hostname +``` + + + + + + +### Pro 3 EM + + + + +```yaml +meters: + - name: my_grid + type: template + template: shelly-pro-3em + usage: grid + host: 192.0.2.2 # IP address or hostname + user: # User account (e.g. email address, user id, etc.) (optional) + password: # Password of the user account (use single quotes in case of leading zeros) (optional) +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: shelly-pro-3em + usage: pv + host: 192.0.2.2 # IP address or hostname + user: # User account (e.g. email address, user id, etc.) (optional) + password: # Password of the user account (use single quotes in case of leading zeros) (optional) +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: shelly-pro-3em + usage: charge + host: 192.0.2.2 # IP address or hostname + user: # User account (e.g. email address, user id, etc.) (optional) + password: # Password of the user account (use single quotes in case of leading zeros) (optional) +``` + + + + + + +## Siemens + +### 7KT1665 + + + + +```yaml +meters: + - name: my_grid + type: template + template: siemens-7kt1665 + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: siemens-7kt1665 + usage: charge + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +### PAC 2200 + + + + +```yaml +meters: + - name: my_grid + type: template + template: siemens-pac2200 + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: siemens-pac2200 + usage: charge + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## SMA + +### Data Manager + +In the web interface of the SMA Data Manager you need to activate "Modbus Server activated" in the section "External communication". + + + + +```yaml +meters: + - name: my_grid + type: template + template: sma-data-manager + usage: grid + + # Modbus TCP + modbus: tcpip + id: 2 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: sma-data-manager + usage: pv + + # Modbus TCP + modbus: tcpip + id: 2 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: sma-data-manager + usage: battery + + # Modbus TCP + modbus: tcpip + id: 2 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +### Energy Meter + + + + +```yaml +meters: + - name: my_grid + type: template + template: sma-energy-meter + usage: grid + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: sma-energy-meter + usage: pv + host: 192.0.2.2 # IP address or hostname +``` + + + + + + +### Inverter + + + + +```yaml +meters: + - name: my_pv + type: template + template: sma-inverter + usage: pv + host: 192.0.2.2 # IP address or hostname + password: # Password for user group Standard (optional) +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: sma-inverter + usage: battery + host: 192.0.2.2 # IP address or hostname + password: # Password for user group Standard (optional) +``` + + + + + + +### Smart Energy Hybrid Inverter + + + + +```yaml +meters: + - name: my_pv + type: template + template: sma-hybrid + usage: pv + + # Modbus TCP + modbus: tcpip + id: 3 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: sma-hybrid + usage: battery + + # Modbus TCP + modbus: tcpip + id: 3 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +### Sunny Home Manager 2.0 + +```yaml +meters: + - name: my_grid + type: template + template: sma-home-manager + usage: grid + host: 192.0.2.2 # IP address or hostname +``` + + + +### WebBox + +```yaml +meters: + - name: my_pv + type: template + template: sma-webbox + usage: pv + + # Modbus TCP + modbus: tcpip + id: 2 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + +## SofarSolar + +### HYD 3…6K-EP + + + + +```yaml +meters: + - name: my_grid + type: template + template: sofarsolar-g3 + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + delay: 1s # optional +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: sofarsolar-g3 + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + delay: 1s # optional +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: sofarsolar-g3 + usage: battery + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + delay: 1s # optional +``` + + + + + + +### HYD 5…20K-3PH + + + + +```yaml +meters: + - name: my_grid + type: template + template: sofarsolar-g3 + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + delay: 1s # optional +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: sofarsolar-g3 + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + delay: 1s # optional +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: sofarsolar-g3 + usage: battery + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + delay: 1s # optional +``` + + + + + + +### Inverter / Hybrid Inverter + + + + +```yaml +meters: + - name: my_grid + type: template + template: sofarsolar + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: sofarsolar + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: sofarsolar + usage: battery + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +### SOFAR 5…24KTL-G3 + + + + +```yaml +meters: + - name: my_grid + type: template + template: sofarsolar-g3 + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + delay: 1s # optional +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: sofarsolar-g3 + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + delay: 1s # optional +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: sofarsolar-g3 + usage: battery + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + delay: 1s # optional +``` + + + + + + +### SOFAR 80…136KTL + + + + +```yaml +meters: + - name: my_grid + type: template + template: sofarsolar-g3 + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + delay: 1s # optional +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: sofarsolar-g3 + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + delay: 1s # optional +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: sofarsolar-g3 + usage: battery + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + delay: 1s # optional +``` + + + + + + +## Solaranzeige Solaranzeige + + + + +```yaml +meters: + - name: my_grid + type: template + template: solaranzeige + usage: grid + host: 192.0.2.2 # IP address or hostname of the MQTT broker + port: 1883 # MQTT broker port (optional) + topic: solaranzeige/box1 # Topic (omit leading /) (optional) +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: solaranzeige + usage: pv + host: 192.0.2.2 # IP address or hostname of the MQTT broker + port: 1883 # MQTT broker port (optional) + topic: solaranzeige/box1 # Topic (omit leading /) (optional) +``` + + + + + + +## SolarEdge + +### Hybrid Inverter + +Only one system may access the inverter! + + + + +```yaml +meters: + - name: my_grid + type: template + template: solaredge-hybrid + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 1502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 1502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: solaredge-hybrid + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 1502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 1502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: solaredge-hybrid + usage: battery + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 1502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 1502 # Port +``` + + + + + + +### Inverter + +Only one system may access the inverter! + + + + +```yaml +meters: + - name: my_grid + type: template + template: solaredge-inverter + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 1502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 1502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: solaredge-inverter + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 1502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 1502 # Port +``` + + + + + + +## Solarlog + +We recommend to use this device for grid power values only, if no other device is available providing this data. +If you have a home battery installed, please do not use this device at all for grid power values. + + + + +```yaml +meters: + - name: my_grid + type: template + template: solarlog + usage: grid + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: solarlog + usage: pv + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + + + +## SolarMax + +### MAX.STORAGE / MAX.STORAGE Ultimate + + + + +```yaml +meters: + - name: my_grid + type: template + template: solarmax-maxstorage + usage: grid + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: solarmax-maxstorage + usage: pv + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: solarmax-maxstorage + usage: battery + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +### SP Series Inverter + +```yaml +meters: + - name: my_pv + type: template + template: senergy + usage: pv + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + +## Solarwatt + +### EnergyManager, EnergyManager Pro + + + + +```yaml +meters: + - name: my_grid + type: template + template: solarwatt + usage: grid + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: solarwatt + usage: pv + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: solarwatt + usage: battery + host: 192.0.2.2 # IP address or hostname +``` + + + + + + +### MyReserve + + + + +```yaml +meters: + - name: my_grid + type: template + template: solarwatt + usage: grid + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: solarwatt + usage: pv + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: solarwatt + usage: battery + host: 192.0.2.2 # IP address or hostname +``` + + + + + + +### MyReserve Matrix (LAN oder PowerGateway) + + + + +```yaml +meters: + - name: my_grid + type: template + template: solarwatt-myreserve-matrix + usage: grid + host: 192.0.2.2 # IP address or hostname + port: 8080 # Port (optional) +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: solarwatt-myreserve-matrix + usage: pv + host: 192.0.2.2 # IP address or hostname + port: 8080 # Port (optional) +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: solarwatt-myreserve-matrix + usage: battery + host: 192.0.2.2 # IP address or hostname + port: 8080 # Port (optional) +``` + + + + + + +## Solax + +### Hybrid X1/X3 G3/G4 + + + + +```yaml +meters: + - name: my_grid + type: template + template: solax + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 19200 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: solax + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 19200 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: solax + usage: battery + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 19200 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +### Hybrid-Inverter (Cloud) + +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. + + + + +```yaml +meters: + - name: my_grid + type: template + template: solax-hybrid-cloud + usage: grid + tokenid: # Go to https://www.solaxcloud.com/#/api and take the value of "ObtaintokenID". + serial: # Go to https://www.solaxcloud.com/#/inverter and take the value of registration number. +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: solax-hybrid-cloud + usage: pv + tokenid: # Go to https://www.solaxcloud.com/#/api and take the value of "ObtaintokenID". + serial: # Go to https://www.solaxcloud.com/#/inverter and take the value of registration number. +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: solax-hybrid-cloud + usage: battery + tokenid: # Go to https://www.solaxcloud.com/#/api and take the value of "ObtaintokenID". + serial: # Go to https://www.solaxcloud.com/#/inverter and take the value of registration number. +``` + + + + + + +### Inverter (Cloud) + +The Solax 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. + +```yaml +meters: + - name: my_pv + type: template + template: solax-inverter-cloud + usage: pv + tokenid: # Use the ObtaintokenID from https://www.solaxcloud.com/#/api. + serial: # Use the registration number from https://www.solaxcloud.com/#/inverter. +``` + + + +## Sonnen + +### comfort, eco 5, eco 6, oem 6.5 + + + + +```yaml +meters: + - name: my_grid + type: template + template: sonnenbatterie-eco56 + usage: grid + host: 192.0.2.2 # IP address or hostname + port: 7979 # Port (optional) +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: sonnenbatterie-eco56 + usage: pv + host: 192.0.2.2 # IP address or hostname + port: 7979 # Port (optional) +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: sonnenbatterie-eco56 + usage: battery + host: 192.0.2.2 # IP address or hostname + port: 7979 # Port (optional) +``` + + + + + + +### sonnenBatterie + + + + +```yaml +meters: + - name: my_grid + type: template + template: sonnenbatterie + usage: grid + host: 192.0.2.2 # IP address or hostname + port: 8080 # Port (optional) +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: sonnenbatterie + usage: pv + host: 192.0.2.2 # IP address or hostname + port: 8080 # Port (optional) +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: sonnenbatterie + usage: battery + host: 192.0.2.2 # IP address or hostname + port: 8080 # Port (optional) +``` + + + + + + +## Steca coolcept fleX + +```yaml +meters: + - name: my_pv + type: template + template: kostal-piko-mp-plus + usage: pv + host: 192.0.2.2 # IP address or hostname +``` + + + +## Sungrow + +### SG Series Inverter + + + + +```yaml +meters: + - name: my_grid + type: template + template: sungrow-inverter + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: sungrow-inverter + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +### SH Series Hybrid Inverter + +The connection can be serial (RS485) or via the native (rear) LAN socket on the inverter. Connections via the WiNet-S dongle (WiFi or LAN) do NOT work correctly. + + + + +```yaml +meters: + - name: my_grid + type: template + template: sungrow-hybrid + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: sungrow-hybrid + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: sungrow-hybrid + usage: battery + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## Sunsynk SYNK-(8/10/12)K-SG04LP3 *untested* + + + + +```yaml +meters: + - name: my_grid + type: template + template: deye-hybrid + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: deye-hybrid + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: deye-hybrid + usage: battery + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## Tesla Powerwall + + + + +```yaml +meters: + - name: my_grid + type: template + template: tesla-powerwall + usage: grid + host: 192.0.2.2 # IP address or hostname + password: # Password of the user "customer" +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: tesla-powerwall + usage: pv + host: 192.0.2.2 # IP address or hostname + password: # Password of the user "customer" +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: tesla-powerwall + usage: battery + host: 192.0.2.2 # IP address or hostname + password: # Password of the user "customer" +``` + + + + + + +## Tibber Pulse + +```yaml +meters: + - name: my_grid + type: template + template: tibber-pulse + usage: grid + token: 5K4MVS-OjfWhK_4yrjOlFe1F6kJXPVf7eQYggo8ebAE + homeid: 96a14971-525a-4420-aae9-e5aedaa129ff # optional +``` + + + +## TQ + +### Energy Manager EM2xx/EM3xx + +```yaml +meters: + - name: my_grid + type: template + template: tq-em + usage: grid + host: 192.0.2.2 # IP address or hostname + port: 80 # Port (optional) + password: # Password of the user account (use single quotes in case of leading zeros) (optional) +``` + + + +### Energy Manager EM420 + +```yaml +meters: + - name: my_grid + type: template + template: tq-em420 + usage: grid + host: 192.0.2.2 # IP address or hostname + port: 80 # Port (optional) + device: local # JSON-API -> Data Endpoint (optional) + token: ey... # Access token for EM420 (Create in Profile -> Access tokens) +``` + + + +## VARTA pulse/ pulse neo/ element (PV only available with PV sensor) + + + + +```yaml +meters: + - name: my_grid + type: template + template: varta + usage: grid + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: varta + usage: pv + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: varta + usage: battery + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + + + +## Victron Energy + + + + +```yaml +meters: + - name: my_grid + type: template + template: victron-energy + usage: grid + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: victron-energy + usage: pv + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: victron-energy + usage: battery + host: 192.0.2.2 # IP address or hostname + port: 502 # Port (optional) +``` + + + + + + +## Youless Energy Monitor + +An externally connected S0 generation meter is required to record the solar production. + + + + +```yaml +meters: + - name: my_grid + type: template + template: youless + usage: grid + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: youless + usage: pv + host: 192.0.2.2 # IP address or hostname +``` + + + + + + +## ZCS Azzurro Inverter / Hybrid Inverter + + + + +```yaml +meters: + - name: my_grid + type: template + template: sofarsolar + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: sofarsolar + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: sofarsolar + usage: battery + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +## Zuidwijk SlimmeLezer(+) + +```yaml +meters: + - name: my_grid + type: template + template: slimmelezer + usage: grid + host: 192.0.2.2 # IP address or hostname +``` + + + +## Generic support + +### manuell + +```yaml +meters: + - name: my_meter + type: custom + power: # power (W) + source: # plugin type + # ... + energy: # optional energy (kWh) + source: # plugin type + # ... + soc: # optional battery soc (%) + source: # plugin type + # ... + currents: # optional currents (A) + - source: # L1 plugin type + # ... + - source: # L2 plugin type + # ... + - source: # L3 plugin type + # ... +``` + +### Hybrid Inverter + + + + +```yaml +meters: + - name: my_grid + type: template + template: sunspec-hybrid + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: sunspec-hybrid + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: sunspec-hybrid + usage: battery + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +### Inverter + + + + +```yaml +meters: + - name: my_grid + type: template + template: sunspec-inverter + usage: grid + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: sunspec-inverter + usage: pv + + # RS485 via adapter (Modbus RTU) + modbus: rs485serial + id: 1 + device: /dev/ttyUSB0 # USB-RS485 Adapter Adresse + baudrate: 9600 # Prüfe die Geräteeinstellungen, typische Werte sind 9600, 19200, 38400, 57600, 115200 + comset: "8N1" # Kommunikationsparameter für den Adapter + + # RS485 via TCP/IP (Modbus RTU) + modbus: rs485tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port + + # Modbus TCP + modbus: tcpip + id: 1 + host: 192.0.2.2 # Hostname + port: 502 # Port +``` + + + + + + +### Volkszähler + +#### HTTP API + +```yaml +meters: + - name: my_grid + type: template + template: volkszaehler-http + usage: grid + url: # Example: http://zaehler.network.local:8080/api/data (optional) + uuid: +``` + + + +#### HTTP API, Import & Export + +```yaml +meters: + - name: my_grid + type: template + template: volkszaehler-importexport + usage: grid + url: # The URL is for example: http://zaehler.network.local:8080/api/data (optional) + importuuid: + exportuuid: +``` + + + +#### WebSocket API + +```yaml +meters: + - name: my_grid + type: template + template: volkszaehler-ws + usage: grid + host: 192.0.2.2 # IP address or hostname + port: 8082 # Port (optional) + uuid: +``` + + + +### vzlogger + +```yaml +meters: + - name: my_grid + type: template + template: vzlogger + usage: grid + host: 192.0.2.2 # IP address or hostname + port: 8081 # Port (optional) + uuid: +``` + + + +## Switchable sockets + +### AVM FritzDECT + + + + +```yaml +meters: + - name: my_pv + type: template + template: fritzdect + usage: pv + uri: https://fritz.box # HTTP(S) address (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + ain: 307788992233 # The AIN is printed on the type label on the back of the device. Embed it in double quotes in case of leading zeroes. +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: fritzdect + usage: charge + uri: https://fritz.box # HTTP(S) address (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + ain: 307788992233 # The AIN is printed on the type label on the back of the device. Embed it in double quotes in case of leading zeroes. +``` + + + + + + +### Homematic IP + + + + +```yaml +meters: + - name: my_grid + type: template + template: homematic + usage: grid + host: 192.0.2.2 # IP address or hostname + device: '0001EE89AAD848' # Homematic device id like shown in the CCU web user interface. + user: # User account (e.g. email address, user id, etc.) (optional) + password: # Password of the user account (use single quotes in case of leading zeros) (optional) +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: homematic + usage: pv + host: 192.0.2.2 # IP address or hostname + device: '0001EE89AAD848' # Homematic device id like shown in the CCU web user interface. + user: # User account (e.g. email address, user id, etc.) (optional) + password: # Password of the user account (use single quotes in case of leading zeros) (optional) +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: homematic + usage: charge + host: 192.0.2.2 # IP address or hostname + device: '0001EE89AAD848' # Homematic device id like shown in the CCU web user interface. + user: # User account (e.g. email address, user id, etc.) (optional) + password: # Password of the user account (use single quotes in case of leading zeros) (optional) +``` + + + + + + +### myStrom Switch + + + + +```yaml +meters: + - name: my_pv + type: template + template: mystrom + usage: pv + host: 192.0.2.2 # IP address or hostname +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: mystrom + usage: charge + host: 192.0.2.2 # IP address or hostname +``` + + + + + + +### Shelly 1PM, EM, Plug S + + + + +```yaml +meters: + - name: my_pv + type: template + template: shelly-1pm + usage: pv + host: 192.0.2.2 # IP address or hostname + user: # User account (e.g. email address, user id, etc.) (optional) + password: # Password of the user account (use single quotes in case of leading zeros) (optional) + channel: 0 # optional +``` + + + + +```yaml +meters: + - name: my_charger + type: template + template: shelly-1pm + usage: charge + host: 192.0.2.2 # IP address or hostname + user: # User account (e.g. email address, user id, etc.) (optional) + password: # Password of the user account (use single quotes in case of leading zeros) (optional) + channel: 0 # optional +``` + + + + + + +### Tasmota + + + + +```yaml +meters: + - name: my_grid + type: template + template: tasmota + usage: grid + host: 192.0.2.2 # IP address or hostname + user: # admin is default (optional) + password: # Password of the user account (use single quotes in case of leading zeros) (optional) +``` + + + + +```yaml +meters: + - name: my_pv + type: template + template: tasmota + usage: pv + host: 192.0.2.2 # IP address or hostname + user: # admin is default (optional) + password: # Password of the user account (use single quotes in case of leading zeros) (optional) +``` + + + + +```yaml +meters: + - name: my_battery + type: template + template: tasmota + usage: battery + host: 192.0.2.2 # IP address or hostname + user: # admin is default (optional) + password: # Password of the user account (use single quotes in case of leading zeros) (optional) +``` + + + + + + +### TP-Link + +#### H-Series Smart Plug + +```yaml +meters: + - name: my_pv + type: template + template: tplink + usage: pv + host: 192.0.2.2 # IP address or hostname +``` + + + +#### Tapo P-Series Smart Plug + +```yaml +meters: + - name: my_pv + type: template + template: tapo + usage: pv + host: 192.0.2.2 # IP address or hostname + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) +``` + diff --git a/i18n/en/docusaurus-plugin-content-docs/current/devices/meters/_generic_support.mdx b/i18n/en/docusaurus-plugin-content-docs/current/devices/meters/_generic_support.mdx new file mode 100644 index 0000000000..a1a8e346f0 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/devices/meters/_generic_support.mdx @@ -0,0 +1,23 @@ +### manuell + +```yaml +meters: + - name: my_meter + type: custom + power: # power (W) + source: # plugin type + # ... + energy: # optional energy (kWh) + source: # plugin type + # ... + soc: # optional battery soc (%) + source: # plugin type + # ... + currents: # optional currents (A) + - source: # L1 plugin type + # ... + - source: # L2 plugin type + # ... + - source: # L3 plugin type + # ... +``` diff --git a/i18n/en/docusaurus-plugin-content-docs/current/devices/vehicles.mdx b/i18n/en/docusaurus-plugin-content-docs/current/devices/vehicles.mdx new file mode 100644 index 0000000000..de5c25e85c --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/devices/vehicles.mdx @@ -0,0 +1,731 @@ +--- +sidebar_position: 3 +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import SponsorshipRequired from "../_sponsorship_required.mdx"; + +# Vehicles + +Um die Ladung auf einen bestimmten Ladestand (SoC) zu begrenzen, und die meisten Wallboxen diesen nicht kennen, kann evcc direkt mit dem Fahrzeug über den Fahrzeughersteller kommunizieren. + +In der Konfigurationsdatei gibt es hierzu den folgenden Bereich: + +```yaml +vehicles: + - name: ev + type: ... +``` + +Auf dieser Seite findest du die Konfigurationen für alle von evcc unterstützten Fahrzeuge. +Nachdem du das Code-Beispiel für dein Fahrzeug angepasst und in die `evcc.yaml` übernommen hast, kannst du die Verbindung mit dem Befehl `evcc vehicle` testen. Dabei werden alle konfigurierten Fahrzeuge getestet. Mit dem Befehl `evcc vehicle --name my_ev` kann man mittels des vergebenen Namens selektiv testen. + +``` +$ ./evcc vehicle + +SoC: 57% +Charge status: B +Charged: 4.7kWh +Capacity: 77kWh +Range: 280km +Odometer: 4131km +``` + +:::note +Die Qualität und Verfügbarkeit der Fahrzeugschnittstellen variiert von Hersteller zu Hersteller. Solltest du anhaltende Probleme mit dem aktualisieren deiner Fahrzeugdaten haben melde dich bitte in den [GitHub Discussions](https://github.com/evcc-io/evcc/discussions). +::: + + + + + +## Aiways + +```yaml +vehicles: + - name: my_car + type: template + template: aiways + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: W... # Required if you own multiple vehicles of the same brand + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +## Audi + +```yaml +vehicles: + - name: my_car + type: template + template: audi + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: WAUZZZ... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +## BMW + +```yaml +vehicles: + - name: my_car + type: template + template: bmw + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: WBMW... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +## Citroën + +```yaml +vehicles: + - name: my_car + type: template + template: citroen + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: W... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +## Dacia + +```yaml +vehicles: + - name: my_car + type: template + template: dacia + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: W... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +## DS + +```yaml +vehicles: + - name: my_car + type: template + template: ds + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: W... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +## Fiat + +```yaml +vehicles: + - name: my_car + type: template + template: fiat + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: ZFAE... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) + pin: # optional +``` + + + +## Ford + +```yaml +vehicles: + - name: my_car + type: template + template: ford + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: WF0FXX... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +## Hyundai Bluelink + +```yaml +vehicles: + - name: my_car + type: template + template: hyundai + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: W... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) + language: en # 'en' for English and 'de' for German (optional) +``` + + + +## Jaguar + +```yaml +vehicles: + - name: my_car + type: template + template: jaguar-landrover + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: W... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +## Jeep + +```yaml +vehicles: + - name: my_car + type: template + template: fiat + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: ZFAE... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) + pin: # optional +``` + + + +## Kia Bluelink + +```yaml +vehicles: + - name: my_car + type: template + template: kia + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: W... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) + language: en # 'en' for English and 'de' for German (optional) +``` + + + +## Land Rover + +```yaml +vehicles: + - name: my_car + type: template + template: jaguar-landrover + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: W... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +## Mini + +```yaml +vehicles: + - name: my_car + type: template + template: mini + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: WBMW... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +## Nissan + +### Leaf + +```yaml +vehicles: + - name: my_car + type: template + template: nissan + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: W... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +### Leaf (pre 2019) + +```yaml +vehicles: + - name: my_car + type: template + template: carwings + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: W... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +## Opel + +```yaml +vehicles: + - name: my_car + type: template + template: opel + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: WP0... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +## Peugeot + +```yaml +vehicles: + - name: my_car + type: template + template: peugeot + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: W... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +## Porsche + +```yaml +vehicles: + - name: my_car + type: template + template: porsche + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: W... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +## Renault + +```yaml +vehicles: + - name: my_car + type: template + template: renault + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: WREN... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +## Seat + +### CupraConnect Gen3 (Ateca, Leon, Formentor) + +```yaml +vehicles: + - name: my_car + type: template + template: seat + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: W... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +### CupraConnect Gen4 (Born) + +```yaml +vehicles: + - name: my_car + type: template + template: cupra + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: W... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +## Skoda + +### Enyaq + +```yaml +vehicles: + - name: my_car + type: template + template: enyaq + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: W... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +### Others + +```yaml +vehicles: + - name: my_car + type: template + template: skoda + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: W... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +## Smart EQ + +```yaml +vehicles: + - name: my_car + type: template + template: smart + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: W... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +## Tesla + +You need to generate an `access` and a `refresh` token for communicating with the Tesla API. + +The following apps allow to create these tokens: +- [Auth app for Tesla (iOS)](https://apps.apple.com/us/app/auth-app-for-tesla/id1552058613#?platform=iphone) +- [Tesla Tokens (Android)](https://play.google.com/store/apps/details?id=net.leveugle.teslatokens) +- [Tesla Auth (macOS, Linux)](https://github.com/adriankumpf/tesla_auth) + +```yaml +vehicles: + - name: my_car + type: template + template: tesla + title: # Will be displayed in the user interface (optional) + accessToken: # See https://docs.evcc.io/docs/devices/vehicles#tesla + refreshToken: # See https://docs.evcc.io/docs/devices/vehicles#tesla + vin: W... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +## Volkswagen + +### We Connect (legacy) + +older Models like e-Up, e-Golf, etc. + +```yaml +vehicles: + - name: my_car + type: template + template: vw + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: WVWZZZ... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +### We Connect ID + +ID.3, ID.4 (also works for e-Golf, e-Up) + +```yaml +vehicles: + - name: my_car + type: template + template: id + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: WVWZZZ... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +## Volvo + +### + +```yaml +vehicles: + - name: my_car + type: template + template: volvo-connected + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: W... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) + vccapikey: # Volvo developer portal VCC API Key, see https://github.com/evcc-io/evcc/discussions/3677#discussioncomment-4106300 +``` + + + +### legacy + +```yaml +vehicles: + - name: my_car + type: template + template: volvo + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vin: W... # Required if you own multiple vehicles of the same brand (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +## Generic support + +### manuell + +```yaml +vehicles: + - name: my_car + type: custom + title: Mein Auto # display name for UI + capacity: 50 # byttery capacity (kWh) + soc: # battery soc (%) + source: # plugin type + # ... + status: # optional charge status (A..F) + source: # plugin type + # ... + range: # optional electric range (km) + source: # plugin type + # ... +``` + +### evNotify + +```yaml +vehicles: + - name: my_car + type: template + template: evnotify + title: # Will be displayed in the user interface (optional) + akey: + token: + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +### ISO15118 + +Only supported if the vehicle can provided the state of charge (Soc) to the connected wallbox. + +```yaml +vehicles: + - name: my_car + type: template + template: iso15118 + title: # Will be displayed in the user interface (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +### mazda2mqtt + +Required MQTT broker configuration and a mazda2mqtt installation https://github.com/C64Axel/mazda2mqtt. + +```yaml +vehicles: + - name: my_car + type: template + template: mazda2mqtt + title: # Will be displayed in the user interface (optional) + vin: W... # Required + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +### mg2mqtt + +Required MQTT broker configuration and a SAIC/MQTT Gateway (https://github.com/SAIC-iSmart-API/saic-python-mqtt-gateway or https://github.com/SAIC-iSmart-API/saic-java-client) + +```yaml +vehicles: + - name: my_car + type: template + template: mg2mqtt + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + vin: W... # Required if you own multiple vehicles of the same brand + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +### Offline + +```yaml +vehicles: + - name: my_car + type: template + template: offline + title: # Will be displayed in the user interface (optional) + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +### Open Vehicle Monitoring System + +Support for all vehicles via ODB2 adapter in the vehicle. More info at [Open Vehicle Monitoring System](http://api.openvehicles.com/). + +```yaml +vehicles: + - name: my_car + type: template + template: ovms + title: # Will be displayed in the user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + vehicleid: + capacity: 12 # Battery capacity in kWh (optional) +``` + + + +### PSA Car Controller + +Remote Control of PSA car https://github.com/flobz/psa_car_controller + +```yaml +vehicles: + - name: my_car + type: template + template: flobz + title: # Will be displayed in the user interface (optional) + url: http://192.0.2.2 + vin: W... # Required + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +### TeslaMate + +Open source Tesla data logger https://github.com/adriankumpf/teslamate. MQTT broker required. + +```yaml +vehicles: + - name: my_car + type: template + template: teslamate + title: # Will be displayed in the user interface (optional) + id: 1 # optional + capacity: 50 # Battery capacity in kWh (optional) +``` + + + +### Tronity 💚 + +```yaml +vehicles: + - name: my_car + type: template + template: tronity + title: # Will be displayed in the user interface (optional) + clientid: # Setup at https://app.tronity.tech + clientsecret: # Setup at https://app.tronity.tech + vin: W... # Required if you own multiple vehicles of the same brand (optional) + capacity: 10 # Battery capacity in kWh (optional) +``` + + + + + +## Scooter + +### NIU E-Scooter + +```yaml +vehicles: + - name: my_car + type: template + template: niu-e-scooter + title: # Will be displayed in the user interface (optional) + icon: scooter # Icon as shown in user interface (optional) + user: # User account (e.g. email address, user id, etc.) + password: # Password of the user account (use single quotes in case of leading zeros) + serial: + capacity: 4 # Battery capacity in kWh (optional) +``` + diff --git a/i18n/en/docusaurus-plugin-content-docs/current/devices/vehicles/_generic_support.mdx b/i18n/en/docusaurus-plugin-content-docs/current/devices/vehicles/_generic_support.mdx new file mode 100644 index 0000000000..5a4d9c3e05 --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/devices/vehicles/_generic_support.mdx @@ -0,0 +1,18 @@ +### manuell + +```yaml +vehicles: + - name: my_car + type: custom + title: Mein Auto # display name for UI + capacity: 50 # byttery capacity (kWh) + soc: # battery soc (%) + source: # plugin type + # ... + status: # optional charge status (A..F) + source: # plugin type + # ... + range: # optional electric range (km) + source: # plugin type + # ... +``` diff --git a/i18n/en/docusaurus-plugin-content-docs/current/devices/wallbe_eco_dip10.jpeg b/i18n/en/docusaurus-plugin-content-docs/current/devices/wallbe_eco_dip10.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..06627756417835177587dd9f9f60acf9d2a01a04 GIT binary patch literal 235407 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 B*8ajf# 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

X~X7NRp z2Ght7)81+_PFP$)3IG^38~OUrwwm(6D5-uqtH(WiwX4p-ER~2NOC-@(F}n!`l9L$L zQ@LXRVdr2|XowNG_qVLm>OTVRWWwS>kadkN3G|9w($u*Fj;oKQhe@QTZfI#-fs`zd zl8&8ZTS7nySOt61q^#;?Yh@*nMvLjEQZpBR6p(-uHk72N!_TaMD1CYn}P5mtyeXrpt^Qeg3r_~RgP$3$Wu!#jFqI_ zgwflv*{v!lJorNk@>!Ki00~UQ10$j^=Y_%t!YjHx7)7k3@`9cx8)tA$01nSC6;e2 zc4UGQFRt;eBp{eNB;1jx0%yqE&|cN6CKN=g1h$IDZ?j%Df<~zM0eMzBrK&Xdaax87dRqLJvKdV+m($pdTcqsjdifdcQ^?cD z<{_~S2b1YB)*b7{7CfAB+g+tz;iBW55gd00z8Q$b<5|Ku>v)F|gndkvDH)B3oS|hz zIT4r$tF9HtahxI2;{msFwxEFUBsNTtL=Z@~!bu%0DTKbSmbpG+cF0=KW*~zle=%rE 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 C>5u0C literal 0 HcmV?d00001 diff --git a/src/generateFromTemplate.js b/src/generateFromTemplate.js index 7b945bd58e..0aa079681f 100644 --- a/src/generateFromTemplate.js +++ b/src/generateFromTemplate.js @@ -25,8 +25,7 @@ function escapeRegExp(text) { return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); } -function readYamlDataFromDir(dir) { - const path = `./templates/${dir}`; +function readTemplates(path) { const files = fs.readdirSync(path); return files.map((file) => yaml.load(fs.readFileSync(`${path}/${file}`, "utf8")), @@ -78,10 +77,10 @@ ${block.code} return description + code + phaseSwitch + sponsor; } -function additionalContent(type, name) { +function additionalContent(name, target) { const filename = name.toLowerCase().replaceAll(" ", "_"); try { - const path = `./docs/devices/${type}s/_${filename}.mdx`; + const path = target.replace(/\.mdx$/, `/_${filename}.mdx`); const content = fs.readFileSync(path, "utf-8"); console.log("integrated additional content from ", path); return content + "\n"; @@ -121,7 +120,7 @@ function generateMarkdown(data, type, target) { if (group !== lastGroup) { generated += `## ${group}\n\n`; - generated += additionalContent(type, group); + generated += additionalContent(group, target); } if (brand && brand !== lastBrand) { @@ -158,6 +157,15 @@ function generateMarkdown(data, type, target) { } ["vehicle", "meter", "charger"].forEach((type) => { - const data = readYamlDataFromDir(type); - generateMarkdown(data, type, `./docs/devices/${type}s.mdx`); + // German + const templatesDe = readTemplates(`./templates/de/${type}`); + generateMarkdown(templatesDe, type, `./docs/devices/${type}s.mdx`); + + // English + const templatesEn = readTemplates(`./templates/en/${type}`); + generateMarkdown( + templatesEn, + type, + `./i18n/en/docusaurus-plugin-content-docs/current/devices/${type}s.mdx`, + ); });