# Konfiguration des SENEC-Chargers

> Umgebungsvariablen des SENEC-Chargers – Zugang zum Stromspeicher, Schwellwerte für Preis und Prognose sowie InfluxDB-Zugang.

Der SENEC-Charger wird über Umgebungsvariablen konfiguriert.

> **HELIOS**
>
>
> HELIOS verwaltet den SENEC-Charger, richtet ihn aber nur ein, wenn die Voraussetzungen stimmen: ein lokal abgefragter SENEC-Speicher (V2.1 oder V3) und ein eingerichteter [Forecast-Collector](/docs/referenz/forecast-collector/). Dann erscheint die preisoptimierte Beladung unter _Konfiguration → Grundeinstellungen → Dynamische Strompreise_, zusammen mit den [Tibber-Preisen](/docs/referenz/tibber-collector/), die sie voraussetzt.
>

## Umgebungsvariablen

### `SENEC_HOST`<span class="badge required"></span>

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.

```properties title="Beispiel"
SENEC_HOST=192.168.1.42
```

> **HELIOS**
>
>
> HELIOS setzt den Hostnamen aus den Angaben zum [SENEC-Collector](/docs/referenz/senec-collector/), abgefragt unter _Konfiguration → Datenquellen → SENEC-Collector_. Charger und Collector teilen sich denselben Wert.
>

### `SENEC_SCHEMA`<span class="badge optional"></span>

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.

```properties title="Beispiel"
SENEC_SCHEMA=http
```

> **HELIOS**
>
>
> HELIOS setzt das Protokoll aus den Angaben zum [SENEC-Collector](/docs/referenz/senec-collector/), abgefragt unter _Konfiguration → Datenquellen → SENEC-Collector_. Charger und Collector teilen sich denselben Wert.
>

### `CHARGER_INTERVAL`<span class="badge optional"></span>

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.

```properties title="Beispiel"
CHARGER_INTERVAL=1800
```

> **HELIOS**
>
>
> HELIOS fragt das Prüfintervall unter _Konfiguration → Grundeinstellungen → Dynamische Strompreise_ ab, vorbelegt mit `3600`.
>

### `CHARGER_PRICE_MAX`<span class="badge optional"></span>

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.

```properties title="Beispiel"
CHARGER_PRICE_MAX=60
```

> **HELIOS**
>
>
> HELIOS fragt die Preisgrenze unter _Konfiguration → Grundeinstellungen → Dynamische Strompreise_ ab, vorbelegt mit `70`.
>

### `CHARGER_PRICE_TIME_RANGE`<span class="badge optional"></span>

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.

```properties title="Beispiel"
CHARGER_PRICE_TIME_RANGE=3
```

> **HELIOS**
>
>
> HELIOS fragt die Ladedauer unter _Konfiguration → Grundeinstellungen → Dynamische Strompreise_ ab, vorbelegt mit `4`.
>

### `CHARGER_FORECAST_THRESHOLD`<span class="badge optional"></span>

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.

```properties title="Beispiel"
CHARGER_FORECAST_THRESHOLD=25
```

> **HELIOS**
>
>
> HELIOS fragt die Prognose-Schwelle unter _Konfiguration → Grundeinstellungen → Dynamische Strompreise_ ab, vorbelegt mit `20`.
>

### `CHARGER_DRY_RUN`<span class="badge optional"></span>

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.

```properties title="Beispiel"
CHARGER_DRY_RUN=true
```

> **HELIOS**
>
>
> HELIOS bietet dafür einen Schalter unter _Konfiguration → Grundeinstellungen → Dynamische Strompreise_, standardmäßig aus.
>

### `INFLUX_HOST`<span class="badge required"></span>

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`.

```properties title="Beispiel"
INFLUX_HOST=influxdb
```

> **HELIOS**
>
>
> HELIOS setzt den Hostnamen automatisch auf `influxdb`.
>

### `INFLUX_SCHEMA`<span class="badge optional"></span>

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

```properties title="Beispiel"
INFLUX_SCHEMA=https
```

> **HELIOS**
>
>
> HELIOS setzt das Schema nicht, es bleibt beim Standardwert `http`. Innerhalb des Docker-Netzwerks wird nicht verschlüsselt.
>

### `INFLUX_PORT`<span class="badge optional"></span>

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

```properties title="Beispiel"
INFLUX_PORT=443
```

> **HELIOS**
>
>
> HELIOS setzt den Port nicht, es bleibt beim Standardwert `8086`.
>

### `INFLUX_TOKEN`<span class="badge required"></span>

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.

```properties title="Beispiel"
INFLUX_TOKEN=my-super-secret-read-token
```

> **HELIOS**
>
>
> HELIOS gibt dem Charger den Lese-Token, siehe [`INFLUX_TOKEN_READ`](/docs/referenz/helios/konfiguration/#influx_token_read). Mehr als Lesen braucht er nicht.
>

### `INFLUX_ORG`<span class="badge required"></span>

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](/docs/referenz/influxdb/konfiguration/) 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.

```properties title="Beispiel"
INFLUX_ORG=solectrus
```

> **HELIOS**
>
>
> HELIOS gibt `solectrus` vor, einzustellen gibt es nichts.
>

### `INFLUX_BUCKET`<span class="badge required"></span>

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](/docs/referenz/influxdb/konfiguration/) 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.

```properties title="Beispiel"
INFLUX_BUCKET=solectrus
```

> **HELIOS**
>
>
> HELIOS gibt `solectrus` vor, einzustellen gibt es nichts.
>

### `INFLUX_MEASUREMENT_PRICES`<span class="badge optional"></span>

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

Es muss dasselbe Measurement sein, in das der [Tibber-Collector](/docs/referenz/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.

```properties title="Beispiel"
INFLUX_MEASUREMENT_PRICES=Prices
```

> **HELIOS**
>
>
> HELIOS setzt das Measurement gemeinsam mit dem [Tibber-Collector](/docs/referenz/tibber-collector/): Es ist der Wert aus _Konfiguration → Grundeinstellungen → Dynamische Strompreise_, vorbelegt mit `Prices`.
>

### `INFLUX_MEASUREMENT_FORECAST`<span class="badge optional"></span>

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

Es muss dasselbe Measurement sein, in das der [Forecast-Collector](/docs/referenz/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.

```properties title="Beispiel"
INFLUX_MEASUREMENT_FORECAST=Forecast
```

> **HELIOS**
>
>
> HELIOS setzt das Measurement auf denselben Wert wie beim [Forecast-Collector](/docs/referenz/forecast-collector/), abgefragt unter _Konfiguration → Datenquellen → Forecast-Collector_, vorbelegt mit `forecast`.
>

### `TZ`<span class="badge optional"></span>

Zeitzone gemäß [Liste](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). 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.

```properties title="Beispiel"
TZ=Europe/Berlin
```

> **HELIOS**
>
>
> HELIOS fragt die Zeitzone unter _Konfiguration → Grundeinstellungen → PV-Anlage_ ab, vorbelegt mit `Europe/Berlin`.
>
