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
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 erkannt
Beispiel:
start: # charge start event
title: Charge started
msg: Started charging in "${mode}" mode
title
title
definiert den Text für den Nachrichtentitel.
Beispiel:
title: Charge started
msg
msg
definiert den Text für den Nachrichteninhalt.
Im Text können verschiedene Variablen im Format ${<Variablenname>}
zur Anzeige von evcc Informationen verwendet werden.
Bei Nutzung der Variablen ist auf die korrekte Schreibweise (groß/klein) zu achten!
Nützliche Auswahl zur Nutzung in evcc Benachrichtungen:
msg Variable | Beschreibung |
---|---|
${chargedEnergy:%.1fk} | Geladene Energiemenge in kWh |
${chargeDuration} | Dauer der Ladezeit |
${connectedDuration} | Dauer der Wallbox Verbindung |
${loadpoint} | Nummer des loadpoints (Ladepunkt) 1,2... |
${mode} | Aktiver Lademodus (vgl. mode des loadpoints ) |
${pvPower:%.1fk} | Aktuell gemessene PV Leistung in kW |
${title} | Ladepunkt: Text des loadpoints title Parameters |
${vehicleTitle} | Fahrzeug: Text des vehicles title Parameters |
Beispiel:
# Message examples using evcc variables
# start
msg: Wallbox ${title} started charging ${vehicleTitle} in ${mode} mode
# stop
msg: Wallbox ${title} finished charging ${vehicleTitle} with ${chargedEnergy:%.1fk}kWh in ${chargeDuration}
# connect
msg: ${vehicleTitle} connected on wallbox ${title} at ${pvPower:%.1fk}kW PV
# disconnect
msg: ${vehicleTitle} disconnected of wallbox ${title} after ${connectedDuration}
Zum Rendern der msg
-Texte kann auch die go-Text-Template-Syntax in Kombination mit sprig-Funktionen genutzt werden.
# Message config using evcc go-text-template rendering, evcc variables and sprig-functions
messaging:
events:
start: # charge start event
title: Charge of {{.vehicleTitle}} started
msg: |
Wallbox {{.title}} started charging {{.vehicleTitle}} in {{ toString .mode | upper }} mode.
--------------------------
evcc Status {{printf `(%d-%02d-%02d %02d:%02d:%02d)` now.Year now.Month now.Day now.Hour now.Minute now.Second}}
Netz-Leistung: {{round (divf .gridPower 1000) 3 }} kW
Solar-Leistung: {{round (divf .pvPower 1000) 3 }} kW
Eigenverbrauch: {{round (divf .homePower 1000) 3 }} kW
{{if .batteryConfigured}}Batteriespeicher-Status: {{round (divf .batteryPower 1000) 3 }} kW ({{.batterySoc }} %){{end}}
stop: # charge stop event
title: Charge of {{.vehicleTitle}} finished
msg: |
Wallbox {{.title}} finished charging {{.vehicleTitle}}
with {{round (divf .chargedEnergy 1000) 2 }} kWh in {{.chargeDuration}}.
--------------------------
evcc Status {{printf `(%d-%02d-%02d %02d:%02d:%02d)` now.Year now.Month now.Day now.Hour now.Minute now.Second}}
Netz-Leistung: {{round (divf .gridPower 1000) 3 }} kW
Solar-Leistung: {{round (divf .pvPower 1000) 3 }} kW
Eigenverbrauch: {{round (divf .homePower 1000) 3 }} kW
{{if .batteryConfigured}}Batteriespeicher-Status: {{round (divf .batteryPower 1000) 3 }} kW ({{.batterySoc }} %){{end}}
connect: # vehicle connect event
title: "{{.vehicleTitle}} connected on wallbox {{.title}}"
msg: |
{{.vehicleTitle}} connected on wallbox {{.title}} at {{round (divf .pvPower 1000) 2 }} kW PV.
--------------------------
evcc Status {{printf `(%d-%02d-%02d %02d:%02d:%02d)` now.Year now.Month now.Day now.Hour now.Minute now.Second}}
Netz-Leistung: {{round (divf .gridPower 1000) 3 }} kW
Solar-Leistung: {{round (divf .pvPower 1000) 3 }} kW
Eigenverbrauch: {{round (divf .homePower 1000) 3 }} kW
{{if .batteryConfigured}}Batteriespeicher-Status: {{round (divf .batteryPower 1000) 3 }} kW ({{.batterySoc }} %){{end}}
disconnect: # vehicle connected event
title: "{{.vehicleTitle}} disconnected of wallbox {{.title}}"
msg: |
{{.vehicleTitle}} disconnected of wallbox {{.title}} after {{.connectedDuration}}.
--------------------------
evcc Status {{printf `(%d-%02d-%02d %02d:%02d:%02d)` now.Year now.Month now.Day now.Hour now.Minute now.Second}}
Netz-Leistung: {{round (divf .gridPower 1000) 3 }} kW
Solar-Leistung: {{round (divf .pvPower 1000) 3 }} kW
Eigenverbrauch: {{round (divf .homePower 1000) 3 }} kW
{{if .batteryConfigured}}Batteriespeicher-Status: {{round (divf .batteryPower 1000) 3 }} kW ({{.batterySoc }} %){{end}}
Liste aller von evcc bereitgestellten Variablen:
Die von evcc bereitgestellten Variablen (siehe auch /api/state) müssen als regex-Funktion ${<Variablenname>}
oder im go-Template-Format {{<Variablenname>}}
im Text der Meldung definiert werden. Mehrere Variablen im Meldungstext sind möglich.
- Site
- Konfiguration
siteTitle
- Hauptüberschrift der evcc App (string)prioritySoc
- Mindest-Füllstand der Powerwall in Prozent, vor PV mode Freigabe (integer)
- Information
batteryConfigured
- Indikator, Hausbatterie/Powerwall-Meter konfiguriert (bool)gridConfigured
- Indikator, Smart/Grid-Meter konfiguriert (bool)pvConfigured
- Indikator, Solaranlagen/Photovoltaik-Meter konfiguriert (bool)
- Konfiguration
- Infos zum Stromtarif
currency
- Tarif-Währung (string)tariffFeedIn
- PV-Einspeisevergütung pro kWh in der Tarif-Währung (float)tariffGrid
- Netz-Abnahmepreis pro kWh in der Tarif-Währung (float)
- Meter Infos
batteryPower
- Aktuelle Hausbatterie/Powerwall-Leistung in Watt (float)batterySoc
- Aktueller Füllstand der Hausbatterie/Powerwall in Prozent (integer)gridPower
- Aktuelle Netz-Einspeisung(-) oder -Abnahme(+) in Watt (float)homePower
- Aktuelle Haus-Abnahmeleistung (ohne Wallboxverbrauch) in Watt (float)pvPower
- Aktuelle Solaranlagen-Leistung in Watt (float)
- Ladepunkte (loadpoint)
- Konfiguration
loadpoint
- Laufende Nummer des Ladepunktes (integer)maxCurrent
- Maximale Lade-Stromstärke in Ampere (float)minCurrent
- Minimale Lade-Stromstärke in Ampere (float)mode
- Initialer Modus des Ladepunktes nach evcc-Startoff
/now
/min
/pv
(string)phases
- Initial aktive Anzahl Stromphasen des Ladepunktes nach evcc-Start (integer)title
- Bezeichnung des Ladepunktes in der evcc App (string)
- Information
activePhases
- Aktuell aktive Anzahl Stromphasen des Ladepunktes (integer)chargeCurrent
- Aktuelle Gesamt-Lade-Stromstärke in Ampere (float)chargeCurrents
- Aktuelle Lade-Stromstärke pro aktiver Stromphase in Ampere (float)chargeDuration
- Ladedauer in Nanosekunden (integer)chargePower
- Aktuelle Lade-Leistung in Watt (float)chargeRemainingDuration
- Ladezeit in Nanosekunden bis zum Ziel-Füllstand (integer)chargeRemainingEnergy
- Notwendige Energie bis zum Ziel-Füllstand in Wh (float)chargedEnergy
- Bisher geladene Energie in Wh (float)charging
- Indikator, Ladevorgang aktiv (bool)enabled
- Indikator, Beladung freigegeben (bool)hasVehicle
- Indikator, Fahrzeug-Definitionen sind dem Ladepunkt zugewiesen (bool)targetTime
- Zielladezeit in Nanosekunden seit 1970 UTC (integer)pvAction
- Kontrollvariable zur PV-Timer Steuerungenable
/disable
(string)pvRemaining
- Notwendige PV-Restladezeit bei aktivierter Timer Steuerung in Nanosekunden (integer)
- Konfiguration
- Fahrzeuge (vehicles)
- Konfiguration
vehicleName
- Name des Fahrzeugs (string)vehicleCapacity
- Kapazität der Fahrzeugbatterie in Wh (float)vehicleTitle
- Bezeichnung des Fahrzeugs in der evcc App (string)
- Information
climater
- Status der Fahrzeug-Klimatisierungon
/off
/heating
/cooling
(string)connected
- Indikator, Fahrzeug am Ladepunkt angeschlossen (bool)connectedDuration
- Anschlußdauer des Fahrzeugs in Nanosekunden (integer)vehicleOdometer
- Aktueller Kilometerstand des Fahrzeugs in km (float)vehiclePresent
- Indikator, evcc kann auf die Fahrzeugdaten zugreifen (bool)vehicleRange
- Aktuelle Reichweite des Fahrzeugs in km (float)vehicleSoc
- Aktueller Füllstand der Fahrzeugbatterie in Prozent (integer)
- Konfiguration
- Infos zur Einsparungseffizienz
savingsAmount
- Summe der evcc-Einsparung (float)savingsEffectivePrice
- Kalkulierter Einsparungs-Preis (float)savingsGridCharged
- Geladene Netzenergie in Wh (float)savingsSelfConsumptionCharged
- Geladene Sonnenenergie in Wh (float)savingsSelfConsumptionPercent
- Anteil der geladenen Sonnenenergie in Wh (float)savingsSince
- Zeitperiode der Ersparnisberechnung in Nanosekunden (integer)savingsTotalCharged
- Geladene Gesamtenergie in Wh (float)
- Infos zur Ladesitzung
sessionSolarPercentage
- Sonnenanteil der SitzungsessionPrice
- Preis des geladenen Stroms der SitzungsessionPricePerKWh
- Durchschnittlicher Preis des Stroms pro kWh der SitzungsessionCo2PerKWh
- Durchschnittliche CO2 pro kWh
- Sponsor
- Konfiguration
auth
- Authentication Token des evcc-Sponsors (string)
- Information
sponsor
- Name des evcc-Sponsors (string)
- Konfiguration
services
services
definiert eine Liste von zu verwendeten Nachrichtendiensten.
Beispiel:
services:
- type: pushover
app: 12345
recipients:
- 234567
Im folgenden werden nun alle erforderlichen Parameter erklärt.
type
type
definiert den Nachrichtendienst der verwendet werden soll.
Mögliche Werte:
pushover
: Pushover. Siehepushover
Definitiontelegram
: Telegram Messenger. Siehetelegram
Definitionemail
: Email. Sieheemail
Definitionshout
: shoutrrr. Sieheshout
Definitionntfy
: ntfy. Siehentfy
Definitioncustom
: Ermöglicht die Nutzung von allen Plugins, die einen Schreibzugriff erlauben. Siehecustom
Definition.
Unterstützte Dienste
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 ticker
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
- ChatID
email
email
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.com
shout
shout
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=1
Weitere Informationen sind in der shoutrrr Dokumentation zu den unterstützten Diensten zu finden.
ntfy
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
und tags
. Alle Parameter werden als Strings übergeben.
Beispiel:
- type: ntfy
uri: https://ntfy.sh/evcctestalerts
priority: default
tags: electric_plug,blue_car
Weitere Informationen sind in der ntfy Dokumentation zu finden.
custom
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 Feldsource
und 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 Feldtitle
wird nur hinzugefügt, wenn es im Abschnittevents
definiert ist.csv
: Die Feldertitle
undmsg
werden als kommaseparierte Liste bereitgestellt (title, msg
)tsv
: Ähnlich wiecsv
, jedoch mit Tabulator als Trennzeichen.title
: Nur der Titel (title
) wird bereitgestellt.
Wenn
encoding
nicht definiert ist, wird die Nachrichtmsg
ohne Titel direkt verwendet. Dabei wird nur die inmsg
definierte 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.