Vielen Dank für dein Interesse, zu diesem Projekt beizutragen! Beiträge aller Art sind willkommen — egal ob Bugfixes, neue Features, Dokumentationsverbesserungen oder das Testen mit anderen Gerätevarianten.
- Verhaltenskodex
- Wie kann ich beitragen?
- Bugs melden
- Feature-Anfragen
- Code beitragen
- Entwicklungsumgebung einrichten
- Coding-Standards
- Pull Request Prozess
- Besonders gesucht
Dieses Projekt folgt unserem Verhaltenskodex. Durch deine Teilnahme verpflichtest du dich, diesen einzuhalten.
Bevor du einen Bug meldest:
- Überprüfe die vorhandenen Issues, ob der Bug bereits gemeldet wurde
- Aktiviere Debug-Logging und prüfe die Logs:
# configuration.yaml logger: default: warning logs: custom_components.ecoflow_powerocean: debug
- Notiere die exakte Fehlermeldung und den Kontext
Erstelle dann ein neues Issue mit der Bug-Report-Vorlage.
Feature-Anfragen sind willkommen! Bitte:
- Überprüfe, ob das Feature bereits in einem Issue diskutiert wird
- Erkläre den Use Case und warum das Feature nützlich wäre
- Erstelle ein Issue mit der Feature-Request-Vorlage
Besonders wertvoll ist das Testen mit anderen EcoFlow-Geräten. Wenn du ein anderes Gerät als den PowerOcean Plus 15 kW (R37-Seriennummer) hast:
- Installiere die Integration und teste sie
- Melde Ergebnisse (funktioniert / funktioniert nicht / teilweise) als Issue
- Teile anonymisierte MQTT-Rohdaten wenn möglich
Voraussetzungen:
- Python 3.9+
- Home Assistant (Entwicklungsinstallation oder echter HA-Server)
paho-mqtt >= 1.6.1
Repository klonen:
git clone https://github.com/Feberdin/ecoflow-powerocean-ha.git
cd ecoflow-powerocean-haIntegration in HA einbinden (Entwicklungsmodus):
# Symlink in dein HA custom_components Verzeichnis
ln -s $(pwd)/custom_components/ecoflow_powerocean \
/path/to/homeassistant/custom_components/ecoflow_poweroceanTest-Skripte nutzen:
# MQTT-Verbindung testen (EcoFlow-Zugangsdaten erforderlich)
python test_mqtt.py
# Protobuf-Decoder testen
python decode_mqtt.py- Type Hints: Immer verwenden (
from __future__ import annotations) - Async/Await: Alle HA-Operationen müssen async sein
- Docstrings: Für alle öffentlichen Klassen und Methoden
- Logging: Modulweite Logger verwenden (
_LOGGER = logging.getLogger(__name__)) - Konstanten: Alle Magic Numbers in
const.pyauslagern - Fehlerbehandlung: Spezifische Exceptions verwenden (
ConfigEntryAuthFailed,UpdateFailed)
- DataUpdateCoordinator für Polling-basierte Datenabrufe
- Entity Registry für optionale Sensoren (standardmäßig deaktiviert)
- Device Grouping — alle Entitäten einem Gerät zuordnen
- State Classes korrekt setzen (
MEASUREMENT,TOTAL_INCREASING)
Format: Typ: Kurzbeschreibung
| Typ | Verwendung |
|---|---|
feat |
Neue Funktionalität |
fix |
Bugfix |
docs |
Nur Dokumentationsänderungen |
refactor |
Code-Umstrukturierung ohne Funktionsänderung |
test |
Tests hinzufügen oder korrigieren |
chore |
Build-Prozess, Abhängigkeiten, Konfiguration |
Beispiele:
feat: Unterstützung für MPPT-String 3 und 4 hinzufügen
fix: XOR-Entschlüsselung bei leerem Payload korrigieren
docs: Fehlerbehebungsabschnitt erweitern
custom_components/ecoflow_powerocean/
├── __init__.py # Entry point — nur Setup/Teardown
├── manifest.json # Metadaten — Version bei neuen Releases erhöhen
├── const.py # ALLE Konstanten — keine Magic Numbers in anderen Dateien
├── config_flow.py # UI-Konfiguration
├── coordinator.py # Datenabruf und MQTT-Verwaltung
├── proto_decoder.py # Protobuf-Dekodierung — pure Python
├── sensor.py # Sensor-Entitätsdefinitionen
├── strings.json # Basis-Strings (Deutsch)
└── translations/
├── de.json # Deutsche Übersetzung
└── en.json # Englische Übersetzung
-
Fork das Repository und erstelle einen Branch vom
main:git checkout -b feat/mein-neues-feature
-
Implementiere deine Änderungen und halte dich an die Coding-Standards
-
Teste die Änderungen gründlich:
- Integration lädt fehlerfrei in HA
- Keine Fehler im HA-Log
- Alle betroffenen Sensoren funktionieren korrekt
-
Aktualisiere die Dokumentation wenn nötig:
README.md— neue Sensoren in die Tabellen eintragenstrings.json+translations/de.json+translations/en.json— neue StringsCHANGELOG.md— Änderungen dokumentieren (falls vorhanden)
-
Version erhöhen in
manifest.json(Semantic Versioning):- Patch (0.3.x): Bugfixes
- Minor (0.x.0): Neue Sensoren, neue Features (abwärtskompatibel)
- Major (x.0.0): Breaking Changes
-
Pull Request erstellen mit der PR-Vorlage
-
Review abwarten — mindestens ein Maintainer muss zustimmen
- Code folgt den Coding-Standards
- Keine hardcodierten Zugangsdaten oder persönlichen Daten
- Alle neuen Sensoren haben korrekte
device_classundstate_class - Neue Strings sind in allen Übersetzungsdateien vorhanden
-
manifest.jsonVersion wurde aktualisiert - README wurde aktualisiert (falls neue Sensoren/Features)
- Getestet mit einer echten EcoFlow PowerOcean Plus Anlage (wenn möglich)
Wir brauchen Tester mit:
- EcoFlow PowerOcean Plus in anderen Leistungsklassen (nicht 15 kW)
- PowerOcean Plus mit anderen Seriennummern (nicht R37*)
- PowerOcean Plus mit mehr als 2 Batterie-Packs
Wie helfen: Erstelle ein Issue mit deiner Konfiguration und ob die Integration funktioniert.
Der PowerOcean Plus hat Port 502 (Modbus TCP) offen. Eine lokale Kommunikation ohne EcoFlow Cloud wäre ideal:
- Protokoll-Reverse-Engineering gesucht
- Modbus-Register-Mapping erforderlich
- Würde Cloud-Abhängigkeit eliminieren
- Unit-Tests für
proto_decoder.pymit Beispieldaten ausmqtt_raw_data.json - Mocking von MQTT-Verbindungen für Integrationstests
- PowerOcean (ohne Plus)
- PowerOcean DC Fit
- Andere Heimspeicher-Serien
Für allgemeine Fragen und Diskussionen bitte ein GitHub Issue erstellen mit dem Label question.