Zum Inhalt springen

Konfiguration von Ingest

Ingest wird über Umgebungsvariablen konfiguriert.

Hostname des InfluxDB-Servers, an den Ingest die Messwerte weiterreicht. 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.

Hier gehört nur der Host hin, kein http:// oder https:// und keine Portnummer. Port und Schema stehen getrennt in INFLUX_PORT und INFLUX_SCHEMA.

Beispiel
INFLUX_HOST=influxdb

Port des InfluxDB-Servers, eine Ganzzahl. Standardwert ist 8086. Bei einer externen, per TLS abgesicherten InfluxDB ist es oft 443.

Beispiel
INFLUX_PORT=8086

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=http

Dauer in Stunden, für die Ingest die eingehenden Messwerte in seiner SQLite-Datenbank aufbewahrt, eine Ganzzahl. Standardwert ist 12. Ein Hintergrund-Job löscht stündlich alles, was älter ist.

Aus diesem Puffer holt Ingest die Nachbarwerte, mit denen es zwischen zwei Messpunkten interpoliert. Ein größerer Wert lässt Ingest den Hausverbrauch auch dann noch berechnen, wenn ein Kollektor seine Messwerte erst Stunden später nachträgt. Er vergrößert aber die SQLite-Datei auf der Platte. Die Warteschlange zur InfluxDB berührt die Variable nicht: Ist die InfluxDB nicht erreichbar, hält Ingest die ausgehenden Daten so lange vor, bis der Schreibzugriff klappt.

Beispiel
RETENTION_HOURS=36

Passwort für den Zugriff auf die Web-Oberfläche. Ohne die Variable ist sie ohne Passwort zu erreichen.

Beispiel
STATS_PASSWORD=my-super-secret-password

Ziel für den berechneten Hausverbrauch, in der Schreibweise Measurement:Field. Ohne die Variable schreibt Ingest das Ergebnis dorthin, wohin INFLUX_SENSOR_HOUSE_POWER zeigt, und überschreibt damit den Wert des Kollektors. Ist sie gesetzt, bleibt der Rohwert des Kollektors erhalten und das Ergebnis landet daneben.

Nützlich ist das zum Vergleich beider Werte. Für den Dauerbetrieb taugt es nicht: Das Dashboard kennt die Variable nicht und liest den Hausverbrauch weiterhin aus INFLUX_SENSOR_HOUSE_POWER, also den unkorrigierten Wert.

Beispiel
INFLUX_SENSOR_HOUSE_POWER_CALCULATED=Ingest:house_power_calculated

Zeitzone gemäß Liste. Standardwert ist UTC.

Sie betrifft ausschließlich die Zeitstempel im Protokoll und in der Web-Oberfläche von Ingest. Die Messwerte selbst speichert InfluxDB immer in UTC, daran ändert TZ nichts.

Beispiel
TZ=Europe/Berlin

Für die Berechnung des Hausverbrauchs muss Ingest wissen, wo die beteiligten Messwerte in der InfluxDB liegen. Die Zuordnung steht in INFLUX_SENSOR_*-Variablen, je eine pro Sensor, in der Schreibweise Measurement:Field.

Ingest liest genau dreizehn davon: INFLUX_SENSOR_INVERTER_POWER, INFLUX_SENSOR_INVERTER_POWER_1 bis INFLUX_SENSOR_INVERTER_POWER_5, INFLUX_SENSOR_GRID_IMPORT_POWER, INFLUX_SENSOR_GRID_EXPORT_POWER, INFLUX_SENSOR_BATTERY_CHARGING_POWER, INFLUX_SENSOR_BATTERY_DISCHARGING_POWER, INFLUX_SENSOR_WALLBOX_POWER, INFLUX_SENSOR_HEATPUMP_POWER und INFLUX_SENSOR_HOUSE_POWER. Alle anderen INFLUX_SENSOR_*-Variablen ignoriert Ingest.

Die Namen und ihre Bedeutung sind dieselben wie beim Dashboard, beschrieben unter Sensor-Konfiguration.

Beispiel
INFLUX_SENSOR_INVERTER_POWER_1=SENEC:inverter_power
INFLUX_SENSOR_INVERTER_POWER_2=Garage:inverter_power
INFLUX_SENSOR_GRID_IMPORT_POWER=SENEC:grid_power_plus
INFLUX_SENSOR_GRID_EXPORT_POWER=SENEC:grid_power_minus
INFLUX_SENSOR_HOUSE_POWER=SENEC:house_power

Ein Sensor ohne Variable fehlt in der Strombilanz. Gerechnet wird nur für Zeitpunkte, zu denen jeder konfigurierte Sensor einen Wert hat. INFLUX_SENSOR_HOUSE_POWER geht nicht in die Rechnung ein, sondern gibt das Ziel für das Ergebnis vor. Ohne diese Variable hat der berechnete Wert keinen Platz, es sei denn, INFLUX_SENSOR_HOUSE_POWER_CALCULATED ist gesetzt.

Komma-getrennte Liste von Sensoren, die aus der Berechnung herausfallen, ohne das Präfix INFLUX_SENSOR_. Ohne die Variable rechnet Ingest mit allen konfigurierten Sensoren.

Ein Sensor aus dieser Liste wird nicht abgezogen, sein Anteil steckt also weiterhin im berechneten Hausverbrauch. Das Dashboard zieht ihn erst bei der Anzeige ab, dort steht dieselbe Variable. Beide Dienste müssen denselben Wert bekommen, sonst zählt der Verbraucher doppelt oder gar nicht.

Beispiel
INFLUX_EXCLUDE_FROM_HOUSE_POWER=HEATPUMP_POWER

Ingest braucht weder INFLUX_TOKEN noch INFLUX_BUCKET noch INFLUX_ORG. Ein Kollektor schickt seine Messwerte an dieselbe Schnittstelle wie an eine InfluxDB, und dabei liegen Token, Bucket und Organisation im Request. Ingest nimmt sie von dort und reicht sie unverändert an die InfluxDB weiter. Es schreibt also mit dem Token des jeweiligen Kollektors.

Die SQLite-Datenbank liegt im Container unter /app/data. Wohin dieses Verzeichnis auf dem Host zeigt, entscheidet die Docker-Konfiguration. Eine Umgebungsvariable liest Ingest dafür nicht.