Zendure Solarflow in Fhem via MQTT einbinden

Begonnen von Reinhart, 15 Februar 2024, 17:29:53

Vorheriges Thema - Nächstes Thema

Reinhart

Ich habe vor wenigen Tagen meinen Zendure Solarflow Akkuspeicher bekommen und mir einmal die Sache mit dem externen MQTT Server von Zendure angesehen.
In den letzten 2-3 Tagen habe ich dazu etwas näher befasst und teilweise mit Try und Error mich an die richtige Vorgangsweise heran getastet, aber diese Definition erschien mir am einfachsten.

Damit man hier an die erforderlichen Readings des "Zendure Broker" ran kommt, sind folgende Daten zur Abfrage in der Clientdefinition notwendig:
appkey = Username
secret = Password
clientID = Seriennummer Hub
subscriptions = topic/#


Topic = Username

wie man ganz schnell an die Keys kommt ist hier beschrieben. Voraussetzung natürlich das ihr bereits die App von Zendure eingerichtet habt. 

Also App auf "Global" stellen und unter Windows (Cmd) folgenden Befehl absetzen.
curl -i -v --json "{'snNumber': 'EureHubSeriennummer', 'account': 'EureEmailadresse'}" https://app.zendure.tech/v2/developer/api/apply

Nachdem ihr die Keys erhalten habt, empfiehlt es sich einen MQTT-Explorer (Windows) zu installieren (obiger Link) und man kann die gewonnen Zugangsdaten sofort überprüfen und seht auch gleich Readings die da ankommen.
Nun steht nichts mehr im Wege und es kann ein MQTT2-Client nach folgendem Muster angelegt werden. Ersetzt die beiden Platzhalter <appKey> und <Ser.Nr.Hub>
mit euren Daten. Anschließend bitte mit "set ZendureCloud password" (links oben in der Befehlszeile) den "secret" eingeben (nicht eurer Password das ihr in der App angelegt habt).


MQTT2 Client definieren

define ZendureCloud MQTT2_CLIENT mqtt.zen-iot.com:1883
attr ZendureCloud autocreate complex
attr ZendureCloud clientId <Ser.Nr.Hub>
attr ZendureCloud rawEvents .*
attr ZendureCloud room zendure
attr ZendureCloud username <appKey>
attr ZendureCloud verbose 5

Der Client sollte nun unter STATE "opened" anzeigen, Wenn nicht, ist irgendwas mit den Zugangsdaten falsch gelaufen.
Wurde der MQTT2 Client auf "autocreate complex" gestellt sollte innerhalb weniger Sekunden die ersten Readings auftauchen. Wenn keine Änderungen am HUB sind (Abendstunden)
kann das durchaus länger dauern. Einfach dazu parallel im MQTT-Explorer vergleichen.

Wenn alles geklappt hat sollte folgender Define automatisch durch Autocreate angelegt.

define MQTT2_ZendureHub MQTT2_DEVICE <Ser.Nr.Hub>
attr MQTT2_ZendureHub icon mqtt_bridge_2
attr MQTT2_ZendureHub readingList <Ser.Nr.Hub>:<appKey>/<Client Topic>/state:.* { json2nameValue($EVENT) }\
attr MQTT2_ZendureHub room MQTT2_DEVICE,zendure
attr MQTT2_ZendureHub stateFormat Speicher-AB2000: electricLevel

und hier noch die grafische Auswertung einiger Readings so wie ich sie einmal definiert habe.

define Zendure_Akku DOIF ##
attr Zendure_Akku room zendure
attr Zendure_Akku uiTable {package ui_Table}\
cylinder(" ",0,100,"%",100,110,140,0,[MQTT2_ZendureHub:electricLevel],80,undef)|\
card([MQTT2_ZendureHub:electricLevel:col8],"AB2000 1/2","sani_solar\@colorVal1",0,400,180,0,"%",undef,0,180)\
\
card([MQTT2_ZendureHub:solarPower1:col8],"Panel-1/2","sani_solar\@colorVal1",0,400,180,0,"Watt",undef,0,180)|\
card([MQTT2_ZendureHub:solarPower2:col8],"Panel-3","sani_solar\@colorVal1",0,400,180,0,"Watt",undef,0,180)\
\
card([MQTT2_ZendureHub:outputPackPower:col8],"Ausgang Akku","sani_solar\@colorVal1",0,400,180,0,"Watt",undef,0,180)|\
card([MQTT2_ZendureHub:outputHomePower:col8],"Wechselrichter","sani_solar\@colorVal1",0,400,180,0,"Watt",undef,0,180)|\

Viel Erfolg mit dem Solarflow!

edit 08.03: Topic unter subscriptions hinzugefügt.


FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

Reinhart

ich habe mich nun noch mit dem Schreiben von Werten via MQTT eingelesen, aber so wie es derzeit ausschaut ist die User API von Zendure "readonly". Zendure schreibt ja im Github dies unter Futures Plans.

ZitatSupport data downlink and device control.
.

Eigentlich wollte ich auch die Entnahme des Akkuspeichers selbst über Fhem steuern können, um zB. bei schlechter Sonneneinstrahlung des nächsten Tages (Wettervorschau Proplanta) den Akku nicht ganz zu entleeren. Meine Situation ist ja so, dass ich eine sehr hohe Grundlast habe und der 4Kw Akku ohnehin nicht für die Nacht ausreicht. Ob ich hier nochmals mit Kapazität aufstocken kann muss sich in den nächsten Monaten zeigen ob der Sonnenertrag ausreicht um mehr als 4 Kw am Tag zu laden. Der neue HUB von Zendure sollte das ja können, aber da war ich mit dem Kauf zu schnell. Habe aber jetzt schon zwei Panels über Dioden zusammen geschalten und so insgesamt 3 Panels mit je 415 Watt alleine zum Speichern zur Verfügung.
Zendure ist aber eh sehr zackig und erweitert seine Firmware ständig, also noch etwas warten und dann klappt auch das Senden zu ihrem MQTT Server.

Dafür habe ich heute noch schnell meinen Floorplan um die gewonnen Daten ergänzt.
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

mkriegl

Hallo Reinhard,

danke schon mal für die Devines, allerdings habe ich so meine Probleme Informationen zu empfangen. Er connected, aber ich bekomme gar nichts zurück,  obwohl heute die Sonne schien.
In Home Assistant hat es bei mir einwandfrei funktioniert, ich bekomme aber weder in FHEM noch in MQTT Explorer Informationen.

Im Vergleich zu deiner Beschreibung musste ich EU statt V2 abfragen, da es mir einen Fehler liefert.
curl -i -v --json "{'snNumber': 'EureHubSeriennummer', 'account': 'EureEmailadresse'}" https://app.zendure.tech/eu/developer/api/apply
In HASS, MQTT Explorer und FHEM sind Server, Port, username, Passwort alle eins zu ein (plus clientId bei FHEM)
Das einzige was ich mir jetzt noch vorstellen kann ist, das nur ein Gerät verbunden sein kann. Ansonsten kann ich mir es nicht erklären

Gruß .. Max

Reinhart

was ich gelesen habe funktioniert es nur mit "global" Einstellung. Ich habe auch gleich bei der Einrichtung der App auf Global gestellt. Wenn du umstellst, ist die History aber weg!

Hast du denn den App Key mit der EU Einstellung und den Secerect mit "curl" bekommen?
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

Fhemotto

Hallo zusammen,
habe heute mein erstes Gerät mit MQTT eingebunden, ohne wirklich zu verstehen was da passiert.
Möchte nur kurz auf mein anfängliches Problem hinweisen.

In dem Link den du oben aufgeführt hast mit der Beschreibung steht unter anderen:

,,Unter Advanced (Button) müsst ihr dann noch euren appKey als Topic abonnieren, also als neue Subscription hinzufügen --> appKey/#."

Somit klappts bei mir auch im MQTT Explorer.

Da in FHEM aber trotz ,,STATE "opened" nichts ankam, habe ich alle möglichen Attribute mir angeschaut und hier das Attribut  ,,subscriptions" gefunden und auf appKey/# gesetzt
und sofort kamen Unmengen an Daten im Logfile sowie wurde auch das neue Device mit autocreate angelegt.

Übrigens habe ich die Abfrage mit  "EU"
curl -i -v --json "{'snNumber': 'EureHubSeriennummer', 'account': 'EureEmailadresse'}" https://app.zendure.tech/eu/developer/api/applygemacht

Eventuell solltest du diesen Hinweis oben mit angeben, damit andere nicht auch darüber stolpern,
wenn nichts ankommt.

Vielen Dank für die Beschreibung.




mkriegl

@Reinhard: Ja, genau, wie auch Fhemotto beschrieben hat
@Fhemotto: danke für den Tipp. Hätte ich doch mal genauer lesen sollen. Jetzt kommen bei mir auch Daten rein.

Meine defines habe ich zwar noch nicht gefunden, aber muss ich heute abend mal in Ruhe schauen. Danke

Reinhart

#6
Danke für den Hinweis, habe euch das in der Beschreibung einfach unterschlagen, habe den bei mir auch gesetzt gehabt.
Aber schön zu wissen, das auch in der Einstellung "EU" alles klappt.
Es gab ja vor wenigen Tagen ein Update, aber schade das noch nix gesendet werden kann.

Übrigens  ich habe für die Wintermonate vorgebaut und mir über einen Y-Adapter und 2 Dioden zur Entkopplung ein Netzteil mit 400 Watt angeschlossen das ich über Tasmota schalten kann. So kann ich bei Bedarf vor einer Tiefentladung nun Einspeisen und so bequem den Akku wieder zwischen 10-20% bringen.

Da ich ja insgesamt 4 Balkonkraftwerke mit je 4 Panele habe und eine Anlage mit drei Panele fix für den Akkubetrieb zum Laden verwende, kann ich nun bei schwachem Sonnenschein auch mit der überschüssigen Energie der 3 anderen Anlagen den Akku laden. Mit dieser Methode bin ich selbst im März ständig auf 80-96%. Bei Sonnenschein ist der 4KW Akku ohnehin schon um 13:00 Uhr voll. Das Netzteil ist regelbar, somit läßt sich die Leistung auch drosseln.
Zuviel Einspeisen kann man ja nicht, da der Solarflow bei mir die Leistung pro Eingang auf etwa 390 Watt begrenzt. siehe Bild2.
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa