Navigation

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

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Modbus - Erste Schritte

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

      Eben nicht. Er prüft ja erst, ob offset*2+1 Durch 2 Teilbar ist.

      Wenn ja, dann

      return buffer.readUInt8(offset * 2);
      

      wenn nicht, dann

      return buffer.readUInt8(offset * 2 + 1);
      

      ich könnte natürlich bei jeder zweiten Adresse den Typ ändern (zwischen LE und BE), aber das ist ja nicht Sinn der Sache 😉

      1 Reply Last reply Reply Quote 0
      • Bluefox
        Bluefox last edited by

        @NightWatcher:

        Eben nicht. Er prüft ja erst, ob offset*2+1 Durch 2 Teilbar ist. `
        Offset =0, 1%2 =1

        Offset =1, 3%2 =1

        Offset =2, 5%2 =1

        Offset =3, 7%2 =1

        …

        Muss ich weiter machen?

        1 Reply Last reply Reply Quote 0
        • N
          NightWatcher last edited by

          Moin Bluefox - jetzt wo ich es auf nem Blatt Papier gegenrechne hast du recht :?

          Und ich habs getestet - was soll ich sagen - es klappte natürlich.

          Und ich schwöre, das Szenario hatte ich vorher bestimmt schon 5x durchgehabt. Wieso sonst hätte ich mir 5-6 Stunden Zeit nehmen sollen, um meine oben präsentierte Lösung zu erarbeiten :lol:

          Ich vermute das Problem in der Objektansicht im ioBroker Backend. Ich habe das Gefühl, dass sich hier die Werte manchmal einfach nicht aktualisieren. Gerade dann oder nur dann, wenn ich eben an den Typen rumspiele. Ich sehe zwar schön, wie Sie beim Neustart des Adapters grün werden, der Wert aber bleibt manchmal der gleiche. Dann muss man nen Seitenreload machen oder den Browser komplett neu starten.

          Momentan passt es jedenfalls, wie du sagtest uint8le.

          1 Reply Last reply Reply Quote 0
          • Bluefox
            Bluefox last edited by

            @NightWatcher:

            Moin Bluefox - jetzt wo ich es auf nem Blatt Papier gegenrechne hast du recht :?

            Und ich habs getestet - was soll ich sagen - es klappte natürlich.

            Und ich schwöre, das Szenario hatte ich vorher bestimmt schon 5x durchgehabt. Wieso sonst hätte ich mir 5-6 Stunden Zeit nehmen sollen, um meine oben präsentierte Lösung zu erarbeiten :lol:

            Ich vermute das Problem in der Objektansicht im ioBroker Backend. Ich habe das Gefühl, dass sich hier die Werte manchmal einfach nicht aktualisieren. Gerade dann oder nur dann, wenn ich eben an den Typen rumspiele. Ich sehe zwar schön, wie Sie beim Neustart des Adapters grün werden, der Wert aber bleibt manchmal der gleiche. Dann muss man nen Seitenreload machen oder den Browser komplett neu starten.

            Momentan passt es jedenfalls, wie du sagtest uint8le. `
            Mit dem Update kann gut ein Fehler sein. Den jage ich aber noch.

            Gut, dass es bei dir jetzt endlich geht, weil die Entwicklung von modbus ist irgendwie zu holperig. 😄

            Und ich bin auch müde davon.

            Es gibt eventuell noch Probleme mit der Wiederverbindung.

            Kannst du updaten um es zu testen?

            1 Reply Last reply Reply Quote 0
            • T
              tschombe last edited by

              @Bluefox:

              Mit dem Update kann gut ein Fehler sein. Den jage ich aber noch.

              Gut, dass es bei dir jetzt endlich geht, weil die Entwicklung von modbus ist irgendwie zu holperig. 😄

              Und ich bin auch müde davon.

              Es gibt eventuell noch Probleme mit der Wiederverbindung. `

              DURCHHALTEN!!! :mrgreen: :mrgreen: :mrgreen:

              Wir werden doch wohl den modbus Adapter auf 1.0.0 (RELEASE) bekommen!!! 8-) 8-) 8-)

              1 Reply Last reply Reply Quote 0
              • N
                NightWatcher last edited by

                klar kann ich Updaten - was genau soll ich im Anschluss testen?

                Mit Verbindungsabbrüchen hatte ich bisher noch keine Probleme. Liegt vielleicht auch daran, dass er bei mir bisher noch nie konstant nen Tag durchlief (weil ich vorher wegen Änderungen immer mal neugestartet hatte :lol: )

                1 Reply Last reply Reply Quote 0
                • Bluefox
                  Bluefox last edited by

                  Einfach Stabilität. Und vielleicht ein paar die Verbindung trennen und wiederherstellen.

                  1 Reply Last reply Reply Quote 0
                  • N
                    NightWatcher last edited by

                    Jupp, werde ich mal machen. Melde mich zu dem Thema dann ende der Woche. Dann kann ich dir sagen, wie stabil es bei mir läuft.

                    1 Reply Last reply Reply Quote 0
                    • N
                      NightWatcher last edited by

                      Also bei mir läuft er mit der Version 0.4.5 ohne einen Absturz sauber durch - bisher 8-)

                      1 Reply Last reply Reply Quote 0
                      • Bluefox
                        Bluefox last edited by

                        @NightWatcher:

                        Also bei mir läuft er mit der Version 0.4.5 ohne einen Absturz sauber durch - bisher 8-) `
                        Schreibst du was ab und zu oder nur lesend?

                        1 Reply Last reply Reply Quote 0
                        • N
                          NightWatcher last edited by

                          Aktuell werden zum Test mal hin und wieder auch was von ioBroker zur Wago versendet.

                          Bei mir dient ioBroker aber primär als Visualisierung. Die Logik bleibt großteils in der WAGO.

                          1 Reply Last reply Reply Quote 0
                          • N
                            NightWatcher last edited by

                            Moin, habe heute mal diverse Adapter aktualisiert. Darunter auch den Modubs Adapter auf Version 0.4.6

                            Seitdem startet es leider nicht mehr.

                            Folgende Fehlermeldung kommt nun.
                            1534_bild001.png

                            1 Reply Last reply Reply Quote 0
                            • Bluefox
                              Bluefox last edited by

                              @NightWatcher:

                              Moin, habe heute mal diverse Adapter aktualisiert. Darunter auch den Modubs Adapter auf Version 0.4.6

                              Seitdem startet es leider nicht mehr.

                              Folgende Fehlermeldung kommt nun. `
                              Der Inhaber von modbus npm modul hat fehlerhafte Dateien eingecheckt.

                              Habe jetzt fest alte Version von diesem Paket gesetzt. Bitte noch mal updaten.

                              1 Reply Last reply Reply Quote 0
                              • N
                                NightWatcher last edited by

                                Perfekt, läuft 😄

                                1 Reply Last reply Reply Quote 0
                                • andre
                                  andre Developer last edited by

                                  Hallo,

                                  ich mache auch gerade meine ersten Gehversuche mit Modbus. 🙂 Habe soeben mein Hauskraftwerk von E3DC erfolgreich angebunden.

                                  Soll heißen, es fließen Daten in ioBroker!

                                  Allerdings habe ich da noch ein Problemchen. Zwei Register des E3DC-Geräts sind vom Datentyp "Uint8+Uint8". Dabei handelt es sich um zwei Werte in einem Register:
                                  914_datentyp.png
                                  Gibt es eine Möglichkeit wie ich diese Werte über den Adapter in ioBroker als separate Datenpunkte integrieren kann?

                                  Außerdem habe ich noch eine Verständnisfrage. Was hat es mit WP (Write Pulse?) und CW (Zyklisch Schreiben?) auf sich?
                                  914_wp_cw.png
                                  MfG,

                                  André

                                  1 Reply Last reply Reply Quote 0
                                  • Bluefox
                                    Bluefox last edited by

                                    @andre:

                                    Hallo,

                                    ich mache auch gerade meine ersten Gehversuche mit Modbus. 🙂 Habe soeben mein Hauskraftwerk von E3DC erfolgreich angebunden.

                                    Soll heißen, es fließen Daten in ioBroker!

                                    Allerdings habe ich da noch ein Problemchen. Zwei Register des E3DC-Geräts sind vom Datentyp "Uint8+Uint8". Dabei handelt es sich um zwei Werte in einem Register:

                                    Datentyp.PNG

                                    Gibt es eine Möglichkeit wie ich diese Werte über den Adapter in ioBroker als separate Datenpunkte integrieren kann? `
                                    Ich würde das mit dem Skript lösen.

                                    @andre:

                                    Außerdem habe ich noch eine Verständnisfrage. Was hat es mit WP (Write Pulse?) und CW (Zyklisch Schreiben?) auf sich?

                                    wp+cw.PNG

                                    MfG,

                                    André `

                                    Write Pulse: beim schreiben von true es wird automatisch nach X ms wieder auf false gesetzt.

                                    Zyklisch Schreiben: Manche slaves wollen, dass die Werte beim jedem Zyklus alle X ms geschrieben werden. Damit kann man es machen.

                                    1 Reply Last reply Reply Quote 0
                                    • andre
                                      andre Developer last edited by

                                      @Bluefox:

                                      Ich würde das mit dem Skript lösen. `
                                      Das habe ich mir fast gedacht, dass es so geht. Leider fehlt mir dabei ein wenig das Programmierwissen. 🙂 Was muss ich bei Google suchen wenn ich dazu mal ein Beispiel benötige?

                                      Und was nehme ich überhaupt für einen Datentyp damit ich einen Wert bekomme, den ich dann im Script verarbeiten kann?

                                      @Bluefox:

                                      Write Pulse: beim schreiben von true es wird automatisch nach X ms wieder auf false gesetzt.

                                      Zyklisch Schreiben: Manche slaves wollen, dass die Werte beim jedem Zyklus alle X ms geschrieben werden. Damit kann man es machen. `
                                      Danke für die Info. Wieder was gelernt.

                                      MfG,

                                      André

                                      Gesendet von iPad mit Tapatalk

                                      1 Reply Last reply Reply Quote 0
                                      • Bluefox
                                        Bluefox last edited by

                                        @andre:

                                        @Bluefox:

                                        Ich würde das mit dem Skript lösen. `
                                        Das habe ich mir fast gedacht, dass es so geht. Leider fehlt mir dabei ein wenig das Programmierwissen. 🙂 Was muss ich bei Google suchen wenn ich dazu mal ein Beispiel benötige?

                                        Und was nehme ich überhaupt für einen Datentyp damit ich einen Wert bekomme, den ich dann im Script verarbeiten kann? `
                                        Ich wurde Uint16 nehmen.

                                        z.B. deine Uint16 Variable heißt modbus.0.MyDouble

                                        var id = 'modbus.0.MyDouble';
                                        createState(id + '.One');
                                        createState(id + '.Two');
                                        on(id, function (obj) {
                                             setState(id + '.One', (obj.state.val >> 16) & 0xFF, true);
                                             setState(id + '.One', obj.state.val & 0xFF, true);
                                        });
                                        
                                        
                                        1 Reply Last reply Reply Quote 0
                                        • andre
                                          andre Developer last edited by

                                          @Bluefox:

                                          Ich wurde Uint16 nehmen.

                                          z.B. deine Uint16 Variable heißt modbus.0.MyDouble

                                          var id = 'modbus.0.MyDouble';
                                          createState(id + '.One');
                                          createState(id + '.Two');
                                          on(id, function (obj) {
                                               setState(id + '.One', (obj.state.val >> 16) & 0xFF, true);
                                               setState(id + '.One', obj.state.val & 0xFF, true);
                                          });
                                          
                                          ```` `  
                                          

                                          Hallo Bluefox,

                                          vielen Dank für deinen Lösungsansatz. Habe damit ein wenig rum probiert und ihn nach meinen Bedürfnissen angepasst. 🙂 Läuft soweit und die Werte scheinen schlüssig.

                                          In Anlehnung an dein (ungetestetes) Beispiel musste ich das Script so anpassen/ korrigieren:

                                          var id = 'modbus.0.MyDouble';
                                          createState(id + '.One');
                                          createState(id + '.Two');
                                          on(id, function (obj) {
                                               setState(id + '.One', (obj.state.val >> 8) & 0xFF, true);
                                               setState(id + '.Two', obj.state.val & 0xFF, true);
                                          });
                                          

                                          Letztendlich läuft es bei mir (mit meinen Datenpunkten) so:

                                          var id = 'modbus.0.holdingRegisters.40082_Autarkie_Eigenverbrauch';
                                          createState('e3dc.modbus.Autarkie');
                                          createState('e3dc.modbus.Eigenverbrauch');
                                          on(id, function (obj) {
                                               setState('e3dc.modbus.Autarkie', (obj.state.val >> 8) & 0xFF, true);
                                               setState('e3dc.modbus.Eigenverbrauch', obj.state.val & 0xFF, true);
                                          });
                                          

                                          Vielleicht kann es ja noch jemand benötigen…

                                          DANKE!

                                          MfG,

                                          André

                                          1 Reply Last reply Reply Quote 0
                                          • P
                                            Pep last edited by

                                            Hallo liebe Leute,

                                            ich mache gerade erste Versuche mit modbus im iobroker.

                                            Ich habe im Keller eine kleine Box, welche ich über ModBUS TCP anspreche. Aktuell mache ich das über FHEM mit folgenden Kommando:

                                            FHEM CODE

                                            #Register AussenTemperatur
                                            define SB_ATF ModbusRegister 0 2
                                            attr SB_ATF IODev SB
                                            attr SB_ATF alias Aussentemperatur
                                            attr SB_ATF icon temp_outside
                                            attr SB_ATF plcDataType REAL
                                            attr SB_ATF room Smartbox
                                            attr SB_ATF stateFormat {sprintf("%0.1f Grad", ReadingsVal($name,"state",0))}
                                            attr SB_ATF updateInterval 150
                                            #attr SB_ATF conversion 0.1:0
                                            #attr SB_ATF event-on-change reading .*
                                            
                                            

                                            Das würde ich gern in den iobroker migrieren.

                                            Jetzt habe ich die Register unter Eingangsregister wie folgt angelegt (zu Testzwecken mit verschiedenen TYP Einstellungen):
                                            730_modbus.png

                                            Da ich aber den Typ nicht kenne, bekomme ich folgende komische Ergebnisse:
                                            730_modbus2.png
                                            Kann mir jemand sagen, was ich bei Typ einstellen muss?

                                            In meiner "Datensammel-Box" ist folgendes eingestellt:

                                            Byte Order: 2143

                                            Datentyp lesen: FLOAT

                                            Ich kann damit leider nur nix anfangen 😞

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

                                            Support us

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

                                            965
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            17
                                            159
                                            33387
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo