Eine Community-Integration für Home Assistant für Dyness Batteriespeicher über die Dyness Cloud API.
Hinweis / Note: Diese Integration nutzt die Dyness Open API (Cloud). Eine Internetverbindung ist erforderlich. Daten werden alle 5 Minuten aktualisiert (API-Limit). This integration uses the Dyness Open API (Cloud). An internet connection is required. Data is updated every 5 minutes (API limit).
| Gerät | Status |
|---|---|
| Dyness Junior Box | ✅ Getestet |
| Dyness Tower (non-pro) | ✅ Sollte funktionieren (Community-getestet) |
| Dyness DL5.0C | ✅ Sollte funktionieren (Community-getestet) |
| Dyness PowerHaus | ✅ Sollte funktionieren (Community-getestet) |
| Andere Dyness-Modelle mit WiFi-Dongle |
Die Integration erkennt das Gerät automatisch über die API und registriert nur die Sensoren, die für das jeweilige Gerät verfügbar sind.
Die folgenden Sensoren sind für alle Geräte verfügbar:
| Sensor | Beschreibung | Einheit |
|---|---|---|
| Ladestand (SOC) | Aktueller Ladestand | % |
| Leistung | Lade-/Entladeleistung (+ = laden, − = entladen) | W |
| Strom | Lade-/Entladestrom | A |
| Batteriestatus | Charging / Discharging / Standby | – |
Zusätzliche Sensoren werden automatisch aktiviert, sofern das Gerät die Daten liefert:
| Sensor | Beschreibung | Einheit | Junior Box | Tower | DL5.0C | PowerHaus |
|---|---|---|---|---|---|---|
| Pack-Spannung | Gesamtspannung des Akkupacks | V | ✅ | – | ✅ | ✅ |
| Batteriezustand (SOH) | State of Health | % | ✅ | ✅ | ✅ | ✅ |
| Temperatur Max | Höchste Zellentemperatur | °C | ✅ | ✅ | ✅ | ✅ |
| Temperatur Min | Niedrigste Zellentemperatur | °C | ✅ | ✅ | ✅ | ✅ |
| Zellspannung Max | Höchste Einzelzellspannung | V | ✅ | ✅ | ✅ | ✅ |
| Zellspannung Min | Niedrigste Einzelzellspannung | V | ✅ | ✅ | ✅ | ✅ |
| Zellspannungsdifferenz | Max − Min Zellspannung (Gesundheitsindikator) | mV | ✅ | ✅ | ✅ | ✅ |
| Heute geladen | Geladene Energie heute | kWh | ✅ | – | ✅ | ✅ |
| Heute entladen | Entladene Energie heute | kWh | ✅ | – | ✅ | ✅ |
| Gesamt geladen | Kumuliert geladene Energie | kWh | ✅ | ✅ | ✅ | ✅ |
| Gesamt entladen | Kumuliert entladene Energie | kWh | ✅ | – | ✅ | ✅ |
| Ladezyklen | Anzahl Batteriezyklen | – | – | ✅ | – | ✅ |
| Nutzbare Kapazität | Kapazität × SOH | kWh | ✅ | ✅ | ✅ | ✅ |
| Verbleibende Energie | Nutzbare Kapazität × SOC | kWh | ✅ | ✅ | ✅ | ✅ |
| MOSFET-Temperatur | MOSFET Temperatur | °C | ✅ | – | ✅ | ✅ |
| BMS-Temperatur Max | BMS Temperatur Max | °C | ✅ | – | ✅ | ✅ |
| BMS-Temperatur Min | BMS Temperatur Min | °C | ✅ | – | ✅ | ✅ |
| Alarmstatus | Gesamtalarm (0 = OK) | – | ✅ | – | ✅ | ✅ |
Folgende Sensoren sind unter Diagnose auf der Geräteseite verfügbar:
| Sensor | Beschreibung |
|---|---|
| Letzte Aktualisierung | Zeitstempel der letzten Datenübertragung |
| Batteriekapazität | Installierte Kapazität laut API |
| Verbindungsstatus | Online / Offline |
| Betriebsstatus | z.B. RunMode, StandBy, Charging |
| Firmware-Version | Aktuelle Firmware |
- Dyness Batterie ist bereits in der Dyness App eingerichtet und online
- Öffne Dyness Benutzer Smart Monitoring https://ems.dyness.com/login in deinem Browser
- Melde dich mit deinem Dyness-Konto an (dasselbe wie in der App)
- Wähle im Menü links Entwicklerzentrum und dann API-Verwaltung
- Klicke auf API Key erstellen
- Notiere App ID und App Secret – das Secret wird nur einmal angezeigt!
- Öffne HACS in Home Assistant
- Klicke auf Integrationen → ⋮ → Benutzerdefinierte Repositories
- Repository-URL:
https://github.com/shopf/dyness_battery— Kategorie: Integration - Suche nach Dyness Battery und installiere
- Home Assistant neu starten
- Lade die ZIP von Releases herunter
- Entpacke und kopiere
custom_components/dyness_battery/nachconfig/custom_components/ - Home Assistant neu starten
- Einstellungen → Geräte & Dienste → Integration hinzufügen
- Nach Dyness Battery suchen
- Nur API ID und API Secret eintragen — das Gerät wird automatisch erkannt
| Feld | Beschreibung | Beispiel |
|---|---|---|
| API ID | Dyness API ID | abc123xyz |
| API Secret | Dyness API Secret | secretkey456 |
Mehrere Batterien: Bei mehreren Batterien auf einem Account wird automatisch die erste erkannte BMS verwendet. Für weitere Batterien einfach die Integration erneut hinzufügen — dieselben API-Zugangsdaten, das Gerät wird separat erkannt.
Die Dyness Cloud API erlaubt ca. 60 Anfragen pro Stunde. Die Integration passt das Update-Intervall automatisch an die Anzahl der erkannten Batteriemodule an:
| Module | Intervall |
|---|---|
| 1–2 | 5 Minuten |
| 3–4 | 10 Minuten |
| 5+ | 15 Minuten |
- Nur Monitoring – Steuerung (Ladezeiten, SOC-Grenzen) wird von der API nicht unterstützt
- 5-Minuten-Intervall – Die API liefert Daten in 5-Minuten-Schritten
- Internetabhängig – Keine lokale Verbindung (WiFi-Dongle ist intern verbaut)
Du hast ein anderes Dyness-Modell mit WiFi-Dongle und möchtest es testen? Erstelle ein Issue mit folgenden Informationen:
- Modellbezeichnung (z.B.
Tower T14) - Ausgabe des API-Testscripts (siehe
tools/dyness_test.py)
| 💬 Fragen & Ideen | GitHub Discussions |
| 🐛 Fehler melden | GitHub Issues |
| 🔌 Neues Gerät | Issue erstellen mit Ausgabe von dyness_test.py |
| Device | Status |
|---|---|
| Dyness Junior Box | ✅ Tested |
| Dyness Tower (non-pro) | ✅ Should work (community-tested) |
| Dyness DL5.0C | ✅ Should work (community-tested) |
| Dyness PowerHaus | ✅ Should work (community-tested) |
| Other Dyness models with WiFi dongle |
The integration automatically detects the device via the API and only registers sensors available for that specific device.
The following sensors are available for all devices:
| Sensor | Description | Unit |
|---|---|---|
| State of Charge (SOC) | Current battery level | % |
| Power | Charge/discharge power (+ = charging, − = discharging) | W |
| Current | Charge/discharge current | A |
| Battery Status | Charging / Discharging / Standby | – |
Additional sensors are automatically enabled if the device provides the data:
| Sensor | Description | Unit | Junior Box | Tower | DL5.0C | PowerHaus |
|---|---|---|---|---|---|---|
| Pack Voltage | Total battery pack voltage | V | ✅ | – | ✅ | ✅ |
| State of Health (SOH) | Battery health | % | ✅ | ✅ | ✅ | ✅ |
| Temperature Max | Highest cell temperature | °C | ✅ | ✅ | ✅ | ✅ |
| Temperature Min | Lowest cell temperature | °C | ✅ | ✅ | ✅ | ✅ |
| Cell Voltage Max | Highest individual cell voltage | V | ✅ | ✅ | ✅ | ✅ |
| Cell Voltage Min | Lowest individual cell voltage | V | ✅ | ✅ | ✅ | ✅ |
| Cell Voltage Spread | Max − Min cell voltage (health indicator) | mV | ✅ | ✅ | ✅ | ✅ |
| Energy Charged Today | Energy charged today | kWh | ✅ | – | ✅ | ✅ |
| Energy Discharged Today | Energy discharged today | kWh | ✅ | – | ✅ | ✅ |
| Energy Charged Total | Cumulative energy charged | kWh | ✅ | ✅ | ✅ | ✅ |
| Energy Discharged Total | Cumulative energy discharged | kWh | ✅ | – | ✅ | ✅ |
| Cycle Count | Number of charge cycles | – | – | ✅ | – | ✅ |
| Usable Capacity | Capacity × SOH | kWh | ✅ | ✅ | ✅ | ✅ |
| Energy Remaining | Usable capacity × SOC | kWh | ✅ | ✅ | ✅ | ✅ |
| MOSFET Temperature | MOSFET temperature | °C | ✅ | – | ✅ | ✅ |
| BMS Temperature Max | BMS temperature max | °C | ✅ | – | ✅ | ✅ |
| BMS Temperature Min | BMS temperature min | °C | ✅ | – | ✅ | ✅ |
| Alarm Status | Overall alarm (0 = OK) | – | ✅ | – | ✅ | ✅ |
The following sensors are available under Diagnostics on the device page:
| Sensor | Description |
|---|---|
| Last Update | Timestamp of last data transmission |
| Battery Capacity | Installed capacity per API |
| Communication Status | Online / Offline |
| Work Status | e.g. RunMode, StandBy, Charging |
| Firmware Version | Current firmware version |
- Open Dyness User Smart Monitoring https://ems.dyness.com/login in your browser
- Log in with your Dyness account (same as the app)
- Select Developer Center and then API Management from the left menu
- Click Create API Key
- Note down App ID and App Secret – the secret is only shown once!
- Open HACS in Home Assistant
- Click Integrations → ⋮ → Custom repositories
- Add URL:
https://github.com/shopf/dyness_battery— Category: Integration - Search for Dyness Battery and install
- Restart Home Assistant
- Download the ZIP from Releases
- Extract and copy
custom_components/dyness_battery/toconfig/custom_components/ - Restart Home Assistant
- Settings → Devices & Services → Add Integration
- Search for Dyness Battery
- Enter only your API ID and API Secret — the device is discovered automatically
| Field | Description | Example |
|---|---|---|
| API ID | Your Dyness API ID | abc123xyz |
| API Secret | Your Dyness API Secret | secretkey456 |
Multiple batteries: If you have multiple batteries on one account, the first detected BMS is used automatically. To add further batteries, simply add the integration again with the same credentials.
The Dyness Cloud API allows approximately 60 requests per hour. The integration automatically adjusts the update interval based on the number of detected battery modules:
| Modules | Interval |
|---|---|
| 1–2 | 5 minutes |
| 3–4 | 10 minutes |
| 5+ | 15 minutes |
- Monitoring only – Control (charge schedules, SOC limits) is not supported via the API
- 5-minute interval – API provides data in 5-minute increments
- Cloud dependent – No local connection (WiFi dongle is built-in)
Do you have a different Dyness model with a WiFi dongle and want to test it? Open an Issue with the following information:
- Model name (e.g.
Tower T14) - Output of the API test script (see
tools/dyness_test.py)
Uses the Dyness Open API v1.1 with HmacSHA1 authentication.
Endpoints used:
POST /v1/device/storage/list– Auto-discover device SNPOST /v1/device/bindSn– Bind device to API keyPOST /v1/device/getLastPowerDataBySn– Current power data (every 5 min)POST /v1/device/realTime/data– Real-time BMS data: pack voltage, SOH, temperatures, cell voltages, energy totals, voltage spread (every 5 min)POST /v1/station/info– Station info (battery capacity)POST /v1/device/household/storage/detail– Device details (firmware, status)POST /v1/device/storage/list– Work status (every 5 min)
Pull requests and issues are welcome! Especially needed:
- Testing with other Dyness models
- Improvements to sensor data
| 💬 Questions & Ideas | GitHub Discussions |
| 🐛 Bug Reports | GitHub Issues |
| 🔌 New Device | Open an Issue with your dyness_test.py output |
MIT License – see LICENSE