Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [gelöst] Modbus Adapter UVR 16x2 CMI

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    SOLVED [gelöst] Modbus Adapter UVR 16x2 CMI

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      digidax last edited by digidax

      Hallo liebe Community,
      ich habe auf einem Raspberry das IO Broker Image installiert:
      ioBroker-Pi
      Node.js: v8.16.2
      NPM: 6.4.1

      und den Modbus Adapter 3.0.0.
      IP das Raspi: 192.168.1.172
      IP der CMI: 192.168.1.88

      Das CMI wie folgt konfiguriert:
      2513f15e-bdd5-4a76-84b6-3398735b6892-grafik.png

      Modbus Adapter:
      288c42a6-0427-4eb2-aca9-f76918d802ce-grafik.png

      Die Instanz bleibt leider rot, das Debuglog meint:

      2019-10-23 17:30:13.483  - info: modbus.0 terminating
      2019-10-23 17:30:13.502  - error: Caught by controller[0]: { Error: listen EADDRNOTAVAIL 192.168.1.88:502
      2019-10-23 17:30:13.503  - error: Caught by controller[0]:     at Server.setupListenHandle [as _listen2] (net.js:1343:19)
      2019-10-23 17:30:13.503  - error: Caught by controller[0]:     at listenInCluster (net.js:1401:12)
      2019-10-23 17:30:13.503  - error: Caught by controller[0]:     at doListen (net.js:1510:7)
      2019-10-23 17:30:13.504  - error: Caught by controller[0]:     at _combinedTickCallback (internal/process/next_tick.js:142:11)
      2019-10-23 17:30:13.504  - error: Caught by controller[0]:     at process._tickCallback (internal/process/next_tick.js:181:9)
      2019-10-23 17:30:13.504  - error: Caught by controller[0]:   errno: 'EADDRNOTAVAIL',
      2019-10-23 17:30:13.515  - error: Caught by controller[0]:   code: 'EADDRNOTAVAIL',
      2019-10-23 17:30:13.515  - error: Caught by controller[0]:   syscall: 'listen',
      2019-10-23 17:30:13.515  - error: Caught by controller[0]:   address: '192.168.1.88',
      2019-10-23 17:30:13.516  - error: Caught by controller[0]:   port: 502 }
      2019-10-23 17:30:13.516  - error: host.ioBroker-Pi instance system.adapter.modbus.0 terminated with code 0 (OK)
      2019-10-23 17:30:13.516  - info: host.ioBroker-Pi Restart adapter system.adapter.modbus.0 because enabled
      2019-10-23 17:30:43.535  - info: host.ioBroker-Pi instance system.adapter.modbus.0 started with pid 871
      2019-10-23 17:30:44.541  - debug: modbus.0 objectDB connected
      2019-10-23 17:30:44.609  - debug: modbus.0 statesDB connected
      2019-10-23 17:30:44.730  - info: modbus.0 starting. Version 3.0.0 in /opt/iobroker/node_modules/iobroker.modbus, node: v8.16.2
      2019-10-23 17:30:44.967  - debug: modbus.0 Slave ready to start
      2019-10-23 17:30:45.112  - debug: modbus.0 server is listening on port
      2019-10-23 17:30:45.114  - debug: modbus.0 initiating read coils request handler.
      2019-10-23 17:30:45.115  - debug: modbus.0 setting request handler
      2019-10-23 17:30:45.116  - debug: modbus.0 initiating read discrete inputs request handler.
      2019-10-23 17:30:45.116  - debug: modbus.0 setting request handler
      2019-10-23 17:30:45.117  - debug: modbus.0 initiating read holding registers request handler.
      2019-10-23 17:30:45.117  - debug: modbus.0 setting request handler
      2019-10-23 17:30:45.118  - debug: modbus.0 initiating read input registers request handler.
      2019-10-23 17:30:45.118  - debug: modbus.0 setting request handler
      2019-10-23 17:30:45.119  - debug: modbus.0 initiating write multiple coils request handler.
      2019-10-23 17:30:45.119  - debug: modbus.0 setting request handler
      2019-10-23 17:30:45.120  - debug: modbus.0 initiating write multiple registers request handler.
      2019-10-23 17:30:45.120  - debug: modbus.0 setting request handler
      2019-10-23 17:30:45.121  - debug: modbus.0 initiating write single coil request handler.
      2019-10-23 17:30:45.122  - debug: modbus.0 setting request handler
      2019-10-23 17:30:45.122  - debug: modbus.0 initiating write single register request handler.
      2019-10-23 17:30:45.123  - debug: modbus.0 setting request handler
      2019-10-23 17:30:45.146  - error: modbus.0 uncaught exception: listen EADDRNOTAVAIL 192.168.1.88:502
      2019-10-23 17:30:45.146  - error: modbus.0 Error: listen EADDRNOTAVAIL 192.168.1.88:502
      

      Mit Ananas64 als Server liefert das CMI korrekte Daten. Ebenfalls konnt ich mit Ananas64 den IO Broker ansprechen. Hat jemand eine Idee, warum CMI und IO Broker nicht wollen?

      lg Frank

      1 Reply Last reply Reply Quote 0
      • D
        digidax last edited by

        Gelöst: Es ware ein Rechte Problem. Nach dem Durchlaufen des Installation-Fixer wurde die Modbusinstanz grün und im entsprechenden modbus Objekt erschien dann auch sofort der Wert. Der Port 502 hat nun auch im System den LISTEN Status.

        Vielen Dank für Eure Hilfe,
        Frank

        1 Reply Last reply Reply Quote 0
        • M
          martin111 last edited by

          Probier mal beim Modbus-Adapter 0.0.0.0 als Partner IP Adresse.
          Ich konnte erst dann von der CMI Daten auslesen, als ich die 0.0.0.0 eingegeben hatte, und den Typ auf Slave gestellt hatte.
          Dann habe ich unter Holding Registers die auszulesenden Adressen eingegeben.

          1 Reply Last reply Reply Quote 0
          • D
            digidax last edited by digidax

            Hat leider nix gebracht:

            host.ioBroker-Pi	2019-10-24 07:51:34.400	info	Restart adapter system.adapter.modbus.0 because enabled
            host.ioBroker-Pi	2019-10-24 07:51:34.400	error	instance system.adapter.modbus.0 terminated with code 0 (OK)
            host.ioBroker-Pi	2019-10-24 07:51:34.399	error	Caught by controller[0]: port: 502 }
            host.ioBroker-Pi	2019-10-24 07:51:34.399	error	Caught by controller[0]: address: '0.0.0.0',
            host.ioBroker-Pi	2019-10-24 07:51:34.399	error	Caught by controller[0]: syscall: 'listen',
            host.ioBroker-Pi	2019-10-24 07:51:34.399	error	Caught by controller[0]: code: 'EACCES',
            host.ioBroker-Pi	2019-10-24 07:51:34.399	error	Caught by controller[0]: errno: 'EACCES',
            host.ioBroker-Pi	2019-10-24 07:51:34.399	error	Caught by controller[0]: at process._tickCallback (internal/process/next_tick.js:181:9)
            host.ioBroker-Pi	2019-10-24 07:51:34.399	error	Caught by controller[0]: at _combinedTickCallback (internal/process/next_tick.js:142:11)
            host.ioBroker-Pi	2019-10-24 07:51:34.399	error	Caught by controller[0]: at doListen (net.js:1510:7)
            host.ioBroker-Pi	2019-10-24 07:51:34.398	error	Caught by controller[0]: at listenInCluster (net.js:1401:12)
            host.ioBroker-Pi	2019-10-24 07:51:34.398	error	Caught by controller[0]: at Server.setupListenHandle [as _listen2] (net.js:1343:19)
            host.ioBroker-Pi	2019-10-24 07:51:34.398	error	Caught by controller[0]: { Error: listen EACCES 0.0.0.0:502
            modbus.0	2019-10-24 07:51:34.377	error	Error: listen EACCES 0.0.0.0:502 at Server.setupListenHandle [as _listen2] (net.js:1343:19) at listenInCluster (net.js:1401:12) at doListen (net.js:1510:7) at _combinedTickCallback (in
            modbus.0	2019-10-24 07:51:34.376	error	uncaught exception: listen EACCES 0.0.0.0:502
            modbus.0	2019-10-24 07:51:34.104	info	starting. Version 3.0.0 in /opt/iobroker/node_modules/iobroker.modbus, node: v8.16.2
            host.ioBroker-Pi	2019-10-24 07:51:32.765	info	instance system.adapter.modbus.0 started with pid 4300
            

            Im holding Register wird 0 für dern Wert 1 ausgegeben, kann ja leider auch nichts da sein, wenn die Verbindung nicht zu Stande kommt.

            Der Fehler uncaught exception: listen EACCES 0.0.0.0:502 bedeutet, dass der Port 502 bereits belegt ist, was er aber nicht ist:

            pi@ioBroker-Pi:~ $ 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      525/iobroker.js-con
            tcp        0      0 127.0.0.1:9001          0.0.0.0:*               LISTEN      525/iobroker.js-con
            tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      542/sshd
            tcp6       0      0 :::8081                 :::*                    LISTEN      556/io.admin.0
            tcp6       0      0 :::22                   :::*                    LISTEN      542/sshd
            udp        0      0 0.0.0.0:68              0.0.0.0:*                           524/dhcpcd
            udp        0      0 0.0.0.0:5353            0.0.0.0:*                           348/avahi-daemon: r
            udp        0      0 0.0.0.0:39221           0.0.0.0:*                           348/avahi-daemon: r
            udp6       0      0 :::47714                :::*                                348/avahi-daemon: r
            udp6       0      0 :::5353                 :::*                                348/avahi-daemon: r                             -
            

            Firewall ist auch aus. Wenn die Modbus Instanz laufen würde, müßte sie ja einen offenen Port bereitstellen, welcher nicht da ist.
            Das CMI baut aber einen Verbindung auf, die dann leider mangels nicht verfügbaren Prozess zurück gesetzt wird:

            pi@ioBroker-Pi:~ $ sudo tcpdump host 192.168.1.88
            tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
            listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
            08:19:06.020504 IP 192.168.1.88.57001 > 192.168.1.172.502: Flags [S], seq 680458444, win 4320, options [mss 1440], length 0
            08:19:06.020632 IP 192.168.1.172.502 > 192.168.1.88.57001: Flags [R.], seq 0, ack 680458445, win 0, length 0
            08:19:47.020721 IP 192.168.1.88.57002 > 192.168.1.172.502: Flags [S], seq 1094048092, win 4320, options [mss 1440], length 0
            08:19:47.020829 IP 192.168.1.172.502 > 192.168.1.88.57002: Flags [R.], seq 0, ack 1094048093, win 0, length 0
            
            Stabilostick 1 Reply Last reply Reply Quote 0
            • Stabilostick
              Stabilostick @digidax last edited by

              @digidax

              Wenn Du satt 0.0.0.0 die ip-Adresse des ioBroker-Servers nimmst, ändert sich dann etwas?

              1 Reply Last reply Reply Quote 0
              • D
                digidax last edited by digidax

                leider nicht:

                host.ioBroker-Pi	2019-10-26 16:31:35.339	error	instance system.adapter.modbus.0 terminated with code 0 (OK)
                Caught	2019-10-26 16:31:35.338	error	by controller[0]: port: 502 }
                Caught	2019-10-26 16:31:35.338	error	by controller[0]: address: '192.168.1.172',
                Caught	2019-10-26 16:31:35.338	error	by controller[0]: syscall: 'listen',
                Caught	2019-10-26 16:31:35.338	error	by controller[0]: code: 'EACCES',
                Caught	2019-10-26 16:31:35.338	error	by controller[0]: errno: 'EACCES',
                Caught	2019-10-26 16:31:35.338	error	by controller[0]: at process._tickCallback (internal/process/next_tick.js:181:9)
                Caught	2019-10-26 16:31:35.338	error	by controller[0]: at _combinedTickCallback (internal/process/next_tick.js:142:11)
                Caught	2019-10-26 16:31:35.338	error	by controller[0]: at doListen (net.js:1510:7)
                Caught	2019-10-26 16:31:35.338	error	by controller[0]: at listenInCluster (net.js:1401:12)
                Caught	2019-10-26 16:31:35.338	error	by controller[0]: at Server.setupListenHandle [as _listen2] (net.js:1343:19)
                Caught	2019-10-26 16:31:35.337	error	by controller[0]: { Error: listen EACCES 192.168.1.172:502
                modbus.0	2019-10-26 16:31:35.322	info	terminating
                modbus.0	2019-10-26 16:31:35.308	error	at process._tickCallback (internal/process/next_tick.js:181:9)
                modbus.0	2019-10-26 16:31:35.308	error	at _combinedTickCallback (internal/process/next_tick.js:142:11)
                modbus.0	2019-10-26 16:31:35.308	error	at doListen (net.js:1510:7)
                modbus.0	2019-10-26 16:31:35.308	error	at listenInCluster (net.js:1401:12)
                modbus.0	2019-10-26 16:31:35.308	error	at Server.setupListenHandle [as _listen2] (net.js:1343:19)
                modbus.0	2019-10-26 16:31:35.308	error	Error: listen EACCES 192.168.1.172:502
                modbus.0	2019-10-26 16:31:35.307	error	uncaught exception: listen EACCES 192.168.1.172:502
                modbus.0	2019-10-26 16:31:34.912	info	starting. Version 3.0.0 in /opt/iobroker/node_modules/iobroker.modbus, node: v8.16.2
                host.ioBroker-Pi	2019-10-26 16:31:33.736	info	instance system.adapter.modbus.0 started with pid 10028
                host.ioBroker-Pi	2019-10-26 16:31:33.705	info	object change system.adapter.modbus.0
                host.ioBroker-Pi	2019-10-26 16:31:05.694	info	Restart adapter system.adapter.modbus.0 because enabled
                

                Ich habe mal mit Netcat den Port 502 auf dem Raspberry aufgemacht:

                sudo netcat -l 502
                

                Das CMI sendet etwas. Der Port ließ sich auch ohne Probleme öffnen und ist dann auch auf:

                pi@ioBroker-Pi:~ $ 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      525/iobroker.js-con
                tcp        0      0 127.0.0.1:9001          0.0.0.0:*               LISTEN      525/iobroker.js-con
                tcp        0      0 0.0.0.0:502             0.0.0.0:*               LISTEN      10246/netcat
                tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      542/sshd
                tcp6       0      0 :::8081                 :::*                    LISTEN      556/io.admin.0
                tcp6       0      0 :::22                   :::*                    LISTEN      542/sshd
                udp        0      0 0.0.0.0:68              0.0.0.0:*                           524/dhcpcd
                udp        0      0 0.0.0.0:5353            0.0.0.0:*                           348/avahi-daemon: r
                udp        0      0 0.0.0.0:39221           0.0.0.0:*                           348/avahi-daemon: r
                udp6       0      0 :::47714                :::*                                348/avahi-daemon: r
                udp6       0      0 :::5353                 :::*                                348/avahi-daemon: r
                
                

                Wenn ich IO Broker die Modbusinstanz öffne, sollte die als Slave ja auch auf dem Port lauschen? Wie sieht bei Euch die Ausgabe sudo netstat -tulpn aus?

                Kann es ein, dass die Modbus Instanz keine Rechte hat, einen Port also Socket zu öffnen?
                Präziser: Port 502 liegt im Bereich der privilligierten Ports (1-1024) - liegt das das Problem?

                Stabilostick 1 Reply Last reply Reply Quote 0
                • Stabilostick
                  Stabilostick @digidax last edited by

                  @digidax

                  Lass doch mal den Installation-Fixer laufen. Der repariert u.a. bei den Berechtigungen auch was für priviligierte Ports.

                  Oder wenn nicht:

                  sudo setcap cap_net_bind_service=+eip $(eval readlink -f `which node`)
                  
                  1 Reply Last reply Reply Quote 0
                  • D
                    digidax last edited by

                    Gelöst: Es ware ein Rechte Problem. Nach dem Durchlaufen des Installation-Fixer wurde die Modbusinstanz grün und im entsprechenden modbus Objekt erschien dann auch sofort der Wert. Der Port 502 hat nun auch im System den LISTEN Status.

                    Vielen Dank für Eure Hilfe,
                    Frank

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post

                    Support us

                    ioBroker
                    Community Adapters
                    Donate
                    FAQ Cloud / IOT
                    HowTo: Node.js-Update
                    HowTo: Backup/Restore
                    Downloads
                    BLOG

                    835
                    Online

                    31.8k
                    Users

                    80.0k
                    Topics

                    1.3m
                    Posts

                    uvr cmi modbus
                    3
                    7
                    2521
                    Loading More Posts
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes
                    Reply
                    • Reply as topic
                    Log in to reply
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                    The ioBroker Community 2014-2023
                    logo