Zum Inhalt springen

Konfiguration des SENEC-Collectors

Der SENEC-Collector wird über Umgebungsvariablen konfiguriert.

Welche Variablen nötig sind, hängt am Betriebsmodus: SENEC_ADAPTER=local fragt den Stromspeicher im Heimnetz ab, SENEC_ADAPTER=cloud holt die Messwerte bei mein-senec.de. Jeder Modus hat seine eigenen Pflichtvariablen, die des anderen Modus ignoriert der Collector.

Betriebsmodus des Collectors. Erlaubt sind local für den direkten Zugriff auf den Stromspeicher und cloud für den Abruf über die SENEC-Cloud. Standardwert ist local.

Jeder andere Wert bricht den Start ab. Der Home 4 hat keine lokale Schnittstelle, für ihn kommt nur cloud in Frage.

Beispiel
SENEC_ADAPTER=cloud

Hostname des SENEC-Stromspeichers, üblicherweise eine IP-Adresse. Pflicht, solange SENEC_ADAPTER auf local steht. Im Cloud-Modus wird die Variable ignoriert.

Hier gehört nur der Host hin, kein http:// oder https://. Das Protokoll steht getrennt in SENEC_SCHEMA. Fehlt der Host im lokalen Modus, bricht der Collector beim Start mit einer Fehlermeldung ab.

Beispiel
SENEC_HOST=192.168.178.29

Protokoll für die Verbindung zum SENEC-Stromspeicher, http oder https. Standardwert ist https. Im Cloud-Modus wird die Variable ignoriert.

Ältere Geräte sprechen mitunter nur http. Passt das Protokoll nicht, kommt keine Verbindung zustande.

Beispiel
SENEC_SCHEMA=http

Sprache der Status-Texte, die der Collector vom Gerät liest. Erlaubt sind de, en und it, andere Sprachen liefert das SENEC-Gerät nicht aus. Standardwert ist de. Im Cloud-Modus wird die Variable ignoriert.

Der Collector liest die Namen der Betriebszustände aus der Weboberfläche des Geräts und schreibt sie als current_state in die InfluxDB. Die Sprache entscheidet also, in welcher Sprache dieses Feld gefüllt wird.

Beispiel
SENEC_LANGUAGE=en

E-Mail-Adresse für die Anmeldung bei mein-senec.de. Pflicht, sobald SENEC_ADAPTER=cloud gesetzt ist. Im lokalen Modus wird die Variable ignoriert.

Der Collector prüft beim Start, ob der Wert ein @ enthält, und bricht sonst ab.

Beispiel
SENEC_USERNAME=mail@example.com

Passwort für die Anmeldung bei mein-senec.de. Pflicht, sobald SENEC_ADAPTER=cloud gesetzt ist. Im lokalen Modus wird die Variable ignoriert.

Beispiel
SENEC_PASSWORD=my-secret-password

URI für die Multi-Faktor-Authentifizierung (MFA) bei mein-senec.de. Nötig ist sie nur im Cloud-Modus und auch dort nur, wenn das Konto MFA verlangt. Im lokalen Modus wird die Variable ignoriert.

Anzugeben ist der vollständige String in Anführungszeichen. Er muss mit otpauth:// beginnen und einen secret-Parameter enthalten, sonst bricht der Collector beim Start ab. Aus dem QR-Code von SENEC oder dem Eintrag im Google Authenticator lässt sich die URI mit dem QR Code Secret Decoder ermitteln.

Beispiel
SENEC_TOTP_URI="otpauth://totp/SENEC:mail%40example.com?secret=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&digits=6&algorithm=SHA1&issuer=SENEC&period=30"

ID des SENEC-Systems, dessen Messwerte der Collector aus der Cloud holt. Nötig ist sie nur, wenn am Konto mehr als ein System hängt. Im lokalen Modus wird die Variable ignoriert.

Ohne die Variable listet der Collector die verfügbaren IDs im Protokoll auf und verwendet die erste. Für eine andere als die erste ID sind drei Schritte nötig:

  1. Die Variable leer lassen und den Collector starten.
  2. Die gewünschte ID aus dem Protokoll ablesen.
  3. Die ID hier eintragen und den Collector neu starten.
Beispiel
SENEC_SYSTEM_ID=12345

Intervall in Sekunden, in dem der Collector die Messwerte abfragt, eine Ganzzahl. Standardwert ist 5 im lokalen Modus und 60 im Cloud-Modus.

Diese Werte sind zugleich die Untergrenze: Ein kleinerer Wert wird stillschweigend angehoben. Häufigeres Abfragen brächte ohnehin nichts, denn die Cloud liefert neue Werte nur alle 5 Minuten, beim Home 4 jede Minute.

Beispiel
SENEC_INTERVAL=10

Messwerte, die der Collector nicht an InfluxDB sendet. Nötig, wenn ein Messwert aus einer anderen Quelle stammt, etwa die Wallbox-Leistung von einem Shelly. Erlaubt ist eine komma-getrennte Liste von Feldnamen ohne Leerzeichen. Ohne die Variable sendet der Collector alle Messwerte.

Ein unbekannter Feldname bricht den Start ab. Der Collector nennt ihn dann im Protokoll.

Beispiel
SENEC_IGNORE=wallbox_charge_power,grid_power_minus

Umfang der Abfrage in der Cloud. Erlaubt sind minimal und full, jeder andere Wert bricht den Start ab. Standardwert ist minimal. Im lokalen Modus wird die Variable ignoriert.

Mit minimal fragt der Collector nur einen Endpunkt mit den wichtigsten Feldern ab. Mit full holt er zusätzlich case_temp, application_version, current_state und current_state_ok. Die letzten beiden liefert der Home 4 allerdings nicht. Das kostet eine zweite Anfrage pro Durchlauf und erzeugt entsprechend mehr Last auf den SENEC-Servern.

Beispiel
SENEC_REQUEST_MODE=full

Hostname des InfluxDB-Servers. Läuft InfluxDB im selben Docker-Netzwerk, ist das der Name des Docker-Services, also influxdb. Es kann aber auch ein externer Server sein, etwa influxdb.example.com.

Beispiel
INFLUX_HOST=influxdb

Schema für die Verbindung zu InfluxDB, http oder https. Standardwert ist http. Bei einer externen InfluxDB mit TLS gehört hier https hin.

Beispiel
INFLUX_SCHEMA=https

Port für die Verbindung zu InfluxDB, eine Ganzzahl. Standardwert ist 8086. Bei einer externen, per TLS abgesicherten InfluxDB ist es oft 443.

Beispiel
INFLUX_PORT=443

Token, mit dem sich der Collector bei InfluxDB anmeldet. Er muss dort existieren und das Recht haben, in den angegebenen Bucket zu schreiben. Mehr braucht der Collector nicht: Er schickt Messwerte hin und liest nie etwas zurück.

Passt der Token nicht, weist InfluxDB jeden Schreibzugriff ab. Der Collector läuft dann weiter, protokolliert aber Fehler, und im Dashboard bleiben die Kurven leer.

Beispiel
INFLUX_TOKEN=my-super-secret-write-token

Organisation in InfluxDB, unter der die Messwerte gespeichert werden. Eine Organisation ist der Mandant, dem Benutzer, Buckets und Tokens gehören. InfluxDB legt sie beim ersten Start an. In einer SOLECTRUS-Installation heißt sie solectrus, mehr als eine braucht es nicht.

Der Name muss zu der Organisation passen, die in InfluxDB tatsächlich existiert. Ein anderer Wert benennt sie nicht um, er lässt den Collector nur ins Leere schreiben.

Beispiel
INFLUX_ORG=solectrus

Bucket in InfluxDB, in den der Collector die Messwerte schreibt. Ein Bucket ist das, was anderswo die Datenbank wäre: ein benannter Speicher mit eigener Aufbewahrungsdauer. Auch ihn legt InfluxDB beim ersten Start an. Eine SOLECTRUS-Installation kommt mit einem einzigen aus, er heißt solectrus.

Der Name muss zu dem Bucket passen, der in InfluxDB existiert, und zu dem, aus dem das Dashboard liest. Gibt es ihn nicht, lehnt InfluxDB die Schreibzugriffe ab.

Beispiel
INFLUX_BUCKET=solectrus

Measurement in InfluxDB, unter dem die Messwerte des Collectors landen. Standardwert ist SENEC.

Der Name muss zu dem passen, den das Dashboard für die SENEC-Sensoren erwartet. Eine nachträgliche Änderung ist heikel: Bereits geschriebene Messwerte bleiben dauerhaft an den alten Namen gebunden.

Beispiel
INFLUX_MEASUREMENT=power_storage

Zeitzone gemäß Liste. Standardwert ist UTC.

Sie betrifft ausschließlich die Zeitstempel im Protokoll des Collectors. Die Messwerte selbst speichert InfluxDB immer in UTC, daran ändert TZ nichts.

Beispiel
TZ=Europe/Rome