messaging
evcc unterstützt die Übermittlung von Status-Informationen über Telegram, PushOver, ntfy und viele weitere Dienste über das System shoutrrr. Die Konfiguration ermöglich es eigene Nachrichten für bestimmte Ereignisse und Systeme zu definieren.
messaging definiert in Subelementen was und wie es verschickt wird. Unter events müssen die Ereignisse definiert werden, für welche Nachrichten verschickt werden sollen. Und unter services die Dienste über welche die Nachrichten verschickt werden sollen.
Beispiel:
messaging: events: ... services: ...events definiert den Nachrichteninhalt für verschiedene vordefinierte Ereignisse.
Die verfügbaren Ereignisse sind:
start: Laden hat begonnenstop: Laden wurde beendetconnect: Fahrzeug angeschlossendisconnect: Fahrzeug entferntsoc: Fahrzeug Akku-Ladestandsänderungguest: Unbekanntes Fahrzeug erkanntasleep: Fahrzeug lädt nicht trotz Ladefreigabe
Beispiel:
start: # charge start event title: Charge started msg: Started charging in "${mode}" modetitle definiert den Text für den Nachrichtentitel.
Beispiel:
title: Charge startedmsg definiert den Text für den Nachrichteninhalt.
Im Text können verschiedene Variablen zur Anzeige von evcc Informationen verwendet werden.
Es gibt zwei Schreibweisen:
- Einfach:
${<Variablenname>}— z. B.${vehicleTitle}, mit optionaler Formatierung wie${pvPower:%.1fk} - Go-Template:
{{.variablenname}}— ermöglicht Berechnungen, Bedingungen und sprig-Funktionen
Verfügbare Variablen
Abschnitt betitelt „Verfügbare Variablen“Die verfügbaren Variablen entsprechen den Daten der evcc REST API unter http://evcc.local:7070/api/state.
Beim Versand einer Nachricht werden die Daten des jeweiligen Ladepunkts und die globalen Daten in einer flachen Struktur zusammengeführt.
D. h. sowohl globale Werte (z. B. pvPower, grid.Power) als auch ladepunktspezifische Werte (z. B. mode, chargedEnergy, vehicleTitle) sind direkt verfügbar.
Eine Auswahl nützlicher Variablen findest du am Ende dieser Seite.
Beispiel (einfache Syntax):
messaging: events: start: title: Laden gestartet msg: >- ${title} lädt ${vehicleTitle} im Modus ${mode} stop: title: Laden beendet msg: >- ${title}: ${vehicleTitle} geladen mit ${chargedEnergy:%.1fk}kWh in ${chargeDuration}. Sonnenanteil: ${sessionSolarPercentage:%.0f}% connect: title: Fahrzeug verbunden msg: >- ${vehicleTitle} verbunden an ${title} bei ${pvPower:%.1fk}kW PV disconnect: title: Fahrzeug getrennt msg: >- ${vehicleTitle} getrennt von ${title} nach ${connectedDuration}services
Abschnitt betitelt „services“services definiert eine Liste von zu verwendeten Nachrichtendiensten.
Beispiel:
services: - type: pushover app: 12345 recipients: - 234567Im folgenden werden nun alle erforderlichen Parameter erklärt.
type definiert den Nachrichtendienst der verwendet werden soll.
Mögliche Werte:
pushover: Pushover. SiehepushoverDefinitiontelegram: Telegram Messenger. SiehetelegramDefinitionemail: Email. SieheemailDefinitionshout: shoutrrr. SieheshoutDefinitionntfy: ntfy. SiehentfyDefinitioncustom: Ermöglicht die Nutzung von allen Plugins, die einen Schreibzugriff erlauben. SiehecustomDefinition.
Unterstützte Dienste
Abschnitt betitelt „Unterstützte Dienste“pushover
Abschnitt betitelt „pushover“pushover verwendet den Dienst Pushover. Details siehe Pushover API.
Beispiel:
- type: pushover app: # API Token/Key der in Pushover angelegten Aplication recipients: - # Liste der Empfänger: entweder User Key or Delivery Group. In Pushover angelegte Gruppen können auf bestimmte Geräte eingeschränkt werden. devices: - Johns phone - Mias tickertelegram
Abschnitt betitelt „telegram“telegram verwendet den Dienst Telegram Messenger.
Beispiel:
- type: telegram token: # bot id : jede laufende Instanz von evcc benötigt eine eigene bot id chats: - # Liste von Chat oder Group IDs. Jeder Eintrag benötigt ein - Zeichen am Anfang und muss in einer eigenen Zeile sein. - -GroupID #Achtung Group IDs in Telegram haben ein -Zeichen - ChatIDemail verwendet den Dienst shoutrrr.
Hier wird der Parameter uri mit dem Wert smtp://<user>:<password>@<host>:<port>/?fromAddress=<from>&toAddresses=<to> erwartet. Die Platzhalter sind wie folgt zu ersetzen:
<host>: Adresse (hostname oder IP Adresse) des Email Servers<port>: Port Adresse des Email Servers<user>: Benutzername für den Email Server<password>: Passwort des Benutzers<from>: Email Adresse des Absenders<to>: Email Adresse des Empfängers
Beispiel:
- type: email uri: smtp://benutzername:passwort@emailserver.domäne:1234/?fromAddress=absender@mail.com&toAddresses=empfänger@mail.comshout verwendet den Dienst shoutrrr und unterstützt alle seine Dienste.
Die Konfiguration wird im folgenden Beispiel anhand von Gotify gezeigt und funktioniert bei den anderen Möglichkeiten über den gleichen Weg.
Beispiel:
- type: shout uri: gotify://gotify.example.com:443/AzyoeNS.D4iJLVa/?priority=1Weitere Informationen sind in der shoutrrr Dokumentation zu den unterstützten Diensten zu finden.
ntfy verwendet den Dienst ntfy.
Hier wird der Parameter uri mit dem Wert https://<host>/<topics> erwartet. Die Platzhalter sind wie folgt zu ersetzen:
<host>: Adresse (hostname oder IP Adresse) des ntfy Servers<topics>: Abonniertes Thema oder abonnierte Themen
Optionale Parameter sind priority, tags und authtoken. Alle Parameter werden als Strings übergeben.
Beispiel:
- type: ntfy uri: https://ntfy.sh/evcctestalerts priority: default tags: electric_plug,blue_car authtoken: 61RgoYLOsi8S318j6ycU2qEsleC2p9njoyw4890121412JloH7rMPaqQwi5KWTitWeitere Informationen sind in der ntfy Dokumentation zu finden.
Der Typ custom ermöglicht es, beliebige Plugins für die Verarbeitung von Nachrichten zu verwenden. Das Plugin muss den Schreibmodus unterstützen. Die Nachricht selbst wird in der Plugin Konfiguration mit dem Parameter ${send} (bzw. als Template Parameter {{.send}}) bereitgestellt.
Mögliche Werte:
-
send: Definiert das zu verwendende Plugin mit dem Feldsourceund plugin-spezifische Parameter. Siehe das Beispiel weiter unten. -
encoding: Definiert das Format, in dem der Wert für${send}bereitgestellt wird. Die möglichen Werte sind:json: Der Wert wird als JSON-Objekt im Format{ "msg": msg, "title": title }bereitgestellt. Das Feldtitlewird nur hinzugefügt, wenn es im Abschnitteventsdefiniert ist.csv: Die Feldertitleundmsgwerden als kommaseparierte Liste bereitgestellt (title, msg)tsv: Ähnlich wiecsv, jedoch mit Tabulator als Trennzeichen.title: Nur der Titel (title) wird bereitgestellt.
Wenn
encodingnicht definiert ist, wird die Nachrichtmsgohne Titel direkt verwendet. Dabei wird nur die inmsgdefinierte Nachricht ohne Titel in${send}verwendet.
Beispiel:
messaging: events: connect: title: "Evcc: ${vehicleName} hat sich verbunden" msg: "${vehiclTitle} wurde verbunden (Lademodus: ${mode})." services: - type: custom encoding: json send: # Plugin Typ source: script # Plugin-spezifische Konfiguration. # {{.send}} enthält die JSON Nachricht cmd: /usr/local/bin/evcc_message "{{.send}}"In diesem Beispiel wird ein Shell-Script (cmd) mit dem Argument {"title": "...", "msg": "...."} aufgerufen.
Variablen-Referenz
Abschnitt betitelt „Variablen-Referenz“Die folgende Liste zeigt eine Auswahl häufig genutzter Variablen.
Die vollständige Liste aller verfügbaren Felder findest du in der API-Antwort unter http://evcc.local:7070/api/state.
Ladepunkt (loadpoint)
Abschnitt betitelt „Ladepunkt (loadpoint)“Die Ladepunkt-Daten stammen aus dem loadpoints-Array der API-Antwort, werden aber in der Nachricht direkt (ohne Präfix) bereitgestellt.
title- Name des Ladepunktsloadpoint- Nummer des Ladepunkts 1, 2, …mode- Lademodus:off/now/minpv/pvcharging- Ladevorgang aktivenabled- Ladefreigabe erteiltconnected- Fahrzeug angeschlossenchargedEnergy- Geladene Energie der Sitzung in WhchargeDuration- LadedauerchargePower- Aktuelle Ladeleistung in WconnectedDuration- AnschlussdauerchargeRemainingDuration- Restladezeit bis ZielchargeRemainingEnergy- Restenergie bis Ziel in WhphasesActive- Aktuell aktive PhasenvehicleTitle- Name des FahrzeugsvehicleName- Technischer Name des FahrzeugsvehicleSoc- Fahrzeug-Ladestand in %vehicleRange- Fahrzeug-Reichweite in kmvehicleOdometer- Kilometerstand in kmsessionSolarPercentage- Sonnenanteil der Ladesitzung in %sessionPrice- Kosten der LadesitzungsessionPricePerKWh- Durchschnittspreis pro kWhsessionCo2PerKWh- Durchschnittliche CO₂-Emissionen pro kWhplanActive- Ladeplan aktivsmartCostActive- Günstiges Laden aktiv
Global (site)
Abschnitt betitelt „Global (site)“Die globalen Daten stammen aus der obersten Ebene der API-Antwort.
siteTitle- Name der evcc-InstanzpvPower- Aktuelle PV-Leistung in WhomePower- Aktueller Hausverbrauch in Wgrid.Power- Netzbezug (+) / Einspeisung (-) in Wbattery.Power- Batterieleistung in Wbattery.Soc- Batterie-Ladestand in %currency- Tarif-WährungtariffGrid- Aktueller Netzpreis pro kWhtariffFeedIn- Einspeisevergütung pro kWhtariffCo2- Aktuelle CO₂-Intensitätstatistics- Ladestatistiken, verfügbar für die Zeiträume30d,365d,thisYearundtotalstatistics.<zeitraum>.avgCo2- Durchschnittliche CO₂-Emissionen pro kWhstatistics.<zeitraum>.avgPrice- Durchschnittspreis pro kWhstatistics.<zeitraum>.chargedKWh- Geladene Energie in kWhstatistics.<zeitraum>.solarPercentage- Sonnenanteil in %