142 lines
4.8 KiB
Markdown
142 lines
4.8 KiB
Markdown
# SolarEdge Optimizer Data App
|
|
|
|
Diese Home Assistant App stellt die Optimierer-Daten einer SolarEdge-Anlage als
|
|
lokale, gecachte HTTP-API bereit. Sie läuft unabhängig von einem Browser und
|
|
aktualisiert die Daten standardmäßig alle zehn Minuten.
|
|
|
|
> Die verwendeten Optimierer-Endpunkte sind interne, nicht offiziell
|
|
> dokumentierte SolarEdge-Portal-Endpunkte. SolarEdge kann sie jederzeit ändern.
|
|
> Verwende die App nur für Anlagen, auf die du zugreifen darfst.
|
|
|
|
## Konfiguration
|
|
|
|
```yaml
|
|
username: owner@example.com
|
|
password: dein-portal-passwort
|
|
site_id: "4886699"
|
|
poll_interval_minutes: 10
|
|
```
|
|
|
|
- `username`: Benutzername des SolarEdge Monitoring Portals.
|
|
- `password`: Portal-Passwort; wird weder geloggt noch von der API ausgegeben.
|
|
- `site_id`: numerische SolarEdge Site-ID.
|
|
- `poll_interval_minutes`: Aktualisierungsintervall, mindestens zehn Minuten.
|
|
|
|
Die Zeitzone liest die App automatisch aus Home Assistant über die
|
|
Supervisor-API. Dadurch wird der Tageswechsel passend zur Home-Assistant-Zeit
|
|
berechnet.
|
|
|
|
## HTTP API
|
|
|
|
### `GET /api/optimizers`
|
|
|
|
Liefert den letzten gecachten Datensatz:
|
|
|
|
```json
|
|
{
|
|
"status": "ok",
|
|
"siteId": "4886699",
|
|
"date": "2026-08-10",
|
|
"timeZone": "Europe/Berlin",
|
|
"fetchedAt": "2026-08-10T08:00:00.000Z",
|
|
"nextRefreshAt": "2026-08-10T08:10:00.000Z",
|
|
"optimizerCount": 34,
|
|
"successfulOptimizerCount": 34,
|
|
"failedOptimizerCount": 0,
|
|
"totalDailyEnergyWh": 12345,
|
|
"totalCurrentPowerW": 4567,
|
|
"optimizers": [
|
|
{
|
|
"serial": "OPTIMIZER_SERIAL",
|
|
"inverterId": "1",
|
|
"stringId": "1.1",
|
|
"optimizerId": "1.1.1",
|
|
"dailyEnergyWh": 321.5,
|
|
"currentPowerW": 123.4,
|
|
"lastMeasurement": "2026-08-10T07:59:00Z"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
`status` ist:
|
|
|
|
- `ok`: alle Tagesenergie-Werte wurden gelesen.
|
|
- `partial`: einzelne Optimierer-Abfragen sind fehlgeschlagen.
|
|
- `stale`: der letzte vollständige Abruf ist fehlgeschlagen; die vorherigen
|
|
Daten bleiben verfügbar.
|
|
|
|
Der API-Aufruf selbst löst keinen SolarEdge-Abruf aus. Er liefert immer den
|
|
Cache und kann daher auch häufiger als alle zehn Minuten gelesen werden.
|
|
|
|
### `GET /health`
|
|
|
|
Kompakter Status für Überwachung und Docker Healthchecks. Während des ersten
|
|
Abrufs antworten `/health` und `/api/optimizers` mit HTTP 503. Danach liefern sie
|
|
HTTP 200, solange mindestens ein gecachter Datensatz vorhanden ist.
|
|
|
|
### `GET /`
|
|
|
|
Liefert dieselben Daten wie `/api/optimizers` und ist über Home Assistant Ingress
|
|
im App-Panel erreichbar.
|
|
|
|
## Zugriff aus Home Assistant
|
|
|
|
Die App veröffentlicht standardmäßig keinen ungeschützten Port im lokalen
|
|
Netz. Ab Version 0.2.0 meldet sie ihren internen Host und Port automatisch über
|
|
die Supervisor-Diensterkennung. Dadurch kann die
|
|
[SolarEdge Optimizers Integration](https://git.jensneuber.de/jens/ha-solaredge-optimizers)
|
|
ohne manuelle interne URL eingerichtet werden.
|
|
|
|
Nach Installation und Start der App erscheint unter **Einstellungen → Geräte &
|
|
Dienste** die gefundene Integration **SolarEdge Optimizers**. Installiere die
|
|
Custom Integration vorher über HACS und bestätige anschließend den Fund.
|
|
|
|
Home Assistant und andere Apps können die API außerdem direkt über das interne
|
|
App-Netzwerk erreichen. Bei einer lokalen Installation lautet der Hostname
|
|
typischerweise `local-solaredge-optimizer-data`:
|
|
|
|
```text
|
|
http://local-solaredge-optimizer-data:8099/api/optimizers
|
|
```
|
|
|
|
Bei Installation aus einem App-Repository ersetzt dessen Repository-ID den
|
|
Präfix `local`. Die JSON-Ansicht für Menschen ist unabhängig davon über Ingress
|
|
im Home-Assistant-Seitenpanel verfügbar.
|
|
|
|
## Installation als App-Repository
|
|
|
|
Füge im Home-Assistant-App-Store unter **⋮ → Repositories** diese URL hinzu:
|
|
|
|
```text
|
|
https://git.jensneuber.de/jens/solaredge-optimizers
|
|
```
|
|
|
|
Installiere anschließend **SolarEdge Optimizer Data**, pflege Benutzername,
|
|
Passwort und Site-ID im Tab **Konfiguration** und starte die App. Der Supervisor
|
|
lädt das zur App-Version passende Multi-Arch-Image aus der Registry.
|
|
|
|
## Lokale Installation
|
|
|
|
Der Ordner ist ein eigenständig baubares Home-Assistant-App-Paket. Kopiere ihn
|
|
für eine lokale Installation nach:
|
|
|
|
```text
|
|
/addons/solaredge-optimizer-data
|
|
```
|
|
|
|
Lade anschließend den App Store neu, installiere **SolarEdge Optimizer Data**,
|
|
pflege Benutzername, Passwort und Site-ID im Tab **Konfiguration** und starte
|
|
die App. Der Supervisor lädt dabei das zur App-Version passende Multi-Arch-Image
|
|
`git.jensneuber.de/jens/solaredgeoptimizers:0.2.0`.
|
|
|
|
## Sicherheit und Betrieb
|
|
|
|
- Anmeldedaten werden ausschließlich aus `/data/options.json` gelesen.
|
|
- Tokens, Cookies und Passwörter werden nicht persistiert oder geloggt.
|
|
- SolarEdge-Sitzung und Cookies existieren nur im Arbeitsspeicher.
|
|
- Gleichzeitige Energie-Abfragen sind auf drei begrenzt.
|
|
- Das Mindestintervall von zehn Minuten reduziert die Last auf den internen,
|
|
nicht dokumentierten SolarEdge-Endpunkten.
|
|
- MFA-/OTP-Anmeldungen werden derzeit nicht unterstützt.
|