Skip to content

Commit 957c9f6

Browse files
committed
feat: add optional backup helpers
1 parent d19c718 commit 957c9f6

13 files changed

Lines changed: 1664 additions & 168 deletions

File tree

README.md

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ Inoffizielle Home Assistant Integration für die **EcoFlow PowerOcean Plus** Pho
1919
- **Verbindungsstatus** — MQTT-Verbindung als Sensor für Automationen
2020
- **Options Flow** — Anzahl Batterie-Packs jederzeit änderbar ohne Neueinrichtung
2121
- **Gap-Reconciliation** — bei kurzer Internet-Unterbrechung wird die Energielücke beim Reconnect transparent geschätzt
22+
- **Backup Helpers (optional)** — Laufzeitabschätzung, Stromausfall-Erkennung und Hilfszustände für eigene Automationen
2223

2324
---
2425

@@ -101,6 +102,117 @@ So bleiben Anforderungen und Prioritäten transparent, und wir können Änderung
101102

102103
Die Integration lädt sich danach automatisch neu.
103104

105+
### Backup Helpers aktivieren
106+
107+
Die Backup Helpers sind **optional** und standardmäßig **deaktiviert**.
108+
Du findest sie ebenfalls unter:
109+
110+
*Einstellungen → Geräte & Dienste → EcoFlow PowerOcean → Konfigurieren*
111+
112+
Damit bleibt die Kernintegration für alle bestehenden Nutzer unverändert. Erst wenn du das Feature aktivierst, werden zusätzliche Helper-Entitäten angelegt.
113+
114+
---
115+
116+
## Backup Helpers
117+
118+
Der Backup-Helper-Layer bewertet den aktuellen Backup-Zustand deiner Anlage, ohne direkte Fremdsteuerung in den Core einzubauen.
119+
120+
Wichtig:
121+
- Die Integration **erkennt und bewertet** Backup-/Outage-Zustände.
122+
- Die eigentliche Aktion baust du selbst als Home-Assistant-Automation.
123+
- Es gibt **keine feste Unraid-, Tuya- oder Steckdosen-Logik** im Python-Code.
124+
125+
### Optionen
126+
127+
| Option | Standard | Bedeutung |
128+
|--------|----------|-----------|
129+
| `Backup Helpers aktivieren` | `false` | Schaltet die zusätzlichen Helper-Entitäten frei |
130+
| `Reservierter Backup-SOC (%)` | `10` | Prozentuale Batterie-Reserve, die für Laufzeit-Schätzungen nicht verplant wird |
131+
| `Grenzwert Netzleistung für Ausfallerkennung (W)` | `50` | Netzleistung innerhalb dieses Bereichs zählt als „nahe null“ |
132+
| `Mindest-Netzfrequenz für gültiges Netzsignal (Hz)` | `1.0` | Frequenzen darunter oder fehlende Frequenz nach zuvor gültigem Signal gelten als Hinweis auf Netzausfall |
133+
| `Glättungsfenster für Laufzeit (Minuten)` | `10` | Mittelt den Hausverbrauch, damit Peaks die Laufzeit nicht zu stark verzerren |
134+
| `Kritische Restlaufzeit (Minuten)` | `120` | Unterhalb dieses Werts wird die Backup-Reserve als kritisch markiert |
135+
136+
### Neue Sensoren
137+
138+
| Sensor | Einheit | Bedeutung |
139+
|--------|---------|-----------|
140+
| `Geschätzte Backup-Laufzeit (Minuten)` | min | Restlaufzeit auf Basis geglätteter Last und nutzbarer Energie |
141+
| `Geschätzte Backup-Laufzeit (Stunden)` | h | Dieselbe Information in Stunden |
142+
| `Nutzbare Backup-Energie` | Wh | Energie oberhalb der konfigurierten SOC-Reserve |
143+
| `Empfohlene Backup-Aktion` | Enum | `normal` / `shed_load` / `shutdown_recommended` / `unknown` |
144+
145+
### Neue Binary-Sensoren
146+
147+
| Binary Sensor | Bedeutung |
148+
|---------------|-----------|
149+
| `Stromausfall erkannt` | Netzverlust ist nach kombinierter Heuristik wahrscheinlich |
150+
| `Backup-Reserve kritisch` | Geschätzte Restlaufzeit liegt unter deiner kritischen Schwelle |
151+
| `Backup aktiv` | Das Haus wird im erkannten Backup-/Inselzustand plausibel lokal versorgt |
152+
153+
### Wie die Stromausfall-Erkennung arbeitet
154+
155+
Die Erkennung ist bewusst **konservativ** und vermeidet Fehlalarme im normalen Nullpunktbetrieb.
156+
157+
Ein Stromausfall wird nur dann als wahrscheinlich gewertet, wenn über einen kurzen stabilen Zeitraum gleichzeitig gilt:
158+
- Es gab zuvor gültige Netzfrequenz-Samples, und die Frequenz fehlt jetzt oder liegt unter dem konfigurierten Mindestwert
159+
- Die Netzleistung bleibt nahe `0 W`
160+
- Es liegt echte Hauslast an
161+
- PV und/oder Batterie versorgen das Haus plausibel weiter
162+
163+
Wenn die Anlage **nie ein brauchbares Frequenzsignal liefert**, bleibt `Stromausfall erkannt` absichtlich aus. In diesem Fall sind die Laufzeit- und Reserve-Sensoren trotzdem nutzbar, aber die Outage-Erkennung ist bewusst zurückhaltend.
164+
165+
### Automationsbeispiele
166+
167+
Die folgenden Beispiele sind **nur Dokumentation**. Du passt die Ziel-Entitäten an deine eigene Home-Assistant-Umgebung an.
168+
169+
#### 1. Bei Stromausfall Unraid sauber herunterfahren
170+
171+
```yaml
172+
alias: PowerOcean Backup - Unraid sauber herunterfahren
173+
mode: single
174+
trigger:
175+
- platform: state
176+
entity_id: binary_sensor.mein_powerocean_stromausfall
177+
to: "on"
178+
for: "00:01:00"
179+
condition:
180+
- condition: state
181+
entity_id: binary_sensor.unraid_server_online
182+
state: "on"
183+
action:
184+
- service: button.press
185+
target:
186+
entity_id: button.unraid_graceful_shutdown
187+
```
188+
189+
#### 2. Bei kritischer Restlaufzeit bestimmte Steckdosen ausschalten
190+
191+
```yaml
192+
alias: PowerOcean Backup - Nicht kritische Lasten abschalten
193+
mode: single
194+
trigger:
195+
- platform: state
196+
entity_id: binary_sensor.mein_powerocean_backup_reserve_kritisch
197+
to: "on"
198+
for: "00:02:00"
199+
condition:
200+
- condition: state
201+
entity_id: binary_sensor.mein_powerocean_backup_aktiv
202+
state: "on"
203+
action:
204+
- service: switch.turn_off
205+
target:
206+
entity_id:
207+
- switch.waschmaschine
208+
- switch.trockner
209+
- switch.garagensteckdose
210+
```
211+
212+
Diese Beispiele zeigen den gewünschten Architekturpunkt:
213+
- **Die Integration liefert Hilfs-Entitäten**
214+
- **Home Assistant entscheidet per Automation, was konkret passieren soll**
215+
104216
---
105217
106218
## Sensoren
@@ -265,6 +377,14 @@ Die EcoFlow Developer API gibt für den PowerOcean Plus den Fehler **1006 „not
265377

266378
Beiträge, Bugreports und Feedback sind herzlich willkommen!
267379

380+
### Lokale Validierung
381+
382+
```bash
383+
cd /Users/joachim.stiegler/EcoFlow/ha_integration
384+
python3 -m unittest tests.test_backup_helpers
385+
python3 -m py_compile custom_components/ecoflow_powerocean/*.py
386+
```
387+
268388
**Besonders gesucht:**
269389
- Tester mit anderen PowerOcean Plus Varianten (andere Leistungsklassen, andere Seriennummern)
270390
- Entwickler für lokalen Modbus TCP Zugriff (Port 502 ist offen)
@@ -302,6 +422,7 @@ Issues und Pull Requests bitte über GitHub einreichen.
302422
| `v0.3.4` | Debug-Modus + Diagnostics-Export | Support und Fehleranalyse für Nutzer/Issues vereinfachen |
303423
| `v0.3.5` | Fix für `TypeError` nach Debug-Umschaltung (`num_battery_packs` float/int) | Absturz beim Reconfigure zuverlässig beheben |
304424
| `v0.3.6` | Gap-Reconciliation bei MQTT/Internet-Lücken (geschätzte Nachführung) + Gap-Metadaten | Energie-Summen nach Verbindungsabbrüchen nachvollziehbar weiterführen |
425+
| `v0.4.0` | Optionaler Backup-Helper-Layer mit Laufzeitabschätzung, Stromausfall-Heuristik und Binary-Sensoren | Backup-/Outage-Zustände bewerten, ohne Fremdsteuerung hart in den Core zu bauen |
305426

306427
---
307428

0 commit comments

Comments
 (0)