Alternative Anbindung von Huawei WR
Re: Alternative Anbindung von Huawei WR
Danke, das erklärt mir einiges. Euch allen einen schönen Samstag
Re: Alternative Anbindung von Huawei WR
Der flow von node-red ist ganz einfach - ich werd ihn hier später posten.
Per modbus-tcp werden 2 Registerbereiche vom Huawei Dongle (bzw WR) abgerufen, die landen in einem Buffer (weil modbus nur 16 bit pro Register speichert und die zu einem 32bit Wert kombiniert werden), hier passiert auch die Anpassung der Werte (also Gain, ob Wh oder kWh..). Dann die richtigen Vorzeichen setzen und per mqtt zur openWB (bei mir ein RevPi) schicken.
Wieviel node-red an Rechenleistung braucht, weiß ich nicht. Aktuell ist das Abrufintervall bei 10 sek- ich hoffe, das bestätigt sich als stabil.
Der Verbrauch ist sicher höher als 1W..
Leider kann ich nichts zum Hänger bei der Speicheranzeige beitragen. Mit der neuen Dongle Version sind neue Register dazugekommen- dürfte aber irrelevant sein.
Per modbus-tcp werden 2 Registerbereiche vom Huawei Dongle (bzw WR) abgerufen, die landen in einem Buffer (weil modbus nur 16 bit pro Register speichert und die zu einem 32bit Wert kombiniert werden), hier passiert auch die Anpassung der Werte (also Gain, ob Wh oder kWh..). Dann die richtigen Vorzeichen setzen und per mqtt zur openWB (bei mir ein RevPi) schicken.
Wieviel node-red an Rechenleistung braucht, weiß ich nicht. Aktuell ist das Abrufintervall bei 10 sek- ich hoffe, das bestätigt sich als stabil.
Der Verbrauch ist sicher höher als 1W..
Leider kann ich nichts zum Hänger bei der Speicheranzeige beitragen. Mit der neuen Dongle Version sind neue Register dazugekommen- dürfte aber irrelevant sein.
-
- Beiträge: 7740
- Registriert: Mo Okt 08, 2018 4:51 pm
- Has thanked: 15 times
- Been thanked: 31 times
Re: Alternative Anbindung von Huawei WR
Hier könnte man noch eine Plausibilitätsprüfung einbauen, falls der Dongle Mist liefert oder eben gar keine Werte.jub hat geschrieben: ↑Sa Aug 05, 2023 2:20 pm Der flow von node-red ist ganz einfach - ich werd ihn hier später posten.
Per modbus-tcp werden 2 Registerbereiche vom Huawei Dongle (bzw WR) abgerufen, die landen in einem Buffer (weil modbus nur 16 bit pro Register speichert und die zu einem 32bit Wert kombiniert werden), hier passiert auch die Anpassung der Werte (also Gain, ob Wh oder kWh..). Dann die richtigen Vorzeichen setzen und per mqtt zur openWB (bei mir ein RevPi) schicken.
https://discourse.nodered.org/t/can-nod ... es/53356/5
Das hängt also vom flow selbst ab. Ich bin zuversichtlich, dass der Pi Zero W packt. liest sich zumindest hier so, wenn auch die Kiste etwas langsamer startet.
https://discourse.nodered.org/t/node-re ... ro-w/50874
gesehen?
viewtopic.php?p=90347#p90347
Da kann durch NR mehr werden, aber sicher nur minimal.
VG
Re: Alternative Anbindung von Huawei WR
Beim 1W Verbrauch hab ich mich auf mein Setup (mit dem revpi, der biszu 20 W braucht) bezogen - habe da nicht darauf geachtet.
Eine Prüfung auf Plausibilität ist sicher machbar.
Aktuell, nach 12 h fallen mir noch keine Ausfälle, weder im Logfile noch grafisch auf.
Das ist mein flow für node-red - als extra Module sind installiert:
node-red-contrib-buffer-parser
node-red-contrib-modbus
node-red-contrib-calc (könnte unnötig sein...)
Konfiguration für "Dongle" ist die IP des WR, die ID ist 1 (ebenfalls die des WR)
Der mqtt Befehl geht auf die openWB-IP mit den jeweiligen Topics (da muss man den Pfad an die jeweiligen IDs im mqtt-Pfad an den Counter und Inverter anpassen). Die Topics werden im buffer-parser Node definiert (bei mir 0 für den Zähler und 1 für den WR - das findet man im openWB unter Konfiguration - Geräte und Komponenten - mqtt-Komponente)
Ich hoffe, der Code für den Payload und Vorzeichen-Wechsel ist für Coder nicht zu falsch und absurd umgesetzt - es geht halt so...
EDIT: kleines Update - in der openWB Anzeige stimmt der tägliche, aufsummierte Hausverbrauch und die Summe der Einspeisung nicht. Die aktuell angezeigten Werte schon. Vielleicht stimmt noch ein Vorzeichen doch noch nicht.. aber, nur ein Schönheitsfehler - ich bin schon zufrieden, wenn das Abrufen so fehlerfrei weitergeht.
Eine Prüfung auf Plausibilität ist sicher machbar.
Aktuell, nach 12 h fallen mir noch keine Ausfälle, weder im Logfile noch grafisch auf.
Das ist mein flow für node-red - als extra Module sind installiert:
node-red-contrib-buffer-parser
node-red-contrib-modbus
node-red-contrib-calc (könnte unnötig sein...)
Konfiguration für "Dongle" ist die IP des WR, die ID ist 1 (ebenfalls die des WR)
Der mqtt Befehl geht auf die openWB-IP mit den jeweiligen Topics (da muss man den Pfad an die jeweiligen IDs im mqtt-Pfad an den Counter und Inverter anpassen). Die Topics werden im buffer-parser Node definiert (bei mir 0 für den Zähler und 1 für den WR - das findet man im openWB unter Konfiguration - Geräte und Komponenten - mqtt-Komponente)
Ich hoffe, der Code für den Payload und Vorzeichen-Wechsel ist für Coder nicht zu falsch und absurd umgesetzt - es geht halt so...
EDIT: kleines Update - in der openWB Anzeige stimmt der tägliche, aufsummierte Hausverbrauch und die Summe der Einspeisung nicht. Die aktuell angezeigten Werte schon. Vielleicht stimmt noch ein Vorzeichen doch noch nicht.. aber, nur ein Schönheitsfehler - ich bin schon zufrieden, wenn das Abrufen so fehlerfrei weitergeht.
Code: Alles auswählen
[{"id":"b6433abaf3452d51","type":"tab","label":"Flow 2","disabled":false,"info":"","env":[]},{"id":"7f8b26b894d97108","type":"inject","z":"b6433abaf3452d51","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"7","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":110,"y":180,"wires":[["ff11a835ca1eb501","e4535fe748ac9bd5"]]},{"id":"ff11a835ca1eb501","type":"modbus-getter","z":"b6433abaf3452d51","name":"Register_37101__counter","showStatusActivities":false,"showErrors":false,"showWarnings":true,"logIOActivities":false,"unitid":"1","dataType":"HoldingRegister","adr":"37101","quantity":"64","server":"09c8a378fd3874d1","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"keepMsgProperties":true,"delayOnStart":false,"startDelayTime":"","x":310,"y":120,"wires":[["af6e83944a61ed6e"],[]]},{"id":"af6e83944a61ed6e","type":"buffer-parser","z":"b6433abaf3452d51","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"int32be","name":"openWB/set/counter/0/get/voltages","offset":0,"length":3,"offsetbit":0,"scale":"/10","mask":""},{"type":"int32be","name":"openWB/set/counter/0/get/currents","offset":12,"length":3,"offsetbit":0,"scale":"/100","mask":""},{"type":"int32be","name":"openWB/set/counter/0/get/power","offset":24,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16be","name":"openWB/set/counter/0/get/power_factors","offset":32,"length":1,"offsetbit":0,"scale":"/1000","mask":""},{"type":"int16be","name":"openWB/set/counter/0/get/frequency","offset":34,"length":1,"offsetbit":0,"scale":"/100","mask":""},{"type":"int32be","name":"openWB/set/counter/0/get/powers","offset":62,"length":3,"offsetbit":0,"scale":"1","mask":""},{"type":"int32be","name":"openWB/set/counter/0/get/exported","offset":36,"length":1,"offsetbit":0,"scale":"/100","mask":""},{"type":"int32be","name":"openWB/set/counter/0/get/imported","offset":40,"length":1,"offsetbit":0,"scale":"*10","mask":""}],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"str","resultType":"value","resultTypeType":"return","multipleResult":true,"fanOutMultipleResult":true,"setTopic":true,"outputs":8,"x":610,"y":120,"wires":[["c73dc80384325c68"],["07c7a13aad3ce048"],["a4ba529e5e0ecae8"],["b5decb0388f34f12"],["c73dc80384325c68"],["d6b1fcfd7fdfab02"],["c73dc80384325c68"],["c73dc80384325c68"]]},{"id":"a4ba529e5e0ecae8","type":"function","z":"b6433abaf3452d51","name":"mal -1","func":"msg.payload = (msg.payload)*-1;\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":970,"y":60,"wires":[["c73dc80384325c68"]]},{"id":"07c7a13aad3ce048","type":"function","z":"b6433abaf3452d51","name":"drei mal -1","func":"msg.payload[0] = (msg.payload[0]) * -1;\nmsg.payload[1] = (msg.payload[1]) * -1;\nmsg.payload[2] = (msg.payload[2]) * -1;\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":990,"y":20,"wires":[["c73dc80384325c68"]]},{"id":"c73dc80384325c68","type":"mqtt out","z":"b6433abaf3452d51","name":"","topic":"","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"1e239b880d809812","x":1250,"y":300,"wires":[]},{"id":"b5decb0388f34f12","type":"function","z":"b6433abaf3452d51","name":"array","func":"msg.payload0 = (msg.payload);\nmsg.payload1 = (msg.payload);\nmsg.payload2 = (msg.payload);\nmsg.payload = [msg.payload0, msg.payload1, msg.payload2];\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":970,"y":100,"wires":[["c73dc80384325c68"]]},{"id":"e4535fe748ac9bd5","type":"modbus-getter","z":"b6433abaf3452d51","name":"Register_32064__inverter","showStatusActivities":false,"showErrors":false,"showWarnings":true,"logIOActivities":false,"unitid":"1","dataType":"HoldingRegister","adr":"32064","quantity":"86","server":"09c8a378fd3874d1","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"keepMsgProperties":true,"delayOnStart":false,"startDelayTime":"","x":330,"y":240,"wires":[["081fb832f71c338b"],[]]},{"id":"081fb832f71c338b","type":"buffer-parser","z":"b6433abaf3452d51","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"int32be","name":"total input","offset":0,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int32be","name":"openWB/set/pv/1/get/exported","offset":84,"length":1,"offsetbit":0,"scale":"*10","mask":""},{"type":"int32be","name":"openWB/set/pv/1/get/power","offset":32,"length":1,"offsetbit":0,"scale":"1","mask":""}],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"str","resultType":"value","resultTypeType":"return","multipleResult":true,"fanOutMultipleResult":true,"setTopic":true,"outputs":3,"x":630,"y":360,"wires":[[],["c73dc80384325c68"],["fcf2a0becc5d88ac"]]},{"id":"d6b1fcfd7fdfab02","type":"function","z":"b6433abaf3452d51","name":"drei mal -1","func":"msg.payload[0] = (msg.payload[0]) * -1;\nmsg.payload[1] = (msg.payload[1]) * -1;\nmsg.payload[2] = (msg.payload[2]) * -1;\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":990,"y":160,"wires":[["c73dc80384325c68"]]},{"id":"fcf2a0becc5d88ac","type":"function","z":"b6433abaf3452d51","name":"mal -1","func":"msg.payload = (msg.payload)*-1;\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":970,"y":400,"wires":[["c73dc80384325c68"]]},{"id":"09c8a378fd3874d1","type":"modbus-client","name":"Dongle","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"failureLogEnabled":true,"tcpHost":"192.168.88.27","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","serialAsciiResponseStartDelimiter":"0x3A","unit_id":"1","commandDelay":"10","clientTimeout":"","reconnectOnTimeout":false,"reconnectTimeout":"","parallelUnitIdsAllowed":true,"showWarnings":true,"showLogs":true},{"id":"1e239b880d809812","type":"mqtt-broker","name":"","broker":"192.168.88.22","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""}]
-
- Beiträge: 44
- Registriert: Fr Mai 12, 2023 7:02 am
- Been thanked: 1 time
Re: Alternative Anbindung von Huawei WR
Hi Jub,
ich bin in NodeRed leider nicht fit. Weißt Du wie die Abfrage angepasst werden müsste damit die IP etc aus einer .ini ausgelesen werden kann?
Viele Grüße Alex
ich bin in NodeRed leider nicht fit. Weißt Du wie die Abfrage angepasst werden müsste damit die IP etc aus einer .ini ausgelesen werden kann?
Viele Grüße Alex
Re: Alternative Anbindung von Huawei WR
Ich bin auch kein Experte - mehr trial and error.
Aber eine config Datei ist möglich, es gibt einen anderen Node dafür, da kann dann ein File (.ini, .config,.txt) "eingespeist" werden.
Ein Vorschlag war auch, das bisherige Modul anzupassen - ich glaube, die Bremse beim Auslesen vom Huawei ist der einzelne Register-Aufruf (denn mir gings bei node-red auch so, einzeln mit ca 10 Aufrufen unzuverlässig), sobald da ein Bereich abgerufen wird, läuft es stabiler.
Es müssten IP des WR/Zählers, IP der openWB (mqtt) und IDs in der Config festgelegt werden.
Ich versuche, da mal drüberzuschauen.
Aber eine config Datei ist möglich, es gibt einen anderen Node dafür, da kann dann ein File (.ini, .config,.txt) "eingespeist" werden.
Ein Vorschlag war auch, das bisherige Modul anzupassen - ich glaube, die Bremse beim Auslesen vom Huawei ist der einzelne Register-Aufruf (denn mir gings bei node-red auch so, einzeln mit ca 10 Aufrufen unzuverlässig), sobald da ein Bereich abgerufen wird, läuft es stabiler.
Es müssten IP des WR/Zählers, IP der openWB (mqtt) und IDs in der Config festgelegt werden.
Ich versuche, da mal drüberzuschauen.
-
- Beiträge: 64
- Registriert: Di Sep 29, 2020 1:19 pm
- Has thanked: 5 times
Re: Alternative Anbindung von Huawei WR
@AlexMetzger
Danke für dein Programm das ist auch für Dummies verständlich die bei "Node Red" nicht mehr als ein Wortspiel zu "Code Red" verstehen;)
Ich hab dein Image probeweise auf nem alten Raspberry 3 installiert - läuft erstmal.
- So wie ich sehe funktioniert das nur unter der OpenWB Software 2.0 korrekt? Gibt es eine einfache Möglichkeit für OpenWB 1.9x, denn zum einen läuft die bei mir stabil, und mit umfangreichen Einstellungen hinsichtlich SmartHome außerdem möchte ich meine Verbrauchshistorie nicht verlieren beim Wechsel auf 2.0 - ich meine dort startet man bei 0 ?!
- Hat jemand das Programm mit WR-Kaskade am laufen, oder kann man davon ausgehen, dass nur die Werte vom Master selber gezogen werden - das wäre hinsichtlich der Regelung schlecht.
Viele Grüße
Danke für dein Programm das ist auch für Dummies verständlich die bei "Node Red" nicht mehr als ein Wortspiel zu "Code Red" verstehen;)
Ich hab dein Image probeweise auf nem alten Raspberry 3 installiert - läuft erstmal.
- So wie ich sehe funktioniert das nur unter der OpenWB Software 2.0 korrekt? Gibt es eine einfache Möglichkeit für OpenWB 1.9x, denn zum einen läuft die bei mir stabil, und mit umfangreichen Einstellungen hinsichtlich SmartHome außerdem möchte ich meine Verbrauchshistorie nicht verlieren beim Wechsel auf 2.0 - ich meine dort startet man bei 0 ?!
- Hat jemand das Programm mit WR-Kaskade am laufen, oder kann man davon ausgehen, dass nur die Werte vom Master selber gezogen werden - das wäre hinsichtlich der Regelung schlecht.
Viele Grüße
-
- Beiträge: 7740
- Registriert: Mo Okt 08, 2018 4:51 pm
- Has thanked: 15 times
- Been thanked: 31 times
Re: Alternative Anbindung von Huawei WR
Schon mal hier geschaut?ArminElectric hat geschrieben: ↑Di Aug 15, 2023 3:11 pm außerdem möchte ich meine Verbrauchshistorie nicht verlieren beim Wechsel auf 2.0 - ich meine dort startet man bei 0 ?!
https://openwb.de/main/?page_id=1104
Auszug
9. Nach der Erstkonfiguration der Module können die Daten der alten software1.9 in die software2 eingespielt werden. Gehen Sie auf Einstellungen -> System -> Datenverwaltung -> Datenübernahme => Übernahme der Log-Daten + Serien-Nr., Achtung, es erfolgt keine Konfigurationsübernahme! Deswegen musste in Schritt 8 neu konfiguriert werden. Bei der Übernahme der Daten aus 1.9 werden die Prozessor-ID + LAN-Mac-Adresse der Steuerungsplatine ausgelesen und auf die neue Micro-SD-Karte geschrieben.
Damit sollten auch die History-Daten kopiert werden. Wenn doch etwas schief geht, kannst Du immer noch deine sw1.9 wiederverwenden.
-
- Beiträge: 64
- Registriert: Di Sep 29, 2020 1:19 pm
- Has thanked: 5 times
Re: Alternative Anbindung von Huawei WR
Super danke dir - das ist klasse bei meiner Forensuche zur Datenübertragung habe ich nur alte scripts von Github gefunden mit denen ein Dummy wie ich genauso wenig anfangen kann.
Werden dabei auch wirklich alle Logs übernommen?
Ich tracke den Stromverbrauch einiger Haushaltsgeräte bspw. auch der Wärmepumpe über Shellys, heißt die OpenWB übernimmt bei mir DIE zentrale Rolle der Energievisualisierung samt eigenem Tablet im Flur.
Ich hoffe es klappt alles. Ich mach mich dran und werde in jedem Fall berichten ob die Huawei Kaskade abgebildet wird.
Viele Grüße
Werden dabei auch wirklich alle Logs übernommen?
Ich tracke den Stromverbrauch einiger Haushaltsgeräte bspw. auch der Wärmepumpe über Shellys, heißt die OpenWB übernimmt bei mir DIE zentrale Rolle der Energievisualisierung samt eigenem Tablet im Flur.
Ich hoffe es klappt alles. Ich mach mich dran und werde in jedem Fall berichten ob die Huawei Kaskade abgebildet wird.
Viele Grüße