NEWS
Test Adapter Zendure Solarflow
-
Speicher da....Auth.Key nochmal frisch eingetragen....läuft.
Alles weiter muss ich erstmal sehen was der Kerl an Daten bringt.Danke schonmal🤘
-
Ich hätte nicht gedacht, dass es so schwer ist nen 800 Plus zu integrieren. Habe ich mich wohl geirrt.
Nehme ich die Auswahl Lokal MQTT Server gebe ich den 800 Plus nebst Key aus der App ein.
Kommt leider das:zendure-solarflow.0 2026-03-29 18:03:31.577 error [getZenSdkProperties] IP address is not defined for device XXX zendure-solarflow.0 2026-03-29 18:03:31.573 error [onReady] Could not connect to MQTT local server! zendure-solarflow.0 2026-03-29 18:03:31.572 error [LocalMqttService] local MQTT url missing!Es gibt bei der Auswahl kein MQTT URL Feld.

Nehme ich die andere Anmeldemöglichkeit
zendure-solarflow.0 2026-03-29 18:09:10.558 error Converting circular structure to JSON --> starting at object with constructor 'Agent' | property 'sockets' -> object with constructor 'Object' | property 'app.zendure:443:::::::::::::::::::::' -> object with constructor 'Array' | ... | property '_httpMessage' -> object with constructor 'ClientRequest' --- property 'agent' closes the circle zendure-solarflow.0 2026-03-29 18:09:10.557 error TypeError: Converting circular structure to JSON --> starting at object with constructor 'Agent' | property 'sockets' -> object with constructor 'Object' | property 'app.zendure:443:::::::::::::::::::::' -> object with constructor 'Array' | ... | property '_httpMessage' -> object with constructor 'ClientRequest' --- property 'agent' closes the circle at JSON.stringify (<anonymous>) at /opt/iobroker/node_modules/iobroker.zendure-solarflow/build/services/zenWebService.js:87:42 at process.processTicksAndRejections (node:internal/process/task_queues:105:5) at async ZendureSolarflow.onReady (/opt/iobroker/node_modules/iobroker.zendure-solarflow/build/main.js:117:22) zendure-solarflow.0 2026-03-29 18:09:10.556 error unhandled promise rejection: Converting circular structure to JSON --> starting at object with constructor 'Agent' | property 'sockets' -> object with constructor 'Object' | property 'app.zendure:443:::::::::::::::::::::' -> object with constructor 'Array' | ... | property '_httpMessage' -> object with constructor 'ClientRequest' --- property 'agent' closes the circle zendure-solarflow.0 2026-03-29 18:09:10.554 error Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
-
Ich hätte nicht gedacht, dass es so schwer ist nen 800 Plus zu integrieren. Habe ich mich wohl geirrt.
Nehme ich die Auswahl Lokal MQTT Server gebe ich den 800 Plus nebst Key aus der App ein.
Kommt leider das:zendure-solarflow.0 2026-03-29 18:03:31.577 error [getZenSdkProperties] IP address is not defined for device XXX zendure-solarflow.0 2026-03-29 18:03:31.573 error [onReady] Could not connect to MQTT local server! zendure-solarflow.0 2026-03-29 18:03:31.572 error [LocalMqttService] local MQTT url missing!Es gibt bei der Auswahl kein MQTT URL Feld.

Nehme ich die andere Anmeldemöglichkeit
zendure-solarflow.0 2026-03-29 18:09:10.558 error Converting circular structure to JSON --> starting at object with constructor 'Agent' | property 'sockets' -> object with constructor 'Object' | property 'app.zendure:443:::::::::::::::::::::' -> object with constructor 'Array' | ... | property '_httpMessage' -> object with constructor 'ClientRequest' --- property 'agent' closes the circle zendure-solarflow.0 2026-03-29 18:09:10.557 error TypeError: Converting circular structure to JSON --> starting at object with constructor 'Agent' | property 'sockets' -> object with constructor 'Object' | property 'app.zendure:443:::::::::::::::::::::' -> object with constructor 'Array' | ... | property '_httpMessage' -> object with constructor 'ClientRequest' --- property 'agent' closes the circle at JSON.stringify (<anonymous>) at /opt/iobroker/node_modules/iobroker.zendure-solarflow/build/services/zenWebService.js:87:42 at process.processTicksAndRejections (node:internal/process/task_queues:105:5) at async ZendureSolarflow.onReady (/opt/iobroker/node_modules/iobroker.zendure-solarflow/build/main.js:117:22) zendure-solarflow.0 2026-03-29 18:09:10.556 error unhandled promise rejection: Converting circular structure to JSON --> starting at object with constructor 'Agent' | property 'sockets' -> object with constructor 'Object' | property 'app.zendure:443:::::::::::::::::::::' -> object with constructor 'Array' | ... | property '_httpMessage' -> object with constructor 'ClientRequest' --- property 'agent' closes the circle zendure-solarflow.0 2026-03-29 18:09:10.554 error Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
@haselchen warum unbedingt mit einem lokalen MQTT Server? Gehe davon aus das der SF800 ZenSDK hat? Dann einfach diesen Weg. Also per Cloud connecten und den Haken setzen bei ZenSDK im Adapter. Dann bekommt er aus der Cloud die lokale IP und verbindet sich lokal per API. Läuft bei meinem SF1600 tadellos mit der neusten Version des Adapters.
-
@haselchen warum unbedingt mit einem lokalen MQTT Server? Gehe davon aus das der SF800 ZenSDK hat? Dann einfach diesen Weg. Also per Cloud connecten und den Haken setzen bei ZenSDK im Adapter. Dann bekommt er aus der Cloud die lokale IP und verbindet sich lokal per API. Läuft bei meinem SF1600 tadellos mit der neusten Version des Adapters.
Komme von der Hoymiles Insel :)
Das war etwas einfacher alles.
Ich habs mal gemacht, wie Du gesagt hast.
Jetzt ist der verbunden.
Wie gesagt, erstmall alles Neuland.
Aktuell gibt es ja auch die Möglichkeit in der App einen MQTT Server einzugeben.
Was sind die Vor -und Nachteile dabei zu dem Adapter?Edit : noch eine Frage hinterher. Bei Hoymiles wars ja easy mit AhoyDTU etc. die Panels und alles weitere auszulesen. Hier lese ich immer was von Skripten und Blocklys. Listet der Zendure WR keine expliziten Werte für die Panels und die erbrachten kWh?
-
Komme von der Hoymiles Insel :)
Das war etwas einfacher alles.
Ich habs mal gemacht, wie Du gesagt hast.
Jetzt ist der verbunden.
Wie gesagt, erstmall alles Neuland.
Aktuell gibt es ja auch die Möglichkeit in der App einen MQTT Server einzugeben.
Was sind die Vor -und Nachteile dabei zu dem Adapter?Edit : noch eine Frage hinterher. Bei Hoymiles wars ja easy mit AhoyDTU etc. die Panels und alles weitere auszulesen. Hier lese ich immer was von Skripten und Blocklys. Listet der Zendure WR keine expliziten Werte für die Panels und die erbrachten kWh?
@haselchen der lokale MQTT Server bringt meiner Meinung nach keinen Vorteil mehr, wenn man ZenSDK nutzt. ZenSDK redet direkt mit dem Gerät via lokaler API, MQTT ist wieder nur ein Broker der zwischen Gerät und Adapter geschaltet wird. Also eine Fehlerquelle mehr. Ich habe das zwar definiert aber im Gerät deaktiviert.
Im Objektbaum des Adapters, gibt es einen Datenpunkt der dir zeigt, auf welchem Wege dein SF800 eingebunden ist. Sollte er ZenSDK unterstützen, müsste das nun da stehen. Falls ja, bist du lokal unterwegs.
-
Da hier ja vermutlich die meisten ioBroker/Zendure User beisammen sind, wollte ich was mit euch teilen. Habe seit knapp einer Woche einen SF1600AC+ und habe mir daher was ausgedacht, diesen über Peters Adapter zu regeln. Dazu habe ich einen eigenen kleinen Adapter gebaut, der eine Nulleinspeisung inkl. Überschussladen aus bestehender PV realisiert. Dabei wird der Datenpunkt: zendure-solarflow.0.XXX.XXX.control.setDeviceAutomationInOutLimit angesprochen.
Da mein SF1600 beim umschalten von laden zu einspeisen klackt, habe ich mir hier auch Gedanken gemacht, wie man das Relais sinnvoll schützen kann. Dazu ist ein Tick Timer eingebaut, der über das UI eingestellt werden kann. Standard ist 3 Clicks zum einspeisen und 5 Clicks zum laden. Also bei 5 sek. Tick wären das 15 oder 25 Sekunden, in denen dann ein Schwellwert (ebenfalls einstellbar) anliegen muss, bevor er schaltet. Zusätzlich, wird noch packPower gecheckt und nur dann geschaltet, wenn dieser kleiner 10W ist. Damit sollte sichergestellt sein, dass das Relais nur ohne Last umschaltet. Vermute Zendure hat daran gedacht, wollte aber auf Nummer sicher gehen :D
Den Entladeschluss kann man auf zwei Arten definieren. Entweder klassisch via SOC oder per minVol. Dazu scannt der Adapter alle Packs in Peters Integration nach minVol und wertet hier den kleinsten aus. Dieser wird dann auch berücksichtigt fürs Notladen, sollte mal ein Pack bei schlechtem Wetter abschmieren.
Wenn Notladen aktiv, wird bis zu einem Exit SOC geladen (Standard 20%). Danach bleibt die Reglung in einem Recovery Modus und dessen Exit SOC ist bei 30%. Damit wollte ich unnötige Loops vermeiden. All diese Schwellwerte sind bequem zu steuern per UI und im Objektbaum unter Control, kann man mit einem Schalter die Reglung einfach ausschalten, falls man händisch was machen will per App oder was weiß ich.
Das läuft nun seit einer Woche erstaunlich gut und stabil muss ich sagen. Werde den Adapter nicht offiziell ins Repo bringen, also müsst Ihr den wenn per Custom-Link manuell direkt via Github installieren bei Interesse. Denke für die neuen Geräte ist das eine tolle Sache und die regeln wirklich traumhaft schnell und weich die Last weg.
@nograx falls Du Interesse an dem Werk hast und wenn es nur Teile sind, lass es mich wissen. Glaube sowas wäre eine tolle Ergänzung zu Deinem genialen Adapter, den ich seit Anfang an nutze!
Hier der Link: https://github.com/Felliglanz/ioBroker.zendure-automation
Viel Spaß beim probieren und gebt gerne eine Rückmeldung.
LG
Sven -
Da hier ja vermutlich die meisten ioBroker/Zendure User beisammen sind, wollte ich was mit euch teilen. Habe seit knapp einer Woche einen SF1600AC+ und habe mir daher was ausgedacht, diesen über Peters Adapter zu regeln. Dazu habe ich einen eigenen kleinen Adapter gebaut, der eine Nulleinspeisung inkl. Überschussladen aus bestehender PV realisiert. Dabei wird der Datenpunkt: zendure-solarflow.0.XXX.XXX.control.setDeviceAutomationInOutLimit angesprochen.
Da mein SF1600 beim umschalten von laden zu einspeisen klackt, habe ich mir hier auch Gedanken gemacht, wie man das Relais sinnvoll schützen kann. Dazu ist ein Tick Timer eingebaut, der über das UI eingestellt werden kann. Standard ist 3 Clicks zum einspeisen und 5 Clicks zum laden. Also bei 5 sek. Tick wären das 15 oder 25 Sekunden, in denen dann ein Schwellwert (ebenfalls einstellbar) anliegen muss, bevor er schaltet. Zusätzlich, wird noch packPower gecheckt und nur dann geschaltet, wenn dieser kleiner 10W ist. Damit sollte sichergestellt sein, dass das Relais nur ohne Last umschaltet. Vermute Zendure hat daran gedacht, wollte aber auf Nummer sicher gehen :D
Den Entladeschluss kann man auf zwei Arten definieren. Entweder klassisch via SOC oder per minVol. Dazu scannt der Adapter alle Packs in Peters Integration nach minVol und wertet hier den kleinsten aus. Dieser wird dann auch berücksichtigt fürs Notladen, sollte mal ein Pack bei schlechtem Wetter abschmieren.
Wenn Notladen aktiv, wird bis zu einem Exit SOC geladen (Standard 20%). Danach bleibt die Reglung in einem Recovery Modus und dessen Exit SOC ist bei 30%. Damit wollte ich unnötige Loops vermeiden. All diese Schwellwerte sind bequem zu steuern per UI und im Objektbaum unter Control, kann man mit einem Schalter die Reglung einfach ausschalten, falls man händisch was machen will per App oder was weiß ich.
Das läuft nun seit einer Woche erstaunlich gut und stabil muss ich sagen. Werde den Adapter nicht offiziell ins Repo bringen, also müsst Ihr den wenn per Custom-Link manuell direkt via Github installieren bei Interesse. Denke für die neuen Geräte ist das eine tolle Sache und die regeln wirklich traumhaft schnell und weich die Last weg.
@nograx falls Du Interesse an dem Werk hast und wenn es nur Teile sind, lass es mich wissen. Glaube sowas wäre eine tolle Ergänzung zu Deinem genialen Adapter, den ich seit Anfang an nutze!
Hier der Link: https://github.com/Felliglanz/ioBroker.zendure-automation
Viel Spaß beim probieren und gebt gerne eine Rückmeldung.
LG
SvenIch bin jetzt laut DP im zenSDK Modus.
Es sind viele DP mit einer roten null versehen.

Hier 2 Beispiele.
Regeneriert sich das noch?Wo würde der Konflikt liegen , wenn ich den Adapter nutze und zeitgleich MQTT in der App aktiviere?
-
Ich bin jetzt laut DP im zenSDK Modus.
Es sind viele DP mit einer roten null versehen.

Hier 2 Beispiele.
Regeneriert sich das noch?Wo würde der Konflikt liegen , wenn ich den Adapter nutze und zeitgleich MQTT in der App aktiviere?
@haselchen Die "nullen " habe ich ebenfalls. Vermute die DP werden vom Gerät generell nicht genutzt oder nur aktualisiert, wenn man sie verwendet. Mit welchem Server der verbunden ist, interessiert mich im Grunde im lokalen Betrieb ja auch nicht, die anderen Nullen sind auch uninteressant. Teste die lokale API mal via http://ipdeinesSF800/properties/report
Dann siehst du was er alles liefert in der Ausgabe. Das einfach in einem Browser Fenster im LAN ausführen.
Einen Nachteil von aktiviertem MQTT gibt es denke ich keinen aber auch keinen Mehrwert in meinen Augen. Am Ende hat er halt mehr zu tun, er liefert dann Daten an die Cloud, deinen Broker und bedient die lokale API. Was ich nicht brauche, schalte ich ab. Teste mal meinen Automations Adapter, theoretisch sollte er mit dem SF800 auch gehen, der kann doch AC Laden oder ?? Wenn ja dann sollte das Gerät damit das gleiche tun wie der SF1600 nur mit weniger Leistung.
-
@haselchen Die "nullen " habe ich ebenfalls. Vermute die DP werden vom Gerät generell nicht genutzt oder nur aktualisiert, wenn man sie verwendet. Mit welchem Server der verbunden ist, interessiert mich im Grunde im lokalen Betrieb ja auch nicht, die anderen Nullen sind auch uninteressant. Teste die lokale API mal via http://ipdeinesSF800/properties/report
Dann siehst du was er alles liefert in der Ausgabe. Das einfach in einem Browser Fenster im LAN ausführen.
Einen Nachteil von aktiviertem MQTT gibt es denke ich keinen aber auch keinen Mehrwert in meinen Augen. Am Ende hat er halt mehr zu tun, er liefert dann Daten an die Cloud, deinen Broker und bedient die lokale API. Was ich nicht brauche, schalte ich ab. Teste mal meinen Automations Adapter, theoretisch sollte er mit dem SF800 auch gehen, der kann doch AC Laden oder ?? Wenn ja dann sollte das Gerät damit das gleiche tun wie der SF1600 nur mit weniger Leistung.
Ich habe im Sekundentakt diese Nachrichten im Log
zendure-solarflow.0 2026-03-30 15:08:52.437 info [onDisconnected] Disconnected from MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:51.406 info [onConnected] Connected with MQTT! URL: mqtt://mqtteu.zen-iot.com:1883, Client ID: zendure-solarflow.0 2026-03-30 15:08:51.368 info [onReconnected] Reconnected to MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:50.367 info [onDisconnected] Disconnected from MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:49.335 info [onConnected] Connected with MQTT! URL: mqtt://mqtteu.zen-iot.com:1883, Client ID: zendure-solarflow.0 2026-03-30 15:08:49.295 info [onReconnected] Reconnected to MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:48.294 info [onDisconnected] Disconnected from MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:47.264 info [onConnected] Connected with MQTT! URL: mqtt://mqtteu.zen-iot.com:1883, Client ID: zendure-solarflow.0 2026-03-30 15:08:47.224 info [onReconnected] Reconnected to MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:46.222 info [onDisconnected] Disconnected from MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:45.192 info [onConnected] Connected with MQTT! URL: mqtt://mqtteu.zen-iot.com:1883, Client ID: zendure-solarflow.0 2026-03-30 15:08:45.150 info [onReconnected] Reconnected to MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:44.149 info [onDisconnected] Disconnected from MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:43.114 info [onConnected] Connected with MQTT! URL: mqtt://mqtteu.zen-iot.com:1883, Client ID: zendure-solarflow.0 2026-03-30 15:08:43.068 info [onReconnected] Reconnected to MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:42.066 info [onDisconnected] Disconnected from MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:41.035 info [onConnected] Connected with MQTT! URL: mqtt://mqtteu.zen-iot.com:1883, Client ID: zendure-solarflow.0 2026-03-30 15:08:40.990 info [onReconnected] Reconnected to MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:39.988 info [onDisconnected] Disconnected from MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:38.959 info [onConnected] Connected with MQTT! URL: mqtt://mqtteu.zen-iot.com:1883, Client ID: zendure-solarflow.0 2026-03-30 15:08:38.919 info [onReconnected] Reconnected to MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:37.917 info [onDisconnected] Disconnected from MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:36.884 info [onConnected] Connected with MQTT! URL: mqtt://mqtteu.zen-iot.com:1883, Client ID: zendure-solarflow.0 2026-03-30 15:08:36.837 info [onReconnected] Reconnected to MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:35.835 info [onDisconnected] Disconnected from MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:34.802 info [onConnected] Connected with MQTT! URL: mqtt://mqtteu.zen-iot.com:1883, Client ID: -
Ich habe im Sekundentakt diese Nachrichten im Log
zendure-solarflow.0 2026-03-30 15:08:52.437 info [onDisconnected] Disconnected from MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:51.406 info [onConnected] Connected with MQTT! URL: mqtt://mqtteu.zen-iot.com:1883, Client ID: zendure-solarflow.0 2026-03-30 15:08:51.368 info [onReconnected] Reconnected to MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:50.367 info [onDisconnected] Disconnected from MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:49.335 info [onConnected] Connected with MQTT! URL: mqtt://mqtteu.zen-iot.com:1883, Client ID: zendure-solarflow.0 2026-03-30 15:08:49.295 info [onReconnected] Reconnected to MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:48.294 info [onDisconnected] Disconnected from MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:47.264 info [onConnected] Connected with MQTT! URL: mqtt://mqtteu.zen-iot.com:1883, Client ID: zendure-solarflow.0 2026-03-30 15:08:47.224 info [onReconnected] Reconnected to MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:46.222 info [onDisconnected] Disconnected from MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:45.192 info [onConnected] Connected with MQTT! URL: mqtt://mqtteu.zen-iot.com:1883, Client ID: zendure-solarflow.0 2026-03-30 15:08:45.150 info [onReconnected] Reconnected to MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:44.149 info [onDisconnected] Disconnected from MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:43.114 info [onConnected] Connected with MQTT! URL: mqtt://mqtteu.zen-iot.com:1883, Client ID: zendure-solarflow.0 2026-03-30 15:08:43.068 info [onReconnected] Reconnected to MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:42.066 info [onDisconnected] Disconnected from MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:41.035 info [onConnected] Connected with MQTT! URL: mqtt://mqtteu.zen-iot.com:1883, Client ID: zendure-solarflow.0 2026-03-30 15:08:40.990 info [onReconnected] Reconnected to MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:39.988 info [onDisconnected] Disconnected from MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:38.959 info [onConnected] Connected with MQTT! URL: mqtt://mqtteu.zen-iot.com:1883, Client ID: zendure-solarflow.0 2026-03-30 15:08:38.919 info [onReconnected] Reconnected to MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:37.917 info [onDisconnected] Disconnected from MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:36.884 info [onConnected] Connected with MQTT! URL: mqtt://mqtteu.zen-iot.com:1883, Client ID: zendure-solarflow.0 2026-03-30 15:08:36.837 info [onReconnected] Reconnected to MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:35.835 info [onDisconnected] Disconnected from MQTT! URL: mqtt://mqtteu.zen-iot.com:1883 zendure-solarflow.0 2026-03-30 15:08:34.802 info [onConnected] Connected with MQTT! URL: mqtt://mqtteu.zen-iot.com:1883, Client ID:Lösch doch mal den gesamten Adapter. Nicht das da noch was von dem ganzen einstellen übrig ist. Sollte nicht sein aber so ein Bild habe ich noch nie gesehen. Er verbindet und trennt ja im Sekundentakt die Cloud. Hast Du ggf. den Haken mit Cloudweiterleitung aktiviert? Nicht das daraus dieser Fehler kommt. Ich habe nur ZenSDK aktiv und keine Fehler. Vielleicht kann Peter da mehr zu sagen ...
Also nach löschen neu aufsetzen natürlich :D
-
Lösch doch mal den gesamten Adapter. Nicht das da noch was von dem ganzen einstellen übrig ist. Sollte nicht sein aber so ein Bild habe ich noch nie gesehen. Er verbindet und trennt ja im Sekundentakt die Cloud. Hast Du ggf. den Haken mit Cloudweiterleitung aktiviert? Nicht das daraus dieser Fehler kommt. Ich habe nur ZenSDK aktiv und keine Fehler. Vielleicht kann Peter da mehr zu sagen ...
Also nach löschen neu aufsetzen natürlich :D
-
Nur mit Cloud-Key und dann im Adapter die ZenSDK Option aktiviert. Dann läuft er ja lokal. Ich habe das so verstanden, dass die Cloud dann nur initial genutzt wird um eine lokale Verbindung zu ermöglichen. @nograx kann das sicherlich näher erklären.
-
Nur mit Cloud-Key und dann im Adapter die ZenSDK Option aktiviert. Dann läuft er ja lokal. Ich habe das so verstanden, dass die Cloud dann nur initial genutzt wird um eine lokale Verbindung zu ermöglichen. @nograx kann das sicherlich näher erklären.
-
Reconnect im Sekundentakt tritt auf wenn man mehrere Instanzen oder parallel z.B. Home Assistant noch laufen hat.
MQTT was man in der App aktivieren kann ist meiner Erfahrung nach sehr langsam und die Steuerung darüber habe ich bisher nicht ans laufen bekommen. Gibt aktuell auch keine Doku darüber wie das Payload aussehen muss.
-
Reconnect im Sekundentakt tritt auf wenn man mehrere Instanzen oder parallel z.B. Home Assistant noch laufen hat.
MQTT was man in der App aktivieren kann ist meiner Erfahrung nach sehr langsam und die Steuerung darüber habe ich bisher nicht ans laufen bekommen. Gibt aktuell auch keine Doku darüber wie das Payload aussehen muss.
Kaum macht man es richtig :)
Das war der entscheidende Hinweis.
Bevor ich 114 Seite durchblättere, mein Projekt soll sein,
wenn die HauptPVBatterie bei 30% ist, soll die Solarflow aktiviert werden und ins Haus speisen.
Nun die Frage, aus Deinem Wissen raus, existiert dazu schon ein Skript oder Blockly?Mein innerer Monk möchte ohne kWh Bezug durch die Nacht kommen.
Die HauptPVBatterie und dann die ZendureBatterie sollen im Zusammenspiel solange "halten" bis wieder morgens genug Sonne scheint.@felli fürs Brainstorming :)
Edit: noch ein ganz wichtiger Punkt. Wieso wird der aktuelle PV Ertrag nicht abgebildet?
Das ist doch das A und O bei ner PV Anlage.
Ich meine, dieser DP wird auch nicht per MQTT per App mitgeschickt.
Krieg ich den irgendwie aufbereitet?
Der Adapter zeigt völlig wirre Kalkulationen an. -
Kaum macht man es richtig :)
Das war der entscheidende Hinweis.
Bevor ich 114 Seite durchblättere, mein Projekt soll sein,
wenn die HauptPVBatterie bei 30% ist, soll die Solarflow aktiviert werden und ins Haus speisen.
Nun die Frage, aus Deinem Wissen raus, existiert dazu schon ein Skript oder Blockly?Mein innerer Monk möchte ohne kWh Bezug durch die Nacht kommen.
Die HauptPVBatterie und dann die ZendureBatterie sollen im Zusammenspiel solange "halten" bis wieder morgens genug Sonne scheint.@felli fürs Brainstorming :)
Edit: noch ein ganz wichtiger Punkt. Wieso wird der aktuelle PV Ertrag nicht abgebildet?
Das ist doch das A und O bei ner PV Anlage.
Ich meine, dieser DP wird auch nicht per MQTT per App mitgeschickt.
Krieg ich den irgendwie aufbereitet?
Der Adapter zeigt völlig wirre Kalkulationen an.@haselchen sagte in Test Adapter Zendure Solarflow:
Bevor ich 114 Seite durchblättere, mein Projekt soll sein,
wenn die HauptPVBatterie bei 30% ist, soll die Solarflow aktiviert werden und ins Haus speisen.
Nun die Frage, aus Deinem Wissen raus, existiert dazu schon ein Skript oder Blockly?Lass dir das doch von einer KI erstellen. Ich erstelle fast alles nur noch mit ChatGPT oder Gemini. Warum den Kopf zerbrechen wenn's auch einfach geht.
-
@haselchen sagte in Test Adapter Zendure Solarflow:
Bevor ich 114 Seite durchblättere, mein Projekt soll sein,
wenn die HauptPVBatterie bei 30% ist, soll die Solarflow aktiviert werden und ins Haus speisen.
Nun die Frage, aus Deinem Wissen raus, existiert dazu schon ein Skript oder Blockly?Lass dir das doch von einer KI erstellen. Ich erstelle fast alles nur noch mit ChatGPT oder Gemini. Warum den Kopf zerbrechen wenn's auch einfach geht.
-
Da hier ja vermutlich die meisten ioBroker/Zendure User beisammen sind, wollte ich was mit euch teilen. Habe seit knapp einer Woche einen SF1600AC+ und habe mir daher was ausgedacht, diesen über Peters Adapter zu regeln. Dazu habe ich einen eigenen kleinen Adapter gebaut, der eine Nulleinspeisung inkl. Überschussladen aus bestehender PV realisiert. Dabei wird der Datenpunkt: zendure-solarflow.0.XXX.XXX.control.setDeviceAutomationInOutLimit angesprochen.
Da mein SF1600 beim umschalten von laden zu einspeisen klackt, habe ich mir hier auch Gedanken gemacht, wie man das Relais sinnvoll schützen kann. Dazu ist ein Tick Timer eingebaut, der über das UI eingestellt werden kann. Standard ist 3 Clicks zum einspeisen und 5 Clicks zum laden. Also bei 5 sek. Tick wären das 15 oder 25 Sekunden, in denen dann ein Schwellwert (ebenfalls einstellbar) anliegen muss, bevor er schaltet. Zusätzlich, wird noch packPower gecheckt und nur dann geschaltet, wenn dieser kleiner 10W ist. Damit sollte sichergestellt sein, dass das Relais nur ohne Last umschaltet. Vermute Zendure hat daran gedacht, wollte aber auf Nummer sicher gehen :D
Den Entladeschluss kann man auf zwei Arten definieren. Entweder klassisch via SOC oder per minVol. Dazu scannt der Adapter alle Packs in Peters Integration nach minVol und wertet hier den kleinsten aus. Dieser wird dann auch berücksichtigt fürs Notladen, sollte mal ein Pack bei schlechtem Wetter abschmieren.
Wenn Notladen aktiv, wird bis zu einem Exit SOC geladen (Standard 20%). Danach bleibt die Reglung in einem Recovery Modus und dessen Exit SOC ist bei 30%. Damit wollte ich unnötige Loops vermeiden. All diese Schwellwerte sind bequem zu steuern per UI und im Objektbaum unter Control, kann man mit einem Schalter die Reglung einfach ausschalten, falls man händisch was machen will per App oder was weiß ich.
Das läuft nun seit einer Woche erstaunlich gut und stabil muss ich sagen. Werde den Adapter nicht offiziell ins Repo bringen, also müsst Ihr den wenn per Custom-Link manuell direkt via Github installieren bei Interesse. Denke für die neuen Geräte ist das eine tolle Sache und die regeln wirklich traumhaft schnell und weich die Last weg.
@nograx falls Du Interesse an dem Werk hast und wenn es nur Teile sind, lass es mich wissen. Glaube sowas wäre eine tolle Ergänzung zu Deinem genialen Adapter, den ich seit Anfang an nutze!
Hier der Link: https://github.com/Felliglanz/ioBroker.zendure-automation
Viel Spaß beim probieren und gebt gerne eine Rückmeldung.
LG
Sven@Felli sagte in Test Adapter Zendure Solarflow:
Da hier ja vermutlich die meisten ioBroker/Zendure User beisammen sind, wollte ich was mit euch teilen. Habe seit knapp einer Woche einen SF1600AC+ und habe mir daher was ausgedacht, diesen über Peters Adapter zu regeln. Dazu habe ich einen eigenen kleinen Adapter gebaut, der eine Nulleinspeisung inkl. Überschussladen aus bestehender PV realisiert. Dabei wird der Datenpunkt: zendure-solarflow.0.XXX.XXX.control.setDeviceAutomationInOutLimit angesprochen.
Da mein SF1600 beim umschalten von laden zu einspeisen klackt, habe ich mir hier auch Gedanken gemacht, wie man das Relais sinnvoll schützen kann. Dazu ist ein Tick Timer eingebaut, der über das UI eingestellt werden kann. Standard ist 3 Clicks zum einspeisen und 5 Clicks zum laden. Also bei 5 sek. Tick wären das 15 oder 25 Sekunden, in denen dann ein Schwellwert (ebenfalls einstellbar) anliegen muss, bevor er schaltet. Zusätzlich, wird noch packPower gecheckt und nur dann geschaltet, wenn dieser kleiner 10W ist. Damit sollte sichergestellt sein, dass das Relais nur ohne Last umschaltet. Vermute Zendure hat daran gedacht, wollte aber auf Nummer sicher gehen :D
Den Entladeschluss kann man auf zwei Arten definieren. Entweder klassisch via SOC oder per minVol. Dazu scannt der Adapter alle Packs in Peters Integration nach minVol und wertet hier den kleinsten aus. Dieser wird dann auch berücksichtigt fürs Notladen, sollte mal ein Pack bei schlechtem Wetter abschmieren.
Wenn Notladen aktiv, wird bis zu einem Exit SOC geladen (Standard 20%). Danach bleibt die Reglung in einem Recovery Modus und dessen Exit SOC ist bei 30%. Damit wollte ich unnötige Loops vermeiden. All diese Schwellwerte sind bequem zu steuern per UI und im Objektbaum unter Control, kann man mit einem Schalter die Reglung einfach ausschalten, falls man händisch was machen will per App oder was weiß ich.
Das läuft nun seit einer Woche erstaunlich gut und stabil muss ich sagen. Werde den Adapter nicht offiziell ins Repo bringen, also müsst Ihr den wenn per Custom-Link manuell direkt via Github installieren bei Interesse. Denke für die neuen Geräte ist das eine tolle Sache und die regeln wirklich traumhaft schnell und weich die Last weg.
@nograx falls Du Interesse an dem Werk hast und wenn es nur Teile sind, lass es mich wissen. Glaube sowas wäre eine tolle Ergänzung zu Deinem genialen Adapter, den ich seit Anfang an nutze!
Hier der Link: https://github.com/Felliglanz/ioBroker.zendure-automation
Viel Spaß beim probieren und gebt gerne eine Rückmeldung.
LG
Sven@felli
Danke erstmal für deinen Adapter
Heute mal installiert.
Ich haben einen Solarflow 800 Pro.
Läuft erstmal im Entlademodus, mal schauen wie der Lademodus läuft.
Ich habe den Solarflow zur Zeit als reinen AC Speicher laufen, muß ich da noch irgendwas anpassen.
MQTT Steuerung ist auch in der Zendure App nicht aktiviert, oder?
Also funktioniert die Steuerung doch über ZenSDK ist das die schnellste Regelung?Gruß Frank
-
@Felli sagte in Test Adapter Zendure Solarflow:
Da hier ja vermutlich die meisten ioBroker/Zendure User beisammen sind, wollte ich was mit euch teilen. Habe seit knapp einer Woche einen SF1600AC+ und habe mir daher was ausgedacht, diesen über Peters Adapter zu regeln. Dazu habe ich einen eigenen kleinen Adapter gebaut, der eine Nulleinspeisung inkl. Überschussladen aus bestehender PV realisiert. Dabei wird der Datenpunkt: zendure-solarflow.0.XXX.XXX.control.setDeviceAutomationInOutLimit angesprochen.
Da mein SF1600 beim umschalten von laden zu einspeisen klackt, habe ich mir hier auch Gedanken gemacht, wie man das Relais sinnvoll schützen kann. Dazu ist ein Tick Timer eingebaut, der über das UI eingestellt werden kann. Standard ist 3 Clicks zum einspeisen und 5 Clicks zum laden. Also bei 5 sek. Tick wären das 15 oder 25 Sekunden, in denen dann ein Schwellwert (ebenfalls einstellbar) anliegen muss, bevor er schaltet. Zusätzlich, wird noch packPower gecheckt und nur dann geschaltet, wenn dieser kleiner 10W ist. Damit sollte sichergestellt sein, dass das Relais nur ohne Last umschaltet. Vermute Zendure hat daran gedacht, wollte aber auf Nummer sicher gehen :D
Den Entladeschluss kann man auf zwei Arten definieren. Entweder klassisch via SOC oder per minVol. Dazu scannt der Adapter alle Packs in Peters Integration nach minVol und wertet hier den kleinsten aus. Dieser wird dann auch berücksichtigt fürs Notladen, sollte mal ein Pack bei schlechtem Wetter abschmieren.
Wenn Notladen aktiv, wird bis zu einem Exit SOC geladen (Standard 20%). Danach bleibt die Reglung in einem Recovery Modus und dessen Exit SOC ist bei 30%. Damit wollte ich unnötige Loops vermeiden. All diese Schwellwerte sind bequem zu steuern per UI und im Objektbaum unter Control, kann man mit einem Schalter die Reglung einfach ausschalten, falls man händisch was machen will per App oder was weiß ich.
Das läuft nun seit einer Woche erstaunlich gut und stabil muss ich sagen. Werde den Adapter nicht offiziell ins Repo bringen, also müsst Ihr den wenn per Custom-Link manuell direkt via Github installieren bei Interesse. Denke für die neuen Geräte ist das eine tolle Sache und die regeln wirklich traumhaft schnell und weich die Last weg.
@nograx falls Du Interesse an dem Werk hast und wenn es nur Teile sind, lass es mich wissen. Glaube sowas wäre eine tolle Ergänzung zu Deinem genialen Adapter, den ich seit Anfang an nutze!
Hier der Link: https://github.com/Felliglanz/ioBroker.zendure-automation
Viel Spaß beim probieren und gebt gerne eine Rückmeldung.
LG
Sven@felli
Danke erstmal für deinen Adapter
Heute mal installiert.
Ich haben einen Solarflow 800 Pro.
Läuft erstmal im Entlademodus, mal schauen wie der Lademodus läuft.
Ich habe den Solarflow zur Zeit als reinen AC Speicher laufen, muß ich da noch irgendwas anpassen.
MQTT Steuerung ist auch in der Zendure App nicht aktiviert, oder?
Also funktioniert die Steuerung doch über ZenSDK ist das die schnellste Regelung?Gruß Frank
Toll das es auch mit dem SF800 geht! Mein Adapter regelt nur das System, wie Du Peters Adapter an Dein System anbindest, ist dem dabei völlig egal. Lokale Anbindung ist mit 100%iger Sicherheit das sinnigste. Dabei empfinde ich die API die sie uns mittlerweile geben als am besten.
Anpassen musst du an den Einstellungen nur die maximale Leistung die rein oder raus gehen soll. Selbst wenn du es auf den Default Werten lässt, wird nichts passieren, da der SF800 einfach 800 nimmt wenn du ihm was höheres gibst. Ansonsten hoffe ich das die Config intuitiv ist, ich habe es so empfunden. Danke fürs probieren und wenn was klemmt, lass es mich wissen.
LG
SvenNachtrag: Da der SF1600AC+ ein reiner AC Speicher ist, ist am am Ende genau wie Deiner bzw wie du ihn nutzt. Nur eine Nummer kleiner 😁
-
@felli
ich habe dein Adapter bei Ziel Netzleistung auf 40W gestellt, das hat gestern Abend beim reinen entladen gut funktioniert.
Heute beim laden/entladen ist meine Netzleistung ab und zu vom Netzeinspeisung in den Netzbezug gesprungen, obwohl das nicht immer nötig war.
Wäre es vielleicht besser für den Punkt Ziel Netzleistung zwei Werte zu haben z.B. beim entladen auf z.B. 40W und laden auf -40W zu stellen, dann hat man eine Art Hysterese.
Gruß
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden
