NEWS
Spezialproblem: Docker - Modbus - CMI
-
Systemdata Bitte Ausfüllen Hardwaresystem: Synology Docker Arbeitsspeicher: 10GB Festplattenart: HDD Betriebssystem: Docker Nodejs-Version: v16.19.0 NPM-Version: 8.19.3 Installationsart: Docker Image genutzt: Ja Hallo zusammen,
in der Hoffnung, dass hier Nutzer dabei sind die entweder auch ein C.M.I. von Technische Alternative im Einsatz und das Verbindungsproblem mit Modbus im Dockercontainer gelöst haben oder Nutzer, die Analyse-Cracks bei technischen Problemen sind, trage ich mal mein sehr spezielles Problem vor.
Bisher betrieb ich meine ioBroker Instanz auf meinem Raspberry4. Dort lief der Modbus Adapter für die Verbindung mit meiner Heizungssteuerung mehr oder weniger stabil und lieferte die Daten die ich brauchte. Siehe dazu auch mein Tutorial. Ich hab mich im Detail nie mit Modbus beschäftigt und verlasse mich auf den Adapter.
Nun habe ich meine ioBroker Instanz in einen Docker Container auf mein Synology NAS umgezogen. Alles hat bisher funktioniert, bis auf den Modbus Adapter. Und der bringt mich (wieder mal) zu Verzweiflung.
Zuerst habe ich natürlich den erforderlichen Port 502 in der Containerkonfiguration eingestellt:
Dann habe ich geschaut, welche Ports auf dem Raspberry offen sind
pi@raspberrypi:~ $ sudo netstat -tulpn Aktive Internetverbindungen (Nur Server) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 22606/iobroker.js-c tcp 0 0 127.0.0.1:9001 0.0.0.0:* LISTEN 22606/iobroker.js-c tcp 0 0 0.0.0.0:502 0.0.0.0:* LISTEN 27895/io.modbus.0 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 620/sshd tcp 0 0 127.0.0.1:8088 0.0.0.0:* LISTEN 613/influxd tcp6 0 0 :::8081 :::* LISTEN 17817/io.admin.0 tcp6 0 0 :::8086 :::* LISTEN 613/influxd tcp6 0 0 :::22 :::* LISTEN 620/sshd tcp6 0 0 :::3000 :::* LISTEN 8926/grafana-server udp 0 0 0.0.0.0:37138 0.0.0.0:* 360/avahi-daemon: r udp 0 0 0.0.0.0:68 0.0.0.0:* 605/dhcpcd udp 0 0 0.0.0.0:5353 0.0.0.0:* 360/avahi-daemon: r udp6 0 0 :::546 :::* 605/dhcpcd udp6 0 0 :::58074 :::* 360/avahi-daemon: r udp6 0 0 :::5353 :::* 360/avahi-daemon: r
Und die dann mit denen auf dem NAS verglichen:
henri@nas:~$ sudo netstat -tulpn Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:1502 0.0.0.0:* LISTEN 15567/docker-proxy tcp 0 0 127.0.0.1:512 0.0.0.0:* LISTEN 18562/termd tcp 0 0 127.0.0.1:161 0.0.0.0:* LISTEN 13792/snmpd tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 11140/nginx: master tcp 0 0 0.0.0.0:5001 0.0.0.0:* LISTEN 11140/nginx: master tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 22568/smbd tcp 0 0 0.0.0.0:5357 0.0.0.0:* LISTEN 11140/nginx: master tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 11140/nginx: master tcp 0 0 0.0.0.0:2001 0.0.0.0:* LISTEN 15502/docker-proxy tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 15482/docker-proxy tcp 0 0 127.0.0.1:33300 0.0.0.0:* LISTEN 15257/python3 tcp 0 0 0.0.0.0:502 0.0.0.0:* LISTEN 15586/docker-proxy tcp 0 0 0.0.0.0:8086 0.0.0.0:* LISTEN 6392/docker-proxy
Da sieht man, dass der Port 502 via Docker-Proxy in den Container zeigt (nehme ich jedenfalls an).
Und im Container sieht das dann so aus:root@buanet-iobroker1:/opt/iobroker# netstat -tulpn Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN - tcp 0 0 127.0.0.1:9001 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:502 0.0.0.0:* LISTEN - tcp 0 0 127.0.0.1:8088 0.0.0.0:* LISTEN - tcp6 0 0 :::8081 :::* LISTEN - tcp6 0 0 :::8082 :::* LISTEN - tcp6 0 0 :::8086 :::* LISTEN - udp 0 0 0.0.0.0:5683 0.0.0.0:* -
Aus meiner Sicht passt das also.
Die Modbus Konfiguration ist exakt die gleiche wie auf dem Raspberry.
Und wenn ich auf dem Raspberry nach der Verbindung schaue steht da
Und die 93 ist die lokale IP vom Raspberry.Wie kann ich mich dem Fehler noch nähern? Ich hab keine Ahnung mehr.
Danke
Henri[Edit sagt]
In @andre Dokumentation habe ich folgenden Hinweis gefunden:Außerdem gilt für den Bridged Mode der Hinweis, dass Adapter die per Multicast arbeiten hier nicht funktionieren werden.
Kann es sein, dass genau dies das Problem ist?
-
@hennerich ist das jetzt ein Bug von ioBroker oder ein "Spezialproblem"?
-
@hennerich sagte in Spezialproblem: Docker - Modbus - CMI:
Kann es sein, dass genau dies das Problem ist?
so wie ich das sehe arbeitet der modbus adapter nicht mit multicast oder überhaupt einem broadcast.
wie finden die anderen geräte diese modbus instanz?du hast irgendwie nicht konkret den fehler benannt, ausser das der adapter nicht funktioniert? Wie äussert sich das den genau? aber ich interpretiere, das die anderen geräte den nicht finden? muss man da nicht die ipadresse angeben?
-
@homoran sagte in Spezialproblem: Docker - Modbus - CMI:
@hennerich ist das jetzt ein Bug von ioBroker oder ein "Spezialproblem"?
Wenn du mich so fragst, so wie ich es im Betreff formuliert habe. Ein Spezialproblem, kein Bug. Und ich dache, dass das Error Forum dafür am Besten geeignet wäre.
@oliverio sagte in Spezialproblem: Docker - Modbus - CMI:
@hennerich sagte in Spezialproblem: Docker - Modbus - CMI:
Kann es sein, dass genau dies das Problem ist?
so wie ich das sehe arbeitet der modbus adapter nicht mit multicast oder überhaupt einem broadcast.
wie finden die anderen geräte diese modbus instanz?du hast irgendwie nicht konkret den fehler benannt, ausser das der adapter nicht funktioniert? Wie äussert sich das den genau? aber ich interpretiere, das die anderen geräte den nicht finden? muss man da nicht die ipadresse angeben?
Naja, ich habe zwei Modbus Adapter laufen. Der eine empfängt Daten von meiner SolarEdge PV Anlage als Modbus Master.
Dort gibt man die Adresse des Slave an.Das ist bei der Modbus Verbindung zum Heizungssystem nicht so. Da fungiert der ioBroker Adapter als Slave und scheinbar ist es tatsächlich so, dass man dort nicht die IP des Masters angeben muss.
Und sorry, wenn ich das nicht so konkret reingeschrieben habe, der Modbus Adapter verbindet sich nicht mit dem Master und hängt immer hier:
Auch das Debug Log schweigt sich mehr oder weniger über die Ursache aus. Dort stand mal was vonmodbus.0 2022-12-28 18:16:15.483 error Client in error state. modbus.0 2022-12-28 18:16:15.483 error Socket Error
Diesr Fehler kommt aber nicht mehr.
-
@hennerich sagte in Spezialproblem: Docker - Modbus - CMI:
dass das Error Forum dafür am Besten geeignet wäre.
hab es mal nach allgemein verschoben.
-
Hab den Fehler gefunden: Man muss im CMI ebenso die IP Adresse anpassen, an die der Master die Werte senden soll.