ioBroker / ioBroker.modbus

Modbus adapter for ioBroker
MIT License
50 stars 28 forks source link

Huawei Wechselrichter geht über NodeRed, aber nicht über diesen Modbusadapter #250

Open HansPeterMeier opened 2 years ago

HansPeterMeier commented 2 years ago

Hallo, kurze Frage, kann sich einer vorstellen, woran es liegen kann, dass ich mit node Red und diesen Flow Daten erhalte vom Wechselrichter und über den Modbusadapter nicht? ich habe schon alle möglichen Varianten ausprobiert. Hier mal der Flow für Node Red https://forum.iobroker.net/topic/51639/howto-huawei-sun2000-wr-modbus-mit-node-red-read-write

läuft über Node Red irgendwas anders als über den Modbus Adapter?

Gruß

Hier mal der Log, erst Modbus dann Nodered

`

node-red.0 | 2022-07-05 14:43:58.623 | info | State value to set for "0_userdata.0.Huawei.Inverter.Input_Power" has to be stringified but received type "number" -- | -- | -- | -- node-red.0 | 2022-07-05 14:43:58.141 | info | State value to set for "0_userdata.0.Huawei.Meter.Active_Power" has to be stringified but received type "number" node-red.0 | 2022-07-05 14:43:54.196 | info | State value to set for "0_userdata.0.Huawei.Inverter.Input_Power" has to be stringified but received type "number" node-red.0 | 2022-07-05 14:43:53.209 | info | State value to set for "0_userdata.0.Huawei.Meter.Active_Power" has to be stringified but received type "number" node-red.0 | 2022-07-05 14:43:48.996 | info | State value to set for "0_userdata.0.Huawei.Inverter.Input_Power" has to be stringified but received type "number" node-red.0 | 2022-07-05 14:43:48.514 | info | State value to set for "0_userdata.0.Huawei.Meter.Active_Power" has to be stringified but received type "number" node-red.0 | 2022-07-05 14:43:44.032 | info | State value to set for "0_userdata.0.Huawei.Inverter.Input_Power" has to be stringified but received type "number" node-red.0 | 2022-07-05 14:43:43.406 | info | State value to set for "0_userdata.0.Huawei.Meter.Active_Power" has to be stringified but received type "number" node-red.0 | 2022-07-05 14:43:39.525 | info | State value to set for "0_userdata.0.Huawei.Inverter.Input_Power" has to be stringified but received type "number" node-red.0 | 2022-07-05 14:43:38.918 | info | State value to set for "0_userdata.0.Huawei.Meter.Active_Power" has to be stringified but received type "number" node-red.0 | 2022-07-05 14:43:33.611 | info | State value to set for "0_userdata.0.Huawei.Inverter.Input_Power" has to be stringified but received type "number" node-red.0 | 2022-07-05 14:43:33.136 | info | State value to set for "0_userdata.0.Huawei.Meter.Active_Power" has to be stringified but received type "number" node-red.0 | 2022-07-05 14:43:28.481 | warn | 5 Jul 14:43:28 - [warn] [modbus-client:WLAN-FE] Client -> fsm connected after state init Get More About It By Logging TCP@10.10.10.65:502 default Unit-Id: 1 node-red.0 | 2022-07-05 14:43:28.025 | debug | ... delay-initialize 24 Nodes node-red.0 | 2022-07-05 14:43:28.025 | debug | Ready event received ... start to check 0 Nodes node-red.0 | 2022-07-05 14:43:28.003 | debug | States connected to redis: 127.0.0.1:9000 node-red.0 | 2022-07-05 14:43:27.997 | debug | States create User PubSub Client node-red.0 | 2022-07-05 14:43:27.997 | debug | States create System PubSub Client node-red.0 | 2022-07-05 14:43:27.993 | debug | Redis States: Use Redis connection: 127.0.0.1:9000 node-red.0 | 2022-07-05 14:43:27.986 | debug | Objects connected to redis: 127.0.0.1:9001 node-red.0 | 2022-07-05 14:43:27.984 | debug | Objects client initialize lua scripts node-red.0 | 2022-07-05 14:43:27.982 | debug | 5 Jul 14:43:27 - [info] Flows sind gestartet node-red.0 | 2022-07-05 14:43:27.977 | warn | 5 Jul 14:43:27 - [warn] [modbus-client:WLAN-FE] Client -> first fsm init in 500 ms TCP@10.10.10.65:502 default Unit-Id: 1 node-red.0 | 2022-07-05 14:43:27.976 | warn | 5 Jul 14:43:27 - [warn] [modbus-client:WLAN-FE] Client -> fsm init state after new node-red.0 | 2022-07-05 14:43:27.974 | debug | 5 Jul 14:43:27 - [info] Flows werden gestartet node-red.0 | 2022-07-05 14:43:27.969 | debug | Objects create User PubSub Client node-red.0 | 2022-07-05 14:43:27.969 | debug | Objects create System PubSub Client node-red.0 | 2022-07-05 14:43:27.967 | debug | 5 Jul 14:43:27 - [info] Server wird jetzt auf http://127.0.0.1:1880/ ausgeführt node-red.0 | 2022-07-05 14:43:27.955 | debug | Objects client ready ... initialize now node-red.0 | 2022-07-05 14:43:27.684 | debug | Redis Objects: Use Redis connection: 127.0.0.1:9001 node-red.0 | 2022-07-05 14:43:27.941 | warn | 5 Jul 14:43:27 - [info] Benutzerverzeichnis: /opt/iobroker/iobroker-data/node-red/5 Jul 14:43:27 - [warn] Projekte deaktiviert: editorTheme.projects.enabled=false5 Jul 14:43:27 - [info] Flow-Datei: /opt/iobroker/iobroker-data/node-red/flows.json node-red.0 | 2022-07-05 14:43:27.940 | debug | 5 Jul 14:43:27 - [info] Kontextspeicher: default [module=memory] node-red.0 | 2022-07-05 14:43:27.940 | debug | 5 Jul 14:43:27 - [info] Einstellungsdatei: /opt/iobroker/iobroker-data/node-red/settings.js node-red.0 | 2022-07-05 14:43:27.794 | debug | 5 Jul 14:43:27 - [info] Dashboard version 3.1.7 started at /ui node-red.0 | 2022-07-05 14:43:27.774 | debug | 5 Jul 14:43:27 - [info] Polymer started at /polymer node-red.0 | 2022-07-05 14:43:27.157 | debug | 5 Jul 14:43:27 - [info] Paletteneditor deaktiviert: Einstellungen5 Jul 14:43:27 - [info] Paletten-Nodes werden geladen node-red.0 | 2022-07-05 14:43:27.156 | debug | 5 Jul 14:43:27 - [info] Node-RED Version: v2.2.25 Jul 14:43:27 - [info] Node.js Version: v16.15.15 Jul 14:43:27 - [info] Linux 5.10.0-15-amd64 x64 LE node-red.0 | 2022-07-05 14:43:27.156 | debug | 5 Jul 14:43:27 - [info] Willkommen bei Node-RED!=================== node-red.0 | 2022-07-05 14:43:26.870 | info | Starting node-red: --max-old-space-size=128 /opt/iobroker/node_modules/node-red/red.js -v --settings /opt/iobroker/iobroker-data/node-red/settings.js node-red.0 | 2022-07-05 14:43:26.725 | debug | Writing extended authentication for authType: "None" : {"type":"credentials","users":[],"default":{"permissions":"*"}} node-red.0 | 2022-07-05 14:43:26.709 | info | Requested NPM packages: ["node-red-contrib-calc","node-red-contrib-buffer-parser","node-red-contrib-modbus"] node-red.0 | 2022-07-05 14:43:26.701 | info | starting. Version 3.3.1 in /opt/iobroker/node_modules/iobroker.node-red, node: v16.15.1, js-controller: 4.0.23 node-red.0 | 2022-07-05 14:43:26.650 | debug | States connected to redis: 127.0.0.1:9000 node-red.0 | 2022-07-05 14:43:26.644 | debug | States create User PubSub Client node-red.0 | 2022-07-05 14:43:26.644 | debug | States create System PubSub Client node-red.0 | 2022-07-05 14:43:26.640 | debug | Redis States: Use Redis connection: 127.0.0.1:9000 node-red.0 | 2022-07-05 14:43:26.632 | debug | Objects connected to redis: 127.0.0.1:9001 node-red.0 | 2022-07-05 14:43:26.630 | debug | Objects client initialize lua scripts node-red.0 | 2022-07-05 14:43:26.619 | debug | Objects create User PubSub Client node-red.0 | 2022-07-05 14:43:26.619 | debug | Objects create System PubSub Client node-red.0 | 2022-07-05 14:43:26.618 | debug | Objects client ready ... initialize now node-red.0 | 2022-07-05 14:43:26.604 | debug | Redis Objects: Use Redis connection: 127.0.0.1:9001 host.iobroker | 2022-07-05 14:43:26.389 | info | instance system.adapter.node-red.0 started with pid 7030 host.iobroker | 2022-07-05 14:43:26.374 | info | "system.adapter.node-red.0" enabled host.iobroker | 2022-07-05 14:43:22.567 | info | instance system.adapter.modbus.1 terminated with code 11 (ADAPTER_REQUESTED_TERMINATION) modbus.1 | 2022-07-05 14:43:22.052 | info | Terminated (ADAPTER_REQUESTED_TERMINATION): Without reason modbus.1 | 2022-07-05 14:43:22.052 | debug | Plugin sentry destroyed modbus.1 | 2022-07-05 14:43:22.051 | info | terminating modbus.1 | 2022-07-05 14:43:22.051 | debug | Closing client on purpose. host.iobroker | 2022-07-05 14:43:22.051 | info | stopInstance system.adapter.modbus.1 send kill signal modbus.1 | 2022-07-05 14:43:22.050 | info | Got terminate signal TERMINATE_YOURSELF host.iobroker | 2022-07-05 14:43:22.049 | info | stopInstance system.adapter.modbus.1 (force=false, process=true) host.iobroker | 2022-07-05 14:43:22.049 | info | "system.adapter.modbus.1" disabled modbus.1 | 2022-07-05 14:43:04.665 | info | Disconnected from slave 10.10.10.65 modbus.1 | 2022-07-05 14:43:04.665 | debug | Closing client on purpose. modbus.1 | 2022-07-05 14:43:03.666 | debug | Cleaning up request fifo. modbus.1 | 2022-07-05 14:43:03.666 | debug | Clearing timeout of the current request. modbus.1 | 2022-07-05 14:43:03.666 | debug | Socket closed with error modbus.1 | 2022-07-05 14:43:03.665 | warn | Poll error count: 1 code: {"err":"timeout","timeout":5000} modbus.1 | 2022-07-05 14:43:03.665 | error | Client in error state. modbus.1 | 2022-07-05 14:43:03.664 | error | Request timed out. modbus.1 | 2022-07-05 14:43:03.664 | warn | Error: undefined modbus.1 | 2022-07-05 14:42:58.662 | debug | [DevID_1/inputRegs] Poll address 2018 - 1 registers modbus.1 | 2022-07-05 14:42:58.662 | debug | Initialization of scale factors done! modbus.1 | 2022-07-05 14:42:58.662 | debug | [DevID_1] Poll start --------------------- modbus.1 | 2022-07-05 14:42:58.661 | info | Connected to slave 10.10.10.65 modbus.1 | 2022-07-05 14:42:58.573 | debug | Initialize Objects for holdingRegs: [] modbus.1 | 2022-07-05 14:42:58.573 | debug | Add inputRegisters.2018_Test: {"_id":"inputRegisters.2018_Test","type":"state","common":{"name":"","role":"level","type":"number","read":true,"write":false,"def":0,"unit":""},"native":{"regType":"inputRegs","address":2018,"deviceId":1,"type":"int16be","len":1,"offset":0,"factor":1}} modbus.1 | 2022-07-05 14:42:58.573 | debug | Initialize Objects for inputRegs: [{"_address":2018,"name":"Test","description":"","unit":"","type":"int16be","len":1,"factor":1,"offset":0,"formula":"","role":"level","room":"","cw":false,"isScale":false,"address":2018,"deviceId":1,"id":"inputRegisters.2018_Test"}] modbus.1 | 2022-07-05 14:42:58.572 | debug | Initialize Objects for coils: [] modbus.1 | 2022-07-05 14:42:58.572 | debug | Initialize Objects for disInputs: [] modbus.1 | 2022-07-05 14:42:58.535 | info | starting. Version 5.0.4 in /opt/iobroker/node_modules/iobroker.modbus, node: v16.15.1, js-controller: 4.0.23 modbus.1 | 2022-07-05 14:42:58.463 | debug | Plugin sentry Initialize Plugin (enabled=true) modbus.1 | 2022-07-05 14:42:58.439 | debug | States connected to redis: 127.0.0.1:9000 modbus.1 | 2022-07-05 14:42:58.433 | debug | States create User PubSub Client modbus.1 | 2022-07-05 14:42:58.433 | debug | States create System PubSub Client modbus.1 | 2022-07-05 14:42:58.429 | debug | Redis States: Use Redis connection: 127.0.0.1:9000 modbus.1 | 2022-07-05 14:42:58.422 | debug | Objects connected to redis: 127.0.0.1:9001 modbus.1 | 2022-07-05 14:42:58.420 | debug | Objects client initialize lua scripts modbus.1 | 2022-07-05 14:42:58.407 | debug | Objects create User PubSub Client modbus.1 | 2022-07-05 14:42:58.407 | debug | Objects create System PubSub Client modbus.1 | 2022-07-05 14:42:58.406 | debug | Objects client ready ... initialize now modbus.1 | 2022-07-05 14:42:58.383 | debug | Redis Objects: Use Redis connection: 127.0.0.1:9001

`

Plattform: linux Betriebssystem: linux Architektur: x64 CPUs: 4 Geschwindigkeit: 3692 MHz Modell: Common KVM processor RAM: 7.7 GB System-Betriebszeit: 6 T. 21:45:33 Node.js: v16.15.1 time: 1657017694884 timeOffset: -120 Adapter-Anzahl: 501 NPM: 8.11.0 Datenträgergröße: 61.8 GB Freier Festplattenspeicher: 56.4 GB Betriebszeit: 6 T. 21:45:42 Aktive Instanzen: 14 Pfad: /opt/iobroker/ aktiv:

Dark-Tower-Coder commented 2 years ago

Bei mir ist es genau das gleiche Verhalten. Habe es sogar mit einem Javascript (aus dem Netz) zum laufen gebracht, aber mit dem Adapter nicht.

Apollon77 commented 2 years ago

Please show screenshots from the config oof your modbus instance

HansPeterMeier commented 2 years ago

Ich machs mal auf Deutsch:-) Ich würde dir gerne was zeigen wollen, aber es kommt einfach keine Verbindung zustande, ich habe, denke ich, alle Variationen ausprobiert, die es nur gibt. Nur das Node Red Dingen funktioniert soweit.

Apollon77 commented 2 years ago

Bitte Zeige mal screenshots der Adapterkonfiguration! Das kannst du mir schon zeigen auch ohne das eine verbindung zustandkommt :-)

Dark-Tower-Coder commented 2 years ago

Die letzten Einstellungen. Habe auch, wie @HansPeterMeier einiges ausprobiert.

image image image image LOG:

` modbus.0 | 2022-07-20 23:05:54.608 | debug | [DevID_1/inputRegs] Poll address 37004 - 1 registers modbus.0 | 2022-07-20 23:05:54.607 | debug | [DevID_1] Poll start --------------------- modbus.0 | 2022-07-20 23:05:49.604 | info | Disconnected from slave 192.168.178.98 modbus.0 | 2022-07-20 23:05:49.603 | debug | Closing client on purpose. modbus.0 | 2022-07-20 23:05:48.609 | debug | Cleaning up request fifo. modbus.0 | 2022-07-20 23:05:48.609 | debug | Clearing timeout of the current request. modbus.0 | 2022-07-20 23:05:48.607 | debug | Socket closed with error modbus.0 | 2022-07-20 23:05:48.604 | warn | Poll error count: 1 code: {"err":"timeout","timeout":5000} modbus.0 | 2022-07-20 23:05:48.603 | error | Client in error state. modbus.0 | 2022-07-20 23:05:48.602 | error | Request timed out. modbus.0 | 2022-07-20 23:05:48.601 | warn | Error: undefined modbus.0 | 2022-07-20 23:05:43.597 | debug | [DevID_1/inputRegs] Poll address 37004 - 1 registers modbus.0 | 2022-07-20 23:05:43.597 | debug | Initialization of scale factors done! modbus.0 | 2022-07-20 23:05:43.597 | debug | [DevID_1] Poll start --------------------- modbus.0 | 2022-07-20 23:05:43.596 | info | Connected to slave 192.168.178.98 modbus.0 | 2022-07-20 23:05:43.476 | debug | Add holdingRegisters.37017: {"_id":"holdingRegisters.37017","type":"state","common":{"name":"Battery_Day_DisCharge_Capacity","role":"value","type":"number","read":false,"write":true,"def":0,"unit":""},"native":{"regType":"holdingRegs","address":37017,"deviceId":1,"type":"uint32be","len":2,"offset":0,"factor":"2","poll":false}} modbus.0 | 2022-07-20 23:05:43.476 | debug | Add holdingRegisters.37004: {"_id":"holdingRegisters.37004","type":"state","common":{"name":"Battery_SOC","role":"value","type":"number","read":true,"write":true,"def":0,"unit":""},"native":{"regType":"holdingRegs","address":37004,"deviceId":1,"type":"uint16be","len":1,"offset":0,"factor":1,"poll":true}} modbus.0 | 2022-07-20 23:05:43.476 | debug | Initialize Objects for holdingRegs: [{"_address":37004,"name":"","description":"Battery_SOC","unit":"","type":"uint16be","len":1,"factor":1,"offset":0,"formula":"","role":"value","room":"","poll":true,"wp":false,"cw":false,"isScale":"","address":37004,"deviceId":1,"id":"holdingRegisters.37004"},{"_address":37017,"name":"","description":"Battery_Day_DisCharge_Capacity","unit":"","type":"uint32be","len":2,"factor":"2","offset":0,"formula":"","role":"value","room":"","poll":false,"wp":"","cw":"","isScale":"","address":37017,"deviceId":1,"id":"holdingRegisters.37017"}] modbus.0 | 2022-07-20 23:05:43.476 | debug | Add inputRegisters.37004: {"_id":"inputRegisters.37004","type":"state","common":{"name":"Battery_SOC","role":"value","type":"number","read":true,"write":false,"def":0,"unit":""},"native":{"regType":"inputRegs","address":37004,"deviceId":1,"type":"uint16be","len":1,"offset":0,"factor":1}} modbus.0 | 2022-07-20 23:05:43.475 | debug | Initialize Objects for inputRegs: [{"_address":37004,"name":"","description":"Battery_SOC","unit":"","type":"uint16be","len":1,"factor":1,"offset":0,"formula":"","role":"value","room":"","cw":"","isScale":"","address":37004,"deviceId":1,"id":"inputRegisters.37004"}] modbus.0 | 2022-07-20 23:05:43.475 | debug | Initialize Objects for coils: [] modbus.0 | 2022-07-20 23:05:43.475 | debug | Initialize Objects for disInputs: [] modbus.0 | 2022-07-20 23:05:43.410 | info | starting. Version 5.0.4 in /opt/iobroker/node_modules/iobroker.modbus, node: v14.19.3, js-controller: 3.3.22 modbus.0 | 2022-07-20 23:05:43.406 | info | Plugin sentry Sentry Plugin disabled for this process because sending of statistic data is disabled for the system modbus.0 | 2022-07-20 23:05:43.404 | debug | Plugin sentry Initialize Plugin (enabled=true) modbus.0 | 2022-07-20 23:05:39.758 | info | Terminated (ADAPTER_REQUESTED_TERMINATION): Without reason modbus.0 | 2022-07-20 23:05:39.758 | debug | Plugin sentry destroyed modbus.0 | 2022-07-20 23:05:39.757 | info | terminating modbus.0 | 2022-07-20 23:05:39.755 | debug | Closing client on purpose. modbus.0 | 2022-07-20 23:05:39.753 | info | Got terminate signal TERMINATE_YOURSELF

`

HansPeterMeier commented 2 years ago

Ich habs gerade noch mal getestet mit den Standard Einstellungen, leider kein Erfolg, Huawei schließt warum auch immer direkt die Verbindung wieder. image

image

image

@Dark-Tower-Coder Bist du schon mit der Firmware vom Dongle auf 130 hoch?

Dark-Tower-Coder commented 2 years ago

@HansPeterMeier Ne, der Dongle ist bei mir noch auf 129.

Hast du schon die neuste Version installiert? Welche Version hast du für Modbus und welche für den Inverter? Ggf. Liegt es auch daran.

Bei mir: Inverter: 141 Modbus: 300

Weiß aber nicht ob es da irgend ein Update gibt. Habe keine Adminrechte um es herunterzuladen.

HansPeterMeier commented 2 years ago

Ne daran liegt es nicht. Ich hab auf den Dongle jetzt die 130, bei der Firmware war noch eine PDF dabei, anscheinend kann man den jetzt auch über Modbus ansprechen, aber dafür muss der auf der id 100 stehen bei den Adressen. Per Nodered klappt das auch soweit. Beim WR ktl30-m3 bin ich auf der aktuellsten, V100R001C00SPC130 Anbei noch der Link, wo mein Flow beschrieben ist. https://forum.iobroker.net/topic/51639/howto-huawei-sun2000-wr-modbus-mit-node-red-read-write/74?_=1658434191728

atifan commented 2 years ago

Hi. Geht das auslesen vom Huawai SUN2000-3KTL-M1 und LUNA2000-10-S0 und DTSU666-H immer noch nicht über Modbus? Bekomme den auch demnächst und würde ihn auch gern auslesen.

Apollon77 commented 2 years ago

vllt kann man ja mal das versuchen was in https://github.com/ioBroker/ioBroker.modbus/issues/262 gefunden wurde?

HansPeterMeier commented 2 years ago

Ne leider klappte das nicht, den Huawei schaffe ich nicht auszulesen mit den Modbus Adapter. Was müsste ich den liefern, dass man dieses Problem vielleicht in Zukunft mal angehen könnte, falls Interesse besteht? Aktuell setzt ja fast jeder Huawei ein für seine PV Anlagen, wenn die denn mal wieder lieferbar sind.

MarcelMertens commented 1 year ago

Selbe Problem hier... Node-Red Flow läuft problemlos, Modbus Adapter geht nicht, selber fehler wie oben.

grafik

Apollon77 commented 1 year ago

Gibts irgendwelche Detaillierten protokoll logs von node-red das man mal dinge vergleichen könnte?

Dark-Tower-Coder commented 1 year ago

Ich bin mittlerweile von ioBroker zu Home Assistant gewechselt. Dabei habe ich verschiedene Verbindungen zum SUN2000 ausprobiert und derzeit nutze ich einen modbus-proxy. Was aber alle Verbindungen gemeinsam hatten war, dass ich überall die "connection-time" auf 2 stellen musste. Bei den meisten ist per default 0.1 eingestellt.

Ggf. ist das ein hilfreicher Hinweis.

Gruß Tower

Apollon77 commented 1 year ago

Wäre ja die Frage ob es auch bei ioBroker mit "2" getan hätte?

fu-zhou commented 1 year ago

Ich glaube ich weiß, wo das Problem liegt: Huawei hat wohl die Register-Adressen vertauscht. Funktion 4 greift im Standard auf die 30000er zu , Funktion 3 auf die 40000er. Bei Huawei greift die Funktion 3 aber auf die 30000er zu. Das Problem im ioBroker-Modbus-Adapter ist, dass ich unter "Holding-Register" zwar 30000er Adressen anlegen kann, die werden aber nicht in den Objekten angezeigt, weil der Adapter 40000er erwartet und das abfängt. Habe das mit ModPoll herausbekommen, da kann man die Adressen nämlich abweichend von der eigentlichen Deklaration angeben.

Eine Maßnahme wäre, dass der Modbus-Adapter bei den Holding-Registern zwar automatisch mit 40001 anfängt, manuell eingetragene 30000er aber trotzdem zulässt und in den Objekten zeigt.

mrdimixx commented 1 year ago

Ist jemand bei dem Thema weiter gekommen ?

leonundjulie commented 1 year ago

auch ich würde es gern vermeiden NODE RED aufzusetzen

ThiemoSt commented 1 year ago

Mir geht es genauso. Und ich hab immer gedacht es wäre eine Problem mit dem WR bzw. dem Dongle.

MarcelMertens commented 1 year ago

Ich habe mir heute mal die Mühe gemacht die Netzwerkkommunikation zwischen dem iobroker (.3) und dem Wechselrichter (.8) mitzuloggen.

Modbus-Adapter Query Frame: grafik

Danach ist ende...

NodeRed Query Frame grafik

NodeRed Antwort Frame grafik

Im Anhang mal beide Logs (von txt in pcap umbennen) modbus-adapter.txt nodered.txt

Ich hab kein Plan wo da das Problem liegt..

AndreasLat commented 11 months ago

Liebe Community Hat jemand Erfahrung beim Einsatz von zwei Wechselrichtern? Ich bringe alle Daten vom Messgerät und vom Master-Wechselrichter in ioBroker aber sehe die Daten vom 2. Wechselrichter (ID: 2) nicht. Kann ich einen zweiten Server definieren und den Flow verdoppeln? Falls ja, wie kann ich den zweiten Server definieren? (Dieselbe IP aber die andere ID). Vielen Dank

leonundjulie commented 11 months ago

Ich habe zwar nur einen WR am Start, aber eine Kernfrage ist sicherlich, ob Deine WR separat oder verlinkt sind. Wenn sie separat sind, dann erreichst du sie unter unterschiedlichen IP Adressen und musst diese folglich auch in den NODE RED flows einbringen - je WR ein eigener FLow

AndreasLat commented 11 months ago

Vielen Dank Leider hilft das nicht. Die Wechselrichter haben nur eine IP Adresse (sind Master und Slave) und zwei ID. Das Problem ist, dass ich im Flow zwei verschiedene WLAN-FE Konfigurationsnodes benötige weil ich die zwei ID ansprechen muss. Weiss jemand, wie ich einen zweiten Konfigurationsnode erstelle? Ich kenne mich mit Node-RED nicht gut aus, sorry Vielen Dank Andreas

TrackerTheCode commented 11 months ago

Hallo zusammen,

der Kommunikationsverlauf hier ist sehr aufschlussreich für mich. Gibt es mitlerweile ein Lösung, um dem IOBroker direkt auf den SDongle von Huawei via ModBus TCP zugreifen zu können?

Viel Dank und Gruß

leonundjulie commented 11 months ago

Schau auch gern mal hier rein https://forum.iobroker.net/topic/53005/huawei-sun2000-iobroker-via-js-script-funktioniert

leonundjulie commented 11 months ago

Den Weg bin ich gegangen. Grundsätzlich funktioniert es. Aber ich habe so eine unschöne EnPAL Topologie, auf Grund derer es eine LAN-Verbindung zwischen der EnPAL Bix und dem SDongle des WR gibt und der gleichzeitige MODBUS Zugriff via WLAN hat eine andere Priorität…. es kommt zu ständigen Abbrüchen via iOBroker und dem WR. Ich warte darauf den EnPAL Vertrag zu kündigen und dann kann ich endlich vom iOBroker sauber via LAN an den SDongle zugreifen (alles schon getestet, läuft , darf ich halt nur nicht wegen EnPAL Vertrag)

bowao commented 10 months ago

Nach dem Verbindungsaufbau braucht der Huawei Wechselrichter ca. 5 Sekunden, bevor er Angefragt werden darf. Für die meisten Modbus-Master ist dies kein Problem, da sie auch bei Fehlern einfach zyklisch weiter pollen. Der ioBroker Modbus-Adapter trennt aber leider bei Fehlern die Verbindung zum Slave und verbindet sich neu. Ohne die oben erwähnten 5 Sekunden Wartezeit zwischen dem Verbindungsaufbau und der ersten Anfrage führt dies erneut zu einem Fehler, der Adapter trennt die Verbindung, baut sie erneut auf und so weiter...

Wenn zwischen Verbindungsaufbau und dem ersten poll eine Wartezeit von 5 Sekunden eingehalten wird, funktioniert der Adapter bei mir mit dem Huawei Wechselrichter.

Leider gibt es in den Adaptereinstellungen keine Möglichkeit, eine Wartezeit vor der ersten Abfrage festzulegen. (Ich hätte gedacht, dass der Parameter „Wartezeit“ (waitTime) genau das tut, aber es sieht so aus, als ob er nur zusätzliche Zeit zum Abfragezyklus hinzufügt, und zwar erst nach dem ersten polling.)

quick-and-dirty-fix nur als 'proof of concept' :

diff lib/master.js

 809c809,812
<             poll();
---
>             adapter.log.info('Wait 5 seconds before the first poll');
>             setTimeout(function(){
>                 poll();
>             }, 5000);

Für einen richtigen Bugfix (oder feature-request?) müsste noch ein entsprechender Parameter in den Einstellungen hinzugefügt, Wechselwirkungen mit den anderen Timeouts (z.B. "Wartezeit Lesend") berücksichtigt und ein clearTimeout bei Programmende eingefügt werden.

HansPeterMeier commented 10 months ago

@GermanBluefox Könnte man sowas einbauen in den Modbusadapter? wäre eine feine Sache um den Huawei Wechselrichter darüber einzubinden, dann könnte ich mir den Umweg über Nodered sparen. Gruß

Apollon77 commented 10 months ago

Das sind coole Infos. Ich wäre also bei einem "Connect-to-Poll-Delay" quasi ... also genau das man eine wartezeit definieren kann die zwischen dem erfolgreichen connect und erstem Poll wartet ...

leonundjulie commented 9 months ago

Hallo. Gibt es zu diesem Ansatz schon Pläne zur Umsetzung?