Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Modbus Master und Slave

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Modbus Master und Slave

    This topic has been deleted. Only users with topic management privileges can see it.
    • Glasfaser
      Glasfaser @bitwicht last edited by

      @bitwicht sagte in Modbus Master und Slave:

      Sobald der Solarlog und iobroker "an" sind, erhält der Solarlog Daten aber der iobroker rennt in einen Timeout ...

      Richtig ... denn Solaredge über TCP läßt nur eine Verbindung zu .

      So habe ich es :

      Per TCP auf den SolarEdge:

      damit ich per Modbus ioBroker es auslesen kann

      Dann per Modbus TCP IP Adapter auf den Bus RS485 vom SolareEdge

      habe ich EVCC daran angebunden

      Deine Lösung wäre :

      Per Modbus Proxy

      https://forum.iobroker.net/post/1099145

      Also Proxy Modbus auf die SolarEdge

      dann Solarlog und ioBroker nehmen dann den Modbus Proxy

      1 Reply Last reply Reply Quote 1
      • B
        bitwicht last edited by

        @Glasfaser

        Danke für die Antwort.
        So ganz habe ich es noch nicht verstanden.

        Ich habe zwei SE WR und kann daher die RS485 nicht verwenden da bei einem WR beide RS485 belegt sind und ich somit nur einen anbinden könnte.

        Der Solarlog ist ja hard-coded auf Port 502 eingestellt.
        Heißt der Modbus-Proxy müsste die SE WR zb: auf Port 1502 abfragen und die Daten auf Port 502 für Solarlog und 503 für iobroker bereitstellen?

        lg Bit

        Glasfaser 1 Reply Last reply Reply Quote 0
        • Glasfaser
          Glasfaser @bitwicht last edited by

          @bitwicht sagte in Modbus Master und Slave:

          Heißt der Modbus-Proxy müsste die SE WR zb: auf Port 1502 abfragen und die Daten auf Port 502 für Solarlog und 503 für iobroker bereitstellen?

          Fast richtig

          ... der Modbus Proxy fragt den WR auf Port 1502 ab ,
          dann Solarlog und ioBroker auf die Modbus Proxy IP und 1502 einstellen , dieser läßt dann auch mehere Clients zu .

          1 Reply Last reply Reply Quote 0
          • B
            bitwicht last edited by

            @Glasfaser

            Ich habe das kurz getestet aber bekomme einen Fehler wenn ich den Port auf 502 öffnen möchte (mit Port 9000 würde es gehen). Hast du eine Idee?

            pi@raspberrypi:~/.local/bin $ ./modbus-proxy -b tcp://192.168.0.11:502 --modbus tcp://192.168.0.123:1502
            2024-01-01 15:24:41,936     INFO modbus-proxy: Starting...
            Traceback (most recent call last):
              File "/home/pi/.local/bin/./modbus-proxy", line 8, in <module>
                sys.exit(main())
              File "/home/pi/.local/lib/python3.9/site-packages/modbus_proxy.py", line 343, in main
                asyncio.run(run())
              File "/usr/lib/python3.9/asyncio/runners.py", line 44, in run
                return loop.run_until_complete(main)
              File "/usr/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
                return future.result()
              File "/home/pi/.local/lib/python3.9/site-packages/modbus_proxy.py", line 338, in run
                await run_bridges(bridges, ready=ready)
              File "/home/pi/.local/lib/python3.9/site-packages/modbus_proxy.py", line 327, in run_bridges
                await start_bridges(bridges)
              File "/home/pi/.local/lib/python3.9/site-packages/modbus_proxy.py", line 320, in start_bridges
                await asyncio.gather(*coros)
              File "/home/pi/.local/lib/python3.9/site-packages/modbus_proxy.py", line 188, in start
                self.server = await asyncio.start_server(
              File "/usr/lib/python3.9/asyncio/streams.py", line 94, in start_server
                return await loop.create_server(factory, host, port, **kwds)
              File "/usr/lib/python3.9/asyncio/base_events.py", line 1494, in create_server
                raise OSError(err.errno, 'error while attempting '
            PermissionError: [Errno 13] error while attempting to bind on address ('192.168.0.11', 502): permission denied
            
            
            Glasfaser 1 Reply Last reply Reply Quote 0
            • Glasfaser
              Glasfaser @bitwicht last edited by

              @bitwicht

              Ich habe es so ... hinbekommen

              Docker holt die Daten von Port 4196 von meinem Master
              (Waveshare Industrial Serial Server RS485 to RJ45 Ethernet TCP/IP to Serial )
              wo ich zwei Modbus Zähler angeschlossen habe .

              7e701097-3492-403d-b6c2-1c967ab34c00-grafik.png

              Einstellung yml Datei

              devices:
              - modbus:
                  url: 192.168.178.41:4196
                listen:
                  bind: 0:4196
              

              so in ioBroker :

              b2c40e5b-f25c-4127-af4a-dd8bcc4abb7f-grafik.png

              und so in EVCC

              # - name: my_charger_meter
                 type: template
                 template: eastron
                 usage: charge    
                  # RS485 via TCP/IP (Modbus RTU)
                 modbus: tcpip
                 id: 2
                 host: 192.168.178.11 # Hostname
                 port: 5020 # Port
              
              1 Reply Last reply Reply Quote 0
              • B
                bitwicht last edited by

                @Glasfaser

                Der Port 4196 oder 9000 würde sich starten lassen

                pi@raspberrypi:~/.local/bin $ ./modbus-proxy -b tcp://0:4196 --modbus tcp://192.168.0.123:1502
                2024-01-01 15:42:06,788     INFO modbus-proxy: Starting...
                2024-01-01 15:42:06,796     INFO modbus-proxy.ModBus(192.168.0.123:1502): Ready to accept requests on 0:4196
                

                Problem ist, das der Solarlog "hart" auf 502 hört und man den Portnicht ändern kann.

                Ich muss als den Proxy unter 502 starten wo er den Fehler schmeißt 😞

                Glasfaser 1 Reply Last reply Reply Quote 0
                • Glasfaser
                  Glasfaser @bitwicht last edited by Glasfaser

                  @bitwicht

                  Das Problem ist ...
                  ich kenne es von meiner Wetterstation die ich auch eingebunden habe auf Port 9999
                  , da <1025 die Ports Rechte brauchen

                  https://forum.iobroker.net/post/361563

                  1 Reply Last reply Reply Quote 0
                  • B
                    bitwicht last edited by

                    @Glasfaser

                    mit sudo könnte ich es auch testen, aber bekomme ich wieder einen Fehler:

                    Mache ich da mit sudo was falsch?

                    pi@raspberrypi:~/.local/bin $ sudo ./modbus-proxy -b tcp://192.168.0.11:502 --modbus tcp://192.168.0.123:1502
                    Traceback (most recent call last):
                    File "/home/pi/.local/bin/./modbus-proxy", line 5, in <module>
                    from modbus_proxy import main
                    ModuleNotFoundError: No module named 'modbus_proxy'

                    Glasfaser 1 Reply Last reply Reply Quote 0
                    • Glasfaser
                      Glasfaser @bitwicht last edited by Glasfaser

                      @bitwicht

                      Es liegt an den Ports , nicht an dem Sudo Befehl zum ausführen .

                      Suche gerade im INet ... aber wie du schon schreibts hart auf Port 502 eingestellt

                      1 Reply Last reply Reply Quote 0
                      • B
                        bitwicht last edited by

                        @Glasfaser

                        ah, ich dachte vielleicht darf nur sudo den Port nutzen.
                        Anscheinend sind im Script oder woher auch immer einige Ports ausgeschlossen.

                        Muss ich einen anderen Weg suchen.
                        Ich wollte in erster Linie den Solarlog FTP Export nutzen.

                        Da ich die Daten eigentlich im iobroker habe, müsste ich die FTP Daten mit dem iobroker zusammenbauen (wenn ich wüsste wie das geht).

                        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

                        834
                        Online

                        32.0k
                        Users

                        80.5k
                        Topics

                        1.3m
                        Posts

                        4
                        17
                        1185
                        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