Alternative Anbindung von Huawei WR

Klagesm
Beiträge: 11
Registriert: Do Jul 27, 2023 9:53 am

Re: Alternative Anbindung von Huawei WR

Beitrag von Klagesm »

Danke, das erklärt mir einiges. Euch allen einen schönen Samstag
aiole
Beiträge: 7717
Registriert: Mo Okt 08, 2018 4:51 pm
Has thanked: 14 times
Been thanked: 27 times

Re: Alternative Anbindung von Huawei WR

Beitrag von aiole »

Also ein 2. RPi OHNE openWB ;). => Auslese-RPi (Dieser als Mini-RPi "Zero W" braucht nur 1W.)
jub
Beiträge: 64
Registriert: Mi Aug 10, 2022 1:29 pm

Re: Alternative Anbindung von Huawei WR

Beitrag von jub »

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.
aiole
Beiträge: 7717
Registriert: Mo Okt 08, 2018 4:51 pm
Has thanked: 14 times
Been thanked: 27 times

Re: Alternative Anbindung von Huawei WR

Beitrag von aiole »

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.
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 Wieviel node-red an Rechenleistung braucht, weiß ich nicht. Aktuell ist das Abrufintervall bei 10 sek- ich hoffe, das bestätigt sich als stabil.
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
jub hat geschrieben: Sa Aug 05, 2023 2:20 pm Der Verbrauch ist sicher höher als 1W.
gesehen?
viewtopic.php?p=90347#p90347
Da kann durch NR mehr werden, aber sicher nur minimal.

VG
jub
Beiträge: 64
Registriert: Mi Aug 10, 2022 1:29 pm

Re: Alternative Anbindung von Huawei WR

Beitrag von jub »

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.

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":""}]
AlexMetzger
Beiträge: 44
Registriert: Fr Mai 12, 2023 7:02 am
Been thanked: 1 time

Re: Alternative Anbindung von Huawei WR

Beitrag von AlexMetzger »

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
jub
Beiträge: 64
Registriert: Mi Aug 10, 2022 1:29 pm

Re: Alternative Anbindung von Huawei WR

Beitrag von jub »

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.
ArminElectric
Beiträge: 64
Registriert: Di Sep 29, 2020 1:19 pm
Has thanked: 5 times

Re: Alternative Anbindung von Huawei WR

Beitrag von ArminElectric »

@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
aiole
Beiträge: 7717
Registriert: Mo Okt 08, 2018 4:51 pm
Has thanked: 14 times
Been thanked: 27 times

Re: Alternative Anbindung von Huawei WR

Beitrag von aiole »

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 ?!
Schon mal hier geschaut?
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.
ArminElectric
Beiträge: 64
Registriert: Di Sep 29, 2020 1:19 pm
Has thanked: 5 times

Re: Alternative Anbindung von Huawei WR

Beitrag von ArminElectric »

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
Antworten