Anleitung: Zendure SolarFlow & SuperBase in Home Assistent einbinden
Aktuell gibt es viel Aufmerksamkeit rund um die ersten Speichersysteme für Balkonkraftwerke und natürlich Powerstations im Allgemein. Einer der Hersteller, der hier mit großen Schritten vorangeht, ist Zendure. In dieser Anleitung erkläre ich euch, wie ihr das SolarFlow System oder SuperBase Powerstations in Home Assistant einbinden könnt.
Über Home Assistant als Smarthome-Plattform brauche ich an dieser Stelle wohl keine großen Worte mehr zu verlieren. Das Smarthome-Hub lässt sich beispielsweise in einem Docker-Container auf einem NAS installieren oder kann natürlich auch auf einer dedizierten virtuellen Maschine betrieben werden.
In dieser Anleitung gehen wir deshalb davon aus, dass ihr bereits ein laufendes Home Assistant System zu Hause habt. Ziel ist es, die Daten, welche Zendure in seiner App bereitstellt, über eine direkte API-Verbindung auch in Home Assistant verfügbar zu machen. Auf geht’s.
Zendure Operating System als Schnittstelle für Home Asisstant
Zendure macht eine Sache richtig, die viele andere Hersteller (derzeit) noch verschlafen: Es gibt tatsächlich eine offene Schnittstelle, die euch das Abfragen der Echtzeitdaten bestimmter Produkte ermöglicht. Das Unternehmen nennt das Ganze „Zendure Operating System“.
Unterm Strich handelt es sich dabei um einen in der Zendure Cloud gehosteten MQTT-Broker, der die Daten von eurem SolarFlow PV-Controller (ja, das klappt!) oder SuperBase Powerstation direkt an Home Assistant pushed.
Die Dokumentation auf der zugehörigen GitHub-Seite ist (zum Zeitpunkt der Veröffentlichung dieses Artikels) noch ziemlich rudimentär. Daher habe ich im Folgenden die wichtigsten Schritte zusammengefasst, um die Sache einfach zum Laufen zu bringen.
Die Voraussetzungen
Bevor es losgehen kann, müssen einige Dinge von euch erledigt werden. Wer sein SolarFlow- oder SuperBase-System bereits betreibt, dürfte diese Dinge aber ohnehin schon erledigt haben:
- Zendure App auf dem Smartphone installieren (Android / iOS)
- Account erstellen
- Zendure Produkt (SolarFlow, SuperBase, etc) über WiFi mit der App (und damit mit der Zendure Cloud) verbinden
- Seriennummer von SolarFlow / SuperBase bereithalten
Alles parat? Dann geht’s weiter.
MQTT-Zugriff generieren
Selbstverständlich muss Zendure alle API-Calls authentifizieren. Ansonsten könnten ja Dritte einfach die Daten eures Systems abfragen. Die Anmeldung am MQTT-Broker von Zendure erfolgt dabei aber nicht direkt über die Nutzerdaten, die ihr für euren Account in der App vergeben habt – das wäre ja zu einfach.
Stattdessen müssen wir uns einen App-Key und einen Token generieren, mit dem wir uns am Server anmelden können, um Daten zu empfangen.
Ich beschreibe das Vorgehen hier unter macOS / Linux. Windows-Nutzer müssen hier kurz recherchieren, wie sie am besten einen REST-API-Call absetzen können. Unter macOS Ventura funktioniert das mit Bordmitteln.
Schritt 1: REST-Call vorbereiten
Als Erstes öffnet ihr ein neues Terminal-Fenster. Mit dem curl-Befehl lässt sich die Anfrage zur Generierung der Zugangsdaten an die Zendure Cloud senden. Dazu müsst ihr im folgenden Befehl entsprechend eure Daten eintragen.
curl -H "Content-Type: application/json" -X POST -d '{"snNumber":"EURE-SERIENNUMMER","account": "EUER-APP-NUTZERNAME"}' https://app.zendure.tech/v2/developer/api/apply
Schritt 2: Payload vorbereiten
Die Anfrage hat eine Payload mit zwei Attributen:
- snNumber: ist die Seriennummer des mit eurem Account verbundenen Gerätes (SolarFlow, SuperBase, etc). Diese findet ihr in der Zendure App unter den Geräteeigenschaften ganz oben. Sie steht auch auf dem Aufkleber des Gerätes selbst.
- account: Ist die Email-Adresse, die ihr für euren Zendure-App-Account verwendet habt.
Ausgefüllt sieht das Ganze als beispielsweise so aus:
curl -H "Content-Type: application/json" -X POST -d '{"snNumber":"Z9U7DHEF","account": "beispiel@email.com"}' https://app.zendure.tech/v2/developer/api/apply
Schritt 3: Daten dokumentieren
Der Server von Zendure antwortet dann mit den entsprechenden Authentifizierungsdaten für den MQTT-Server:
{"code":200,"success":true,"data":{"appKey":"Z7383x8","secret":"FBD7923923DHL389023","mqttUrl":"mqtt.zen-iot.com","port":1883},"msg":"Successful operation"}
Ihr bekommt also eine Payload mit allen Informationen zurück, die ihr für die Anmeldung beim Zedure-MQTT-Server in Home Assistant benötigt. Wichtig sind hier „appKey“, „secret“, die Server-URL und der Port.
Diese Informationen speichert ihr euch am besten direkt in eurem Passwortmanager ab.
SolarFlow und SuperBase Sensoren in Home Assistant einbinden
Jetzt haben wir bereits alle Informationen zusammen, um die Daten von der Zendure-Cloud in Home Assistant einzubinden.
Dazu verwenden wir natürlich die standardmäßig verfügbare MQTT-Integration in Home Assistant:
Menü -> Einstellungen -> Geräte und Dienste -> „+ Neue Integration hinzufügen“ -> nach „MQTT“ suchen -> „MQTT“ auswählen.
Im nächsten Schritt werden mehrere Templates angeboten. Wir wählen hier die oberste Option und ignorieren die Presets.
Jetzt verlangt das System nach den oben generierten Zugangsdaten. Hostname und Port erklären sich von selbst. Der appKey wird als Benutzer eingetragen, das secret ist das Passwort.
Die „erweiterten Optionen“ können deaktiviert bleiben.
Wichtig: Im nächsten Dialog muss unbedingt der Standardwert für den „Discovery-Präfix“ angepasst werden.
Auch hier tragt ihr noch einmal den appKey ein. Home Assistant kann dann automatisch in dem MQTT-Topic nach Sensoren suchen, die zu euren Zendure-Geräten gehören und die automatisch auch als Entitäten zur Verwendung in Home Assistant angelegt werden.
Jetzt erstmal speichern. Home Assistant prüft die Verbindung. Dann dauert es einige Sekunden und im „Geräte und Dienste“-Menü werden unter der MQTT-Integration nach und nach alle Entitäten aufgelistet. Diese könnt ihr hier auch direkt verwalten (umbenennen, Symbole zuweisen…).
Diese HASS-Sensoren sind für SolarFlow verfügbar
Anhand des SolarFlow-Systems werden aktuell folgende Sensoren / Eigenschaften über das MQTT-Topic aus der Zendure-Cloud an Home Assistant übertragen:
Name der Entität | Bedeutung |
buzzerSwitch | Ton-Ausgabe am PV-Hub [An/Aus] |
electricLevel | Aktueller Ladestand des Akkus [%] |
hubState | ? |
masterSwitch | Gerätestatus [An/Aus] |
outputHomePower | Aktuelle Ausgabeleistung (an Wechselrichter) [W] |
outputLimit | Maximal erlaubte Leistung an Wechselrichter (?) [W] |
outputPackPower | Entnahmeleistung aus Akku W] |
packInputPower | Ladeleistungeistung in Akku [W] |
packNum | ? |
packState | ? |
remainInputTime | verbleibende Ladezeit bei aktueller Ladeleistung (?) [s] |
remainOutTime | verbleibende Entladezeit bei aktueller Entnahmeleistung (?) [s] |
socSet | Eingestellte SOC-Obergenze [%] |
solarInputPower | Aktuelle PV-Leisgung [W] |
Die Datenübertragung in der App ist dabei derzeit offensichtlich grundsätzlich stabiler, als über MQTT an Home Assistant. Teilweise kommen für einige Sekunden keine Daten aus der Cloud. Home Assistant hat in seinen Wertereihen dann fehlende Werte. Das muss man für eine mögliche Energiemengenberechnung aus den Leistungswerten dann ggf. berücksichtigen / glätten.
Im Bestfall kommen für jeden Sensor aber tatsächlich sekündlich Daten über MQTT in Home Assistant aus der Cloud an.
Schlusswort
Ich hoffe, euch hat diese Anleitung dabei geholfen, euer Zendure-System in Home Assistant zu integrieren. Aktuell läuft das alles noch über MQTT. Ich würde mir wünschen, dass wir mit steigender Verbreitung der Zendure-Produkte vielleicht eines Tages eine eigene Zendure-Integration für HASS zu sehen bekommen.
Bis dahin: Viel Erfolg mit eurem Setup und viel Spaß beim Experimentieren.
Hallo, bin nach der Anleitung vorgegangen. Die Sensoren von Solarflow werden in HA angezeigt, aber ich kann diese nicht im Energy Dashboard einbinden, da sie im Feld „device_class“ nicht „energy“ stehen haben sondern „power“. Kann man das anpassen? Soweit habe ich das zumindest verstanden.
Grüße
Benjamin
Hallo Benjamin,
schön, dass es prinzipiell schon einmal klappt. Das Energy-Dashboard will einen Sensorwert haben, der eine Energiemenge repräsentiert. Das System gibt aber leider nur eine Leistung und keine kumulierte Energiemenge aus. Die müsstest du also über die Zeit mit einem Custom Sensor aufsummieren und dann diesen Wert verwenden (Leistung * Zeit = Energie).
Viele Grüße,
Nils
Hallo Nils,
vielen Dank für die grundlegende Anleitung, die nachdem ich den REST-Call mit dem europäischen Server probierte mir die Authentifizierungswerte zurückgab. Wäre es vermessen zu fragen, ob Du auf die Umrechnung näher eingehen könntest. Ich habe schon Probleme aus den zahlreichen Entitäten die Richtigen rauszusuchen. Um das Energie-Dashboard für den Batteriespeicher zu konfigurieren benötigt man ja die Energie, die in die Batterie fließt und die aus der Batterie abgegeben wird. Und welchen Zeitwert sollte ich nehmen. Eventuell könntest Du die Anleitung ja erweitern.
Viele Grüße
Andreas
Hallo Andreas,
derzeit fehlt mir leider die Zeit, um an der Anleitung zu arbeiten.
Dein Anwendungsfall sollte sich aber mit der Utility Meter Integration (https://www.home-assistant.io/integrations/utility_meter/) abdecken lassen. Diese nimmt als Input einen Leistungswert (z.B. Input und Output Power von der Zendure) und integriert die Energie entsprechend über die Zeit auf. 🙂
Viele Grüße,
Nils
Hallo!
Toll, dass du dich diesem Thema angenommen hast.
Gerne möchte ich die Daten in einem mqtt Client ansehen.
Ich bekomme zwar das connect, jedoch Keine Daten.
Ich habe die apps TTQM und MQTT Explorer benutzt.
Über HASS funktioniert alles!
LG
misg
Hallo misg,
danke für deinen Kommentar. Hast du den Discovery-Präfix in den anderen beiden Clients angepasst? Sonst bekommst du nur eine Verbindung, siehst aber das Topic nicht zwingend.
Grüße,
Nils
Hallo Nils,
ich dachte mir schon, dass es wohl daran liegt! Dies schreibstdu ja auch in deinem Blog.
Leider gibt es ein solches Datenfeld in diesen MQTT Clients nicht. Gibt es äquivalente Namen dür den Discovery-Präfix? Wenn ich es richtig interpretiere ist es doch ein Such-Präfix?
Du merkst es sicher, ich habe hatte nicht viel Berührung mit MQTT.
LG
Michael
Hallo misg,
der Discovery-Prefix ist quasi der Wurzel-Pfad des MQTT-Topics. Der Aufbau in Home Assistant ist//[/]/config. Im Normalfall ist der Prefix auf „homeassistant“ gesetzt. Das funktioniert aber mit dem Zendure-Topic nicht, daher wird dieses geändert.
In den anderen Clients musst du das Topic dann entsprechend analog ansprechen. Ich kenne aber leider deren Funktionsweise in diesem Punkt nicht. 🙁
Viele Grüße,
Nils
Hallo,
super Anleitung, hat alles auf Anhieb funktioniert. Die Daten kommen schnell rein.
Habe dazu extra Home Assistant in meinem Proxmoxserver installiert- und es klapp alles.
Auch die Intergation in Iobroker über den Adapter Hass läuft zuverlässig.
Da ich in meinem „Homesystem“ schon den MQTT Explorer nutze, würde ich die Datenabfrage bei Zendure darüber abwickeln. Die zahlreichen Daten gehen dann an den Iobroker MQTT-Client.
Dies möchte ich auch für Zendure einrichten.
Geht dies? und wie ???
MfG
KHK
Hallo KHK,
das sollte prinzipiell möglich sein. Wie aber misg schon geschrieben hat, scheinen wir hier erst noch die richtige MQTT-Konfig finden zu müssen. Ich habe es aber noch nicht mit anderen MQTT-Tools probiert und im Moment fehlt mir leider auch die Zeit.
Solltet ihr etwas herausfinden, teilt die Infos sehr, sehr gerne hier! 🙂
Viele Grüße,
Nils
Hallo Nils,
vielen Dank für die schnelle Antwort. Dann werde ich hier regelmäßig mal reinschauen, ob es was neues gibt.
Nebenbei eine ganz andere Frage zum ZendureFlow:
Vielleicht gibt es da schon Lösungen oder Erkenntnisse? Herr „Google“ ist da bis jetzt ratlos ??
Ich will mein Akkuanschlusskabel vom Hub zum Akku verlängern – (Akku frostsicher unterbringen).
Also Kabel in der Mitte trennen – über Abzweigdosen Verlängerung zum anderen Ende des Akkukables.
Ich frage hier mal nach dem Motto: Kennt man jemanden, der einen kennt, der das weiß :-)))
Viele Grüße
Karl-Heinz
Hallo KHK,
das ist bei diesem Spezialkabel natürlich eine kniffelige Sache. Möglich ist es sicher irgendwie. Das Wichtigste dürfte die Verwendung hochwertiger und für die Querschnitte / Ströme zugelassener Klemmen sein. Bin da aber kein Profi. Was dann mit der Garantie des Gerätes passiert, solltest du vorher aber wohl prüfen.
Viele Grüße,
Nils
Hallo Nils,
danke für die Informationen. Ich hatte nun Kontakt zu Zendure-Support, die haben innerhalb von 3 Tagen geantwortet und mir u.a. von einer Verlängerung abgeraten – dann lasse ich es auch.
Baue mir nun eine gedämmte Box mit geregelter Heizung/Kühlung.
ZumThema MQTT Explorer oder Iobroker MQTT-Client:
Habe von „misg“ die Kommentare verfolgt. Im letzten beschreibt er ja den Topic, damit kann ich was anfangen, aber wo und was trägt man bei den anderen Datenpunkten ein?
Gibr es dafür schon eine Zusammenfassung?
Viele Grüße Karl-Heinz
Hallo Karl-Heinz,
ist vielleicht nicht auf den Punkt das was du suchst, aber dennoch wert
anzuschauen!
RedOdo 48V 100Ah + Zendure Solarflow – YouTube
LG
misg
Hallo KHK,
bringe doch den PV Hub auch frostsicher unter und verlängere einfach die PV Kabel…
Hallo Nils,
der Topic ist
„appkey“/#
LG
midg
Hallo misg,
danke dir. Das heißt, damit läuft es jetzt bei dir?
Grüße,
Nils
Moin,
ich kann nun die Daten sowohl im iobroker empfangen, als auch mit einer mqtt app!
Was mir noch nicht gelungen ist, nur einen speziellen Wert auszulesen.
Beispiel: nur den Wert für die Kapazität der Batterie „electricLevel“.
Im iobroker, als auch in den mqtt apps werden config-zeilen gezeigt:
{„unique_id“:“tt8119mcelectricLevel“,“state_topic“:“eysh69YL/tt8119mc/state“,“unit_of_measurement“:“%“,“command_topic“:“eysh69YL/tt8119mc/electricLevel/set“,“name“:“electricLevel“,“device_class“:“battery“,“value_template“:“{{ value_json.electricLevel}}“}
Damit weiss ich nicht umzugehen.
Hast du eine Idee?
LG
misg
Freue mich, dass es diese Lösung gibt und es scheint auch alles simple.
Aber ich finde kein Discovery-Präfix und habe bei MQTT auch nur ein Entität darunter stehen.
Auch der Server ist nicht darüber angezeigt.
Die Generierung lief aber mit „success“.
Erst dachte ich dass meine Email-Adresse vorne groß geschrieben wird, war der Fehler und machte es erneut, aber AppKey und Secret-PW waren identisch.
Ich bin mir auch nicht sicher, ob die SN des SolarFlow nur als Dummy so kurz (7 Zeichen). Meine ist deutlich länger…
Weiß einer Rat?
LG
Chris
Hallo Chris,
ja, die Seriennummmer im Artikel ist ein Dummy – hast du Recht. Die echte ist länger. Sofern du via Terminal ein Token mit „Success“ zurückbekommst, sollten die Daten stimmen.
Hast du die aktuellste Home Assisstant Version installiert? Eigentlich sollte das Feld ganz normal im MQTT-Assistent auftauchen.
Viele Grüße,
Nils
Hallo Nils,
danke für die Info mit der SN.
Ja, alles aktuell im HomeAssistant und Success mit den beiden Werten kam auch zurück.
Muss ich noch ein Script ausführen oder einsetzen (configuration.yaml oder so) ?
MQTT steht immer noch nur mit „1 Eintrag“ dort. Diesen aufgerufen findet sich nur:
Integrationseinträge
mgtt.zen-iot.com
Keine Geräte oder Entitäten
Mhhm..
Hi Chris,
eine Anpassung an der configuration.yaml ist nicht notwendig, da ja alles über die MQTT-Integration läuft. Ist also alles rein im Frontend zu machen.
Das Präfix gibst du im zweiten Schritt der Konfiguration ein. Bei dir sieht es so aus, als hätte er zwar eine Verbindung aufgebaut zum Server, jedoch wurde das richtige Topic nicht gefunden. Das Werte geliefert werden (das Zendure-Gerät also Daten sammelt) ist sichergestellt, oder?
Viele Grüße,
Nils
Hallo Nils,
zumindest sehe ich die in der App, also sind sie ja in der Cloud.
Genau das verstehe ich nicht. Warum mir dieser kleine finale Schritt, damit er zu lesen anfängt, nicht möglich sein will?!
Ich würde mich nämlich sehr freuen, wenn ich hier endlich outputgerecht steuern könnte…
Und deine Anleitung ist ja eigentlich absolut einfach und perfekt dargestellt.
VG
Chris
Hallo Chris,
wirklich komisch. Ich habe dir im Artikel noch mal ein Bild von dem Dialog mit dem Discovery-Präfix eingefügt.
Hast du sonst die Möglichkeit eine Vanilla-Installation von Home Assistant in einem neuen Container (oder einer VM) für einen Test aufzusetzen und zu prüfen, ob es hier klappt? Es ist natürlich nie auszuschließen, dass mit der HASS-Konfig generell etwas nicht stimmt.
Viele Grüße,
Nils
Hi Nils,
ich kann Dir nicht sagen, wie es jetzt genau dazu kam, ich habe in den Erweiterungen (bei der Einrichtung/Konfig MQTT) rumgespielt (Protokoll von AUS auf Auto und wieder zurück oder so…), die ja eigentlich unangetastet bleiben sollten und plötzlich kam auch die Maske mit dem Discovery Präfix.
Nun habe ich schon mal 8 Enititäten! 🙂 THX!!
Gruß
Chris
Hi Chris,
sehr cool! Viel Spaß damit! Bis alle Entitäten auftauchen, kann es etwas dauern (einige Minuten).
Viele Grüße,
Nils
Hallo misg,
man kann aus dem Iobroker-Client nur aus dem Datenpunkt:
9Faxxxxx/Qa62xYuT/state
Werte auslesen.
Beispiel für einige Werte:
{„solarInputPower“:385,“outputPackPower“:365,“packInputPower“:100,“packInputPower“:100,“outputHomePower“:100,“electricLevel“:100,}
komplett: (es werden aber nicht alle Daten von Zendure übertragen ???)
habe die einzelnen Namen aus
9Faxxxxx/sensor/device/Qa62xYuTsolarInputPower/config kopiert
{„solarInputPower“:385,“outputPackPower“:365,“packInputPower“:100,“packInputPower“:100,“outputHomePower“:100,“outputLimit“:100,“inputLimit“:100,“remainOutTime“:100,“remainInputTime“:100,“packState“:100,“packNum“:100,“electricLevel“:100,}
Habe die „100“ nur als Platzhalter eingetragen
Iobroker Script : (nicht vollständig)
0_userdata.0.MQTT-Zendure.Wert_aus_MQTT_auswählen_9Faxxxxx/Qa62xYuT/state
any
ZendureObjekt
val
0_userdata.0.MQTT-Zendure.Wert_aus_MQTT_auswählen_9Faxxxxx/Qa62xYuT/state
ObjektZendure
ZendureObjekt
0_userdata.0.MQTT-Zendure.outputHomePower
FALSE
outputHomePower
ObjektZendure
0_userdata.0.MQTT-Zendure.solarInputPower
FALSE
solarInputPower
ObjektZendure
0_userdata.0.MQTT-Zendure.electricLevel
FALSE
electricLevel
ObjektZendure
0_userdata.0.MQTT-Zendure.outputPackPower
FALSE
outputPackPower
ObjektZendure
0_userdata.0.MQTT-Zendure.packInputPower
FALSE
packInputPower
ObjektZendure
Textdatei einfach in Iobroker –Script einfügen.
Dient als Ansatz, ist ausbaufähig – Fehler noch möglich .
Hinweis, wenn einige Datenpunkte „null“ anzeigen – ändert sich, wenn diese von Zendure übertragen werden.
Ich hoffe, dass ich helfen konnte
PS: heute durch viel ausprobieren gefunden
VG
Karl-Heinz
Hi Karl-Heinz,
klasse! Vielen Dank für’s Teilen! Auch guter Tipp mit den initialen „NULL“-Werten.
Viele Grüße,
Nils
Hallo Zusammen,
Ich frage den Zendure MQTT Broker mit NodeRed ab und schiebe die Daten in eine InfluxDB. Dort liegen auch die Daten anderer Sensoren. Das Ganze visualisiere ich mit Grafana. So weit so gut läuft das recht stabil. Wie oben schon erwähnt, kommen tatsächlich für einen kurzen Zeitraum mal keine Daten, das stört mich aber nicht. Meine eigentliche Energiemessung mache ich mit lokalen Sensoren.
Und jetzt komme ich zu meinem Problem. Ich würde gerne das outputLimit über MQTT verändern. Über die App geht das in 100Watt Schritten. Über den MQTT Explorer findet man etwas unter folgenden Topic
xxxxxxxx/sensor/device/yyyyyyyoutputLimit/config
{
„unique_id“:“yyyyyyyoutputLimit“,
„state_topic“:“xxxxxxxx/yyyyyyy/state“,
„command_topic“:“xxxxxxxx/yyyyyyy/outputLimit/set“,
„name“:“outputLimit“,
„value_template“:“{{ value_json.outputLimit}}“
}
Ich habe schon ein Reihe an Syntaxen versucht um einen MQTT Set Befehl abzusetzen, leider ohne Erfolg. Ich weiss nicht mal ob man was in Richtung Zendure pushen kann?
Auf der Git Seite gibt es schon einen Issue dazu:
https://github.com/Zendure/developer-device-data-report/issues/25
Hat vielleicht jemand hier eine Idee?
Hallo Borkk,
gute und sehr interessante Frage. Ich befürchte, aktuell ist das alles via MQTT read-only. Ich denke Zendure wird hier in der App wohl eine andere API nutzen (ist aber nur eine Annahme), um das Output-Limit zu setzen.
Viele Grüße,
Nils
Hallo Nils,
ich denke auch das der MQTT Broker ReadOnly ist. Was allerdings dagegen spricht, ist die Tatsache, dass ich beim testen verschiedener Syntaxe, es geschafft habe das outputLimit auf 0W zu setzen. Ich bin leider kein Entwickler und bin mir daher nicht sicher wie ein passender „MQTT set Befehl“ aussehen müsste. Wenn mir jemand dabei helfen kann, bekommen wir es u.U. doch hin.
Oh das wäre spannend. Wenn man nämlich den Output Wert über MQTT setzen könnte dann könnte man das was sonst diese Zendure SmartPlugs machen viel besser und genauer mit HomeAssistant abbilden.
Hallo würdest du uns deinen NodeRed Flow und das Grafana Board teilen ?
Moin,
ich bekomme nie Werte für packInputPower, stattdessen bekomme ich immer packInputPower. Egal ob geladen oder entladen wird. Woran kann das liegen?
Hallo Marvin,
ich glaube, du hast dich vertippt, oder? Woran es liegt, dass nur bestimmte Werte ankommen, kann ich leider auch nicht sagen. Das höre ich so selektiv zum ersten Mal.
Viele Grüße,
Nils
Ja tatsächlich, ich bekomme nur output Werte egal in welche Richtung der Strom fließt.
Hi zusammen,
nun habe ich auch ein Solarflow mit 4 Batterien.
Eigentlich finde ich ziemlich praktisch, auf diese Art die Energie zu speichern, die wir zu dem Zeitpunkt nicht selbst verbrauchen und damit bisher gratis ins Netz eingespeist haben.
So weit, so gut.
Um die Daten in den HA zu bekommen, habe ich eine interessante Sache gefunden: EMQX.
https://smarthomescene.com/guides/setting-up-emqx-mqtt-broker-in-home-assistant/
Der HA Mosquitto muss vorher deaktiviert werden, meine Geräte wie Shelly, Wemos mit Sensoren etc schicken die Daten nun an EMQX. Den MQTT Broker von Zendure konnte ich hinzufügen, das Login klappt, bisher (seit gestern Abend) habe ich allerdings noch nicht das Monitorring aktivieren können, dort kommt die Fehlermeldung 400 BAD_TOPIC: Topic already registered wenn ich den Topic user/device/state/inputpower hinfügen will.
Damit bin ich als auch noch nicht ganz durch……
Was mich auch bewegt ist, ob man nicht einen Wemos die Aufgabe zuteilen könnte, die Daten aus der Cloud zu holen.
Damit hätte man mit dem Wemos einen direkten Sensor im HA.
Ich habe mal angefangen:
esphome:
name: solarflow
friendly_name: Solarflow
esp8266:
board: d1_mini
# Enable logging
logger:
logs:
component: ERROR
# Enable Home Assistant API
api:
ota:
web_server:
port: 80
wifi:
ssid: xxxxxx
password: xxxxxxx
captive_portal:
external_components:
– source: github://pr#3289
components: [„json“]
mqtt:
broker: mqtt.zen-iot.com
port: 1883
username: xxxx
password: xxxxx
topic_prefix: xxxx
#log_topic: ${mqtt_prefix}/logs
discovery_prefix: xxxx
discovery: xxxx
client_id: xxxx
sensor:
– platform: mqtt_subscribe
name: „OutputHomePower“
id: outputHomePower
topic: xxx/xxxxx/state/outputHomePower
Auch damit stecke ich fest, die Konvertierung der Daten von json scheinen Probleme zu machen.
Die FM ist dann: Can’t convert ‚{„outputHomePower“:127,“packInputPower“: 101}‘ to number!
Die Datenstreams scheinen damit nicht auf gesplittet werden zu können.
Ich wäre froh, bei den beiden Problemen etwas Hilfe oder Ideen zu bekommen.
Gruss
Lopo
https://github.com/z-master42/solarflow
Das war die Lösung für mich!
Hi Lopo,
danke dir für den wertvollen Link!
Grüße,
Nils
Hallo, kannst du mir kurz erklären wie der Emqx konfiguriert werden muss damit ich Daten erhalte? Eine Verbindung habe ich schon aufgebaut aber ich habe mit den Topics ein Problem.
Hallo Lego,
entschuldige bitte die verzögerte Freischaltung! Ich nutze Emqx leider nicht und habe daher keine konkrete Erfahrung mit der Konfiguration. 🙁
Vielleicht kann dir jemand anderes hier helfen? Wenn du es anderweitig herausfindest, wäre ich (und sicherlich auch andere Leser) sehr dankbar, wenn du es hier kurz zusammengefasst teilst. 🙂
Viele Grüße,
Nils
Hallo zusammen
Ich beschaftige mich erst seit kurzem mit dem Thema Home Assistant und wollte nun die erforderlichen Daten zur Anbindung meines Zendure Solarflow wie oben beschrieben unter Ubuntu auslesen. Ich scheitere aber leider bereits bei Schritt 2 der Anleitung. Den dort beschriebenen Befehl habe ich mit der Seriennummer meines Hubs und der E-Mail Adresse vervollständigt und im Terminalfenster ausgeführt. Dabei bekomme ich folgende Meldung:
{„code“:400,“success“:false,“data“:{},“msg“:“Please bind the device first“}
Kann mir jemand sagen was ich falsch mache oder vorab vielleicht erst machen muss? Ich muss noch dazusagen, dass ich mich in der Linuxwelt nicht allzu gut auskenne und bin für jeden (für mich nachvollziehbaren) Tipp dankbar. Besten Dank im Voraus!
Hi Vuki,
die Fehlermeldung klingt für mich danach, als wäre dein PV-Hub noch nicht mit deinem Zendure Account verbunden. Hast du bei der Einrichtung die Verbindung per Wifi gewählt und ist das Hub korrekt mit dem Internet / der Zendure Cloud verbunden?
Möglichkeit 2: Vertippt hast du dich bei der Seriennummer oder Mail nicht zufällig? 🙂
Viele Grüße,
Nils
Hallo Nils
Die Anlage und somit auch der Hub ist über WiFi korrekt mit dem Account verbunden und ich kann auch alles über die App steuern. Einen Tippfehler hatte ich anfangs auch in Verdacht. Aber auch das kann ich mit absoluter Sicherheit ausschließen. Der Hund muß anscheinend woanders begraben sein. Nur rätsel ich immer noch wo!
VG, Vuki
Hallo Vuki,
das ist ja sehr merkwürdig. Ich habe leider auch keine wirkliche Idee. Hast du mal die Seriennummer auf dem Aufkleber des Solar Flow mit der Seriennummer in der App (unter den Geräteinfos des Hubs) verglichen?
Falls die identisch sind, würde ich mich mal direkt an Zendure wenden. Ganz unten auf der GitHub-Seit steht ja eine Mail-Adresse.
Ich freue mich, wenn du hier deine Lösung teils, sobald du es zum Laufen bekommen hast. 🙂 Viel Erfolg!
Viele Grüße,
Nils
Hallo Nils
Danke für den Tipp! Die Seriennummer auf dem Hub werde ich mal bei Gelegenheit mit der in der App vergleichen. Wenn ich dann irgendwann des Rätsels Lösung habe, teile ich es natürlich.
VG, Vuki
Hallo Nils
Heureka, ich hab´s!!!
Ich hab jetzt den Link im curl-Befehl einfach mal durch diesen hier ersetzt den ich auf der GitHub-Seite gesehen habe: https://app.zendure.tech/eu/developer/api/apply
Und siehe da … Bingo!
🙂
VG, Vuki
Hallo Vuki,
Super, dass ist ja top! Ich nehme das später mal oben im Artikel als Hinweis auf.
Grüße und danke fürs Teilen,
Nils
Hallo Nils
Die Anbindung hat Dank deiner Anleitung und dem abgeänderten Link funktioniert. Was mich aber seither beschäftigt ist:
Lassen sich die Aktualisierungsintervalle auch ändern? Für mich sind hauptsächlich die Entitäten „electric level“ und ’solar power 1 und 2″ interessant. Aber die Werte aktualisieren sich allem Anschein nach nur alle paar Minuten so dass die momentane und tatsächliche Ausgabe verfälscht wird. Hast du da vielleicht einen Tipp für mich? Besten Dank im Voraus und VG!
Vuki
Hallo Vuki,
ich fürchte, dadran kann man nicht viel drehen. Home Assistant lauscht ja dauerhaft auf dem MQTT-Topic nach neuen Werten. Wie oft diese in das Topic geschrieben werden, bestimmt Zendure auf ihrer Cloud-Seite. Etwas anderes wäre mir nicht bekannt.
Viele Grüße,
Nils
Hallo Leute ,
Es freud mich das einige es geschaft haben eine Rückmeldung zubekommen,bei mir klappt es leider nicht.
habe das als INFO “ curl -H „Content-Type: application/json“ -X POST -d „{\“snNumber\“: \“PO1HLDDLEK02347\“, \“account\“: \“xxxxx@t-online.de\“}“ „https://app.zendure.tech/v2/developer/api/apply“
Antwort:
{„code“:400,“success“:false,“data“:{},“msg“:“Please bind the device first“},
Gehe ich auf : https://app.zendure.tech/eu/developer/api/apply bekomme ich folgende Antwort:
code 405
success false
data {}
msg „Request method ‚GET‘ not supported“
was mach ich falsch SN & E-Mail sind OK
mfg
Peter
Hallo Nils,
nachdem ich nach dieser Anleitung mein System zum Laufen gebracht habe (siehe obige Beiträge) stehe ich jetzt“auf dem Schlauch“
Habe alles neu gemacht (musste eMail ändern usw.) und wollte nach alter bewährter Methode wieder Zendure in MQTT einbinden – nach curl -H „Content-Type: application/j ……(mit der neuen eMail unter der ich mich auch in der Zendure-App angemeldet habe – das läuft auch hier richtig)
bekomme ich folgende Rückmeldung:
{„code“:400,“success“:false,“data“:{},“msg“:“Please bind the device first“}root@2024-IO-Zendure:~# ^C
root@2024-IO-Zendure:~#
Was mache ich falsch ??
mit der alten eMail bekomme ich zwar die richtige Rückmeldung – aber mit diesen Daten keinen Zugriff über MQTT..
Kannst du mir helfen ?
KHK
Hallo,
meine Abfrage im HA über MQTT funktioniert sehr gut.
rdings habe ich in einem Forum gelesen, dass jemand auch die Akku Temperaturen dargestellt hat. Ich habe aber keine Entität dafür.
Weiß jemand warum und wie ich vielleicht zu de Temperaturen komme?
Hi,
curl -H „Content-Type: application/json“ -X POST -d ‚{„snNumber“:“xxxx“,“account“:“xxxx“}‘ https://app.zendure.tech/eu/developer/api/apply
returns
{„code“:400,“success“:false,“data“:{},“msg“:“JSON parse error: Cannot construct instance of `org.zendure.device.dto.DeveloperApplyDto` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value (‚{snNumber:xxxx,account:xxxx}‘); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `org.zendure.device.dto.DeveloperApplyDto` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value (‚{snNumber:xxxx,account:xxxx}‘)\n at [Source: (PushbackInputStream); line: 1, column: 1]“}
Any idea?
Hallo zusammen,ich habe das gleiche Problem ,bekomme immer die Fehlermeldung das meine seriennummer nicht regestriert ist obwohl in der App alles funktioniert.
ich habe beides probiert v2 und eu
die seriennummer ist auf dem Karton die gleiche wie in der App
was kann ich noch Probieren ??
Hallo Nils, ich verzweifle an dem curl-Befehl, mache es von meinem Macbook Air und bekomme die msg: „Please bind the Device first“, ich dachte vlt. erkennt er die Seriennummer nicht und habe schon O gegen 0 getsuscht und umgekehrt, aber es will nicht, hast Du eine Idee ?
Moin Gerd,
stimmen die Email von deinem Account und die Seriennummer denn überein? Am besten die Seriennummer aus der App kopieren.
Viele Grüße,
Nils
Hallo!
erst einmal großes Dankeschön für die tolle Anleitung.
Ich habe aktuell mit der AIO 2400 das Problem, dass sowohl Home Assistant, als auch der MQTT Explorer keine Daten anzeigen.
Die Zugangsdaten habe ich nach der URL Umstellung auf EU problemlos auslesen können.
Hat einer eine Idee?
hi Henrik,
gleiches Problem bei mir, ich kann machen was ich will und komme an keine Daten.
Falls du eine Lösung kennst, würde mich über eine kurze Info freuen.
Hallo. erstmal danke für die super Anleitung.
Es läuft auch soweit. Nur, dass mir die mqtt Integration mit Entitäten „zugemüllt“ wird. Waren es bei der ersten Einrichtung 18, sind es jetzt einige mehr. Dabei handelt es sich aber scheinbar nur um Duplikate. z.b: sensor.electriclevel_2 usw. Teilweise kommt schon …._3. Dabei wird mir bei diesen angezeigt, dass sie von der Integration nicht mehr unterstützt werden und in den Einstellungen gelöscht werden sollen. Das kann/muss ich also auch täglich tuen…
Das Abschalten von Hinzufügen neuer Entitäten in den Systemoptionen bringt auch nichts. Dann werden sie als deaktiviert hinzugefügt und ich kann sie noch nicht Mal mehr löschen.
Dafür Lösungsideen?
Hi Julian,
das Problem habe ich so noch nie gehabt. Hilft das Löschen der gesamten MQTT-Instant in Home Assistant? (Ich weiß nicht, welche Daten dabei aus der Datenbank verschwinden – also vorsichtig damit sein). Oder meinst du das bereits mit neu hinzufügen?
Viele Grüße,
Nils
Hatte eben eigentlich nicht vor meine aufwendig eingerichtete Integration komplett zu löschen und wieder neu zu machen (Automationen usw ). Das meinst du oder?
Nochmal zur genauen Erklärung: wenn ich die Integration eingerichtet habe, dauert es ja ein paar Minuten und es werden die Entitäten angezeigt. ElectricLevel, sensorInput usw. Es läuft ja auch auch soweit.
Nur wenn ich dann am Tag Mal auf die Mqtt Integration schaue zeigt er mir pro Tag 3 Entitäten mehr an: Da sind dann z.b. electricLevel_2 und so. Dazu dann den Status mit Warnhinweis: Diese Entität wird nicht mehr von der Integration bereitgestellt. und ich solle sie in den Einstellungen löschen.
Würde sagen, das passiert pro Tag bei 3-5 Entitäten. Hochgerechnet wären das in 3 Monaten dann fast 500 Entitäten?? Davon sind aber eigentlich nur 18 „echt“.
Das ist doch komisch oder?
Oder nimmt das gar kein Speicherplatz weg und ist nur was kosmetisches?
Habe jetzt wie gesagt Mal ausprobiert bei der Mqtt Integration das automatische ziehen der Entitäten auszuschalten. das Phänomen tritt trotzdem auf. Nur das er die Entität gleich als deaktiviert einfügt.
Hallo Julian,
das ist in der Tat komisch und mir noch nie so untergekommen. Ich kann mir kaum vorstellen, dass auf Zendure Seite in dem Topic dauernd neue Entitäten auftauchen. Hier scheint sich wohl eher Home Assistant zu verhaken und aus irgendeinem Grund neue Entitäten zu erstellen, weil offenbar ein „Unterschied“ zu den bereits vorhandenen Entitäten erkannt wird.
Ich würde in einem Docker-Container in einer Vanilla Home Assistant Installation einfach nur mal die MQTT-Integration aktivieren und die Einbindung hier checken, um auszuschließen, dass deine aktuelle HASS Config irgendwie einen weg hat.
Bzgl. Speicherplatz: Es wird halt für jede Entität ein Eintrag in die DB gemacht. Wenn dazu jedoch keine Werte kommen, dürfte sich der Speicherverbrauch wohl sehr im Rahmen halten. Die DB „müllt“ es streng genommen aber trotzdem zu.
Viele Grüße,
Nils
Hatte jetzt doch Mal die gesamte Integration gelöscht und neu hinzugefügt. Ein Tag nichts.. Dann wieder zwei zusätzliche …._2 Entitäten..
Was hat es eigentlich mit der Birth Nachricht auf sich bei der Einrichtung? oder auch die Will Nachricht?
Hier geht es ja scheinbar, um eine ähnliche Problematik, oder? Finde da für mich nur noch nicht den Lösungsansatz raus: https://community.home-assistant.io/t/esphome-entity-duplicated-after-updates/382878/13
Hallo zusammen,
eine echt super Anleitung, die direkt funktioniert! Ähnlich wie JulianM habe ich das gleiche Problem in meinem Home Assitant. Ich bin mittlerweile bei Enititäts-ID _25 angekommen, was bei der Menge an Sensoren echt zu „Datenmüll“ führt.
Gibt es dafür eine Lösung? Bisher habe ich nichts genaueres via Websuche gefunden.
Viele Grüße
Fred
Hallo Fred,
danke für das Feedback. Ich habe bisher leider weder das Problem rekonstruieren können, noch habe ich eine Lösung dafür. Es scheint ja so, als würde aus irgendeinem Grund der Device-Abgleich fehlschlagen, sodass zum gleichen Topic / Unter-Topic eine neue Entität unter Home Assistant durch die MQTT-Integration angelegt wird.
Hast du zu dem Problem mal allgemeiner gesucht? Gibt es da vielleicht ein breiteres Problem derzeit?
Viele Grüße,
Nils
Hallo, bin noch Anfänger in der Sache. Nachdem ich alle Anweisungen von https://github.com/z-master42/solarflow ausgeführt habe, bekomme ich Daten von Solarflow am pc im mqtt-explorer angezeigt und erhalte auf dem Smartphone ebenfalls die Daten in der mqtt-app. Nur in Home Assistant kommt gar nichts. Mein Fehler kann wohl nur in der Konfiguration von mosquitto sein oder die der Integration mqtt. Die Datei zendure.conf habe ich angelegt, mosquitto so wie z-master42 es beschrieben hat konfiguriert. Hat jemand eine Idee ?
Ergänzung: im Protokoll von mosquitto steht:
„Connecting bridge zendure-broker (mqtt…1883) Connection Refused: not authorised Client local.“meine Appkey“ closed its connection“
Hallo Zusammen, ich bin ein Neuling auf dem Gebiete Home Assistant.
Habe 4 Module à 430Wp installiert, dazu ein Zendure Solarflow mit AB2000 und Hoymiles 1600.
Auf einem RPi5 HA installiert und alles nach Anleitung von https://github.com/z-master42/solarflow durchgeführt um über die Bridge in mosquitto zu gehen. Leider bekomme ich keine Daten, im Protokoll von mosquitto steht:
„Connecting bridge zendure-broker (mqtt…1883) Connection Refused: not authorised Client local.“meine Appkey“ closed its connection“.
Irgendwas mache ich in der Konfiguration von mosquitto falsch, denn ich bekomme sowohl Daten über die MQTT-App auf dem Smartphone als auch über de mqtt-explorer am pc.
Hat jemand in der Runde einen Tip für mich voran es liegen könnte?
habe seit heute Früh das Problem das die MQTT Integration von mqtt.zen-iot.com über Port 1883 keine Werte in die Entitäten liefert. Kann das an Zendure bzw. deren Server liegen?
Hab mal Testhalber im CMD (natürlich mit korrekter SNr. und Mailadresse) mit:
curl -i -v –json „{’snNumber‘: ‚HubSNR‘, ‚account‘: ‚E-MAIL‘}“ https://app.zendure.tech/eu/developer/api/apply
nochmals meinen appKey, secret, mqtturl und port angefordert.
Die Antwort ist gleich gekommen, waren die gleichen Daten wie Anfang des Jahres, wo ich Zendure in HA eingebunden hab.
hab dann die Daten im MQTT Broker wie oben beschrieben nochmals geprüft. Auch hier scheint kein Fehler zu sein! Denn werden die Sensoren/Entitäten nicht mehr mit Werten vom Zendure Server versorgt.
In der Zendure App schein alles OK zu sein, sieht aus wie immer, lediglich in Home Assistant zwickts. Hat da jemand eine Idee oder so für micht/uns
Keine Idee, aber ich habe das gleiche Problem. Ging irgendwann heute Nacht los. Die Zendure App funktioniert normal, aber die MQTT Integration bekommt keine Daten.
Hallo zusammen, mir ist aufgefallen, dass seit einiger Zeit meistens nur wenige Parameter über die Zendure MQTT Schnittstelle übertragen werden. Ich habe zwar eine SuperBase V4600 aber das Prinzip/die Schnittstelle ist ja gleich.
Meistens beinhaltet die Nachricht nur {„dcInputPower“:1125,“inputPower“:1125,“remainInputTime“:125,“sn“:“Vxxxxx“}. Aber zum Beispiel der Akkustand, als Parameter ‚electricLevel‘ wird nur sehr spärlich und längst nicht bei jeder Änderung des Werts übertragen.
Ich bilde mir ein, dass dies im Frühjahr noch deutlich zuverlässiger geklappt hat. Habt ihr ähnliche Erfahrungen gemacht?