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.
Umgebungsvariablen
Abschnitt betitelt „Umgebungsvariablen“SENEC_ADAPTER
Abschnitt betitelt „SENEC_ADAPTER“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.
SENEC_ADAPTER=cloudSENEC_HOST
Abschnitt betitelt „SENEC_HOST“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.
SENEC_HOST=192.168.178.29SENEC_SCHEMA
Abschnitt betitelt „SENEC_SCHEMA“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.
SENEC_SCHEMA=httpSENEC_LANGUAGE
Abschnitt betitelt „SENEC_LANGUAGE“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.
SENEC_LANGUAGE=enSENEC_USERNAME
Abschnitt betitelt „SENEC_USERNAME“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.
SENEC_USERNAME=mail@example.comSENEC_PASSWORD
Abschnitt betitelt „SENEC_PASSWORD“Passwort für die Anmeldung bei mein-senec.de. Pflicht, sobald SENEC_ADAPTER=cloud gesetzt ist. Im lokalen Modus wird die Variable ignoriert.
SENEC_PASSWORD=my-secret-passwordSENEC_TOTP_URI
Abschnitt betitelt „SENEC_TOTP_URI“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.
SENEC_TOTP_URI="otpauth://totp/SENEC:mail%40example.com?secret=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&digits=6&algorithm=SHA1&issuer=SENEC&period=30"SENEC_SYSTEM_ID
Abschnitt betitelt „SENEC_SYSTEM_ID“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:
- Die Variable leer lassen und den Collector starten.
- Die gewünschte ID aus dem Protokoll ablesen.
- Die ID hier eintragen und den Collector neu starten.
SENEC_SYSTEM_ID=12345SENEC_INTERVAL
Abschnitt betitelt „SENEC_INTERVAL“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.
SENEC_INTERVAL=10SENEC_IGNORE
Abschnitt betitelt „SENEC_IGNORE“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.
SENEC_IGNORE=wallbox_charge_power,grid_power_minusSENEC_REQUEST_MODE
Abschnitt betitelt „SENEC_REQUEST_MODE“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.
SENEC_REQUEST_MODE=fullINFLUX_HOST
Abschnitt betitelt „INFLUX_HOST“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.
INFLUX_HOST=influxdbINFLUX_SCHEMA
Abschnitt betitelt „INFLUX_SCHEMA“Schema für die Verbindung zu InfluxDB, http oder https. Standardwert ist http. Bei einer externen InfluxDB mit TLS gehört hier https hin.
INFLUX_SCHEMA=httpsINFLUX_PORT
Abschnitt betitelt „INFLUX_PORT“Port für die Verbindung zu InfluxDB, eine Ganzzahl. Standardwert ist 8086. Bei einer externen, per TLS abgesicherten InfluxDB ist es oft 443.
INFLUX_PORT=443INFLUX_TOKEN
Abschnitt betitelt „INFLUX_TOKEN“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.
INFLUX_TOKEN=my-super-secret-write-tokenINFLUX_ORG
Abschnitt betitelt „INFLUX_ORG“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.
INFLUX_ORG=solectrusINFLUX_BUCKET
Abschnitt betitelt „INFLUX_BUCKET“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.
INFLUX_BUCKET=solectrusINFLUX_MEASUREMENT
Abschnitt betitelt „INFLUX_MEASUREMENT“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.
INFLUX_MEASUREMENT=power_storageZeitzone 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.
TZ=Europe/Rome