# Was ist der SENEC-Collector?

> Der SENEC-Collector liest die Messwerte eines SENEC-Stromspeichers aus und schreibt sie in die InfluxDB – lokal oder über die SENEC-Cloud.

Der **SENEC-Collector** sammelt die Messwerte, die von einem SENEC-Stromspeicher gemeldet werden, und schreibt diese in die InfluxDB.

Der Collector ist kompatibel mit folgenden Stromspeichern:

- SENEC.Home V2.1
- SENEC.Home V3
- SENEC.Home 4

## Betriebsmodi

Grundsätzlich kann der Collector in zwei verschiedenen **Betriebsmodi** eingesetzt werden:

- **Lokal:** Direkter Zugriff auf den SENEC-Stromspeicher über dessen lokale IP-Adresse. Die Daten werden über die `lala.cgi`-Schnittstelle ausgelesen. Möglich ist das beim V2.1 und V3, nicht aber beim Home 4, denn dieser hat keine lokale Schnittstelle. Der Collector liest in kurzem Intervall aus, standardmäßig alle 5 Sekunden.

- **Cloud:** Abholen der Messwerte aus der SENEC-Cloud, über die Schnittstelle, die SENEC für seine Mobil-Apps bereitstellt. Dafür sind die SENEC-Zugangsdaten anzugeben (E-Mail und Passwort). Möglich ist das auch für den Home 4. Neue Werte liefert die Cloud allerdings nur in größeren Abständen: beim Home 4 im 1-Minuten-Takt, beim V2.1 und V3 im 5-Minuten-Takt. Ein kürzeres Abfrageintervall bringt daher nichts, der Collector lässt ohnehin nur mindestens 60 Sekunden zu.

### Vergleich der Betriebsmodi

|                 | Lokal     | Cloud     |
| :-------------- | :-------- | :-------- |
| SENEC.Home V2.1 | Ja (5sec) | Ja (5min) |
| SENEC.Home V3   | Ja (5sec) | Ja (5min) |
| SENEC.Home 4    | Nein      | Ja (1min) |

Beim V2.1 und V3 sind also beide Betriebsmodi möglich. Über die Cloud läuft SOLECTRUS auch komplett auf einem Cloud-Server, ohne Rechner im lokalen Netzwerk. Dafür kommen die Messwerte nur alle 5 Minuten statt alle 5 Sekunden.

## Erfasste Messwerte

Der Collector schreibt die folgenden Messwerte als _Field_ in das angegebene _Measurement_ der InfluxDB. Einige Messwerte sind nur im lokalen Betrieb verfügbar (also nicht beim Home 4).

In der Cloud hängen vier Felder zusätzlich am Abfragemodus: `case_temp`, `application_version`, `current_state` und `current_state_ok` liefert der Collector nur bei `SENEC_REQUEST_MODE=full`. Beim Home 4 bleiben `current_state` und `current_state_ok` auch dann leer.

| Field                   | Beschreibung                                  | Lokal |   Cloud    |
| :---------------------- | :-------------------------------------------- | :---: | :--------: |
| `application_version`   | Version der Firmware                          |  Ja   | Nur `full` |
| `bat_charge_current`    | Batterie-Ladestrom, in A                      |  Ja   |    Nein    |
| `bat_fuel_charge`       | Batterie-Ladestand, in %                      |  Ja   |     Ja     |
| `bat_power_minus`       | Batterie-Entladeleistung, in W                |  Ja   |     Ja     |
| `bat_power_plus`        | Batterie-Ladeleistung, in W                   |  Ja   |     Ja     |
| `bat_voltage`           | Batterie-Spannung, in V                       |  Ja   |    Nein    |
| `case_temp`             | Gehäuse-Temperatur, in °C                     |  Ja   | Nur `full` |
| `current_state_code`    | Aktueller Betriebszustand, als Zahl           |  Ja   |    Nein    |
| `current_state`         | Aktueller Betriebszustand, als Text           |  Ja   | Nur `full` |
| `current_state_ok`      | Aktueller Betriebszustand ist OK (Boolean)    |  Ja   | Nur `full` |
| `ev_connected`          | Elektroauto verbunden, Ja/Nein                |  Ja   |     Ja     |
| `grid_power_minus`      | Netzeinspeisung, in W                         |  Ja   |     Ja     |
| `grid_power_plus`       | Netzbezug, in W                               |  Ja   |     Ja     |
| `house_power`           | Hausverbrauch, in W                           |  Ja   |     Ja     |
| `inverter_power`        | Erzeugte Leistung des Wechselrichters, in W   |  Ja   |     Ja     |
| `mpp1_power`            | Leistung von Strang 1, in W                   |  Ja   |    Nein    |
| `mpp2_power`            | Leistung von Strang 2, in W                   |  Ja   |    Nein    |
| `mpp3_power`            | Leistung von Strang 3, in W                   |  Ja   |    Nein    |
| `power_ratio`           | Leistungsbegrenzung, in %                     |  Ja   |    Nein    |
| `response_duration`     | Dauer der Antwort, in ms                      |  Ja   |    Nein    |
| `wallbox_charge_power`  | Wallbox-Ladeleistung, in W                    |  Ja   |     Ja     |
| `wallbox_charge_power0` | Wallbox-Ladeleistung für erste Wallbox, in W  |  Ja   |    Nein    |
| `wallbox_charge_power1` | Wallbox-Ladeleistung für zweite Wallbox, in W |  Ja   |    Nein    |
| `wallbox_charge_power2` | Wallbox-Ladeleistung für dritte Wallbox, in W |  Ja   |    Nein    |
| `wallbox_charge_power3` | Wallbox-Ladeleistung für vierte Wallbox, in W |  Ja   |    Nein    |

## Logging

Der Collector schreibt ein Protokoll ins Docker-Log, das im Normalfall so aussieht:

```log
SENEC collector for SOLECTRUS, Version v0.21.0, built at 2026-06-01T11:03:23.082Z
https://github.com/solectrus/senec-collector
Copyright (c) 2020-2026 Georg Ledermann, released under the MIT License

Using Ruby 4.0.5 on platform aarch64-linux-musl
Pushing to InfluxDB at http://influxdb:8086, bucket solectrus, measurement SENEC

Wait until InfluxDB is ready ... OK

Pulling from your local SENEC at https://192.168.178.29 every 5 seconds
Getting state names (language: de) from SENEC by parsing source code...
OK, got 99 state names

Got record #1 at 2026-07-14 10:22:29 +0200 within 144 ms, FERNABSCHALTUNG, Inverter 4251 W, House 460 W, Wallbox 0 W
Successfully pushed record #1 to InfluxDB
...
```

Fehler protokolliert der Collector ebenfalls, etwa wenn der Stromspeicher oder die InfluxDB nicht erreichbar ist.

## Quelltext

Der SENEC-Collector ist in Ruby implementiert, der Quelltext ist auf GitHub verfügbar: \
[github.com/solectrus/senec-collector](https://github.com/solectrus/senec-collector)
