NEWS
Test Adapter Zendure Solarflow
-
-
@Bernd1967 Bzgl. Batcur scheint es dann bei den Geräten unterschiedlich gehandhabt zu werden. Bei meinen Hypern wird das zum Beispiel sauber umgerechnet.
Ja, beim Solarflow 800 Pro 2 ist das wohl geändert worden auf Basis 16Bit. Welche Geräte da noch betroffen sind weiß ich nicht. Über KI kann man das herausfinden aber eine Quelle kann ich dir nicht nennen.
Beispiel Formel :
if (batcur > 32767) {
batcur -= 65536;
}
batcur = batcur / 10;Zendure hat m. M. n. den Wert für batcur schon immer als vorzeichenbehafteten 16-Bit-Int im 2er-Komplement übertragen?
Beim Laden (positiv) mit kleinem Wert wie z. B. 28 funktioniert das mit einer Berechnung ohne jede Anpassung (28 / 10 = 2,8 A) zufällig.
Warum? Weil das oberste Bit für das Vorzeichen Null ist.
Sobald beim Entladen der Wert negativ wird, wird der 16-Bit-Int (Zweierkomplement) > 32767.Faszinierend, dass eine KI ohne Quelle exakt den manuellen mathematischen Workaround meines Skripts als Antwort ausgibt.
@maxclaudi sagte:
........
Faszinierend, dass eine KI ohne Quelle exakt den manuellen mathematischen Workaround meines Skripts als Antwort ausgibt.Das war die G***le KI.
Suchwörter: "zendure solarflow 800 Pro2 akku Strom batcur über 65000" .Dann Fragen nach Quelle und Beispielcode.
Den Code habe ich dann gekürzt. -
Im Zendure-HA Adapter von Fireson ist auch die Umrechnung von "Batcur" so drin in der Datei "entity.py". Er hat das auch bei "BatVolt" gleich so gemacht, vielleicht vorsoglich, falls ein neues Gerät das bei der Spannung auch so überträgt.
3 interessante Fakten, wenn man den Code anschaut:
Die dortige Zuweisung für den Batteriestrom ist:
"batcur": ( "template", "{{ value / 10 if (value | int) < 32768 else (value | bitwise_xor(0x8000 | int) - 0x8000 | int) / 10 }}", "A", "current", ),-
Keine neue Änderung.
Der Code wurde dort bereits vor 10 Monaten implementiert.
Das Format (16-Bit-Zweierkomplement) ist bei der Zendure-API folglich keine neue Änderung des aktuellen SolarFlow 800 Pro 2, sondern wird schon immer so codiert. -
Anderer Syntax:
Das HA-Template nutzt eine verschachtelte Jinja2-Logik mit bitweisen Operationen (bitwise_xor).
Mein minimalistischer KISS Workaround ist mathematisch identisch, umgeht dabei aber bitweise Operationen, um das einfach in JavaScript umzusetzen -
die Datei zeigt auch, wie schnell Copy-Paste fehlerhaft sein kann.
Bei der Batteriespannung (BatVolt) wurde exakt derselbe Template-Block hinterlegt.
Das ist Unfug:
"BatVolt": ( "template", "{{ value / 100 if (value | int) < 32768 else (value | bitwise_xor(0x8000 | int) - 0x8000 | int) / 100 }}", "V", "voltage", ),Eine Batterie-Nennspannung im SolarFlow-Bereich kann physikalisch niemals negativ werden und laut zenSDK bei einer Auflösung von 0.01V niemals Werte über 327 V erreichen.
Darum ist dieser else-Zweig für die Spannung technisch unlogisch. -
-
An dieser Stelle mal eine Warnung für alle die einen Hyper lokal nutzen und über das neuste Firmware Update nachdenken...
Die Geräte funken anschließend nur noch per SSL auf Port 8883!
-
@nograx
Danke für die wichtige Info.
Bestätigt mein Vorgehen bei Zendure, so lange es läuft „never change a running system“ 😉@Murphy-0 Jo hätte ich mich auch mal dran gehalten… aber so ist der Druck größer eine Lösung im Adapter zu finden.
Man kommt aber nicht mehr drum rum einen MQTT mit SSL und Zertifikat zu betreiben. Oder alte Firmware.
Bin neugierig ob der Freeze Bug und 99% Bug endlich behoben ist.
-
An dieser Stelle mal eine Warnung für alle die einen Hyper lokal nutzen und über das neuste Firmware Update nachdenken...
Die Geräte funken anschließend nur noch per SSL auf Port 8883!
An dieser Stelle mal eine Warnung für alle die einen Hyper lokal nutzen und über das neuste Firmware Update nachdenken...
Die Geräte funken anschließend nur noch per SSL auf Port 8883!
Weil das neue EU-Recht (EN 18031) eine Verschlüsselung für IoT-Hardware vorschreibt, ist es vermutlich nur eine Frage der Zeit, bis Zendure auch bei allen älteren Geräten per Update nachzieht.
Früher oder später wird der Cloud-Zugang über Port 1883 gesetzeskonform deaktiviert werden müssen.EN 18031 schreibt vor:
-
Verschlüsselungspflicht (TLS): Jede Kommunikation von IoT-Geräten über das Internet (also zur Zendure-Cloud) darf nicht mehr unverschlüsselt (Klartext) erfolgen.
Port 1883 überträgt alles (auch Passwörter und Tokens) unverschlüsselt.
Das ist nach neuem EU-Recht für Neu- und Bestandsgeräte mit Internetzugang verboten.
Deshalb stellt Zendure jetzt radikal auf MQTTS (Port 8883 mit SSL/TLS) um. -
Verbot von Standard-Passwörtern:
Die Zeiten, in denen Geräte ein universelles Standard-Passwort nutzen oder Passwörter leicht erratbar im Klartext übertragen werden, sind gesetzlich vorbei.
Jedes Gerät muss eine sichere, verschlüsselte Authentifizierung nutzen.
Zwei neue Hub 2000 der älteren Generation habe ich erst vor wenigen Tagen auf die Firmware V3.0.24 aktualisiert – dort läuft derzeit noch alles unverschlüsselt über Port 1883.
Von den ersten Geräten der neueren Generationen – speziell SF800 und 2400AC – sind allerdings noch einige Geräte mit alter Firmware im Umlauf.
Im Auslieferungszustand lohnt es sich zu prüfen, ob sie noch nicht auf SSL-Verschlüsselung (Port 8883) umgestellt sind.Solange das der Fall ist, ist das offizielle lokale MQTT noch nicht reglementiert bzw. gedrosselt.
Noch besser: Man kann DNS umbiegen oder umschreiben und den eigenen lokalen Broker als Cloud-Broker verwenden. -
-
Ja verstehe den Grund dafür und macht auch total Sinn. Für mich kam es trotzdem überraschend und war im ersten Moment total ärgerlich weil ich nicht verstanden habe warum das Gerät quasi tot war.
Aktuell läuft bei mir als Test per DNS rewrite auf lokalen MQTT mit Port 8883.
-
Ja verstehe den Grund dafür und macht auch total Sinn. Für mich kam es trotzdem überraschend und war im ersten Moment total ärgerlich weil ich nicht verstanden habe warum das Gerät quasi tot war.
Aktuell läuft bei mir als Test per DNS rewrite auf lokalen MQTT mit Port 8883.
@nograx
darf gar nicht schreiben, wie ich mich fühle...
Alles lief perfekt und schnell mit dem Cloud-Ersatz-Broker, und dann macht einem die EU einen Strich durch die Rechnung.Wenn man wenigstens unkompliziert ein eigenes Zertifikat ausstellen und im Gerät hinterlegen könnte.
Ich bin an dem Thema Zertifikate aktuell dran – bisher ohne Erfolg.Das ist auch der Grund, warum ich meinen 1600AC+ komplett auf das zenSDK umgestellt habe.
Den habe ich damit inzwischen soweit, dass er lokal fast alles macht, was ich will.Ein echter, lokaler Cloud-Ersatz-Broker trotz SSL wäre bzw. ist hier natürlich das absolute Non plus Ultra.
Aber leider...
-
@maxclaudi Bei mir läuft es auf dem „mqtt“ Adapter mit einem selbst signierten Zertifikat. Der Hyper scheint das Stand jetzt zu akzeptieren. Den Adapter habe ich in einer pre-release Version umgestellt. Lasse das auf dem Hyper diese Nacht mal durchlaufen und schaue ob ich mich morgen traue meine anderen 3 Hyper zu aktualisieren.
-
@maxclaudi Bei mir läuft es auf dem „mqtt“ Adapter mit einem selbst signierten Zertifikat. Der Hyper scheint das Stand jetzt zu akzeptieren. Den Adapter habe ich in einer pre-release Version umgestellt. Lasse das auf dem Hyper diese Nacht mal durchlaufen und schaue ob ich mich morgen traue meine anderen 3 Hyper zu aktualisieren.
@nograx
ja, funktioniert noch. Nur sollte man gleich im Hinterkopf behalten, dass das vermutlich nur so lange funktioniert, wie die Firmware auf Port 8883 die Signierung des Zertifikats durch eine offizielle Behörde noch nicht streng validiert.Sobald Zendure hier die Daumenschrauben anzieht – was durch die Vorgaben der EN 18031 für internetfähige Geräte leider über kurz oder lang zwingend vorgeschrieben ist (Stichwort Certificate Pinning oder strikte CA-Prüfung) –, könnte dieser charmante DNS-Weg mit selbstsignierten Zertifikaten leider auch ganz schnell wieder Geschichte sein.
-
Ich habe jetzt meine 4 Hyper auf dem lokalen MQTT mit TLS am laufen. Bin aber ehrlich gesagt sehr unzufrieden. Der Freeze bzw. der Connection Probleme tauchen hier jetzt viel häufiger auf. Bin jetzt absolut kein MQTT oder TLS Experte, aber folgende Meldung erscheint im Log:
connection closed: Error: XXXXXXXXXXXXXXXX:error:0A000119:SSL routines:tls_get_more_records:decryption failed or bad record mac:../deps/openssl/openssl/ssl/record/methods/tls_common.c:802:
Generell funktioniert die Kommunikation, aber ca. alle halbe Stunde meldet sich ein Hyper mit dieser Meldung und dann kommen keine neuen Daten bzw. ist eine Steuerung nicht mehr möglich. Manchmal reconnected das Gerät nach 3-4 Minuten, aber nicht immer.
-
Ich habe jetzt meine 4 Hyper auf dem lokalen MQTT mit TLS am laufen. Bin aber ehrlich gesagt sehr unzufrieden. Der Freeze bzw. der Connection Probleme tauchen hier jetzt viel häufiger auf. Bin jetzt absolut kein MQTT oder TLS Experte, aber folgende Meldung erscheint im Log:
connection closed: Error: XXXXXXXXXXXXXXXX:error:0A000119:SSL routines:tls_get_more_records:decryption failed or bad record mac:../deps/openssl/openssl/ssl/record/methods/tls_common.c:802:
Generell funktioniert die Kommunikation, aber ca. alle halbe Stunde meldet sich ein Hyper mit dieser Meldung und dann kommen keine neuen Daten bzw. ist eine Steuerung nicht mehr möglich. Manchmal reconnected das Gerät nach 3-4 Minuten, aber nicht immer.
@nograx
Wenn die Verbindung grundsätzlich aufgebaut wird und MQTT-Daten zunächst funktionieren, dann sind DNS-Umleitung und Zertifikat wahrscheinlich ok.connection closed: Error: XXXXXXXXXXXXXXXX:error:0A000119:SSL routines:tls_get_more_records:decryption failed or bad record mac:../deps/openssl/openssl/ssl/record/methods/tls_common.c:802:bedeutet in etwa: Integritätsprüfung (MAC) fehlgeschlagen und die Nachricht deshalb nicht mehr entschlüsselt werden konnte.
ich vermute eher, dass der Fehler aus OpenSSL stammt.
Es wurden auf einer bestehenden TLS-Verbindung Daten empfangen, die nicht mehr zur TLS-Session bzw. zur aktuellen Verschlüsselung passen.
Es ist kein typischer Zertifikatsfehler.Ob die Ursache dann Hyper, Broker, Node.js/OpenSSL oder irgendwo im Netzwerk (Verbindung bitte überprüfen) liegt?
Falls der Broker der mqtt-Adapter ist, würde ich testweise einen anderen MQTT-Broker einsetzen. So könnte der MQTT-Adapter als Fehlerquelle ausgeschlossen oder bestätigt werden.
Als wahrscheinlichste Ursachen bleiben im Wesentlichen:
Hyper-Firmware
ioBroker MQTT-Adapter (Node.js/OpenSSL)
Netzwerk/WLAN zwischen beiden -
Hallo, ich hab da mal eine Frage zu den Posts hier drüber.
Bei meinen Hyper2000 mit AB2000X stehen seit heute mehrere upgrades
und updates an. Soll das heissen, wenn ich diese mache, dass ich den Hyper
dann nicht mehr mit dem Zendure Solarflow Adapter in ioBroker benutzen kann ?
Ich habe meinen Hyper per AuthKey im Adapter verbunden.
Okay, @nograx schreibt ja „Warnung an alle die den Hyper lokal nutzen…“
Per AuthKey nutze ich ihn ja nicht lokal.
Kann/soll ich die upgrades und updates machen ?
Ich bin da echt hilf- und ahnungslos.
Die iOS App wurde auch aktualisiert und fordert mich nun auf,
das HEMS zu aktualisieren, obwohl ich das ja ausgeschaltet habe.
Ich erbitte Hilfe -
Mein Rat wäre: auf jeden Fall mal ein paar Wochen warten und im offiziellen Forum mitlesen wie die Erfahrungen mit dem Update sind.
Leider hat Zendure in der Vergangenheit mit Updates teilweise „verschlimmbessert“Ausserdem wird es nach dem Update mit echtem Offlinebetrieb kompliziert.
-
Wenn du gerade akut keine Probleme hast würde ich tatsächlich auch etwas abwarten. In der Firmware hat sich meiner bisherigen Erfahrung nur die MQTT Verbindung auf TLS geändert. Die Bugs 100% Standby und MQTT freezes sind noch vorhanden.
-
Moin,
ich habe meine 3 Hyper gestern komplett upgedatet, hat zwar etwas gedauert lief aber ohne Probleme durch. Bisher auch noch keine Auffälligkeiten und Fehler gehabt. Bin komplett in der Cloud. Den 100% Standby Bug konnte ich bisher nicht feststellen, war aber vorher bei mir auch kein Thema.Bei mir hängen sich die Hyper nur dann auf wenn ich über setDeviceAutomationInOutLimit regele. Gehe ich über acMode mit setInputLimit/setOutputLimit laufen sie durch. Alles in der Cloud.
Ich habe heute Nacht mal die Regelung komplett dem HEMS von Zendure im neuen "Eigenverbrauchsmodus" überlassen und bin doch positiv überrascht. Die Werte sehen so aus:



-
Moin,
ich habe meine 3 Hyper gestern komplett upgedatet, hat zwar etwas gedauert lief aber ohne Probleme durch. Bisher auch noch keine Auffälligkeiten und Fehler gehabt. Bin komplett in der Cloud. Den 100% Standby Bug konnte ich bisher nicht feststellen, war aber vorher bei mir auch kein Thema.Bei mir hängen sich die Hyper nur dann auf wenn ich über setDeviceAutomationInOutLimit regele. Gehe ich über acMode mit setInputLimit/setOutputLimit laufen sie durch. Alles in der Cloud.
Ich habe heute Nacht mal die Regelung komplett dem HEMS von Zendure im neuen "Eigenverbrauchsmodus" überlassen und bin doch positiv überrascht. Die Werte sehen so aus:



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
