Plugins
Plugins können verwendet werden, um Geräte und externe Datenquellen in evcc zu integrieren, für die es keine direkte Unterstützung gibt. Plugins können für folgende Kategorien verwendet werden:
meter: PV, Batterie, Netz, Zählercharger: Wallboxen, Smarte Schalter, Wärmepumpen, Heizstäbevehicle: Fahrzeugetariff: Tarife, Vorhersagencircuit: Lastmanagement
Zusätzlich können Plugins auch für die in Messaging beschriebenen Endpunkte zum Versenden von Lifecycle-Events genutzt werden.
Übersicht
evcc bietet folgende Plugins an:
- Modbus Plugin - Plugin zum Auslesen von einem Modbus-fähigen Gerät.
- MQTT Plugin - Plugin um indirekt über MQTT mit den MQTT-fähigen Geräten zu kommunizieren.
- HTTP Plugin - Plugin, das über HTTP-API mit Endgeräten spricht.
- Websocket Plugin - Plugin zum Empfangen von Gerätedaten über einen eigenen Webserver. Kann nur zum Lesen von Daten genutzt werden.
- SMA/Speedwire Plugin - Plugin speziell für SMA Geräte, die mit dem Speedwire Protokoll kommunizieren können.
- JavaScript Plugin - Plugin, das Werte in über ein JavaScript Skript bereitstellt oder entgegennimmt.
- Shell Plugin - Plugin, das ein Shell Skript ausführen kann, um Daten zu extrahieren oder schreibend entgegennimmt.
- Meter Plugin - Plugin um ein anderes Messgerät als Datenquelle zu verwenden.
Neben diesen Integrations-Plugins, gibt es noch Helfer-Plugins, die Zusatzfunktionen bereit stellt:
- Const Plugin - Spezielles Plugin das einfach einen konstanten Wert zurückliefert.
- Calc Plugin - Meta-Plugin um Ausgaben von anderen Plugins arithmetisch zu verknüpfen.
- Combined Plugin - Meta-Plugin speziell für
chargerum die booleschen Status-Werte für den angeschlossenen (plugged) und ladenden (charging) Zustand zu einem einzigen Ladestatus zu kombinieren. - Valid Plugin - Meta-Plugin um Plugin-Werte basierend auf einer booleschen Validierung bereitzustellen.
Syntax
Jedes Plugin besitzt ein individuelles Konfigurationsschema. Dabei ist es wichtig zu wissen, ob das Plugin in einem lesenden oder schreibenden Kontext verwendet wird. Einige Konfigurationsparameter machen nur in einem lesenden Kontext Sinn, andere nur, wenn sie im Schreibmodus genutzt werden.
Beispielsweise kann über die folgende Konfiguration ein MQTT Plugin als meter eingebunden werden, bei dem der aktuelle Stromverbrauch über das spezifizierte MQTT Topic eingelesen wird:
meters:
- name: imsys
type: custom
power:
source: mqtt
topic: "home/current/imsys/chn2/raw"
Das Schema der Plugin Konfiguration hat dabei immer folgende Struktur:
- name: <name>
type: custom
<attr1>:
source: <plugin>
<p-attr1>: ...
<p-attr2>: ...
....
<attr2>:
....
Dabei steht <name> für den Namen des Geräts, <attr1> und <attr2> für eine der unten beschriebenen Geräte-spezifischen Attribute, <plugin> für den Plugin-Typ und <p-attr1>, <p-attr2> für Plugin-spezifische Konfigurationen (z.b. source, topic für Plugins vom Typ mqtt)
Lesen
Beim Lesen von Daten mithilfe eines Plugins können sogenannte Pipelines verwendet werden. Damit können Daten aus der Ausgabe des Plugins fein granular extrahiert werden. Dies ermöglicht es, komplexe Datenstrukturen wie JSON oder XML zu verarbeiten und die benötigten Informationen herauszufiltern. Mögliche Parameter für die Datenextraktion sind:
regex: Ein regulärer Ausdruck, um Werte aus dem empfangenen Text zu extrahieren.jq: Ein jq-Ausdruck, um Werte aus JSON-Strukturen zu extrahieren. Die volle Syntax und Möglichkeiten finden sich in der jq-Dokumentation.quote: Boolean-Wert, der die Eingabedaten in Anführungszeichen einschließt, bevor sie an jq weitergegeben werden. Dies ermöglicht es jq, unquotierte Strings (z. B. von MQTT) zu verarbeiten. Bei einem MQTT-Wert wieChargingkann manquote: trueundjq: '. == "Charging"'verwenden.unpack: Konvertiert Werte aus anderen Zahlenrepräsentationen, z. B.hex.decode: Dekodiert Binärformate wieuint32,float32etc.
Schreiben
Beim Schreiben können Parameter in der Konfiguration durch Platzhalter ersetzt werden.
Die Daten werden in Form von ${var[:format]} zur Verfügung gestellt.
Wenn Format nicht angegeben wird, werden die Daten im Standard %v Go-Format bereitgestellt.
Die Variablen werden mit dem entsprechenden Wert ersetzt, bevor das Plugin ausgeführt wird.
Zusätzlich können sämtliche Funktionen der Go Template Library verwendet werden, um komplexere Datentransformationen durchzuführen.
Je nach Gerät (meter, charger oder vehicle) können andere Attribute mit Plugins gelesen oder gesetzt werden.
Meter
Stromzähler werden in der Konfigurationssektion meters konfiguriert.
Zähler, die unter meters: definiert werden, können an verschiedenen Stellen innerhalb der site Konfiguration verwendet werden:
grid: Netzzählerpv: PV Zählerbattery: Hausbatteriezählercharge: Zähler für die Ladeleistung der Wallboxaux: Verbrauchszähler für intelligente Verbraucherext: weiterer Zähler, bspw. für Lastmanagement oder Datenerfassung
power ist das einzig zwingend erforderliche Attribut das in jeder meter Definition vorhanden sein muss, alle weiteren Attribute sind optional.
Jedoch unterstützen nicht alle Metertypen alle Pluginattribute:
limitsocundbatterymodewerden ausschließlich für Batteriezähler genutzt (d.h. fürmeterdie insite.batteryreferenziert werden).currents,voltagesundpowerssind Phasen Attribute, die mit jeweils genau drei Plugin-Konfigurationen (in einem YAML Array) konfiguriert werden müssen und für Netzzähler (grid) und Wallboxen (charge) verwendet werden können.
Die folgenden Tabellen enthalten alle Attribute, die von Plugins bereitgestellt werden können, wenn sie für meter konfiguriert werden.
Bei der Verwendung der Plugins ist es auch wichtig, dass diese den richtigen Datentyp zurückliefern.
Um zu dem verlangten Datentypen zu konvertieren, können die in Lesen beschriebenen Pipelines genutzt werden.
| Attribut | Typ | Erfordert | Kontext | Beschreibung |
|---|---|---|---|---|
| power | float | ja | alle | Aktuelle Leistung in W |
| energy | float | nein | alle | Zählerstand in kWh |
| maxpower | int | nein | pv (hybrid) | Maximale AC-Leistung in W |
| soc | int | nein | battery | Ladestand in % |
| capacity | float | nein | battery | Kapazität in kWh |
| powers | [float,float,float] | nein | alle | Phasenleistungen in W |
| currents | [float,float,float] | nein | alle | Phasenströme in A |
| voltages | [float,float,float] | nein | alle | Phasenspannungen in V |
Beispiel
In diesem Beispiel wird die Konfiguration eines Meters um die aktuelle elektrische Gridleistung über einen HTTP-Aufruf abgefragt:
meters:
- name: volkszaehler
type: custom
power:
source: http
uri: http://zaehler.network.local:8080/api/data.json?from=now
jq: .data.tuples[0][1]
site:
meters:
grid: volkszaehler
...
...
Neben den Attributen, die Plugins zur lesenden Auswertung bereitstellen, werden folgende Attribute von evcc genutzt, um Aktionen zu triggern:
| Attribut | Typ | Erfordert | Kontext | Beschreibung |
|---|---|---|---|---|
| limitsoc | int | nein | battery | Setze Ladeziel für Batterie in %. Das Ladeziel wird aus den konfigurierten MinSoc, MaxSoc und dem aktuellen Ladestand (Attribut soc) berechnet. |
| batterymode | int | nein | battery | Setze Lademodus direkt (1: normal, 2: hold, 3: charge) |
Charger
Wallboxen und Ladegeräte haben folgende Attribute die ausgelesen werden können:
| Attribut | Typ | Erfordert | Beschreibung |
|---|---|---|---|
| status | string | ja | Status (A..F) |
| enabled | bool | ja | Ist Ladung freigegeben? |
| power | float | nein | Ladeleistung in W |
| energy | float | nein | Zählerstand in kWh |
| identify | string | nein | Aktuelle RFID-Kennung |
| soc | int | nein | Ladestand in % |
| phases | int | nein | Anzahl der physischen Phasen (1..3) |
| powers | [float,float,float] | nein | Phasenleistungen in W |
| currents | [float,float,float] | nein | Phasenströme in A |
| voltages | [float,float,float] | nein | Phasenspannungen in V |
| temp | float | nein | Aktuelle Temperatur in °C (Heizung) |
| templimit | int | nein | Temperaturlimit in °C (Heizung) |
| getmode | int | nein | SG-Ready Modus (Wärmepumpe) |
| getmaxpower | float | nein | Maximale Heizleistung in W (Heizung) |
Allgemeine Konfigurationsoptionen
Zusätzlich zu den Plugin-Attributen können folgende Konfigurationsoptionen direkt am Charger gesetzt werden:
| Attribut | Typ | Erfordert | Beschreibung |
|---|---|---|---|
| icon | string | nein | Icon für die Darstellung in der Benutzeroberfläche |
| features | []string | nein | Feature-Flags für spezielle Charger-Eigenschaften (siehe unten) |
| standbypower | int | nein | Standby-Leistung in W (für switchsocket Typ) |
Feature-Flags
Über das features Array können spezielle Eigenschaften des Chargers aktiviert werden:
| Feature | Beschreibung |
|---|---|
| heating | Behandelt das Gerät als Heizung (z. B. Wärmepumpe, Heizstab). Beeinflusst die Darstellung in der Benutzeroberfläche. |
| integrateddevice | Gerät ohne Ladesitzungen und ohne angeschlossenes Fahrzeug (z. B. Smartes Schalter, fest installierte Verbraucher). |
| coarsecurrent | Ladestrom kann nur in 1 A Schritten eingestellt werden (wird in der Regelung berücksichtigt). |
| welcomecharge | Aktiviert Welcome Charge Funktion. Ladegerät liefert beim Anschließen kurz Strom, damit das Fahrzeug erkennt, dass der Charger funktioniert. |
Beispiel mit Features:
chargers:
- name: heizstab
type: custom
features:
- heating
- integrateddevice
icon: heater
status:
source: mqtt
topic: heater/status
# ... weitere Attribute
Beispiel
Dieses Beispiel zeigt, wie man über das Modbus-Plugin den Ladestatus (ladend/nicht ladend) eines Chargers abfragen kann:
chargers:
- name: icharge
type: custom
enabled:
source: modbus
id: 4711
uri: modbus.local:502
rtu: false
register:
address: 100
type: holding
decode: uint16
Neben den read-only Werten können über Plugins auch Aktionen getriggert oder Konfigurationswerte gesetzt werden:
| Attribut | Typ | Erfordert | Beschreibung |
|---|---|---|---|
| enable | bool | ja | Ladung freigeben / sperren |
| maxcurrent | int | ja | Setze maximalen Ladestrom in A |
| maxcurrentmilis | float | nein | Setze maximalen Ladestrom in A |
| phases1p3p | int | nein | Phasenumschaltung durchführen (erfordert tos: true) |
| wakeup | bool | nein | Wecke Fahrzeug auf |
| setmode | int | nein | Ändere SG-Ready Modus (1: reduced, 2: normal, 3: boost) |
| setmaxpower | int | nein | Setze maximale Heizleistung in W (Heizung) |
Beispiel
Dieses Beispiel schaltet eine Tasmota-Steckdose über eine MQTT Nachricht gesendet an:
chargers:
- name: unu-charger
type: custom
enable:
source: mqtt
broker: mosquitto.local:883
topic: cmd/unu-switch/Power
payload: ON
Vehicle
Fahrzeugparameter können ebenfalls über Plugins ausgelesen werden.
| Attribut | Typ | Erfordert | Beschreibung |
|---|---|---|---|
| soc | int | ja | Ladestand in % |
| limitsoc | int | nein | Ladelimit in % |
| status | string | nein | Status (A..F) |
| range | int | nein | Reichweite in km |
| odometer | int | nein | Kilometerstand in km |
| climater | bool | nein | Klimatisierung aktiv? |
| getmaxcurrent | float | nein | Maximaler Ladestrom in A |
| finishtime | string | nein | Geplantes Ladeende (RFC3339) |
Allgemeine Konfigurationsoptionen
Folgende Konfigurationsoptionen können direkt am Fahrzeug gesetzt werden:
| Attribut | Typ | Erfordert | Beschreibung |
|---|---|---|---|
| title | string | nein | Anzeigename des Fahrzeugs in der Benutzeroberfläche |
| icon | string | nein | Icon für die Darstellung in der Benutzeroberfläche |
| capacity | float | nein | Batteriekapazität in kWh |
Beispiel
Im folgenden Beispiel wird die aktuelle Reichweite des Fahrzeugs aus MQTT Nachrichten gelesen:
vehicles:
- name: mazda
type: custom
title: Grüner Mazda
capacity: 50
range:
source: mqtt
topic: mazda2mqtt/c53/chargeInfo/drivingRangeKm
Zusätzlich können spezielle Kommandos über Plugins an das Fahrzeug geschickt werden:
| Attribut | Typ | Erfordert | Beschreibung |
|---|---|---|---|
| wakeup | bool | nein | Fahrzeug aufwecken |
| chargeenable | bool | nein | Starte/stoppe den Ladevorgang |
| maxcurrent | int | nein | Setze maximalen Ladestrom in A |
Beispiel
Um ein Auto über einen HTTP Ping aufzuwecken, um weiter Abfragen zu senden, kann wie im folgenden Beispiel das HTTP-Plugin genutzt werden:
vehicles:
- name: model-y
type: custom
wakeup:
source: http
uri: http://teslalogger.local:5000/command/08154711/wake_up
Lademodus bei Fahrzeugerkennung
Bei benutzerdefinierten Fahrzeugen kann der Lademodus beim Erkennen des Fahrzeugs mit onIdentify konfiguriert werden.
Dies ist nützlich, wenn der gewünschte Lademodus automatisch gesetzt werden soll, sobald das Fahrzeug identifiziert wird.
Beispiel:
vehicles:
- name: my-car
type: custom
soc:
source: mqtt
topic: car/soc
onIdentify:
mode: pv
Verfügbare Modi sind: off, now, minpv, pv.
Tarife & Vorhersagen
Siehe Tarife & Vorhersagen > Eigenes Plugin für mehr Details.
Lastmanagement
...
Messaging
...
Plugins
Folgende Plugins stehen zur Verfügung und können für die oben beschriebenen Attribute konfiguriert werden, um eine flexible Anbindung an die verschiedenen Systeme zu ermöglichen.
Modbus lesen schreiben
Das modbus-Plugin kann Daten von jedem Modbus-fähigen Gerät oder SunSpec-kompatiblen Wechselrichter lesen.
Viele Strommessgeräte sind bereits vorkonfiguriert (siehe MBMD Supported Devices).
Es ist ebenfalls möglich Modbus Register zu Schreiben um weitere Wallboxen zu integrieren.
Schaue in die Modbus Dokumentation für weitere Details.
MQTT lesen schreiben
Das mqtt-Plugin ermöglicht das Lesen von Werten über MQTT-Topics.
Das ist insbesondere für Strommessgeräte nützlich, z. B. wenn diese ihre Daten bereits über MQTT bereitstellen.
Schaue in die MBMD Dokumentation für ein Beispiel, wie man Modbus Messdaten in MQTT bekommt.
Das Plugin bietet auch die Fähigkeit JSON Datenstrukturen über jq-ähnliche Abfragen zu lesen oder zu parsen (Siehe HTTP plugin).
Beispiel Lesen:
source: mqtt
topic: mbmd/sdm1-1/Power
timeout: 30s # don't accept values older than timeout
scale: 0.001 # factor applied to result, e.g. for Wh to kWh conversion
Für den Schreibzugriff werden die Daten mit dem Attribut payload bereitgestellt.
Falls dieser Parameter in der Konfiguration fehlt, wird der Wert im Standardformat geschrieben.
Beispiel Schreiben:
source: mqtt
topic: mbmd/charger/maxcurrent
payload: ${var:%d}
HTTP lesen schreiben
Das http-Plugin führt HTTP Aufrufe durch, um Daten zu lesen oder zu aktualisieren.
Es beinhaltet auch die Fähigkeit, JSON-Datenstrukturen über jq-Abfragen (z. B. für REST-APIs) zu lesen oder einfache Transformationen durchzuführen.
Der volle Funktionsumfang ist in der offiziellen jq Dokumentation zu finden.
Methoden der Authentifizierung sind basic, bearer und digest.
Die Namen der jeweiligen Parameter finden sich hier.
Authentifizierung
Für HTTP-Anfragen stehen verschiedene Authentifizierungsmethoden zur Verfügung:
Basic Authentication:
auth:
type: basic
user: <benutzername>
password: <passwort>
Bearer Token (z. B. für JWT):
auth:
type: bearer
token: <token>
Digest Authentication:
auth:
type: digest
user: <benutzername>
password: <passwort>
Benutzerdefinierte Authentifizierung:
Für komplexere Authentifizierungsszenarien können benutzerdefinierte Authentifizierungs-Plugins entwickelt werden.
Diese werden über den Parameter source eingebunden:
auth:
source: <plugin-name>
user: <benutzername>
password: <passwort>
# weitere plugin-spezifische Parameter
Dies ermöglicht die Integration von Geräten mit speziellen Authentifizierungsanforderungen, ohne den gesamten HTTP-Plugin-Code anpassen zu müssen.
XML-Dokumente werden intern automatisch in JSON-Form überführt, welche dann mit jq wie eine native JSON-Antwort weiter gefiltert werden können.
Attribute bekommen das prefix attr.
Für den Test von jq-Abfragen bietet sich z. B. das Online-Tool https://jqplay.org/ und für Regex-Tests z. B. das Online-Tool https://regex101.com/ an.
Beispiel Lesen:
source: http
uri: https://volkszaehler/api/data/<uuid>.json?from=now
method: GET # default HTTP method
headers:
- content-type: application/json
auth: # basic authentication
type: basic
user: foo
password: bar
insecure: false # set to true to trust self-signed certificates
jq: .data.tuples[0][1] # parse response json
scale: 0.001 # factor applied to result, e.g. for kW to W conversion
cache: 60s # response cache duration
timeout: 10s # timeout in golang duration format, see https://golang.org/pkg/time/#ParseDuration
source: http
uri: http://charger/status
jq: .total_power > 10 # Converts a json integer to a boolean value
Beispiel Schreiben:
body: %v # only applicable for PUT or POST requests
enable:
source: http
uri: "http://charger/relay/0?turn={{if .enable}}on{{else}}off{{end}}"
Websocket lesen
Das websocket-Plugin bietet einen WebSocket-Listener.
Es beinhaltet auch die Fähigkeit, JSON-Datenstrukturen über jq-ähnliche Abfragen zu lesen oder zu parsen.
Dies kann z. B. verwendet werden, um Daten von Volkszählers Push Server zu empfangen.
Beispiel Lesen:
source: http
uri: ws://<volkszaehler host:port>/socket
jq: .data | select(.uuid=="<uuid>") .tuples[0][1] # parse message json
scale: 0.001 # factor applied to result, e.g. for Wh to kWh conversion
timeout: 30s # error if no update received in 30 seconds
SMA/Speedwire lesen
Das sma Plugin bietet eine Schnittstelle zu SMA Geräten, welche das Speedwire Protokoll beherrschen.
Beispiel Lesen:
source: sma
uri: 192.168.4.51 # alternative to serial
serial: 123456 # alternative to uri
value: ActivePowerPlus # ID of value to read
password: "0000" # optional (default: 0000)
interface: eth0 # optional
scale: 1 # optional scale factor for value
Unterstützte Werte für value können in der Diagnoseausgabe über das Kommando evcc meter (mit konfigurierten SMA meter Geräten) gefunden werden.
Alle möglichen Werte können als Konstanten hier gefunden werden (verwende den Namen der Konstante für value).
JavaScript lesen schreiben
evcc integriert einen JavaScript Interpreter mit der Underscore.js Bibliothek, welche direkt über _. zugreifbar ist, z. B. _.random(0,5).
Das js Plugin kann JavaScript code über den script Parameter ausführen. Sehr hilfreich für das schnelle Erstellen von Prototypen:
Beispiel Lesen:
source: js
script: |
var res = 500;
2 * res; // returns 1000
Wenn das js Plugin zum Schreiben verwendet wird, wird der zu schreibende Wert dem Script als Variable übergeben:
Beispiel Schreiben:
charger:
- type: custom
maxcurrent:
source: js
script: |
console.log(maxcurrent);
Shell Script lesen schreiben
Das script Plugin führt externe Skripte zum Lesen oder Aktualisieren von Daten aus. Das Plugin ist hilfreich um jede Art von externer Funktionalität einzubinden.
Beispiel Lesen:
source: script
cmd: /bin/bash -c "cat /dev/urandom"
timeout: 5s
Beispiel Schreiben:
source: script
cmd: /home/user/my-script.sh ${enable:%b} # format boolean enable as 0/1
timeout: 5s
Const lesen
Das const Plugin gibt einen konstanten Wert zurück.
Es eignet sich z. B. um in Verbindung mit dem calc Plugin feste Korrekturwerte (Offset) auf einen variablen Wert anzuwenden oder auch zur Simulation von Mess- und Statuswerten zu Testzwecken.
Beispiel Lesen:
source: const
value: -16247
Calc lesen
Das calc Plugin erlaubt es mehrere Einzelwerte mathematisch weiterzuverarbeiten:
Beispiel Lesen:
source: calc
add:
- source: ...
...
- source: ...
...
source: calc
mul:
- source: calc
sign:
source: ... (power)
...
- source: ... (current)
...
Als Operanden werden dabei die Grundrechenarten Addition (add) und Multiplikation (mul) unterstützt.
Mit scale: -1 bei einem der Werte kann eine einfache Subtraktion durchgeführt werden, mit scale: 0.001 eine Division z. B. zur Konvertierung von kWh in Wh.
Mit sign: (jede positive Zahl wird zu +1, jede negative Zahl wird zu -1, 0 bleibt 0) können (in Verbindung mit mul) Vorzeichen auf andere Werte übertragen werden.
Z. B. um bei Zählern die „Richtung“ der Leistung (Einspeisung oder Bezug) auf die gemessenen Ströme zu übertragen.
Das calc Plugin ist hilfreich um z. B.
- Leistungswerte von einzelnen PV-Strings zu summieren (addieren)
- Die Scheinleistung aus Spannung und Strom zu berechnen (multiplizieren)
- Getrennte Leistungswerte für Import und Export zu einem vorzeichenbehafteten Einzelwert zu kombinieren (subtrahieren).
- Prozentuale Füllstände zu berechnen (dividieren)
- Die richtige Richtung des Stromflusses festlegen (sign)
- Bekannte Offsets zu eliminieren (addieren mit
constPlugin)
Konstante Hilfswerte (z. B. für Offsets) lassen sich mithilfe des const Plugins als Operand erzeugen.
Combined lesen
Das combined Status Plugin wird verwendet um gemischte Boolean Status Werte von Plugged (angeschlossen) / Charging (Laden) in einen evcc-kompatiblen Ladestatus von A..F zu konvertieren.
Es wird z.b. zusammen mit einer OpenWB MQTT Integration verwendet.
Beispiel Lesen:
source: combined
plugged:
source: mqtt
topic: openWB/lp/1/boolPlugStat
charging:
source: mqtt
topic: openWB/lp/1/boolChargeStat
Valid lesen
Das valid Plugin ermöglicht es, Plugin-Werte basierend auf einer booleschen Validierung bereitzustellen.
Es trennt die Gültigkeit eines Werts von dessen eigenem Inhalt.
Wenn die Validierung false zurückgibt, wird der Wert als nicht verfügbar betrachtet.
Dies ist besonders nützlich für Integrationen wie ioBroker, die Gültigkeit und Wert getrennt bereitstellen.
Beispiel Lesen:
source: valid
valid:
source: mqtt
topic: iobroker/wallbox/power/valid
value:
source: mqtt
topic: iobroker/wallbox/power/value
In diesem Beispiel wird der Wert nur verwendet, wenn das valid Topic true zurückgibt.
Wenn es false zurückgibt, wird der Wert als nicht verfügbar markiert.
Meter lesen
Das meter Plugin ermöglicht es, ein anderes Messgerät als Datenquelle zu verwenden.
Dies ist nützlich, wenn man ein bestehendes Gerät für mehrere Messwerte verwenden möchte oder wenn man verschiedene Methoden eines Geräts für unterschiedliche Attribute nutzen will.
Die config Sektion enthält dabei die vollständige Template-Konfiguration des einzubettenden Messgeräts.
Beispiel Lesen:
meters:
- name: battery
type: custom
power:
source: meter
config:
type: template
template: shelly-1pm
host: 192.168.178.21
channel: 0
method: power
scale: -1
energy:
source: meter
config:
type: template
template: shelly-1pm
host: 192.168.178.21
channel: 0
method: energy
soc:
source: mqtt
topic: Haus/Batterie
jq: .soc
timeout: 60s
In diesem Beispiel wird ein Shelly 1PM Gerät als Datenquelle für Leistung und Energie einer Batterie verwendet, während der Ladestand (SoC) über MQTT abgerufen wird.