Zum Hauptinhalt springen

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 begonnen
  • stop: Laden wurde beendet
  • connect: Fahrzeug angeschlossen
  • disconnect: Fahrzeug entfernt
  • soc: Fahrzeug Akku-Ladestandsänderung
  • guest: 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.

hinweis

Bei Nutzung der Variablen ist auf die korrekte Schreibweise (groß/klein) zu achten!

Nützliche Auswahl zur Nutzung in evcc Benachrichtungen:

msg VariableBeschreibung
${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}
hinweis

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)
  • 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-Start off/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 Steuerung enable/disable (string)
      • pvRemaining - Notwendige PV-Restladezeit bei aktivierter Timer Steuerung in Nanosekunden (integer)
  • Fahrzeuge (vehicles)
    • Konfiguration
    • Information
      • climater - Status der Fahrzeug-Klimatisierung on/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)
  • 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 Sitzung
    • sessionPrice - Preis des geladenen Stroms der Sitzung
    • sessionPricePerKWh - Durchschnittlicher Preis des Stroms pro kWh der Sitzung
    • sessionCo2PerKWh - Durchschnittliche CO2 pro kWh
  • Sponsor
    • Konfiguration
      • auth - Authentication Token des evcc-Sponsors (string)
    • Information
      • sponsor - Name des evcc-Sponsors (string)

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:


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 Feld source 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 Feld title wird nur hinzugefügt, wenn es im Abschnitt events definiert ist.
    • csv: Die Felder title und msg werden als kommaseparierte Liste bereitgestellt (title, msg)
    • tsv: Ähnlich wie csv, jedoch mit Tabulator als Trennzeichen.
    • title: Nur der Titel (title) wird bereitgestellt.

    Wenn encoding nicht definiert ist, wird die Nachricht msg ohne Titel direkt verwendet. Dabei wird nur die in msg 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.