Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. Auslesen einzelner Bits über Modbus-Adapter

NEWS

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    13
    1
    1.6k

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    2.3k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    11
    1
    1.2k

Auslesen einzelner Bits über Modbus-Adapter

Geplant Angeheftet Gesperrt Verschoben Einsteigerfragen
6 Beiträge 3 Kommentatoren 926 Aufrufe 2 Beobachtet
  • Ä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.
  • M Offline
    M Offline
    Magnus 0
    schrieb am zuletzt editiert von
    #1

    Hallo Zusammen,

    ich versuche aktuell meine Heizung via Modbus TCP an ioBroker anzubinden.

    Prinzipiell funktioniert das auch, d. h. Verbindung zur Heizung habe ich und auch Werte kann ich auslesen bzw. kommen im ioBroker wie erwartet an.

    Ein Problem habe ich aber, bei dem ich mir nun schon seit Tagen nicht weiterkomme.

    Erstmal kurz ein Beispiel, was bei mir funktioniert.

    Generell unterstützt die Heizung nur Funktionscode 03 (Read Holding Registers). Mir liegt eine Liste des Herstellers vor, auf der das Mapping abgedruckt ist.

    Bspw. steht in Adresse 00011 die Kesseltemperatur in °C. Das habe ich auch entsprechend im Modbus-Adapter eingetragen und funktioniert super.

    Jedoch ist es so, dass etliche Störungen und Fehler der Heizung nicht einzeln in einer Adresse stehen, sondern bis zu 16 Fehler in einer Adresse.

    Es ist dann beschrieben, welches Bit welche Störung signalisiert. Beispiel:

    Adresse 00002 Bit 0 = Türschalter
    Adresse 00002 Bit 1 = Fallschacht
    Adresse 00002 Bit 2 = Bunkeröffnung
    Adresse 00002 Bit 3 = zu wenig Unterdruck

    usw. --> Jede Adresse hat 16 Bits (0-15), es sind aber nicht überall alle Bits belegt.

    Nun habe ich heute Früh mal die Störung "Fallschacht" an der Heizung ausgelöst / simuliert.

    Bei der über FC03 (Read Holding Registers) ausgelesene Adresse 00002 stand dann unter Objekte die Zahl 2.

    So aus binärer Sicht würde das ja bedeuten, dass das Bit 1 den Wert 1 hat, würde also passen.

    D. h. ich müsste das Ganze dann immer entsprechend umrechnen.

    Gibt es da nicht eine andere Möglichkeit, sodass ich mehrere Objekte habe und dahinter immer nur ein einzelnes Bit steckt?

    Weil ich denke die Umrechnung wäre zu kompliziert, gerade weil es ja auch sein kann, dass nicht nur ein Bit einer Adresse 1 sein kann, sondern auch mehrere.

    Wie ihr vielleicht merkt, bin ich da noch ein Neuling. Ich würde mich sehr freuen, wenn mir hier jemand kurz eine Hilfestellung geben könnte.

    Vielen Dank euch!

    paul53P 1 Antwort Letzte Antwort
    0
    • M Magnus 0

      Hallo Zusammen,

      ich versuche aktuell meine Heizung via Modbus TCP an ioBroker anzubinden.

      Prinzipiell funktioniert das auch, d. h. Verbindung zur Heizung habe ich und auch Werte kann ich auslesen bzw. kommen im ioBroker wie erwartet an.

      Ein Problem habe ich aber, bei dem ich mir nun schon seit Tagen nicht weiterkomme.

      Erstmal kurz ein Beispiel, was bei mir funktioniert.

      Generell unterstützt die Heizung nur Funktionscode 03 (Read Holding Registers). Mir liegt eine Liste des Herstellers vor, auf der das Mapping abgedruckt ist.

      Bspw. steht in Adresse 00011 die Kesseltemperatur in °C. Das habe ich auch entsprechend im Modbus-Adapter eingetragen und funktioniert super.

      Jedoch ist es so, dass etliche Störungen und Fehler der Heizung nicht einzeln in einer Adresse stehen, sondern bis zu 16 Fehler in einer Adresse.

      Es ist dann beschrieben, welches Bit welche Störung signalisiert. Beispiel:

      Adresse 00002 Bit 0 = Türschalter
      Adresse 00002 Bit 1 = Fallschacht
      Adresse 00002 Bit 2 = Bunkeröffnung
      Adresse 00002 Bit 3 = zu wenig Unterdruck

      usw. --> Jede Adresse hat 16 Bits (0-15), es sind aber nicht überall alle Bits belegt.

      Nun habe ich heute Früh mal die Störung "Fallschacht" an der Heizung ausgelöst / simuliert.

      Bei der über FC03 (Read Holding Registers) ausgelesene Adresse 00002 stand dann unter Objekte die Zahl 2.

      So aus binärer Sicht würde das ja bedeuten, dass das Bit 1 den Wert 1 hat, würde also passen.

      D. h. ich müsste das Ganze dann immer entsprechend umrechnen.

      Gibt es da nicht eine andere Möglichkeit, sodass ich mehrere Objekte habe und dahinter immer nur ein einzelnes Bit steckt?

      Weil ich denke die Umrechnung wäre zu kompliziert, gerade weil es ja auch sein kann, dass nicht nur ein Bit einer Adresse 1 sein kann, sondern auch mehrere.

      Wie ihr vielleicht merkt, bin ich da noch ein Neuling. Ich würde mich sehr freuen, wenn mir hier jemand kurz eine Hilfestellung geben könnte.

      Vielen Dank euch!

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      @magnus-0 sagte: welches Bit welche Störung signalisiert.

      Siehe Funktion checkBit(val, bit).

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

      M 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @magnus-0 sagte: welches Bit welche Störung signalisiert.

        Siehe Funktion checkBit(val, bit).

        M Offline
        M Offline
        Magnus 0
        schrieb am zuletzt editiert von
        #3

        @paul53

        Vielen Dank für die schnelle Rückmeldung.

        Ich muss sagen, ich kene mich da leider noch nicht so genau aus, aber mithilfe des Namens "checkBit" bin ich auf folgenden Beitrag / Kommentar / Hinweis von @GombersIOB gestoßen:

        Auswertung Bits Modbus-Register

        Ich habe mir den Screenshot von @GombersIOB angesehen, jedoch glaube ich, dass das bei mir nicht funktioniert.

        Was passiert nämlich, wenn mehrere Bits eines Registers auf 1 gehen? Dann funktioniert das Ganze nicht mehr, oder?

        paul53P HomoranH 2 Antworten Letzte Antwort
        0
        • M Magnus 0

          @paul53

          Vielen Dank für die schnelle Rückmeldung.

          Ich muss sagen, ich kene mich da leider noch nicht so genau aus, aber mithilfe des Namens "checkBit" bin ich auf folgenden Beitrag / Kommentar / Hinweis von @GombersIOB gestoßen:

          Auswertung Bits Modbus-Register

          Ich habe mir den Screenshot von @GombersIOB angesehen, jedoch glaube ich, dass das bei mir nicht funktioniert.

          Was passiert nämlich, wenn mehrere Bits eines Registers auf 1 gehen? Dann funktioniert das Ganze nicht mehr, oder?

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @magnus-0 sagte: wenn mehrere Bits eines Registers auf 1 gehen?

          In einer Schleife kann man alle 16 Bit prüfen.

          Blockly_temp.JPG

          return !!(val >> bit & 1);
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

          M 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @magnus-0 sagte: wenn mehrere Bits eines Registers auf 1 gehen?

            In einer Schleife kann man alle 16 Bit prüfen.

            Blockly_temp.JPG

            return !!(val >> bit & 1);
            
            M Offline
            M Offline
            Magnus 0
            schrieb am zuletzt editiert von
            #5

            @paul53 Ok, Danke für die Rückmeldung.

            Das muss ich mir in Ruhe die Tage mal anschauen, die Geschichte mit Bit / Dezimal usw. ist nicht so meins. Aber schaue ich mir mal an.

            1 Antwort Letzte Antwort
            0
            • M Magnus 0

              @paul53

              Vielen Dank für die schnelle Rückmeldung.

              Ich muss sagen, ich kene mich da leider noch nicht so genau aus, aber mithilfe des Namens "checkBit" bin ich auf folgenden Beitrag / Kommentar / Hinweis von @GombersIOB gestoßen:

              Auswertung Bits Modbus-Register

              Ich habe mir den Screenshot von @GombersIOB angesehen, jedoch glaube ich, dass das bei mir nicht funktioniert.

              Was passiert nämlich, wenn mehrere Bits eines Registers auf 1 gehen? Dann funktioniert das Ganze nicht mehr, oder?

              HomoranH Offline
              HomoranH Offline
              Homoran
              Global Moderator Administrators
              schrieb am zuletzt editiert von
              #6

              @magnus-0 sagte in Auslesen einzelner Bits über Modbus-Adapter:

              wenn mehrere Bits eines Registers auf 1 gehen?

              wieso nicht. ist doch ein binäres Mäuseklavier mit 16 dipswitches auch

              kein Support per PN! - Fragen im Forum stellen -
              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
              Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

              1 Antwort Letzte Antwort
              0

              Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

              Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

              Mit deinem Input könnte dieser Beitrag noch besser werden 💗

              Registrieren Anmelden
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              254

              Online

              32.9k

              Benutzer

              83.2k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2026
              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