NEWS
Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter
-
Habe nun ein anderes Problem.
Nach 1-2h kommt ein "Socket closed with error". Dann geht nichts mehr.
Siehe Log ab 18:22:552026-02-05 18:22:43.831 - [34mdebug[39m: modbus.0 (914062) [DevID_1] Poll start --------------------- 2026-02-05 18:22:43.832 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-05 18:22:43.899 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 DONE 2026-02-05 18:22:44.150 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1160 - 1 registers 2026-02-05 18:22:44.209 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1160 DONE 2026-02-05 18:22:44.459 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1476 - 1 registers 2026-02-05 18:22:44.519 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1476 DONE 2026-02-05 18:22:44.770 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1542 - 1 registers 2026-02-05 18:22:44.829 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1542 DONE 2026-02-05 18:22:45.080 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1544 - 1 registers 2026-02-05 18:22:45.139 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1544 DONE 2026-02-05 18:22:45.389 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1668 - 2 registers 2026-02-05 18:22:45.469 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1668 DONE 2026-02-05 18:22:49.101 - [34mdebug[39m: modbus.0 (914062) [DevID_1] Poll start --------------------- 2026-02-05 18:22:49.102 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-05 18:22:49.159 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 DONE 2026-02-05 18:22:49.161 - [34mdebug[39m: modbus.0 (914062) [DevID_1] Poll start --------------------- 2026-02-05 18:22:49.161 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-05 18:22:49.219 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 DONE 2026-02-05 18:22:49.221 - [34mdebug[39m: modbus.0 (914062) [DevID_1] Poll start --------------------- 2026-02-05 18:22:49.221 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-05 18:22:49.279 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 DONE 2026-02-05 18:22:49.281 - [34mdebug[39m: modbus.0 (914062) [DevID_1] Poll start --------------------- 2026-02-05 18:22:49.281 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-05 18:22:49.352 - [34mdebug[39m: modbus.0 (914062) [DevID_1] Poll start --------------------- 2026-02-05 18:22:49.352 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-05 18:22:49.410 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1160 - 1 registers 2026-02-05 18:22:49.470 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1160 - 1 registers 2026-02-05 18:22:49.530 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1160 - 1 registers 2026-02-05 18:22:51.023 - [34mdebug[39m: modbus.0 (914062) [DevID_1] Poll start --------------------- 2026-02-05 18:22:51.023 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-05 18:22:55.300 - [34mdebug[39m: modbus.0 (914062) Socket closed with error 2026-02-05 18:22:55.300 - [34mdebug[39m: modbus.0 (914062) Clearing timeout of the current request. 2026-02-05 18:22:55.300 - [34mdebug[39m: modbus.0 (914062) Cleaning up request fifo. 2026-02-05 18:22:56.302 - [34mdebug[39m: modbus.0 (914062) Closing client on purpose. 2026-02-05 18:22:56.303 - [32minfo[39m: modbus.0 (914062) Disconnected from slave 192.168.88.101 2026-02-05 18:23:03.307 - [32minfo[39m: modbus.0 (914062) Connected to slave 192.168.88.101 2026-02-05 18:23:03.307 - [34mdebug[39m: modbus.0 (914062) [DevID_1] Poll start --------------------- 2026-02-05 18:23:03.307 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-05 18:23:09.341 - [34mdebug[39m: modbus.0 (914062) Socket closed with error 2026-02-05 18:23:09.341 - [34mdebug[39m: modbus.0 (914062) Clearing timeout of the current request. 2026-02-05 18:23:09.341 - [34mdebug[39m: modbus.0 (914062) Cleaning up request fifo. 2026-02-05 18:23:10.341 - [34mdebug[39m: modbus.0 (914062) Closing client on purpose. 2026-02-05 18:23:10.341 - [32minfo[39m: modbus.0 (914062) Disconnected from slave 192.168.88.101 2026-02-05 18:23:17.345 - [32minfo[39m: modbus.0 (914062) Connected to slave 192.168.88.101 2026-02-05 18:23:17.345 - [34mdebug[39m: modbus.0 (914062) [DevID_1] Poll start --------------------- 2026-02-05 18:23:17.345 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-05 18:23:23.371 - [34mdebug[39m: modbus.0 (914062) Socket closed with error 2026-02-05 18:23:23.371 - [34mdebug[39m: modbus.0 (914062) Clearing timeout of the current request. 2026-02-05 18:23:23.371 - [34mdebug[39m: modbus.0 (914062) Cleaning up request fifo. 2026-02-05 18:23:24.372 - [34mdebug[39m: modbus.0 (914062) Closing client on purpose. 2026-02-05 18:23:24.373 - [32minfo[39m: modbus.0 (914062) Disconnected from slave 192.168.88.101 2026-02-05 18:23:31.375 - [32minfo[39m: modbus.0 (914062) Connected to slave 192.168.88.101 2026-02-05 18:23:31.376 - [34mdebug[39m: modbus.0 (914062) [DevID_1] Poll start --------------------- 2026-02-05 18:23:31.376 - [34mdebug[39m: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-05 18:23:37.401 - [34mdebug[39m: modbus.0 (914062) Socket closed with error 2026-02-05 18:23:37.402 - [34mdebug[39m: modbus.0 (914062) Clearing timeout of the current request. 2026-02-05 18:23:37.402 - [34mdebug[39m: modbus.0 (914062) Cleaning up request fifo. 2026-02-05 18:23:38.402 - [34mdebug[39m: modbus.0 (914062) Closing client on purpose. 2026-02-05 18:23:38.402 - [32minfo[39m: modbus.0 (914062) Disconnected from slave 192.168.88.101Wenn ich den modbus Adapter neu starte, läuft's wieder.
-
Ergänzend fällt mir auf, dass der immer mit einem "Socket closed with error" abschliesst.
modbus.0 2026-02-05 19:19:38.941 info Disconnected from slave 192.168.88.101 modbus.0 2026-02-05 19:19:38.940 debug Closing client on purpose. modbus.0 2026-02-05 19:19:37.940 debug Cleaning up request fifo. modbus.0 2026-02-05 19:19:37.939 debug Clearing timeout of the current request. modbus.0 2026-02-05 19:19:37.939 debug Socket closed with error modbus.0 2026-02-05 19:19:31.988 debug [DevID_1/holdingRegs] Poll address 1668 DONE modbus.0 2026-02-05 19:19:31.919 debug [DevID_1/holdingRegs] Poll address 1668 - 2 registers modbus.0 2026-02-05 19:19:31.668 debug [DevID_1/holdingRegs] Poll address 1544 DONE modbus.0 2026-02-05 19:19:31.609 debug [DevID_1/holdingRegs] Poll address 1544 - 1 registers modbus.0 2026-02-05 19:19:31.358 debug [DevID_1/holdingRegs] Poll address 1542 DONE modbus.0 2026-02-05 19:19:31.299 debug [DevID_1/holdingRegs] Poll address 1542 - 1 registers modbus.0 2026-02-05 19:19:31.048 debug [DevID_1/holdingRegs] Poll address 1476 DONE modbus.0 2026-02-05 19:19:30.988 debug [DevID_1/holdingRegs] Poll address 1476 - 1 registers modbus.0 2026-02-05 19:19:30.738 debug [DevID_1/holdingRegs] Poll address 1160 DONE modbus.0 2026-02-05 19:19:30.679 debug [DevID_1/holdingRegs] Poll address 1160 - 1 registers modbus.0 2026-02-05 19:19:30.428 debug [DevID_1/holdingRegs] Poll address 1157 DONE modbus.0 2026-02-05 19:19:30.364 debug [DevID_1/holdingRegs] Poll address 1157 - 1 registers modbus.0 2026-02-05 19:19:30.364 debug [DevID_1] Poll start ---------------------Einstellungen:

-
Schon wieder. Adapter lief ca 3-4h.
Man siehe den Log ab 2026-02-06 03:59:39.013.
Da stirbt die Übertragung langsam bis ab 2026-02-06 03:59:56.664 nix mehr kommt.
Wie bereits gesagt, funktioniert alles wieder nach einem Adapter neustart.2026-02-06 03:59:02.830 - [32minfo[39m: modbus.0 (919438) Connected to slave 192.168.88.101 2026-02-06 03:59:02.831 - [34mdebug[39m: modbus.0 (919438) [DevID_1] Poll start --------------------- 2026-02-06 03:59:02.831 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-06 03:59:02.897 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 DONE 2026-02-06 03:59:03.148 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 - 1 registers 2026-02-06 03:59:03.207 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 DONE 2026-02-06 03:59:03.458 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1476 - 1 registers 2026-02-06 03:59:03.517 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1476 DONE 2026-02-06 03:59:03.768 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1542 - 1 registers 2026-02-06 03:59:03.827 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1542 DONE 2026-02-06 03:59:04.078 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1544 - 1 registers 2026-02-06 03:59:04.138 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1544 DONE 2026-02-06 03:59:04.388 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1668 - 2 registers 2026-02-06 03:59:04.477 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1668 DONE 2026-02-06 03:59:10.408 - [34mdebug[39m: modbus.0 (919438) Socket closed with error 2026-02-06 03:59:10.408 - [34mdebug[39m: modbus.0 (919438) Clearing timeout of the current request. 2026-02-06 03:59:10.408 - [34mdebug[39m: modbus.0 (919438) Cleaning up request fifo. 2026-02-06 03:59:11.409 - [34mdebug[39m: modbus.0 (919438) Closing client on purpose. 2026-02-06 03:59:11.410 - [32minfo[39m: modbus.0 (919438) Disconnected from slave 192.168.88.101 2026-02-06 03:59:21.412 - [32minfo[39m: modbus.0 (919438) Connected to slave 192.168.88.101 2026-02-06 03:59:21.413 - [34mdebug[39m: modbus.0 (919438) [DevID_1] Poll start --------------------- 2026-02-06 03:59:21.413 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-06 03:59:21.478 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 DONE 2026-02-06 03:59:21.729 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 - 1 registers 2026-02-06 03:59:21.788 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 DONE 2026-02-06 03:59:22.039 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1476 - 1 registers 2026-02-06 03:59:22.098 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1476 DONE 2026-02-06 03:59:22.349 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1542 - 1 registers 2026-02-06 03:59:22.408 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1542 DONE 2026-02-06 03:59:22.659 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1544 - 1 registers 2026-02-06 03:59:22.738 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1544 DONE 2026-02-06 03:59:22.989 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1668 - 2 registers 2026-02-06 03:59:23.048 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1668 DONE 2026-02-06 03:59:28.009 - [34mdebug[39m: modbus.0 (919438) Socket closed with error 2026-02-06 03:59:28.009 - [34mdebug[39m: modbus.0 (919438) Clearing timeout of the current request. 2026-02-06 03:59:28.009 - [34mdebug[39m: modbus.0 (919438) Cleaning up request fifo. 2026-02-06 03:59:29.011 - [34mdebug[39m: modbus.0 (919438) Closing client on purpose. 2026-02-06 03:59:29.011 - [32minfo[39m: modbus.0 (919438) Disconnected from slave 192.168.88.101 2026-02-06 03:59:39.013 - [32minfo[39m: modbus.0 (919438) Connected to slave 192.168.88.101 2026-02-06 03:59:39.014 - [34mdebug[39m: modbus.0 (919438) [DevID_1] Poll start --------------------- 2026-02-06 03:59:39.014 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-06 03:59:39.079 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 DONE 2026-02-06 03:59:39.330 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 - 1 registers 2026-02-06 03:59:39.389 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 DONE 2026-02-06 03:59:39.639 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1476 - 1 registers 2026-02-06 03:59:45.659 - [34mdebug[39m: modbus.0 (919438) Socket closed with error 2026-02-06 03:59:45.660 - [34mdebug[39m: modbus.0 (919438) Clearing timeout of the current request. 2026-02-06 03:59:45.660 - [34mdebug[39m: modbus.0 (919438) Cleaning up request fifo. 2026-02-06 03:59:46.660 - [34mdebug[39m: modbus.0 (919438) Closing client on purpose. 2026-02-06 03:59:46.661 - [32minfo[39m: modbus.0 (919438) Disconnected from slave 192.168.88.101 2026-02-06 03:59:56.664 - [32minfo[39m: modbus.0 (919438) Connected to slave 192.168.88.101 2026-02-06 03:59:56.664 - [34mdebug[39m: modbus.0 (919438) [DevID_1] Poll start --------------------- 2026-02-06 03:59:56.665 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-06 04:00:02.690 - [34mdebug[39m: modbus.0 (919438) Socket closed with error 2026-02-06 04:00:02.690 - [34mdebug[39m: modbus.0 (919438) Clearing timeout of the current request. 2026-02-06 04:00:02.690 - [34mdebug[39m: modbus.0 (919438) Cleaning up request fifo. 2026-02-06 04:00:03.692 - [34mdebug[39m: modbus.0 (919438) Closing client on purpose. 2026-02-06 04:00:03.692 - [32minfo[39m: modbus.0 (919438) Disconnected from slave 192.168.88.101 2026-02-06 04:00:13.696 - [32minfo[39m: modbus.0 (919438) Connected to slave 192.168.88.101 2026-02-06 04:00:13.696 - [34mdebug[39m: modbus.0 (919438) [DevID_1] Poll start --------------------- 2026-02-06 04:00:13.696 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-06 04:00:19.720 - [34mdebug[39m: modbus.0 (919438) Socket closed with error 2026-02-06 04:00:19.720 - [34mdebug[39m: modbus.0 (919438) Clearing timeout of the current request. 2026-02-06 04:00:19.720 - [34mdebug[39m: modbus.0 (919438) Cleaning up request fifo. 2026-02-06 04:00:20.721 - [34mdebug[39m: modbus.0 (919438) Closing client on purpose. 2026-02-06 04:00:20.722 - [32minfo[39m: modbus.0 (919438) Disconnected from slave 192.168.88.101 2026-02-06 04:00:30.725 - [32minfo[39m: modbus.0 (919438) Connected to slave 192.168.88.101 2026-02-06 04:00:30.726 - [34mdebug[39m: modbus.0 (919438) [DevID_1] Poll start --------------------- 2026-02-06 04:00:30.726 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-06 04:00:36.751 - [34mdebug[39m: modbus.0 (919438) Socket closed with error 2026-02-06 04:00:36.751 - [34mdebug[39m: modbus.0 (919438) Clearing timeout of the current request. 2026-02-06 04:00:36.751 - [34mdebug[39m: modbus.0 (919438) Cleaning up request fifo. 2026-02-06 04:00:37.752 - [34mdebug[39m: modbus.0 (919438) Closing client on purpose. 2026-02-06 04:00:37.753 - [32minfo[39m: modbus.0 (919438) Disconnected from slave 192.168.88.101 2026-02-06 04:00:47.756 - [32minfo[39m: modbus.0 (919438) Connected to slave 192.168.88.101 2026-02-06 04:00:47.757 - [34mdebug[39m: modbus.0 (919438) [DevID_1] Poll start --------------------- 2026-02-06 04:00:47.757 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-06 04:00:53.781 - [34mdebug[39m: modbus.0 (919438) Socket closed with error 2026-02-06 04:00:53.782 - [34mdebug[39m: modbus.0 (919438) Clearing timeout of the current request. 2026-02-06 04:00:53.782 - [34mdebug[39m: modbus.0 (919438) Cleaning up request fifo. 2026-02-06 04:00:54.782 - [34mdebug[39m: modbus.0 (919438) Closing client on purpose. 2026-02-06 04:00:54.783 - [32minfo[39m: modbus.0 (919438) Disconnected from slave 192.168.88.101 2026-02-06 04:01:04.785 - [32minfo[39m: modbus.0 (919438) Connected to slave 192.168.88.101 2026-02-06 04:01:04.786 - [34mdebug[39m: modbus.0 (919438) [DevID_1] Poll start --------------------- 2026-02-06 04:01:04.786 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-06 04:01:10.812 - [34mdebug[39m: modbus.0 (919438) Socket closed with error 2026-02-06 04:01:10.812 - [34mdebug[39m: modbus.0 (919438) Clearing timeout of the current request. 2026-02-06 04:01:10.813 - [34mdebug[39m: modbus.0 (919438) Cleaning up request fifo. 2026-02-06 04:01:11.812 - [34mdebug[39m: modbus.0 (919438) Closing client on purpose. 2026-02-06 04:01:11.813 - [32minfo[39m: modbus.0 (919438) Disconnected from slave 192.168.88.101 2026-02-06 04:01:21.815 - [32minfo[39m: modbus.0 (919438) Connected to slave 192.168.88.101 2026-02-06 04:01:21.816 - [34mdebug[39m: modbus.0 (919438) [DevID_1] Poll start --------------------- 2026-02-06 04:01:21.816 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-06 04:01:27.843 - [34mdebug[39m: modbus.0 (919438) Socket closed with error 2026-02-06 04:01:27.843 - [34mdebug[39m: modbus.0 (919438) Clearing timeout of the current request. 2026-02-06 04:01:27.843 - [34mdebug[39m: modbus.0 (919438) Cleaning up request fifo. 2026-02-06 04:01:28.845 - [34mdebug[39m: modbus.0 (919438) Closing client on purpose. 2026-02-06 04:01:28.845 - [32minfo[39m: modbus.0 (919438) Disconnected from slave 192.168.88.101Konfiguration:



-
Schon wieder. Adapter lief ca 3-4h.
Man siehe den Log ab 2026-02-06 03:59:39.013.
Da stirbt die Übertragung langsam bis ab 2026-02-06 03:59:56.664 nix mehr kommt.
Wie bereits gesagt, funktioniert alles wieder nach einem Adapter neustart.2026-02-06 03:59:02.830 - [32minfo[39m: modbus.0 (919438) Connected to slave 192.168.88.101 2026-02-06 03:59:02.831 - [34mdebug[39m: modbus.0 (919438) [DevID_1] Poll start --------------------- 2026-02-06 03:59:02.831 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-06 03:59:02.897 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 DONE 2026-02-06 03:59:03.148 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 - 1 registers 2026-02-06 03:59:03.207 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 DONE 2026-02-06 03:59:03.458 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1476 - 1 registers 2026-02-06 03:59:03.517 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1476 DONE 2026-02-06 03:59:03.768 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1542 - 1 registers 2026-02-06 03:59:03.827 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1542 DONE 2026-02-06 03:59:04.078 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1544 - 1 registers 2026-02-06 03:59:04.138 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1544 DONE 2026-02-06 03:59:04.388 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1668 - 2 registers 2026-02-06 03:59:04.477 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1668 DONE 2026-02-06 03:59:10.408 - [34mdebug[39m: modbus.0 (919438) Socket closed with error 2026-02-06 03:59:10.408 - [34mdebug[39m: modbus.0 (919438) Clearing timeout of the current request. 2026-02-06 03:59:10.408 - [34mdebug[39m: modbus.0 (919438) Cleaning up request fifo. 2026-02-06 03:59:11.409 - [34mdebug[39m: modbus.0 (919438) Closing client on purpose. 2026-02-06 03:59:11.410 - [32minfo[39m: modbus.0 (919438) Disconnected from slave 192.168.88.101 2026-02-06 03:59:21.412 - [32minfo[39m: modbus.0 (919438) Connected to slave 192.168.88.101 2026-02-06 03:59:21.413 - [34mdebug[39m: modbus.0 (919438) [DevID_1] Poll start --------------------- 2026-02-06 03:59:21.413 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-06 03:59:21.478 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 DONE 2026-02-06 03:59:21.729 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 - 1 registers 2026-02-06 03:59:21.788 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 DONE 2026-02-06 03:59:22.039 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1476 - 1 registers 2026-02-06 03:59:22.098 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1476 DONE 2026-02-06 03:59:22.349 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1542 - 1 registers 2026-02-06 03:59:22.408 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1542 DONE 2026-02-06 03:59:22.659 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1544 - 1 registers 2026-02-06 03:59:22.738 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1544 DONE 2026-02-06 03:59:22.989 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1668 - 2 registers 2026-02-06 03:59:23.048 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1668 DONE 2026-02-06 03:59:28.009 - [34mdebug[39m: modbus.0 (919438) Socket closed with error 2026-02-06 03:59:28.009 - [34mdebug[39m: modbus.0 (919438) Clearing timeout of the current request. 2026-02-06 03:59:28.009 - [34mdebug[39m: modbus.0 (919438) Cleaning up request fifo. 2026-02-06 03:59:29.011 - [34mdebug[39m: modbus.0 (919438) Closing client on purpose. 2026-02-06 03:59:29.011 - [32minfo[39m: modbus.0 (919438) Disconnected from slave 192.168.88.101 2026-02-06 03:59:39.013 - [32minfo[39m: modbus.0 (919438) Connected to slave 192.168.88.101 2026-02-06 03:59:39.014 - [34mdebug[39m: modbus.0 (919438) [DevID_1] Poll start --------------------- 2026-02-06 03:59:39.014 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-06 03:59:39.079 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 DONE 2026-02-06 03:59:39.330 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 - 1 registers 2026-02-06 03:59:39.389 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 DONE 2026-02-06 03:59:39.639 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1476 - 1 registers 2026-02-06 03:59:45.659 - [34mdebug[39m: modbus.0 (919438) Socket closed with error 2026-02-06 03:59:45.660 - [34mdebug[39m: modbus.0 (919438) Clearing timeout of the current request. 2026-02-06 03:59:45.660 - [34mdebug[39m: modbus.0 (919438) Cleaning up request fifo. 2026-02-06 03:59:46.660 - [34mdebug[39m: modbus.0 (919438) Closing client on purpose. 2026-02-06 03:59:46.661 - [32minfo[39m: modbus.0 (919438) Disconnected from slave 192.168.88.101 2026-02-06 03:59:56.664 - [32minfo[39m: modbus.0 (919438) Connected to slave 192.168.88.101 2026-02-06 03:59:56.664 - [34mdebug[39m: modbus.0 (919438) [DevID_1] Poll start --------------------- 2026-02-06 03:59:56.665 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-06 04:00:02.690 - [34mdebug[39m: modbus.0 (919438) Socket closed with error 2026-02-06 04:00:02.690 - [34mdebug[39m: modbus.0 (919438) Clearing timeout of the current request. 2026-02-06 04:00:02.690 - [34mdebug[39m: modbus.0 (919438) Cleaning up request fifo. 2026-02-06 04:00:03.692 - [34mdebug[39m: modbus.0 (919438) Closing client on purpose. 2026-02-06 04:00:03.692 - [32minfo[39m: modbus.0 (919438) Disconnected from slave 192.168.88.101 2026-02-06 04:00:13.696 - [32minfo[39m: modbus.0 (919438) Connected to slave 192.168.88.101 2026-02-06 04:00:13.696 - [34mdebug[39m: modbus.0 (919438) [DevID_1] Poll start --------------------- 2026-02-06 04:00:13.696 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-06 04:00:19.720 - [34mdebug[39m: modbus.0 (919438) Socket closed with error 2026-02-06 04:00:19.720 - [34mdebug[39m: modbus.0 (919438) Clearing timeout of the current request. 2026-02-06 04:00:19.720 - [34mdebug[39m: modbus.0 (919438) Cleaning up request fifo. 2026-02-06 04:00:20.721 - [34mdebug[39m: modbus.0 (919438) Closing client on purpose. 2026-02-06 04:00:20.722 - [32minfo[39m: modbus.0 (919438) Disconnected from slave 192.168.88.101 2026-02-06 04:00:30.725 - [32minfo[39m: modbus.0 (919438) Connected to slave 192.168.88.101 2026-02-06 04:00:30.726 - [34mdebug[39m: modbus.0 (919438) [DevID_1] Poll start --------------------- 2026-02-06 04:00:30.726 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-06 04:00:36.751 - [34mdebug[39m: modbus.0 (919438) Socket closed with error 2026-02-06 04:00:36.751 - [34mdebug[39m: modbus.0 (919438) Clearing timeout of the current request. 2026-02-06 04:00:36.751 - [34mdebug[39m: modbus.0 (919438) Cleaning up request fifo. 2026-02-06 04:00:37.752 - [34mdebug[39m: modbus.0 (919438) Closing client on purpose. 2026-02-06 04:00:37.753 - [32minfo[39m: modbus.0 (919438) Disconnected from slave 192.168.88.101 2026-02-06 04:00:47.756 - [32minfo[39m: modbus.0 (919438) Connected to slave 192.168.88.101 2026-02-06 04:00:47.757 - [34mdebug[39m: modbus.0 (919438) [DevID_1] Poll start --------------------- 2026-02-06 04:00:47.757 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-06 04:00:53.781 - [34mdebug[39m: modbus.0 (919438) Socket closed with error 2026-02-06 04:00:53.782 - [34mdebug[39m: modbus.0 (919438) Clearing timeout of the current request. 2026-02-06 04:00:53.782 - [34mdebug[39m: modbus.0 (919438) Cleaning up request fifo. 2026-02-06 04:00:54.782 - [34mdebug[39m: modbus.0 (919438) Closing client on purpose. 2026-02-06 04:00:54.783 - [32minfo[39m: modbus.0 (919438) Disconnected from slave 192.168.88.101 2026-02-06 04:01:04.785 - [32minfo[39m: modbus.0 (919438) Connected to slave 192.168.88.101 2026-02-06 04:01:04.786 - [34mdebug[39m: modbus.0 (919438) [DevID_1] Poll start --------------------- 2026-02-06 04:01:04.786 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-06 04:01:10.812 - [34mdebug[39m: modbus.0 (919438) Socket closed with error 2026-02-06 04:01:10.812 - [34mdebug[39m: modbus.0 (919438) Clearing timeout of the current request. 2026-02-06 04:01:10.813 - [34mdebug[39m: modbus.0 (919438) Cleaning up request fifo. 2026-02-06 04:01:11.812 - [34mdebug[39m: modbus.0 (919438) Closing client on purpose. 2026-02-06 04:01:11.813 - [32minfo[39m: modbus.0 (919438) Disconnected from slave 192.168.88.101 2026-02-06 04:01:21.815 - [32minfo[39m: modbus.0 (919438) Connected to slave 192.168.88.101 2026-02-06 04:01:21.816 - [34mdebug[39m: modbus.0 (919438) [DevID_1] Poll start --------------------- 2026-02-06 04:01:21.816 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-06 04:01:27.843 - [34mdebug[39m: modbus.0 (919438) Socket closed with error 2026-02-06 04:01:27.843 - [34mdebug[39m: modbus.0 (919438) Clearing timeout of the current request. 2026-02-06 04:01:27.843 - [34mdebug[39m: modbus.0 (919438) Cleaning up request fifo. 2026-02-06 04:01:28.845 - [34mdebug[39m: modbus.0 (919438) Closing client on purpose. 2026-02-06 04:01:28.845 - [32minfo[39m: modbus.0 (919438) Disconnected from slave 192.168.88.101Konfiguration:



@spicer sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:
Da stirbt die Übertragung langsam bis ab 2026-02-06 03:59:56.664 nix mehr kommt.
was startet bei dir um 04:00?
-
Laut Log nichts zur Fraglichen Zeit.
Die gelesenen Register nehmen schon vor sofarcloud und weathersense ab.2026-02-06 03:59:39.013 - [32minfo[39m: modbus.0 (919438) Connected to slave 192.168.88.101 2026-02-06 03:59:39.014 - [34mdebug[39m: modbus.0 (919438) [DevID_1] Poll start --------------------- 2026-02-06 03:59:39.014 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-06 03:59:39.079 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 DONE 2026-02-06 03:59:39.330 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 - 1 registers 2026-02-06 03:59:39.389 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 DONE 2026-02-06 03:59:39.639 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1476 - 1 registers 2026-02-06 03:59:45.659 - [34mdebug[39m: modbus.0 (919438) Socket closed with error 2026-02-06 03:59:45.660 - [34mdebug[39m: modbus.0 (919438) Clearing timeout of the current request. 2026-02-06 03:59:45.660 - [34mdebug[39m: modbus.0 (919438) Cleaning up request fifo. 2026-02-06 03:59:46.660 - [34mdebug[39m: modbus.0 (919438) Closing client on purpose. 2026-02-06 03:59:46.661 - [32minfo[39m: modbus.0 (919438) Disconnected from slave 192.168.88.101 2026-02-06 03:59:56.664 - [32minfo[39m: modbus.0 (919438) Connected to slave 192.168.88.101 2026-02-06 03:59:56.664 - [34mdebug[39m: modbus.0 (919438) [DevID_1] Poll start --------------------- 2026-02-06 03:59:56.665 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-06 04:00:02.690 - [34mdebug[39m: modbus.0 (919438) Socket closed with error 2026-02-06 04:00:02.690 - [34mdebug[39m: modbus.0 (919438) Clearing timeout of the current request. 2026-02-06 04:00:02.690 - [34mdebug[39m: modbus.0 (919438) Cleaning up request fifo. 2026-02-06 04:00:03.692 - [34mdebug[39m: modbus.0 (919438) Closing client on purpose. 2026-02-06 04:00:03.692 - [32minfo[39m: modbus.0 (919438) Disconnected from slave 192.168.88.101 2026-02-06 04:00:07.029 - [32minfo[39m: host.iobroker instance system.adapter.weathersense.0 in version "4.2.1" started with pid 933290 2026-02-06 04:00:09.479 - [32minfo[39m: weathersense.0 (933290) starting. Version 4.2.1 in /opt/iobroker/node_modules/iobroker.weathersense, node: v22.22.0, js-controller: 7.0.7 2026-02-06 04:00:09.509 - [32minfo[39m: weathersense.0 (933290) Start cloud query after 20 Seconds... 2026-02-06 04:00:13.696 - [32minfo[39m: modbus.0 (919438) Connected to slave 192.168.88.101 2026-02-06 04:00:13.696 - [34mdebug[39m: modbus.0 (919438) [DevID_1] Poll start --------------------- 2026-02-06 04:00:13.696 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-06 04:00:19.720 - [34mdebug[39m: modbus.0 (919438) Socket closed with error 2026-02-06 04:00:19.720 - [34mdebug[39m: modbus.0 (919438) Clearing timeout of the current request. 2026-02-06 04:00:19.720 - [34mdebug[39m: modbus.0 (919438) Cleaning up request fifo. 2026-02-06 04:00:20.721 - [34mdebug[39m: modbus.0 (919438) Closing client on purpose. 2026-02-06 04:00:20.722 - [32minfo[39m: modbus.0 (919438) Disconnected from slave 192.168.88.101 2026-02-06 04:00:29.030 - [32minfo[39m: host.iobroker instance system.adapter.sofarcloud.0 in version "3.3.0" started with pid 933306 2026-02-06 04:00:30.725 - [32minfo[39m: modbus.0 (919438) Connected to slave 192.168.88.101 2026-02-06 04:00:30.726 - [34mdebug[39m: modbus.0 (919438) [DevID_1] Poll start --------------------- 2026-02-06 04:00:30.726 - [34mdebug[39m: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers 2026-02-06 04:00:31.877 - [32minfo[39m: sofarcloud.0 (933306) starting. Version 3.3.0 in /opt/iobroker/node_modules/iobroker.sofarcloud, node: v22.22.0, js-controller: 7.0.7 2026-02-06 04:00:32.002 - [32minfo[39m: sofarcloud.0 (933306) Start cloud query after 112 seconds... 2026-02-06 04:00:32.413 - [32minfo[39m: weathersense.0 (933290) Terminated (NO_ERROR): Everything done. Going to terminate till next schedule 2026-02-06 04:00:32.952 - [32minfo[39m: host.iobroker instance system.adapter.weathersense.0 having pid 933290 terminated with code 0 (NO_ERROR) 2026-02-06 04:00:36.751 - [34mdebug[39m: modbus.0 (919438) Socket closed with error 2026-02-06 04:00:36.751 - [34mdebug[39m: modbus.0 (919438) Clearing timeout of the current request. 2026-02-06 04:00:36.751 - [34mdebug[39m: modbus.0 (919438) Cleaning up request fifo. 2026-02-06 04:00:37.752 - [34mdebug[39m: modbus.0 (919438) Closing client on purpose. 2026-02-06 04:00:37.753 - [32minfo[39m: modbus.0 (919438) Disconnected from slave 192.168.88.101 -
https://www.solarvie.at/en-eu/products/sofarsolar-ethernet-dongle-lse-3
kaufe dir einfach dieses Teil und du hast Ruhe, 55 Euro kostet weniger als die Nerven die du lassen musst. Vor allem hast du es gleich auch noch in der App
-
Habe mir eine eigene Lösung geschrieben, welche ich euch nicht vorenthalten möchte.
Habe in einem LXC, welcher für diverse Skripte zuständig ist, folgendes Python Script drauf gemacht plus eine config.yaml .
Dies sendet die Sofar-Daten per MQTT an den ioBroker./opt/modbus-mqtt/modbus_tcp_rtu.py
#!/usr/bin/env python3 import socket import struct import time import yaml import logging import paho.mqtt.client as mqtt import os CONFIG_FILE = "/opt/modbus-mqtt/config.yaml" LOG_FILE = "/var/log/modbus-mqtt.log" logging.basicConfig( filename=LOG_FILE, level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s" ) logging.info("Starting modbus-mqtt with config from disk") try: with open(CONFIG_FILE, "r") as f: cfg = yaml.safe_load(f) except Exception as e: logging.error(f"Failed to load config: {e}") exit(1) last_mtime = os.path.getmtime(CONFIG_FILE) MODBUS_HOST = cfg["modbus"]["host"] MODBUS_PORT = cfg["modbus"]["port"] UNIT_ID = cfg["modbus"]["unit_id"] MQTT_HOST = cfg["mqtt"]["host"] MQTT_PORT = cfg["mqtt"]["port"] BASE_TOPIC = cfg["mqtt"]["base_topic"] POLL_INTERVAL = cfg["poll_interval"] REGISTERS = cfg["registers"] mqttc = mqtt.Client(client_id="modbus_mqtt_bridge", clean_session=True) mqttc.username_pw_set(cfg["mqtt"]["username"], cfg["mqtt"]["password"]) mqttc.connect(MQTT_HOST, MQTT_PORT) mqttc.loop_start() # --------------------------------------------------------- # CRC16 Modbus # --------------------------------------------------------- def crc16(data): crc = 0xFFFF for pos in data: crc ^= pos for _ in range(8): if crc & 1: crc = (crc >> 1) ^ 0xA001 else: crc >>= 1 return crc.to_bytes(2, byteorder="little") # --------------------------------------------------------- # RTU‑Frame senden über TCP # --------------------------------------------------------- def read_holding_registers_rtu_tcp(unit, address, count): # Build RTU frame: [unit][function][addr_hi][addr_lo][count_hi][count_lo][crc_lo][crc_hi] frame = bytearray() frame.append(unit) frame.append(0x03) # Function code: Read Holding Registers frame += struct.pack(">HH", address, count) frame += crc16(frame) # TCP socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(2) s.connect((MODBUS_HOST, MODBUS_PORT)) s.send(frame) # Response response = s.recv(256) s.close() # Validate minimum length if len(response) < 5: raise Exception("Invalid response length") # Validate CRC data = response[:-2] crc_received = response[-2:] crc_calc = crc16(data) if crc_received != crc_calc: raise Exception("CRC mismatch") # Byte count byte_count = response[2] if byte_count != count * 2: raise Exception("Unexpected byte count") # Extract registers registers = [] for i in range(count): hi = response[3 + i*2] lo = response[4 + i*2] registers.append((hi << 8) | lo) return registers # --------------------------------------------------------- # Poll‑Loop # --------------------------------------------------------- while True: # Auto‑Reload wenn config.yaml geändert wurde current_mtime = os.path.getmtime(CONFIG_FILE) if current_mtime != last_mtime: logging.info("Config changed, restarting...") mqttc.loop_stop() exit(0) for reg in REGISTERS: addr = reg["addr"] reg_type = reg["type"] factor = reg["factor"] length = 2 if reg_type == "uint32" else 1 try: regs = read_holding_registers_rtu_tcp(UNIT_ID, addr, length) if reg_type == "int16": value = struct.unpack(">h", struct.pack(">H", regs[0]))[0] elif reg_type == "uint16": value = regs[0] elif reg_type == "uint32": value = (regs[0] << 16) | regs[1] else: continue value *= factor topic = f"{BASE_TOPIC}/register/{addr}" mqttc.publish(topic, value) #logging.info(f"Published {topic} = {value}") except Exception as e: logging.error(f"Error reading register {addr}: {e}") time.sleep(0.2) time.sleep(POLL_INTERVAL)/opt/modbus-mqtt/config.yaml
modbus: host: "192.168.88.101" port: 8899 unit_id: 1 mqtt: host: "192.168.1.251" port: 1883 base_topic: "modbus/inverter" username: "mqtt_user" password: "mqtt_passwort" poll_interval: 20 registers: - addr: 1199 name: "ActivePower_Load_Sys" type: "uint16" factor: 0.01 - addr: 1160 name: "ActivePower_PCC_Total" type: "int16" factor: 0.01 - addr: 1476 name: "Power_PV_Total" type: "uint16" factor: 0.1 - addr: 1542 name: "Power_Bat1" type: "int16" factor: 0.01 - addr: 1544 name: "SOC_Bat1" type: "uint16" factor: 1 - addr: 1668 name: "PV_Generation_Today" type: "uint32" factor: 0.01Beim Waveshare musste ich auf "Transparent" (anstelle von "modbus TCP <=> modbus RTU") stellen.
In der config seht ihr auch, dass LXCs und der Waveshare nicht im gleichen Netzwerk sind. WAN von 192.168.88.0 (MikroTik Router) hängt am Netz 192.168.1.0 (Fritzbox). Da hab ich eine Route definiert, damit man vom einen ins andere Netz zugreifen kann.
Die IPs, Ports, Usernames und Passwörter müsst ihr natürlich auf eure Gegebenheiten anpassen.In der /etc/systemd/system/modbus-mqtt.service
[Unit] Description=Modbus RTU over TCP to MQTT Gateway After=network-online.target Wants=network-online.target [Service] Type=simple User=root WorkingDirectory=/opt/modbus-mqtt ExecStart=/usr/bin/env python3 /opt/modbus-mqtt/modbus_tcp_rtu.py Restart=always RestartSec=5 Environment=PYTHONUNBUFFERED=1 [Install] WantedBy=multi-user.targetWenn alles fertig ist, eingeben:
sudo systemctl daemon-reload sudo systemctl enable modbus-mqtt.service sudo systemctl start modbus-mqtt.serviceDie Daten werden nun per MQTT an den ioBroker gesendet.
Der Datenpunkt sieht dann etwa so aus:mqtt.0.modbus.inverter.register.{Registeradresse}

-
Habe mir eine eigene Lösung geschrieben, welche ich euch nicht vorenthalten möchte.
Habe in einem LXC, welcher für diverse Skripte zuständig ist, folgendes Python Script drauf gemacht plus eine config.yaml .
Dies sendet die Sofar-Daten per MQTT an den ioBroker./opt/modbus-mqtt/modbus_tcp_rtu.py
#!/usr/bin/env python3 import socket import struct import time import yaml import logging import paho.mqtt.client as mqtt import os CONFIG_FILE = "/opt/modbus-mqtt/config.yaml" LOG_FILE = "/var/log/modbus-mqtt.log" logging.basicConfig( filename=LOG_FILE, level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s" ) logging.info("Starting modbus-mqtt with config from disk") try: with open(CONFIG_FILE, "r") as f: cfg = yaml.safe_load(f) except Exception as e: logging.error(f"Failed to load config: {e}") exit(1) last_mtime = os.path.getmtime(CONFIG_FILE) MODBUS_HOST = cfg["modbus"]["host"] MODBUS_PORT = cfg["modbus"]["port"] UNIT_ID = cfg["modbus"]["unit_id"] MQTT_HOST = cfg["mqtt"]["host"] MQTT_PORT = cfg["mqtt"]["port"] BASE_TOPIC = cfg["mqtt"]["base_topic"] POLL_INTERVAL = cfg["poll_interval"] REGISTERS = cfg["registers"] mqttc = mqtt.Client(client_id="modbus_mqtt_bridge", clean_session=True) mqttc.username_pw_set(cfg["mqtt"]["username"], cfg["mqtt"]["password"]) mqttc.connect(MQTT_HOST, MQTT_PORT) mqttc.loop_start() # --------------------------------------------------------- # CRC16 Modbus # --------------------------------------------------------- def crc16(data): crc = 0xFFFF for pos in data: crc ^= pos for _ in range(8): if crc & 1: crc = (crc >> 1) ^ 0xA001 else: crc >>= 1 return crc.to_bytes(2, byteorder="little") # --------------------------------------------------------- # RTU‑Frame senden über TCP # --------------------------------------------------------- def read_holding_registers_rtu_tcp(unit, address, count): # Build RTU frame: [unit][function][addr_hi][addr_lo][count_hi][count_lo][crc_lo][crc_hi] frame = bytearray() frame.append(unit) frame.append(0x03) # Function code: Read Holding Registers frame += struct.pack(">HH", address, count) frame += crc16(frame) # TCP socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(2) s.connect((MODBUS_HOST, MODBUS_PORT)) s.send(frame) # Response response = s.recv(256) s.close() # Validate minimum length if len(response) < 5: raise Exception("Invalid response length") # Validate CRC data = response[:-2] crc_received = response[-2:] crc_calc = crc16(data) if crc_received != crc_calc: raise Exception("CRC mismatch") # Byte count byte_count = response[2] if byte_count != count * 2: raise Exception("Unexpected byte count") # Extract registers registers = [] for i in range(count): hi = response[3 + i*2] lo = response[4 + i*2] registers.append((hi << 8) | lo) return registers # --------------------------------------------------------- # Poll‑Loop # --------------------------------------------------------- while True: # Auto‑Reload wenn config.yaml geändert wurde current_mtime = os.path.getmtime(CONFIG_FILE) if current_mtime != last_mtime: logging.info("Config changed, restarting...") mqttc.loop_stop() exit(0) for reg in REGISTERS: addr = reg["addr"] reg_type = reg["type"] factor = reg["factor"] length = 2 if reg_type == "uint32" else 1 try: regs = read_holding_registers_rtu_tcp(UNIT_ID, addr, length) if reg_type == "int16": value = struct.unpack(">h", struct.pack(">H", regs[0]))[0] elif reg_type == "uint16": value = regs[0] elif reg_type == "uint32": value = (regs[0] << 16) | regs[1] else: continue value *= factor topic = f"{BASE_TOPIC}/register/{addr}" mqttc.publish(topic, value) #logging.info(f"Published {topic} = {value}") except Exception as e: logging.error(f"Error reading register {addr}: {e}") time.sleep(0.2) time.sleep(POLL_INTERVAL)/opt/modbus-mqtt/config.yaml
modbus: host: "192.168.88.101" port: 8899 unit_id: 1 mqtt: host: "192.168.1.251" port: 1883 base_topic: "modbus/inverter" username: "mqtt_user" password: "mqtt_passwort" poll_interval: 20 registers: - addr: 1199 name: "ActivePower_Load_Sys" type: "uint16" factor: 0.01 - addr: 1160 name: "ActivePower_PCC_Total" type: "int16" factor: 0.01 - addr: 1476 name: "Power_PV_Total" type: "uint16" factor: 0.1 - addr: 1542 name: "Power_Bat1" type: "int16" factor: 0.01 - addr: 1544 name: "SOC_Bat1" type: "uint16" factor: 1 - addr: 1668 name: "PV_Generation_Today" type: "uint32" factor: 0.01Beim Waveshare musste ich auf "Transparent" (anstelle von "modbus TCP <=> modbus RTU") stellen.
In der config seht ihr auch, dass LXCs und der Waveshare nicht im gleichen Netzwerk sind. WAN von 192.168.88.0 (MikroTik Router) hängt am Netz 192.168.1.0 (Fritzbox). Da hab ich eine Route definiert, damit man vom einen ins andere Netz zugreifen kann.
Die IPs, Ports, Usernames und Passwörter müsst ihr natürlich auf eure Gegebenheiten anpassen.In der /etc/systemd/system/modbus-mqtt.service
[Unit] Description=Modbus RTU over TCP to MQTT Gateway After=network-online.target Wants=network-online.target [Service] Type=simple User=root WorkingDirectory=/opt/modbus-mqtt ExecStart=/usr/bin/env python3 /opt/modbus-mqtt/modbus_tcp_rtu.py Restart=always RestartSec=5 Environment=PYTHONUNBUFFERED=1 [Install] WantedBy=multi-user.targetWenn alles fertig ist, eingeben:
sudo systemctl daemon-reload sudo systemctl enable modbus-mqtt.service sudo systemctl start modbus-mqtt.serviceDie Daten werden nun per MQTT an den ioBroker gesendet.
Der Datenpunkt sieht dann etwa so aus:mqtt.0.modbus.inverter.register.{Registeradresse}

@spicer sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:
Beim Waveshare musste ich auf "Transparent" (anstelle von "modbus TCP <=> modbus RTU") stellen.
das ist, warum mir ein solcher Konverter zu komplex ist.
Dann noch bei gleichem Hersteller unterschiedliche Einstellungen braucht....@spicer sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:
dass LXCs und der Waveshare nicht im gleichen Netzwerk sind.
davon war bisher keine Rede
-
@spicer sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:
Beim Waveshare musste ich auf "Transparent" (anstelle von "modbus TCP <=> modbus RTU") stellen.
das ist, warum mir ein solcher Konverter zu komplex ist.
Dann noch bei gleichem Hersteller unterschiedliche Einstellungen braucht....@spicer sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:
dass LXCs und der Waveshare nicht im gleichen Netzwerk sind.
davon war bisher keine Rede
-
@Homoran sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:
davon war bisher keine Rede
Das hat ja auch nichts mit den "Hängern" zutun ;)
Der Adapter läuft ja ein paar Stunden gut.@spicer sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:
Das hat ja auch nichts mit den "Hängern" zutun ;)
sicher?
der socket wird angemeckert!
-
@spicer sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:
Das hat ja auch nichts mit den "Hängern" zutun ;)
sicher?
der socket wird angemeckert!
@Homoran sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:
@spicer sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:
Das hat ja auch nichts mit den "Hängern" zutun ;)
sicher?
der socket wird angemeckert!
Ja eben. Das hab ich weiter oben ja schon festgehalten.
Da konnte mir niemand einen Rat geben.
Darum hab ich dann ein eigenes Script erstellt ;)
Und das läuft seit der Erstellung stabil.