Zum Inhalt springen

Konfiguration des SENEC-Chargers

Der SENEC-Charger wird über Umgebungsvariablen konfiguriert.

Hostname des SENEC-Stromspeichers, üblicherweise eine IP-Adresse im lokalen Netz. Eine lokale Domain geht ebenso.

Hier gehört nur der Host hin, kein http:// oder https:// und keine Portnummer. Das Protokoll steht getrennt in SENEC_SCHEMA. Ergibt beides zusammen keine gültige URL, bricht der Charger beim Start ab.

Beispiel
SENEC_HOST=192.168.1.42

Protokoll für die Verbindung zum Stromspeicher, http oder https. Standardwert ist https, denn ein SENEC.Home V3 antwortet ab Werk verschlüsselt.

Ein anderer Wert als http oder https ergibt keine gültige URL, der Charger bricht dann beim Start ab.

Beispiel
SENEC_SCHEMA=http

Abstand zwischen zwei Prüfungen in Sekunden, eine positive Ganzzahl. Standardwert ist 3600, also eine Stunde.

Bei jeder Prüfung liest der Charger Preise und Prognose aus der InfluxDB und entscheidet über eine Beladung. Ein kürzeres Intervall bringt wenig, denn die Preise stehen für 24 Stunden im Voraus fest. Eine 0 oder ein nicht-numerischer Wert lässt den Charger beim Start abbrechen.

Beispiel
CHARGER_INTERVAL=1800

Preisgrenze in Prozent, bezogen auf den Durchschnittspreis der nächsten 24 Stunden. Erlaubt ist eine Ganzzahl größer als 0 und kleiner als 100, alles andere lässt den Charger beim Start abbrechen. Standardwert ist 70.

Der Charger sucht das günstigste zusammenhängende Zeitfenster der nächsten 24 Stunden (siehe CHARGER_PRICE_TIME_RANGE) und vergleicht dessen Durchschnittspreis mit dem Durchschnitt der gesamten 24 Stunden. Bei 70 gilt der Strom als günstig, sobald das Fenster höchstens 70 % dieses Durchschnitts kostet. Beginnt das Fenster gerade, lädt der Charger. Liegt es später, wartet er darauf. Je kleiner der Wert, desto seltener wird geladen.

Beispiel
CHARGER_PRICE_MAX=60

Länge des Zeitfensters in Stunden, eine positive Ganzzahl. Standardwert ist 4. Gemeint ist die Zeit, die der Speicher ungefähr für eine volle Beladung braucht, abhängig von seiner Kapazität und der Ladeleistung.

Der Charger legt ein gleitendes Fenster dieser Länge über die nächsten 24 Stunden und sucht darin das günstigste zusammenhängende Zeitfenster. Ein zu langes Fenster verwässert den Preisvorteil, ein zu kurzes endet, bevor der Speicher voll ist. Eine 0 oder ein nicht-numerischer Wert lässt den Charger beim Start abbrechen.

Beispiel
CHARGER_PRICE_TIME_RANGE=3

Grenze für den erwarteten PV-Ertrag der nächsten 24 Stunden in kWh, eine positive Ganzzahl. Standardwert ist 20.

Liegt die Prognose über diesem Wert, lädt der Charger nicht aus dem Netz, denn der Speicher füllt sich ohnehin aus der PV-Anlage. Der Wert gehört damit zur Größe der Anlage: Zu hoch gesetzt, verhindert er die Netzbeladung fast immer. Eine 0 oder ein nicht-numerischer Wert lässt den Charger beim Start abbrechen.

Beispiel
CHARGER_FORECAST_THRESHOLD=25

Trockenlauf. Erlaubt sind true und false, jeder andere Wert gilt als false. Standardwert ist false.

Bei true rechnet und protokolliert der Charger wie sonst auch, rührt den Speicher aber nicht an: Er startet keine Beladung und gibt keine Entladung frei. So lässt sich die Konfiguration beobachten, bevor sie scharf geschaltet wird.

Beispiel
CHARGER_DRY_RUN=true

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 Charger bei InfluxDB anmeldet. Er muss dort existieren und das Recht haben, den angegebenen Bucket zu lesen. Mehr braucht der Charger nicht: Er fragt Preise und Prognose ab und schreibt nie etwas zurück.

Passt der Token nicht, weist InfluxDB die Abfragen ab. Der Charger findet dann weder Preise noch Prognose und belädt den Speicher nicht.

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

Organisation in InfluxDB, unter der die Messwerte liegen. 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.

Der Name muss zu der Organisation passen, die in InfluxDB tatsächlich existiert. Ein anderer Wert lässt den Charger ins Leere lesen.

Beispiel
INFLUX_ORG=solectrus

Bucket in InfluxDB, aus dem der Charger Preise und Prognose liest. 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, in den Tibber- und Forecast-Collector schreiben. Gibt es ihn nicht, lehnt InfluxDB die Abfragen ab.

Beispiel
INFLUX_BUCKET=solectrus

Measurement in InfluxDB, aus dem der Charger die Strompreise liest. Standardwert ist Prices.

Es muss dasselbe Measurement sein, in das der Tibber-Collector die Preise schreibt, dort heißt die Variable INFLUX_MEASUREMENT. Der Charger liest daraus das Feld amount. Passt der Name nicht, findet er keine Preise und belädt den Speicher nie.

Beispiel
INFLUX_MEASUREMENT_PRICES=Prices

Measurement in InfluxDB, aus dem der Charger die PV-Prognose liest. Standardwert ist Forecast.

Es muss dasselbe Measurement sein, in das der Forecast-Collector die Prognose schreibt. Der Charger liest daraus das Feld watt und rechnet daraus den erwarteten Ertrag der nächsten 24 Stunden in kWh aus. Passt der Name nicht, sieht der Charger einen Ertrag von 0 kWh und lädt bei günstigem Strom auch dann, wenn die Sonne scheint.

Beispiel
INFLUX_MEASUREMENT_FORECAST=Forecast

Zeitzone gemäß Liste. Standardwert ist UTC.

Sie betrifft die Zeitstempel im Protokoll des Chargers, also auch die Uhrzeiten der geprüften Preisfenster. Auf die Entscheidung selbst wirkt sie sich nicht aus.

Beispiel
TZ=Europe/Berlin