Externe Integration - Zendure

:battery: Zendure (externe Integration) — Vorstellung + Zusammenfassung bis v1.3.0

Hallo zusammen :waving_hand:

Ich habe festgestellt, dass ich nie ein dediziertes Thema zur externen Integration Zendure eröffnet habe, obwohl sie seit diesem Sommer existiert (erste Version am 19. Juli 2026). Ich hole das nach: Hier ist eine vollständige Vorstellung und die Zusammenfassung der Versionen bis zur v1.3.0, die gerade veröffentlicht wurde. Dieses Thema wird anschließend genutzt, um Neuigkeiten bekannt zu geben und euer Feedback zu sammeln.

:puzzle_piece: Was ist das?

Eine externe Gladys-Integration für die Solarbatterien Zendure SolarFlow / Hyper. Sie läuft in ihrem eigenen Container, wird aus dem Integrationskatalog (Bereich Energie) installiert und überträgt die Telemetrie eurer Batterien in Gladys, vom Zendure-Cloud und, falls gewünscht, direkt vom lokalen MQTT jedes Geräts.

:sparkles: Unterstützte Funktionen

  • Modelle: SolarFlow 800, 800 Pro, 1600 AC+, 2400 AC+, 2400 AC, 2400 Pro und Hyper 2000 (experimentell).
  • 5 Messwerte pro Batterie (nur Lesen), kategorisiert in Gladys-Energiekategorien seit v1.3.0:
    • Batteriestand, Ladeleistung und Entladeleistung → Speicherbatterie;
    • Leistung zum Haus → Hausausgangssensor;
    • Solarleistungseingang → Energieerzeugungssensor.
  • Lokales MQTT (optional): Werte werden alle 1 bis 3 Sekunden aktualisiert statt etwa alle 30 Sekunden über die Cloud, und die Telemetrie bleibt während einer Cloud- oder Internetstörung aktiv.
  • Automatischer Cloud-Fallback pro Gerät: Wenn eine Batterie lokal nicht erreichbar ist, wechselt die Integration automatisch zur Cloud und kehrt zurück, sobald die Verbindung wiederhergestellt ist.
  • Transport-Badges auf jedem Gerät: Lokal, Cloud, Cloud + orange Punkt (abgestuft: Das Gerät sollte lokal sein, läuft aber auf dem Cloud-Fallback, der Grund wird bei der Mausberührung angezeigt) und Unerreichbar.
  • Verbindungsstatus auf dem Konfigurationsbildschirm (fehlender Schlüssel, unerreichbare Cloud oder ungültiger Schlüssel).
  • Veröffentlichung der Werte unterhalb der Anforderungsgrenze des Gladys-Kerns, der sich selbst verlangsamt, wenn der Kern überlastet ist, um mit einer großen Flotte zu arbeiten (ich betreibe etwa 15 SolarFlow).

:rocket: Installation

  1. In der Zendure-Mobilanwendung, Entwickler-/Home-Assistant-Integrationsbereich: Generieren (oder kopieren) Sie Ihren Autorisierungsschlüssel (den „HA-Schlüssel“).
  2. In Gladys: Integrationen → suchen Sie nach Zendure → Installieren.
  3. Registerkarte Konfiguration: Fügen Sie den Schlüssel ein, passen Sie das Aktualisierungsintervall bei Bedarf an (Standard: 30 s), aktivieren Sie ggf. das lokale MQTT (zenSDK), dann Konfiguration speichern.
  4. Erstellen Sie Ihre Batterien im Register Entdeckung.

Die vollständige Schritt-für-Schritt-Anleitung finden Sie in der Integrationsdokumentation (Link „Dokumentation“ auf dem Konfigurationsbildschirm).

:scroll: Versionszusammenfassung

  • v1.0.1 (19. Juli): Erste Version: Erkennung der SolarFlow 800 Pro über die Zendure-Cloud, schreibgeschützte Telemetrie, periodische Abfrage und Echtzeit-MQTT.
  • v1.1.0 (21. Juli): Lokales MQTT mit Cloud-Fallback pro Gerät und automatischer Rückkehr zum lokalen Modus, Transport-Badges, Verbindungsstatus und 6 zusätzliche SolarFlow-/Hyper-Modelle.
  • v1.2.0 (24. Juli):
    • Abgestuftes Badge (orange Punkt), wenn eine Batterie im Cloud-Fallback läuft;
    • Dokumentation FR/EN und „Erste Schritte“-Bereich auf dem Konfigurationsbildschirm;
    • adaptive Veröffentlichungsrate unter der Kerngrenze;
    • Stabilitätsverbesserungen: Echos eigener MQTT-Anfragen verfälschen die Telemetrie nicht mehr, leere oder ungültige Intervalle → 30 s, 15-s-Verzögerung in der Cloud, keine zwischengespeicherten Werte während einer Unterbrechung.
  • v1.3.0 (16. Oktober):
    • Die Messwerte werden in die Gladys-Energiekategorien (Speicherbatterie, Hausausgangssensor, Energieerzeugungssensor) verschoben: Ihre Hausbatterie wird nicht mehr in den Gladys-„Batterie schwach“-Alerts gezählt;
    • Die Packungsleistungen heißen jetzt Ladeleistung und Entladeleistung: Die alten Namen („Batterie-Eingangs-/Ausgangsleistung“) wurden umgekehrt angezeigt;
    • Kategorisierung im Energie-Bereich des Katalogs;
    • Die gesamte Integration auf Französisch, Englisch, Deutsch und Spanisch (Konfiguration, Nachrichten, Dokumentation);
    • Technisches Upgrade (SDK 0.15, Release-Tooling, Versionshinweise auf GitHub).

:warning: Voraussetzungen

  • Gladys ≥ 4.86.0 für v1.3.0.
  • Ein Zendure-Konto mit euren Batterien, die bereits in der Anwendung online sind.
  • Für lokales MQTT: Aktivierung im Zendure-Modus Entwickler.

:counterclockwise_arrows_button: Hattet ihr eure Batterien bereits vor v1.3.0?

Nach dem Update (Button Aktualisieren im Register Überwachung) behalten eure Batterien ihre alten Kategorien, bis ihr die neue Definition anwendet: Im Register Entdeckung klickt ihr auf Aktualisieren bei jeder Batterie (markiert Bereits hinzugefügt). Die Funktionen werden vor Ort aktualisiert: Der Verlauf, die Szenen und die Dashboards bleiben erhalten.

:light_bulb: Wissenswertes

  • Ein Cloud-Verbraucher pro Zendure-Konto: Wenn Home Assistant oder eine zweite Gladys-Instanz die Cloud-Verbindung desselben Kontos nutzt, konkurrieren beide und die Telemetrie wird unzuverlässig. Für einen zweiten Verbraucher nutzt lokales MQTT, das diese Grenze nicht hat. Die Integration meldet dies einmal in ihren Protokollen, wenn sie diese Situation erkennt.
  • Eine Batterie im „Cloud (abgestuft)“, obwohl lokales MQTT aktiviert ist: Ihre Firmware hat möglicherweise aufgehört, lokal zu veröffentlichen. In der Zendure-Anwendung deaktiviert und aktiviert ihr die MQTT-Steuerung dieser Batterie, und sie startet in weniger als einer Minute neu.
  • Integration blockiert im „abgestuft“ ab der Installation, mit WebSocket-Timeouts in den Protokollen: Überprüft, ob die Firewall des Geräts den von den externen Integrationen verwendeten Port für die Verbindung zu Gladys freigibt (siehe dieses Thema).

:motorway: Was kommt als Nächstes

  • Steuerung der Batterien (Lade-/Entladevorgaben, Ausgangsgrenzen): Das ist der nächste große Schritt.
  • Zusätzliche Messwerte (Lade-/Entladeindex, verbleibende Energie, Notausgang) sobald ihre Namen auf echten Rückmeldungen bestätigt sind.

:test_tube: Feedback willkommen

Vielen Dank im Voraus für euer Feedback :folded_hands:

:new_button: Update: v1.3.1 → v1.5.0

Großer Tag für die Zendure-Integration! Hier ist, was seit v1.3.0 passiert ist:

v1.3.1 — Sicherheit

  • Update der MQTT-Bibliothek (6 Fehler behoben, davon 4, die die Integration zum Absturz bringen konnten). Die automatische Wiederverbindung nach einer Ablehnung des Brokers (Session wird von einem anderen Client des Kontos übernommen, Broker startet neu) bleibt erhalten.

v1.4.0 — Feature-Namen

  • Neue Option Feature-Namen (Französisch, Englisch, Deutsch, Spanisch): Die Batterien, die Sie anschließend erstellen, haben ihre Features in Ihrer Sprache. Eine bereits erstellte Batterie behält ihre Namen.
  • Ein nicht unterstütztes Zendure-Modell erscheint im Tab Logs mit seinem genauen Namen (Unsupported Zendure model skipped: productModel "..."). Kopieren Sie ihn in ein Issue und ich füge ihn hinzu.

v1.5.0 — Energie, Steuerung und Widgets (:warning: Gladys ≥ 5.1.0)

:high_voltage: Energie

  • 4 neue Zähler in kWh: geladene Energie, entladene Energie, Solarenergie und Energie, die ins Haus geschickt wird. Zendure meldet nur Leistungen, daher summiert die Integration diese selbst. Die Zähler überleben Neustarts, und eine Stille von mehr als 5 Minuten wird nicht gezählt.
  • Die Solarenergie speist direkt die Produktionsdiagramme von Gladys.
  • Verbleibende Energie in kWh: Der Ladezustand multipliziert mit der Kapazität der deklarierten Packs (AB1000, AB2000, AB3000, integrierte Packs).

:control_knobs: Steuerung aus Szenen (Kategorie Integrationen)

  • Grenzleistung einstellen, Ladegrenzleistung einstellen (AC-Ladung aus dem Netz), AC-Modus einstellen (Laden / Entladen), Ladezustände einstellen (Ziel 70-100 %, Mindestwert 0-50 %).
  • Schutzmechanismen schützen die Batterie:
    • Die Grenzwerte sind auf die Nennleistung des Modells begrenzt;
    • Die Leistungsgrenzen werden im „Smart-Modus“ gesendet, im Speicher gehalten und nicht in den Flash geschrieben;
    • Eine gleiche Einstellung ändert sich nicht öfter als einmal alle 3 s (Leistung) oder 30 s (Modus, Zustände);
    • Ein bereits angewendeter Wert wird nicht erneut gesendet.
  • Neuer Trigger Erreichbarkeit einer Batterie: Eine Batterie meldet nichts mehr oder meldet sich erneut (MQTT-Lokalmodus).

:bar_chart: Zwei Dashboard-Widgets

  • Zendure-Batterie: Ladezustand und Leistungen in Echtzeit, Quelle (lokal / Cloud / Backup / nicht erreichbar), gespeicherte Energie, Grenzwerte, Modus und aktuelle Ladezustände. Zwei Schaltflächen öffnen ein vorgefülltes Formular, um diese zu ändern.
  • Batteriegruppe: Mehrere Batterien, die unter einem von Ihnen gewählten Namen zusammengefasst sind. Sie zeigen den durchschnittlichen Ladezustand (gewichtet nach Kapazität), die Gesamtleistungen, die gespeicherte Energie und eine Zeile pro Batterie. Dreiphasig: Platzieren Sie eine Gruppe pro Phase („Phase L1“, „L2“, „L3“) und eine letzte ohne Auswahl für die gesamte Anlage.

:counterclockwise_arrows_button: So nutzen Sie es

  1. Überwachung → Aktualisieren.
  2. Tab Entdeckung: Klicken Sie auf Aktualisieren bei jeder Batterie (mit „Bereits hinzugefügt“ markiert), um die Energie-Features hinzuzufügen. Der Verlauf, die Szenen und die Dashboards bleiben erhalten.
  3. Fügen Sie die Widgets aus der Dashboard-Bearbeitung hinzu.

:motorway: Was kommt als Nächstes

Gladys hat noch keinen „Sollwert“-Typ für eine Batterie, daher die Steuerung über Szenen und Widgets vorerst. Ein PR für den Kern ist in Arbeit, um ihn hinzuzufügen: Lade- und Entladeleistungsgrenzen, Ziel-Ladezustand, Entladereserve und Modus (feat(battery-storage): add power limit, state-of-charge limit and mode commands by Terdious · Pull Request #3210 · GladysAssistant/Gladys · GitHub). Sobald integriert, können diese Einstellungen direkt von der Karte jeder Batterie aus geändert werden.

:test_tube: Feedback willkommen

  • Die Steuerung Ihrer Modelle: Grenzwerte, AC-Modus, Ladezustände. Besonders die SOC-Skala je nach Firmware: Melden Sie mir jedes seltsame Verhalten.
  • Die Energiezähler: Sind sie mit der Zendure-App über einen Tag hinweg konsistent?
  • Die Gruppen-Widgets für diejenigen, die mehrere Batterien haben.

Vollständiger Changelog: gladys-zendure/CHANGELOG.md at master · Terdious/gladys-zendure · GitHub

Kurze Info zur angekündigten Weiterentwicklung: Alles ist auf der Core-, SDK- und Integrationsseite bereit, es fehlen nur noch die Merges. @pierre-gilles, wenn du einen Moment Zeit hast, sie durchzusehen :smiley:

Der PR hat sich mit den Überprüfungen weiterentwickelt. Er fügt nun Standardvorgaben für Speicherbatterien hinzu, die für alle Marken gelten (Steckdosenbatterien, Hybrid-Wechselrichter…):

  • Leistungsgrenzen für Laden und Entladen;
  • Ladegrenze aus dem Netz: Sie begrenzt die AC-Ladung, ohne die Solarenergie zu drosseln;
  • Ziel-Ladepegel und Entladungsreserve;
  • Modus: Auto, Laden, Entladen, Standby, Niedertarifzeiten, Notfall.

Zusätzlich eine neue Kategorie „Hausabgang“ mit ihrer Leistungsgrenze für den Abgang: Die maximale Leistung, die das Gerät ins Haus sendet, Solar- und Batterieenergie eingeschlossen. Dies ist die Einstellung, die man am häufigsten an einer SolarFlow anpasst, und sie dient auch den Mikro-Wechselrichtern (Hoymiles, APsystems, Enphase…). Die Messungen bleiben in „Hausabgangssensor“, wie die Vorgabe eines Thermostats von der Temperaturmessung getrennt ist.

Auf der Integrationsseite ist der Branch bereit und getestet: Abgangsgrenze, AC-Ladegrenze, Ladepegel und AC-Modus (Laden / Entladen) werden direkt von der Karte jeder Batterie aus einstellbar. Sie gehen durch dieselben Schutzmechanismen wie die Szenen: Deckelung auf die Leistung des Modells, intelligenter Modus, begrenzte Rate, bereits angewendeter Wert wird nicht zurückgesendet. Die Karte zeigt dann den tatsächlich von der Batterie angewendeten Wert an. Sie bleibt in Wartestellung, bis Gladys diese neuen Typen kennt. Ich werde sie an meinen eigenen Batterien vor der Veröffentlichung testen.

Vielen Dank im Voraus! Sobald diese PRs veröffentlicht sind, mache ich das Update auf der Integrationsseite.