Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Einsteigerfragen
  4. Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.1k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.6k

Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter

Geplant Angeheftet Gesperrt Verschoben Einsteigerfragen
190 Beiträge 20 Kommentatoren 26.7k Aufrufe 16 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • HomoranH Homoran

    @spicer sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:

    Hier, um meine "unschuld" zu beweisen ^^

    dann hast du den Filter im log wahrscheinlich auf Info

    spicerS Offline
    spicerS Offline
    spicer
    schrieb am zuletzt editiert von
    #167

    @Homoran sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:

    @spicer sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:

    Hier, um meine "unschuld" zu beweisen ^^

    dann hast du den Filter im log wahrscheinlich auf Info

    	
    Zeit
    	
    	
    modbus.0
    	2026-02-04 21:13:58.778	info	Disconnected from slave 192.168.1.101
    modbus.0
    	2026-02-04 21:13:58.777	debug	Closing client on purpose.
    modbus.0
    	2026-02-04 21:13:57.777	debug	Cleaning up request fifo.
    modbus.0
    	2026-02-04 21:13:57.777	debug	Clearing timeout of the current request.
    modbus.0
    	2026-02-04 21:13:57.776	debug	Socket closed with error
    modbus.0
    	2026-02-04 21:13:51.738	debug	Sending pdu to the socket.
    modbus.0
    	2026-02-04 21:13:51.737	debug	[DevID_1/holdingRegs] Poll address 1156 - 1 registers
    modbus.0
    	2026-02-04 21:13:51.737	debug	[DevID_1] Poll start ---------------------
    modbus.0
    	2026-02-04 21:13:51.735	info	Connected to slave
    modbus.0
    	2026-02-04 21:13:26.697	info	Disconnected from slave 192.168.1.101
    modbus.0
    	2026-02-04 21:13:26.695	debug	Closing client on purpose.
    modbus.0
    	2026-02-04 21:13:25.693	debug	Cleaning up request fifo.
    modbus.0
    	2026-02-04 21:13:25.693	debug	Clearing timeout of the current request.
    modbus.0
    	2026-02-04 21:13:25.692	debug	Socket closed with error
    modbus.0
    	2026-02-04 21:13:19.660	debug	Sending pdu to the socket.
    modbus.0
    	2026-02-04 21:13:19.657	debug	[DevID_1/holdingRegs] Poll address 1156 - 1 registers
    modbus.0
    	2026-02-04 21:13:19.656	debug	Initialization of scale factors done!
    modbus.0
    	2026-02-04 21:13:19.653	debug	[DevID_1] Poll start ---------------------
    modbus.0
    	2026-02-04 21:13:19.652	info	Connected to slave
    modbus.0
    	2026-02-04 21:13:19.340	debug	Add holdingRegisters._1540Voltage_Bat1: {"_id":"holdingRegisters._1540Voltage_Bat1","type":"state","common":{"name":"","role":"value","type":"number","read":true,"write":true,"def":0,"unit":"V"},"native":{"regType":"holdingRegs","address":1540,"deviceId":1,"type":"uint16be","len":1,"offset":0,"factor":0.1,"poll":true}}
    modbus.0
    	2026-02-04 21:13:19.339	debug	Add holdingRegisters._Frequency_Grid: {"_id":"holdingRegisters._Frequency_Grid","type":"state","common":{"name":"","role":"value","type":"number","read":true,"write":true,"def":0,"unit":"Hz"},"native":{"regType":"holdingRegs","address":1156,"deviceId":1,"type":"uint16be","len":1,"offset":0,"factor":0.01,"poll":true}}
    modbus.0
    	2026-02-04 21:13:19.339	debug	Initialize Objects for holdingRegs: [{"_address":1156,"name":"Frequency_Grid","description":"","unit":"Hz","type":"uint16be","len":1,"factor":0.01,"offset":0,"formula":"","role":"value","room":"","poll":true,"wp":"","cw":"","isScale":"","address":1156,"deviceId":1,"id":"holdingRegisters._Frequency_Grid"},{"_address":1540,"name":"1540Voltage_Bat1","description":"","unit":"V","type":"uint16be","len":1,"factor":0.1,"offset":0,"formula":"","role":"value","room":"","poll":true,"wp":"","cw":"","isScale":"","address":1540,"deviceId":1,"id":"holdingRegisters._1540Voltage_Bat1"}]
    modbus.0
    	2026-02-04 21:13:19.338	debug	Initialize Objects for inputRegs: []
    modbus.0
    	2026-02-04 21:13:19.338	debug	Initialize Objects for coils: []
    modbus.0
    	2026-02-04 21:13:19.337	debug	Initialize Objects for disInputs: []
    modbus.0
    	2026-02-04 21:13:19.121	info	starting. Version 6.3.2 in /opt/iobroker/node_modules/iobroker.modbus, node: v20.20.0, js-controller: 7.0.7
    modbus.0
    	2026-02-04 21:13:18.693	debug	Plugin sentry Initialize Plugin (enabled=true)
    

    Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen. Alles, was schiefgehen kann, wird auch schiefgehen.
    (Murphys Gesetz)

    HomoranH 1 Antwort Letzte Antwort
    0
    • spicerS spicer

      @Thomas-Braun sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:

      @spicer sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:

      node: v20.20.0

      iob nodejs-update
      

      dringend ausführen.

      Nothing to do - Your installation is using the correct paths.
      
      You are missing the nodesource.list or
      you want to change your current nodejs version: v20.20.0 ?
      

      Ist den v20 veraltet?

      Thomas BraunT Online
      Thomas BraunT Online
      Thomas Braun
      Most Active
      schrieb am zuletzt editiert von Thomas Braun
      #168

      @spicer sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:

      Ist den v20 veraltet?

      Ja. 22 ist schon geraume Zeit die Empfehlung und nodejs 20 wird in ein paar Wochen das 'End-of-Life' erreichen.
      Es ist dringend an der Zeit den Gaul zu wechseln.

      you want to change your current nodejs version: v20.20.0 ?

      Ja, willst du.

      Linux-Werkzeugkasten:
      https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
      NodeJS Fixer Skript:
      https://forum.iobroker.net/topic/68035/iob-node-fix-skript
      iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

      1 Antwort Letzte Antwort
      0
      • spicerS spicer

        @Homoran sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:

        @spicer sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:

        Hier, um meine "unschuld" zu beweisen ^^

        dann hast du den Filter im log wahrscheinlich auf Info

        	
        Zeit
        	
        	
        modbus.0
        	2026-02-04 21:13:58.778	info	Disconnected from slave 192.168.1.101
        modbus.0
        	2026-02-04 21:13:58.777	debug	Closing client on purpose.
        modbus.0
        	2026-02-04 21:13:57.777	debug	Cleaning up request fifo.
        modbus.0
        	2026-02-04 21:13:57.777	debug	Clearing timeout of the current request.
        modbus.0
        	2026-02-04 21:13:57.776	debug	Socket closed with error
        modbus.0
        	2026-02-04 21:13:51.738	debug	Sending pdu to the socket.
        modbus.0
        	2026-02-04 21:13:51.737	debug	[DevID_1/holdingRegs] Poll address 1156 - 1 registers
        modbus.0
        	2026-02-04 21:13:51.737	debug	[DevID_1] Poll start ---------------------
        modbus.0
        	2026-02-04 21:13:51.735	info	Connected to slave
        modbus.0
        	2026-02-04 21:13:26.697	info	Disconnected from slave 192.168.1.101
        modbus.0
        	2026-02-04 21:13:26.695	debug	Closing client on purpose.
        modbus.0
        	2026-02-04 21:13:25.693	debug	Cleaning up request fifo.
        modbus.0
        	2026-02-04 21:13:25.693	debug	Clearing timeout of the current request.
        modbus.0
        	2026-02-04 21:13:25.692	debug	Socket closed with error
        modbus.0
        	2026-02-04 21:13:19.660	debug	Sending pdu to the socket.
        modbus.0
        	2026-02-04 21:13:19.657	debug	[DevID_1/holdingRegs] Poll address 1156 - 1 registers
        modbus.0
        	2026-02-04 21:13:19.656	debug	Initialization of scale factors done!
        modbus.0
        	2026-02-04 21:13:19.653	debug	[DevID_1] Poll start ---------------------
        modbus.0
        	2026-02-04 21:13:19.652	info	Connected to slave
        modbus.0
        	2026-02-04 21:13:19.340	debug	Add holdingRegisters._1540Voltage_Bat1: {"_id":"holdingRegisters._1540Voltage_Bat1","type":"state","common":{"name":"","role":"value","type":"number","read":true,"write":true,"def":0,"unit":"V"},"native":{"regType":"holdingRegs","address":1540,"deviceId":1,"type":"uint16be","len":1,"offset":0,"factor":0.1,"poll":true}}
        modbus.0
        	2026-02-04 21:13:19.339	debug	Add holdingRegisters._Frequency_Grid: {"_id":"holdingRegisters._Frequency_Grid","type":"state","common":{"name":"","role":"value","type":"number","read":true,"write":true,"def":0,"unit":"Hz"},"native":{"regType":"holdingRegs","address":1156,"deviceId":1,"type":"uint16be","len":1,"offset":0,"factor":0.01,"poll":true}}
        modbus.0
        	2026-02-04 21:13:19.339	debug	Initialize Objects for holdingRegs: [{"_address":1156,"name":"Frequency_Grid","description":"","unit":"Hz","type":"uint16be","len":1,"factor":0.01,"offset":0,"formula":"","role":"value","room":"","poll":true,"wp":"","cw":"","isScale":"","address":1156,"deviceId":1,"id":"holdingRegisters._Frequency_Grid"},{"_address":1540,"name":"1540Voltage_Bat1","description":"","unit":"V","type":"uint16be","len":1,"factor":0.1,"offset":0,"formula":"","role":"value","room":"","poll":true,"wp":"","cw":"","isScale":"","address":1540,"deviceId":1,"id":"holdingRegisters._1540Voltage_Bat1"}]
        modbus.0
        	2026-02-04 21:13:19.338	debug	Initialize Objects for inputRegs: []
        modbus.0
        	2026-02-04 21:13:19.338	debug	Initialize Objects for coils: []
        modbus.0
        	2026-02-04 21:13:19.337	debug	Initialize Objects for disInputs: []
        modbus.0
        	2026-02-04 21:13:19.121	info	starting. Version 6.3.2 in /opt/iobroker/node_modules/iobroker.modbus, node: v20.20.0, js-controller: 7.0.7
        modbus.0
        	2026-02-04 21:13:18.693	debug	Plugin sentry Initialize Plugin (enabled=true)
        
        HomoranH Nicht stören
        HomoranH Nicht stören
        Homoran
        Global Moderator Administrators
        schrieb am zuletzt editiert von
        #169

        @spicer sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:

        "regType":"holdingRegs","address":1156,

        das ist jetzt ok

        das hier

        @spicer sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:

        Socket closed with error

        aber nicht.
        deswegen der dauernde Neustart

        das Problem kann/wird am rs485toEth liegen.
        Damit kenne ich mich aber nicht aus

        kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

        1 Antwort Letzte Antwort
        0
        • spicerS spicer

          @WilliK sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:

          @spicer hast du diese Einstellungen mal komplett übernommen und ausprobiert, du hast in deinen Screenshots einiges anders eingestellt. https://forum.iobroker.net/post/974683

          Mein Waveshare hat nicht die gleiche Eingabemaske.

          HomoranH Nicht stören
          HomoranH Nicht stören
          Homoran
          Global Moderator Administrators
          schrieb am zuletzt editiert von
          #170

          @spicer sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:

          Mein Waveshare hat nicht die gleiche Eingabemaske.

          aber wahrscheinlich vergleichbare Felder.

          So hast du bei iob RTUoverTCP strhen,@willik nur TCP, da sein waveshare ein tcp server ist.

          Hast du das mal verglichen/getestet?

          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          spicerS 1 Antwort Letzte Antwort
          0
          • HomoranH Homoran

            @spicer sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:

            Mein Waveshare hat nicht die gleiche Eingabemaske.

            aber wahrscheinlich vergleichbare Felder.

            So hast du bei iob RTUoverTCP strhen,@willik nur TCP, da sein waveshare ein tcp server ist.

            Hast du das mal verglichen/getestet?

            spicerS Offline
            spicerS Offline
            spicer
            schrieb am zuletzt editiert von spicer
            #171

            @Homoran sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:

            @spicer sagte in Sofar Solar HYD10 KTL Wechselrichter an modbus Adapter:

            Mein Waveshare hat nicht die gleiche Eingabemaske.

            aber wahrscheinlich vergleichbare Felder.

            So hast du bei iob RTUoverTCP strhen,@willik nur TCP, da sein waveshare ein tcp server ist.

            Hast du das mal verglichen/getestet?

            Du bist mein Held. Mit TCP klappt es.
            Mann, über seit 1 Jahr :D

            Ich vermute, dass auch der Kabelwechsel heute etwas gebracht hat. Habe ein abgeschirmtes eingebaut. Standard bei Auslieferung war ein gewöhnliches TD 12x0.75.

            Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen. Alles, was schiefgehen kann, wird auch schiefgehen.
            (Murphys Gesetz)

            1 Antwort Letzte Antwort
            0
            • spicerS Offline
              spicerS Offline
              spicer
              schrieb am zuletzt editiert von
              #172

              Welcher Parameter ist das Total für Battery Power und SOC?
              Ich sehe in der xls Tabelle nur Parameter für Bat1, Bat2 usw.
              Ich habe 4 Batterien dran.

              Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen. Alles, was schiefgehen kann, wird auch schiefgehen.
              (Murphys Gesetz)

              1 Antwort Letzte Antwort
              0
              • R Offline
                R Offline
                RISSN
                schrieb am zuletzt editiert von
                #173

                Warum nimmst du nicht einen Stick? Die Sticks für den Sofar mit LAN können auch Modbus, nutze ich so schon ein Jahr, geht super und die Daten gehen auch gleich in die App

                1 Antwort Letzte Antwort
                0
                • spicerS Offline
                  spicerS Offline
                  spicer
                  schrieb am zuletzt editiert von
                  #174

                  Hab ich auch gehört, dass der lan Stick das kann. Wäre die nächste Variante gewesen, wenn das mit der rs485 nicht geklappt hätte.

                  Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen. Alles, was schiefgehen kann, wird auch schiefgehen.
                  (Murphys Gesetz)

                  1 Antwort Letzte Antwort
                  0
                  • spicerS Offline
                    spicerS Offline
                    spicer
                    schrieb am zuletzt editiert von spicer
                    #175

                    Habe nun ein anderes Problem.
                    Nach 1-2h kommt ein "Socket closed with error". Dann geht nichts mehr.
                    Siehe Log ab 18:22:55

                    2026-02-05 18:22:43.831  - debug: modbus.0 (914062) [DevID_1] Poll start ---------------------
                    2026-02-05 18:22:43.832  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                    2026-02-05 18:22:43.899  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 DONE
                    2026-02-05 18:22:44.150  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1160 - 1 registers
                    2026-02-05 18:22:44.209  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1160 DONE
                    2026-02-05 18:22:44.459  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1476 - 1 registers
                    2026-02-05 18:22:44.519  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1476 DONE
                    2026-02-05 18:22:44.770  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1542 - 1 registers
                    2026-02-05 18:22:44.829  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1542 DONE
                    2026-02-05 18:22:45.080  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1544 - 1 registers
                    2026-02-05 18:22:45.139  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1544 DONE
                    2026-02-05 18:22:45.389  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1668 - 2 registers
                    2026-02-05 18:22:45.469  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1668 DONE
                    2026-02-05 18:22:49.101  - debug: modbus.0 (914062) [DevID_1] Poll start ---------------------
                    2026-02-05 18:22:49.102  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                    2026-02-05 18:22:49.159  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 DONE
                    2026-02-05 18:22:49.161  - debug: modbus.0 (914062) [DevID_1] Poll start ---------------------
                    2026-02-05 18:22:49.161  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                    2026-02-05 18:22:49.219  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 DONE
                    2026-02-05 18:22:49.221  - debug: modbus.0 (914062) [DevID_1] Poll start ---------------------
                    2026-02-05 18:22:49.221  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                    2026-02-05 18:22:49.279  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 DONE
                    2026-02-05 18:22:49.281  - debug: modbus.0 (914062) [DevID_1] Poll start ---------------------
                    2026-02-05 18:22:49.281  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                    2026-02-05 18:22:49.352  - debug: modbus.0 (914062) [DevID_1] Poll start ---------------------
                    2026-02-05 18:22:49.352  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                    2026-02-05 18:22:49.410  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1160 - 1 registers
                    2026-02-05 18:22:49.470  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1160 - 1 registers
                    2026-02-05 18:22:49.530  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1160 - 1 registers
                    2026-02-05 18:22:51.023  - debug: modbus.0 (914062) [DevID_1] Poll start ---------------------
                    2026-02-05 18:22:51.023  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                    2026-02-05 18:22:55.300  - debug: modbus.0 (914062) Socket closed with error
                    2026-02-05 18:22:55.300  - debug: modbus.0 (914062) Clearing timeout of the current request.
                    2026-02-05 18:22:55.300  - debug: modbus.0 (914062) Cleaning up request fifo.
                    2026-02-05 18:22:56.302  - debug: modbus.0 (914062) Closing client on purpose.
                    2026-02-05 18:22:56.303  - info: modbus.0 (914062) Disconnected from slave 192.168.88.101
                    2026-02-05 18:23:03.307  - info: modbus.0 (914062) Connected to slave 192.168.88.101
                    2026-02-05 18:23:03.307  - debug: modbus.0 (914062) [DevID_1] Poll start ---------------------
                    2026-02-05 18:23:03.307  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                    2026-02-05 18:23:09.341  - debug: modbus.0 (914062) Socket closed with error
                    2026-02-05 18:23:09.341  - debug: modbus.0 (914062) Clearing timeout of the current request.
                    2026-02-05 18:23:09.341  - debug: modbus.0 (914062) Cleaning up request fifo.
                    2026-02-05 18:23:10.341  - debug: modbus.0 (914062) Closing client on purpose.
                    2026-02-05 18:23:10.341  - info: modbus.0 (914062) Disconnected from slave 192.168.88.101
                    2026-02-05 18:23:17.345  - info: modbus.0 (914062) Connected to slave 192.168.88.101
                    2026-02-05 18:23:17.345  - debug: modbus.0 (914062) [DevID_1] Poll start ---------------------
                    2026-02-05 18:23:17.345  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                    2026-02-05 18:23:23.371  - debug: modbus.0 (914062) Socket closed with error
                    2026-02-05 18:23:23.371  - debug: modbus.0 (914062) Clearing timeout of the current request.
                    2026-02-05 18:23:23.371  - debug: modbus.0 (914062) Cleaning up request fifo.
                    2026-02-05 18:23:24.372  - debug: modbus.0 (914062) Closing client on purpose.
                    2026-02-05 18:23:24.373  - info: modbus.0 (914062) Disconnected from slave 192.168.88.101
                    2026-02-05 18:23:31.375  - info: modbus.0 (914062) Connected to slave 192.168.88.101
                    2026-02-05 18:23:31.376  - debug: modbus.0 (914062) [DevID_1] Poll start ---------------------
                    2026-02-05 18:23:31.376  - debug: modbus.0 (914062) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                    2026-02-05 18:23:37.401  - debug: modbus.0 (914062) Socket closed with error
                    2026-02-05 18:23:37.402  - debug: modbus.0 (914062) Clearing timeout of the current request.
                    2026-02-05 18:23:37.402  - debug: modbus.0 (914062) Cleaning up request fifo.
                    2026-02-05 18:23:38.402  - debug: modbus.0 (914062) Closing client on purpose.
                    2026-02-05 18:23:38.402  - info: modbus.0 (914062) Disconnected from slave 192.168.88.101
                    

                    Wenn ich den modbus Adapter neu starte, läuft's wieder.

                    Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen. Alles, was schiefgehen kann, wird auch schiefgehen.
                    (Murphys Gesetz)

                    1 Antwort Letzte Antwort
                    0
                    • spicerS Offline
                      spicerS Offline
                      spicer
                      schrieb am zuletzt editiert von spicer
                      #176

                      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:

                      8b8ff11c-e77d-4e59-8a74-f064bff9d633-grafik.png

                      Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen. Alles, was schiefgehen kann, wird auch schiefgehen.
                      (Murphys Gesetz)

                      1 Antwort Letzte Antwort
                      0
                      • spicerS Offline
                        spicerS Offline
                        spicer
                        schrieb am zuletzt editiert von spicer
                        #177

                        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  - info: modbus.0 (919438) Connected to slave 192.168.88.101
                        2026-02-06 03:59:02.831  - debug: modbus.0 (919438) [DevID_1] Poll start ---------------------
                        2026-02-06 03:59:02.831  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                        2026-02-06 03:59:02.897  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 DONE
                        2026-02-06 03:59:03.148  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 - 1 registers
                        2026-02-06 03:59:03.207  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 DONE
                        2026-02-06 03:59:03.458  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1476 - 1 registers
                        2026-02-06 03:59:03.517  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1476 DONE
                        2026-02-06 03:59:03.768  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1542 - 1 registers
                        2026-02-06 03:59:03.827  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1542 DONE
                        2026-02-06 03:59:04.078  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1544 - 1 registers
                        2026-02-06 03:59:04.138  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1544 DONE
                        2026-02-06 03:59:04.388  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1668 - 2 registers
                        2026-02-06 03:59:04.477  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1668 DONE
                        2026-02-06 03:59:10.408  - debug: modbus.0 (919438) Socket closed with error
                        2026-02-06 03:59:10.408  - debug: modbus.0 (919438) Clearing timeout of the current request.
                        2026-02-06 03:59:10.408  - debug: modbus.0 (919438) Cleaning up request fifo.
                        2026-02-06 03:59:11.409  - debug: modbus.0 (919438) Closing client on purpose.
                        2026-02-06 03:59:11.410  - info: modbus.0 (919438) Disconnected from slave 192.168.88.101
                        2026-02-06 03:59:21.412  - info: modbus.0 (919438) Connected to slave 192.168.88.101
                        2026-02-06 03:59:21.413  - debug: modbus.0 (919438) [DevID_1] Poll start ---------------------
                        2026-02-06 03:59:21.413  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                        2026-02-06 03:59:21.478  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 DONE
                        2026-02-06 03:59:21.729  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 - 1 registers
                        2026-02-06 03:59:21.788  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 DONE
                        2026-02-06 03:59:22.039  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1476 - 1 registers
                        2026-02-06 03:59:22.098  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1476 DONE
                        2026-02-06 03:59:22.349  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1542 - 1 registers
                        2026-02-06 03:59:22.408  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1542 DONE
                        2026-02-06 03:59:22.659  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1544 - 1 registers
                        2026-02-06 03:59:22.738  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1544 DONE
                        2026-02-06 03:59:22.989  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1668 - 2 registers
                        2026-02-06 03:59:23.048  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1668 DONE
                        2026-02-06 03:59:28.009  - debug: modbus.0 (919438) Socket closed with error
                        2026-02-06 03:59:28.009  - debug: modbus.0 (919438) Clearing timeout of the current request.
                        2026-02-06 03:59:28.009  - debug: modbus.0 (919438) Cleaning up request fifo.
                        2026-02-06 03:59:29.011  - debug: modbus.0 (919438) Closing client on purpose.
                        2026-02-06 03:59:29.011  - info: modbus.0 (919438) Disconnected from slave 192.168.88.101
                        2026-02-06 03:59:39.013  - info: modbus.0 (919438) Connected to slave 192.168.88.101
                        2026-02-06 03:59:39.014  - debug: modbus.0 (919438) [DevID_1] Poll start ---------------------
                        2026-02-06 03:59:39.014  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                        2026-02-06 03:59:39.079  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 DONE
                        2026-02-06 03:59:39.330  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 - 1 registers
                        2026-02-06 03:59:39.389  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 DONE
                        2026-02-06 03:59:39.639  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1476 - 1 registers
                        2026-02-06 03:59:45.659  - debug: modbus.0 (919438) Socket closed with error
                        2026-02-06 03:59:45.660  - debug: modbus.0 (919438) Clearing timeout of the current request.
                        2026-02-06 03:59:45.660  - debug: modbus.0 (919438) Cleaning up request fifo.
                        2026-02-06 03:59:46.660  - debug: modbus.0 (919438) Closing client on purpose.
                        2026-02-06 03:59:46.661  - info: modbus.0 (919438) Disconnected from slave 192.168.88.101
                        2026-02-06 03:59:56.664  - info: modbus.0 (919438) Connected to slave 192.168.88.101
                        2026-02-06 03:59:56.664  - debug: modbus.0 (919438) [DevID_1] Poll start ---------------------
                        2026-02-06 03:59:56.665  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                        2026-02-06 04:00:02.690  - debug: modbus.0 (919438) Socket closed with error
                        2026-02-06 04:00:02.690  - debug: modbus.0 (919438) Clearing timeout of the current request.
                        2026-02-06 04:00:02.690  - debug: modbus.0 (919438) Cleaning up request fifo.
                        2026-02-06 04:00:03.692  - debug: modbus.0 (919438) Closing client on purpose.
                        2026-02-06 04:00:03.692  - info: modbus.0 (919438) Disconnected from slave 192.168.88.101
                        2026-02-06 04:00:13.696  - info: modbus.0 (919438) Connected to slave 192.168.88.101
                        2026-02-06 04:00:13.696  - debug: modbus.0 (919438) [DevID_1] Poll start ---------------------
                        2026-02-06 04:00:13.696  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                        2026-02-06 04:00:19.720  - debug: modbus.0 (919438) Socket closed with error
                        2026-02-06 04:00:19.720  - debug: modbus.0 (919438) Clearing timeout of the current request.
                        2026-02-06 04:00:19.720  - debug: modbus.0 (919438) Cleaning up request fifo.
                        2026-02-06 04:00:20.721  - debug: modbus.0 (919438) Closing client on purpose.
                        2026-02-06 04:00:20.722  - info: modbus.0 (919438) Disconnected from slave 192.168.88.101
                        2026-02-06 04:00:30.725  - info: modbus.0 (919438) Connected to slave 192.168.88.101
                        2026-02-06 04:00:30.726  - debug: modbus.0 (919438) [DevID_1] Poll start ---------------------
                        2026-02-06 04:00:30.726  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                        2026-02-06 04:00:36.751  - debug: modbus.0 (919438) Socket closed with error
                        2026-02-06 04:00:36.751  - debug: modbus.0 (919438) Clearing timeout of the current request.
                        2026-02-06 04:00:36.751  - debug: modbus.0 (919438) Cleaning up request fifo.
                        2026-02-06 04:00:37.752  - debug: modbus.0 (919438) Closing client on purpose.
                        2026-02-06 04:00:37.753  - info: modbus.0 (919438) Disconnected from slave 192.168.88.101
                        2026-02-06 04:00:47.756  - info: modbus.0 (919438) Connected to slave 192.168.88.101
                        2026-02-06 04:00:47.757  - debug: modbus.0 (919438) [DevID_1] Poll start ---------------------
                        2026-02-06 04:00:47.757  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                        2026-02-06 04:00:53.781  - debug: modbus.0 (919438) Socket closed with error
                        2026-02-06 04:00:53.782  - debug: modbus.0 (919438) Clearing timeout of the current request.
                        2026-02-06 04:00:53.782  - debug: modbus.0 (919438) Cleaning up request fifo.
                        2026-02-06 04:00:54.782  - debug: modbus.0 (919438) Closing client on purpose.
                        2026-02-06 04:00:54.783  - info: modbus.0 (919438) Disconnected from slave 192.168.88.101
                        2026-02-06 04:01:04.785  - info: modbus.0 (919438) Connected to slave 192.168.88.101
                        2026-02-06 04:01:04.786  - debug: modbus.0 (919438) [DevID_1] Poll start ---------------------
                        2026-02-06 04:01:04.786  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                        2026-02-06 04:01:10.812  - debug: modbus.0 (919438) Socket closed with error
                        2026-02-06 04:01:10.812  - debug: modbus.0 (919438) Clearing timeout of the current request.
                        2026-02-06 04:01:10.813  - debug: modbus.0 (919438) Cleaning up request fifo.
                        2026-02-06 04:01:11.812  - debug: modbus.0 (919438) Closing client on purpose.
                        2026-02-06 04:01:11.813  - info: modbus.0 (919438) Disconnected from slave 192.168.88.101
                        2026-02-06 04:01:21.815  - info: modbus.0 (919438) Connected to slave 192.168.88.101
                        2026-02-06 04:01:21.816  - debug: modbus.0 (919438) [DevID_1] Poll start ---------------------
                        2026-02-06 04:01:21.816  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                        2026-02-06 04:01:27.843  - debug: modbus.0 (919438) Socket closed with error
                        2026-02-06 04:01:27.843  - debug: modbus.0 (919438) Clearing timeout of the current request.
                        2026-02-06 04:01:27.843  - debug: modbus.0 (919438) Cleaning up request fifo.
                        2026-02-06 04:01:28.845  - debug: modbus.0 (919438) Closing client on purpose.
                        2026-02-06 04:01:28.845  - info: modbus.0 (919438) Disconnected from slave 192.168.88.101
                        

                        Konfiguration:

                        grafik.png

                        grafik.png

                        grafik.png

                        Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen. Alles, was schiefgehen kann, wird auch schiefgehen.
                        (Murphys Gesetz)

                        HomoranH 1 Antwort Letzte Antwort
                        0
                        • spicerS spicer

                          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  - info: modbus.0 (919438) Connected to slave 192.168.88.101
                          2026-02-06 03:59:02.831  - debug: modbus.0 (919438) [DevID_1] Poll start ---------------------
                          2026-02-06 03:59:02.831  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                          2026-02-06 03:59:02.897  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 DONE
                          2026-02-06 03:59:03.148  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 - 1 registers
                          2026-02-06 03:59:03.207  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 DONE
                          2026-02-06 03:59:03.458  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1476 - 1 registers
                          2026-02-06 03:59:03.517  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1476 DONE
                          2026-02-06 03:59:03.768  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1542 - 1 registers
                          2026-02-06 03:59:03.827  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1542 DONE
                          2026-02-06 03:59:04.078  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1544 - 1 registers
                          2026-02-06 03:59:04.138  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1544 DONE
                          2026-02-06 03:59:04.388  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1668 - 2 registers
                          2026-02-06 03:59:04.477  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1668 DONE
                          2026-02-06 03:59:10.408  - debug: modbus.0 (919438) Socket closed with error
                          2026-02-06 03:59:10.408  - debug: modbus.0 (919438) Clearing timeout of the current request.
                          2026-02-06 03:59:10.408  - debug: modbus.0 (919438) Cleaning up request fifo.
                          2026-02-06 03:59:11.409  - debug: modbus.0 (919438) Closing client on purpose.
                          2026-02-06 03:59:11.410  - info: modbus.0 (919438) Disconnected from slave 192.168.88.101
                          2026-02-06 03:59:21.412  - info: modbus.0 (919438) Connected to slave 192.168.88.101
                          2026-02-06 03:59:21.413  - debug: modbus.0 (919438) [DevID_1] Poll start ---------------------
                          2026-02-06 03:59:21.413  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                          2026-02-06 03:59:21.478  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 DONE
                          2026-02-06 03:59:21.729  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 - 1 registers
                          2026-02-06 03:59:21.788  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 DONE
                          2026-02-06 03:59:22.039  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1476 - 1 registers
                          2026-02-06 03:59:22.098  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1476 DONE
                          2026-02-06 03:59:22.349  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1542 - 1 registers
                          2026-02-06 03:59:22.408  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1542 DONE
                          2026-02-06 03:59:22.659  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1544 - 1 registers
                          2026-02-06 03:59:22.738  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1544 DONE
                          2026-02-06 03:59:22.989  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1668 - 2 registers
                          2026-02-06 03:59:23.048  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1668 DONE
                          2026-02-06 03:59:28.009  - debug: modbus.0 (919438) Socket closed with error
                          2026-02-06 03:59:28.009  - debug: modbus.0 (919438) Clearing timeout of the current request.
                          2026-02-06 03:59:28.009  - debug: modbus.0 (919438) Cleaning up request fifo.
                          2026-02-06 03:59:29.011  - debug: modbus.0 (919438) Closing client on purpose.
                          2026-02-06 03:59:29.011  - info: modbus.0 (919438) Disconnected from slave 192.168.88.101
                          2026-02-06 03:59:39.013  - info: modbus.0 (919438) Connected to slave 192.168.88.101
                          2026-02-06 03:59:39.014  - debug: modbus.0 (919438) [DevID_1] Poll start ---------------------
                          2026-02-06 03:59:39.014  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                          2026-02-06 03:59:39.079  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 DONE
                          2026-02-06 03:59:39.330  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 - 1 registers
                          2026-02-06 03:59:39.389  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 DONE
                          2026-02-06 03:59:39.639  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1476 - 1 registers
                          2026-02-06 03:59:45.659  - debug: modbus.0 (919438) Socket closed with error
                          2026-02-06 03:59:45.660  - debug: modbus.0 (919438) Clearing timeout of the current request.
                          2026-02-06 03:59:45.660  - debug: modbus.0 (919438) Cleaning up request fifo.
                          2026-02-06 03:59:46.660  - debug: modbus.0 (919438) Closing client on purpose.
                          2026-02-06 03:59:46.661  - info: modbus.0 (919438) Disconnected from slave 192.168.88.101
                          2026-02-06 03:59:56.664  - info: modbus.0 (919438) Connected to slave 192.168.88.101
                          2026-02-06 03:59:56.664  - debug: modbus.0 (919438) [DevID_1] Poll start ---------------------
                          2026-02-06 03:59:56.665  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                          2026-02-06 04:00:02.690  - debug: modbus.0 (919438) Socket closed with error
                          2026-02-06 04:00:02.690  - debug: modbus.0 (919438) Clearing timeout of the current request.
                          2026-02-06 04:00:02.690  - debug: modbus.0 (919438) Cleaning up request fifo.
                          2026-02-06 04:00:03.692  - debug: modbus.0 (919438) Closing client on purpose.
                          2026-02-06 04:00:03.692  - info: modbus.0 (919438) Disconnected from slave 192.168.88.101
                          2026-02-06 04:00:13.696  - info: modbus.0 (919438) Connected to slave 192.168.88.101
                          2026-02-06 04:00:13.696  - debug: modbus.0 (919438) [DevID_1] Poll start ---------------------
                          2026-02-06 04:00:13.696  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                          2026-02-06 04:00:19.720  - debug: modbus.0 (919438) Socket closed with error
                          2026-02-06 04:00:19.720  - debug: modbus.0 (919438) Clearing timeout of the current request.
                          2026-02-06 04:00:19.720  - debug: modbus.0 (919438) Cleaning up request fifo.
                          2026-02-06 04:00:20.721  - debug: modbus.0 (919438) Closing client on purpose.
                          2026-02-06 04:00:20.722  - info: modbus.0 (919438) Disconnected from slave 192.168.88.101
                          2026-02-06 04:00:30.725  - info: modbus.0 (919438) Connected to slave 192.168.88.101
                          2026-02-06 04:00:30.726  - debug: modbus.0 (919438) [DevID_1] Poll start ---------------------
                          2026-02-06 04:00:30.726  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                          2026-02-06 04:00:36.751  - debug: modbus.0 (919438) Socket closed with error
                          2026-02-06 04:00:36.751  - debug: modbus.0 (919438) Clearing timeout of the current request.
                          2026-02-06 04:00:36.751  - debug: modbus.0 (919438) Cleaning up request fifo.
                          2026-02-06 04:00:37.752  - debug: modbus.0 (919438) Closing client on purpose.
                          2026-02-06 04:00:37.753  - info: modbus.0 (919438) Disconnected from slave 192.168.88.101
                          2026-02-06 04:00:47.756  - info: modbus.0 (919438) Connected to slave 192.168.88.101
                          2026-02-06 04:00:47.757  - debug: modbus.0 (919438) [DevID_1] Poll start ---------------------
                          2026-02-06 04:00:47.757  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                          2026-02-06 04:00:53.781  - debug: modbus.0 (919438) Socket closed with error
                          2026-02-06 04:00:53.782  - debug: modbus.0 (919438) Clearing timeout of the current request.
                          2026-02-06 04:00:53.782  - debug: modbus.0 (919438) Cleaning up request fifo.
                          2026-02-06 04:00:54.782  - debug: modbus.0 (919438) Closing client on purpose.
                          2026-02-06 04:00:54.783  - info: modbus.0 (919438) Disconnected from slave 192.168.88.101
                          2026-02-06 04:01:04.785  - info: modbus.0 (919438) Connected to slave 192.168.88.101
                          2026-02-06 04:01:04.786  - debug: modbus.0 (919438) [DevID_1] Poll start ---------------------
                          2026-02-06 04:01:04.786  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                          2026-02-06 04:01:10.812  - debug: modbus.0 (919438) Socket closed with error
                          2026-02-06 04:01:10.812  - debug: modbus.0 (919438) Clearing timeout of the current request.
                          2026-02-06 04:01:10.813  - debug: modbus.0 (919438) Cleaning up request fifo.
                          2026-02-06 04:01:11.812  - debug: modbus.0 (919438) Closing client on purpose.
                          2026-02-06 04:01:11.813  - info: modbus.0 (919438) Disconnected from slave 192.168.88.101
                          2026-02-06 04:01:21.815  - info: modbus.0 (919438) Connected to slave 192.168.88.101
                          2026-02-06 04:01:21.816  - debug: modbus.0 (919438) [DevID_1] Poll start ---------------------
                          2026-02-06 04:01:21.816  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                          2026-02-06 04:01:27.843  - debug: modbus.0 (919438) Socket closed with error
                          2026-02-06 04:01:27.843  - debug: modbus.0 (919438) Clearing timeout of the current request.
                          2026-02-06 04:01:27.843  - debug: modbus.0 (919438) Cleaning up request fifo.
                          2026-02-06 04:01:28.845  - debug: modbus.0 (919438) Closing client on purpose.
                          2026-02-06 04:01:28.845  - info: modbus.0 (919438) Disconnected from slave 192.168.88.101
                          

                          Konfiguration:

                          grafik.png

                          grafik.png

                          grafik.png

                          HomoranH Nicht stören
                          HomoranH Nicht stören
                          Homoran
                          Global Moderator Administrators
                          schrieb am zuletzt editiert von
                          #178

                          @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?

                          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                          1 Antwort Letzte Antwort
                          0
                          • spicerS Offline
                            spicerS Offline
                            spicer
                            schrieb am zuletzt editiert von spicer
                            #179

                            Laut Log nichts zur Fraglichen Zeit.
                            Die gelesenen Register nehmen schon vor sofarcloud und weathersense ab.

                            2026-02-06 03:59:39.013  - info: modbus.0 (919438) Connected to slave 192.168.88.101
                            2026-02-06 03:59:39.014  - debug: modbus.0 (919438) [DevID_1] Poll start ---------------------
                            2026-02-06 03:59:39.014  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                            2026-02-06 03:59:39.079  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 DONE
                            2026-02-06 03:59:39.330  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 - 1 registers
                            2026-02-06 03:59:39.389  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1160 DONE
                            2026-02-06 03:59:39.639  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1476 - 1 registers
                            2026-02-06 03:59:45.659  - debug: modbus.0 (919438) Socket closed with error
                            2026-02-06 03:59:45.660  - debug: modbus.0 (919438) Clearing timeout of the current request.
                            2026-02-06 03:59:45.660  - debug: modbus.0 (919438) Cleaning up request fifo.
                            2026-02-06 03:59:46.660  - debug: modbus.0 (919438) Closing client on purpose.
                            2026-02-06 03:59:46.661  - info: modbus.0 (919438) Disconnected from slave 192.168.88.101
                            2026-02-06 03:59:56.664  - info: modbus.0 (919438) Connected to slave 192.168.88.101
                            2026-02-06 03:59:56.664  - debug: modbus.0 (919438) [DevID_1] Poll start ---------------------
                            2026-02-06 03:59:56.665  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                            2026-02-06 04:00:02.690  - debug: modbus.0 (919438) Socket closed with error
                            2026-02-06 04:00:02.690  - debug: modbus.0 (919438) Clearing timeout of the current request.
                            2026-02-06 04:00:02.690  - debug: modbus.0 (919438) Cleaning up request fifo.
                            2026-02-06 04:00:03.692  - debug: modbus.0 (919438) Closing client on purpose.
                            2026-02-06 04:00:03.692  - info: modbus.0 (919438) Disconnected from slave 192.168.88.101
                            2026-02-06 04:00:07.029  - info: host.iobroker instance system.adapter.weathersense.0 in version "4.2.1" started with pid 933290
                            2026-02-06 04:00:09.479  - info: 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  - info: weathersense.0 (933290) Start cloud query after 20 Seconds...
                            2026-02-06 04:00:13.696  - info: modbus.0 (919438) Connected to slave 192.168.88.101
                            2026-02-06 04:00:13.696  - debug: modbus.0 (919438) [DevID_1] Poll start ---------------------
                            2026-02-06 04:00:13.696  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                            2026-02-06 04:00:19.720  - debug: modbus.0 (919438) Socket closed with error
                            2026-02-06 04:00:19.720  - debug: modbus.0 (919438) Clearing timeout of the current request.
                            2026-02-06 04:00:19.720  - debug: modbus.0 (919438) Cleaning up request fifo.
                            2026-02-06 04:00:20.721  - debug: modbus.0 (919438) Closing client on purpose.
                            2026-02-06 04:00:20.722  - info: modbus.0 (919438) Disconnected from slave 192.168.88.101
                            2026-02-06 04:00:29.030  - info: host.iobroker instance system.adapter.sofarcloud.0 in version "3.3.0" started with pid 933306
                            2026-02-06 04:00:30.725  - info: modbus.0 (919438) Connected to slave 192.168.88.101
                            2026-02-06 04:00:30.726  - debug: modbus.0 (919438) [DevID_1] Poll start ---------------------
                            2026-02-06 04:00:30.726  - debug: modbus.0 (919438) [DevID_1/holdingRegs] Poll address 1157 - 1 registers
                            2026-02-06 04:00:31.877  - info: 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  - info: sofarcloud.0 (933306) Start cloud query after 112 seconds...
                            2026-02-06 04:00:32.413  - info: weathersense.0 (933290) Terminated (NO_ERROR): Everything done. Going to terminate till next schedule
                            2026-02-06 04:00:32.952  - info: host.iobroker instance system.adapter.weathersense.0 having pid 933290 terminated with code 0 (NO_ERROR)
                            2026-02-06 04:00:36.751  - debug: modbus.0 (919438) Socket closed with error
                            2026-02-06 04:00:36.751  - debug: modbus.0 (919438) Clearing timeout of the current request.
                            2026-02-06 04:00:36.751  - debug: modbus.0 (919438) Cleaning up request fifo.
                            2026-02-06 04:00:37.752  - debug: modbus.0 (919438) Closing client on purpose.
                            2026-02-06 04:00:37.753  - info: modbus.0 (919438) Disconnected from slave 192.168.88.101
                            

                            Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen. Alles, was schiefgehen kann, wird auch schiefgehen.
                            (Murphys Gesetz)

                            1 Antwort Letzte Antwort
                            0
                            • spicerS Offline
                              spicerS Offline
                              spicer
                              schrieb am zuletzt editiert von
                              #180

                              Aber ist schon auffällig, dass es immer um die gleiche Zeit passiert.
                              Kann ich iwie den Adapter immer um 4:01 neu starten?

                              Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen. Alles, was schiefgehen kann, wird auch schiefgehen.
                              (Murphys Gesetz)

                              1 Antwort Letzte Antwort
                              0
                              • spicerS Offline
                                spicerS Offline
                                spicer
                                schrieb am zuletzt editiert von spicer
                                #181

                                Jetzt hat es um 2026-02-06 16:04:24.546 angefangen. Nach nur ein paar Minuten!

                                Mir gefällt das "Socket closed with error" jedesmal nicht.
                                Das könnte doch irgend etwas füllen bis zum Crash.
                                Sauber ist das auf jeden Fall nicht.

                                Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen. Alles, was schiefgehen kann, wird auch schiefgehen.
                                (Murphys Gesetz)

                                1 Antwort Letzte Antwort
                                0
                                • R Offline
                                  R Offline
                                  RISSN
                                  schrieb am zuletzt editiert von
                                  #182

                                  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

                                  1 Antwort Letzte Antwort
                                  0
                                  • spicerS Offline
                                    spicerS Offline
                                    spicer
                                    schrieb am zuletzt editiert von spicer
                                    #183

                                    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
                                    import re
                                    
                                    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)
                                    
                                    mqtt_user = cfg["mqtt"].get("username")
                                    mqtt_pass = cfg["mqtt"].get("password")
                                    
                                    if mqtt_user and mqtt_pass:
                                        mqttc.username_pw_set(mqtt_user, mqtt_pass)
                                    elif mqtt_user or mqtt_pass:
                                        logging.warning("MQTT username or password missing. Authentication disabled.")
                                    else:
                                        logging.info("No auth data found. Start without authentication")
                                    
                                    mqttc.connect(MQTT_HOST, MQTT_PORT)
                                    mqttc.loop_start()
                                    
                                    # ---------------------------------------------------------
                                    # Text bereinigen
                                    # ---------------------------------------------------------
                                    
                                    def sanitize(text):
                                        # Umlaute ersetzen
                                        text = (
                                            text.replace("ä", "ae")
                                                .replace("ö", "oe")
                                                .replace("ü", "ue")
                                                .replace("Ä", "Ae")
                                                .replace("Ö", "Oe")
                                                .replace("Ü", "Ue")
                                                .replace("ß", "ss")
                                        )
                                    
                                        # Problematische Zeichen ersetzen
                                        text = text.replace("-", "_")
                                        text = text.replace(":", "_")
                                    
                                        # Erlaubt: A-Z, a-z, 0-9, _
                                        text = re.sub(r"[^A-Za-z0-9_]+", "_", text)
                                    
                                        # Mehrere Unterstriche zu einem machen
                                        text = re.sub(r"_+", "_", text)
                                    
                                        # Anfang/Ende säubern
                                        return text.strip("_")
                                    
                                    # ---------------------------------------------------------
                                    # 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
                                    # ---------------------------------------------------------
                                    
                                    last_values = {}
                                    
                                    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
                                    
                                                # Nachkommastellen basierend auf config.yaml
                                                decimals = reg.get("decimals", None)
                                                if decimals is not None:
                                                    value = round(value, decimals)
                                    
                                                # Beschreibung + Name in Topic einbauen
                                                name = reg.get("name", "")
                                                desc = reg.get("description", "")
                                    
                                                name_clean = sanitize(name)
                                                desc_clean = sanitize(desc)
                                    
                                                # Format: addr:name-description
                                                topic_suffix = str(addr)
                                    
                                                if name_clean:
                                                    topic_suffix += f"_{name_clean}"
                                    
                                                if desc_clean:
                                                    topic_suffix += f"_{desc_clean}"
                                    
                                                topic = f"{BASE_TOPIC}/register/{topic_suffix}"
                                    
                                                # Nur senden, wenn sich der Wert geändert hat
                                                if addr in last_values and last_values[addr] == value:
                                                    continue  # Wert unverändert → nicht senden
                                    
                                                last_values[addr] = value
                                                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: 13
                                    
                                    registers:
                                      - addr: 1199                      # Total Verbrauch in kW
                                        name: "ActivePower_Load_Sys"
                                        type: "uint16"
                                        factor: 0.01
                                        decimals: 2
                                        description: "Total Verbrauch"
                                    
                                      - addr: 1160                      # BKW Netz in kW
                                        name: "ActivePower_PCC_Total"
                                        type: "int16"
                                        factor: 0.01
                                        decimals: 2
                                        description: "BKW Netz"
                                    
                                      - addr: 1476                      # PV Produktion in kW
                                        name: "Power_PV_Total"
                                        type: "uint16"
                                        factor: 0.1
                                        decimals: 2
                                        description: "PV Produktion"
                                    
                                      - addr: 1542                      # Akku Leistung in kW
                                        name: "Power_Bat1"
                                        type: "int16"
                                        factor: 0.01
                                        decimals: 2
                                        description: "Akku Leistung"
                                    
                                      - addr: 1544                      # Akku Ladung in %
                                        name: "SOC_Bat1"
                                        type: "uint16"
                                        factor: 1
                                        decimals: 0
                                        description: "Akku Ladung"
                                    
                                      - addr: 1668                      # PV Produktion heute in kWh
                                        name: "PV_Generation_Today"
                                        type: "uint32"
                                        factor: 0.01
                                        decimals: 2
                                        description: "PV Produktion heute"
                                    

                                    Beim 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.target
                                    

                                    Wenn alles fertig ist, eingeben:

                                    sudo systemctl daemon-reload
                                    sudo systemctl enable modbus-mqtt.service
                                    sudo systemctl start modbus-mqtt.service
                                    

                                    Die Daten werden nun per MQTT an den ioBroker gesendet.
                                    Der Datenpunkt sieht dann etwa so aus:

                                    mqtt.0.modbus.inverter.register.{Registeradresse}

                                    c231d92c-1d69-4e52-a206-48dfd9e63cf5-grafik.png

                                    Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen. Alles, was schiefgehen kann, wird auch schiefgehen.
                                    (Murphys Gesetz)

                                    HomoranH 1 Antwort Letzte Antwort
                                    0
                                    • spicerS spicer

                                      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
                                      import re
                                      
                                      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)
                                      
                                      mqtt_user = cfg["mqtt"].get("username")
                                      mqtt_pass = cfg["mqtt"].get("password")
                                      
                                      if mqtt_user and mqtt_pass:
                                          mqttc.username_pw_set(mqtt_user, mqtt_pass)
                                      elif mqtt_user or mqtt_pass:
                                          logging.warning("MQTT username or password missing. Authentication disabled.")
                                      else:
                                          logging.info("No auth data found. Start without authentication")
                                      
                                      mqttc.connect(MQTT_HOST, MQTT_PORT)
                                      mqttc.loop_start()
                                      
                                      # ---------------------------------------------------------
                                      # Text bereinigen
                                      # ---------------------------------------------------------
                                      
                                      def sanitize(text):
                                          # Umlaute ersetzen
                                          text = (
                                              text.replace("ä", "ae")
                                                  .replace("ö", "oe")
                                                  .replace("ü", "ue")
                                                  .replace("Ä", "Ae")
                                                  .replace("Ö", "Oe")
                                                  .replace("Ü", "Ue")
                                                  .replace("ß", "ss")
                                          )
                                      
                                          # Problematische Zeichen ersetzen
                                          text = text.replace("-", "_")
                                          text = text.replace(":", "_")
                                      
                                          # Erlaubt: A-Z, a-z, 0-9, _
                                          text = re.sub(r"[^A-Za-z0-9_]+", "_", text)
                                      
                                          # Mehrere Unterstriche zu einem machen
                                          text = re.sub(r"_+", "_", text)
                                      
                                          # Anfang/Ende säubern
                                          return text.strip("_")
                                      
                                      # ---------------------------------------------------------
                                      # 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
                                      # ---------------------------------------------------------
                                      
                                      last_values = {}
                                      
                                      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
                                      
                                                  # Nachkommastellen basierend auf config.yaml
                                                  decimals = reg.get("decimals", None)
                                                  if decimals is not None:
                                                      value = round(value, decimals)
                                      
                                                  # Beschreibung + Name in Topic einbauen
                                                  name = reg.get("name", "")
                                                  desc = reg.get("description", "")
                                      
                                                  name_clean = sanitize(name)
                                                  desc_clean = sanitize(desc)
                                      
                                                  # Format: addr:name-description
                                                  topic_suffix = str(addr)
                                      
                                                  if name_clean:
                                                      topic_suffix += f"_{name_clean}"
                                      
                                                  if desc_clean:
                                                      topic_suffix += f"_{desc_clean}"
                                      
                                                  topic = f"{BASE_TOPIC}/register/{topic_suffix}"
                                      
                                                  # Nur senden, wenn sich der Wert geändert hat
                                                  if addr in last_values and last_values[addr] == value:
                                                      continue  # Wert unverändert → nicht senden
                                      
                                                  last_values[addr] = value
                                                  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: 13
                                      
                                      registers:
                                        - addr: 1199                      # Total Verbrauch in kW
                                          name: "ActivePower_Load_Sys"
                                          type: "uint16"
                                          factor: 0.01
                                          decimals: 2
                                          description: "Total Verbrauch"
                                      
                                        - addr: 1160                      # BKW Netz in kW
                                          name: "ActivePower_PCC_Total"
                                          type: "int16"
                                          factor: 0.01
                                          decimals: 2
                                          description: "BKW Netz"
                                      
                                        - addr: 1476                      # PV Produktion in kW
                                          name: "Power_PV_Total"
                                          type: "uint16"
                                          factor: 0.1
                                          decimals: 2
                                          description: "PV Produktion"
                                      
                                        - addr: 1542                      # Akku Leistung in kW
                                          name: "Power_Bat1"
                                          type: "int16"
                                          factor: 0.01
                                          decimals: 2
                                          description: "Akku Leistung"
                                      
                                        - addr: 1544                      # Akku Ladung in %
                                          name: "SOC_Bat1"
                                          type: "uint16"
                                          factor: 1
                                          decimals: 0
                                          description: "Akku Ladung"
                                      
                                        - addr: 1668                      # PV Produktion heute in kWh
                                          name: "PV_Generation_Today"
                                          type: "uint32"
                                          factor: 0.01
                                          decimals: 2
                                          description: "PV Produktion heute"
                                      

                                      Beim 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.target
                                      

                                      Wenn alles fertig ist, eingeben:

                                      sudo systemctl daemon-reload
                                      sudo systemctl enable modbus-mqtt.service
                                      sudo systemctl start modbus-mqtt.service
                                      

                                      Die Daten werden nun per MQTT an den ioBroker gesendet.
                                      Der Datenpunkt sieht dann etwa so aus:

                                      mqtt.0.modbus.inverter.register.{Registeradresse}

                                      c231d92c-1d69-4e52-a206-48dfd9e63cf5-grafik.png

                                      HomoranH Nicht stören
                                      HomoranH Nicht stören
                                      Homoran
                                      Global Moderator Administrators
                                      schrieb am zuletzt editiert von
                                      #184

                                      @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

                                      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                      spicerS 1 Antwort Letzte Antwort
                                      0
                                      • HomoranH Homoran

                                        @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

                                        spicerS Offline
                                        spicerS Offline
                                        spicer
                                        schrieb am zuletzt editiert von
                                        #185

                                        @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.

                                        Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen. Alles, was schiefgehen kann, wird auch schiefgehen.
                                        (Murphys Gesetz)

                                        HomoranH 1 Antwort Letzte Antwort
                                        0
                                        • spicerS spicer

                                          @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.

                                          HomoranH Nicht stören
                                          HomoranH Nicht stören
                                          Homoran
                                          Global Moderator Administrators
                                          schrieb am zuletzt editiert von
                                          #186

                                          @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!

                                          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                          spicerS 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          604

                                          Online

                                          32.7k

                                          Benutzer

                                          82.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe