Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Entwicklung
  4. Proxy für Objekte des Modbus-Adapters

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    12
    2
    229

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

Proxy für Objekte des Modbus-Adapters

Proxy für Objekte des Modbus-Adapters

Scheduled Pinned Locked Moved Entwicklung
modbus adapteralias
3 Posts 2 Posters 497 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • prog42P Offline
    prog42P Offline
    prog42
    wrote on last edited by
    #1

    Hallo Forum,

    ich bin neu hier und habe mich gerade im Forum für diese Frage angemeldet. Ich beobachte und teste ioBroker schon seit ca 1,5 Jahren und möchte nach ein paar Fixes am Modbus-Adapter vor einiger Zeit ggf. noch etwas zur Funktionalität beitragen.

    Bisher habe ich nur ein kleine Konfiguration zum Testen erstellt. Die meisten Geräte hängen bei meinem Aufbau an Wago 750 SPS sowie an KNX. Für die Anbindung der SPS nutze ich Modbus. Für den ioBroker.Modbus-Adapter habe ich einen Konverter geschrieben, der die Definitionen aus der Codesys-Speicherlayoutdatei (Codesys ist die Programmierumgebung der SPS) in eine CSV-Datei umwandelt, die dann im Modbus-Adapter importiert werden kann. Damit stehen im ioBroker für Lesen und Schreiben sofort Objekte bereit, die im Codesys als Variablen im Modbus-Speicherbereich liegen. Auch verschachtelte Strukturen und Arrays werden entsprechend abgebildet. Ich werde diesen Konverter demnächst auf GitHub veröffentlichen.

    Ich habe nun das Problem, dass auf der SPS der Modbus-Server immer läuft, auch wenn die Anwendung auf der SPS nicht gestartet ist. Beispielsweise, wenn ein neues Programm geladen wird, dass nicht per online-change aktualisiert werden kann. In diesem Fall liefert der Modbus-Server der SPS einen mit 0 initialisierten Speicherbereich aus. Wenn ich beispielsweise Temperaturfühler darüber im ioBroker auslese führt das in der Aufzeichnung zu dem Wert 0 während das Programm nicht läuft, obwohl dieser natürlich kein richtiger Messwert war.

    Ich würde nun gerne den Modbus-Adapter so lassen wie er ist und eine Art Proxy-Adapter nachschalten, der z.B. ein Flag prüft, ob die Anwendung läuft und eine Versionierung der Datenstruktur kennt, und erst dann die über Modbus gelesenen Objekte an einen gespiegelten Satz Objekte weitergibt. Eine Lösung mit einem händisch gepflegten Javascript kommt nicht in Frage, da zu es zu viele Objekte sind und die Fehleranfäligkeit zu hoch ist.
    Ich will also dafür einen Adapter bauen, der die Objekte eines anderen Adapters (in dem Fall Modbus) ausliest, bewertet, und anschließend an einen gespiegelten Satz Objekte weiterreicht. Ich habe die Alias Objekte gesehen, die schon sehr richtig dafür aussehen, jedoch habe ich keine Option zum Aktivieren und Deaktivieren der Getter und Setter gefunden.

    Ich würde mich freuen, wenn ihr mir einen Tipp geben könnt, auf welche Weise das am besten ioBroker-konform umzusetzen ist. Ich kann mir vorstellen, dass eine solche Funktion auch noch an anderen Stellen nützliche sein könnte.

    Ich bin beruflicher Softwareentwickler im C, C++ Umfeld unter Linux, hatte bisher nicht viel Berührung mit Javascript, sehe darin aber kein Problem. Ich bin also auch für einen komplexen Vorschlag zu haben.

    Viele Grüße und Hallo an alle hier im Forum
    Benny

    paul53P 1 Reply Last reply
    0
    • prog42P prog42

      Hallo Forum,

      ich bin neu hier und habe mich gerade im Forum für diese Frage angemeldet. Ich beobachte und teste ioBroker schon seit ca 1,5 Jahren und möchte nach ein paar Fixes am Modbus-Adapter vor einiger Zeit ggf. noch etwas zur Funktionalität beitragen.

      Bisher habe ich nur ein kleine Konfiguration zum Testen erstellt. Die meisten Geräte hängen bei meinem Aufbau an Wago 750 SPS sowie an KNX. Für die Anbindung der SPS nutze ich Modbus. Für den ioBroker.Modbus-Adapter habe ich einen Konverter geschrieben, der die Definitionen aus der Codesys-Speicherlayoutdatei (Codesys ist die Programmierumgebung der SPS) in eine CSV-Datei umwandelt, die dann im Modbus-Adapter importiert werden kann. Damit stehen im ioBroker für Lesen und Schreiben sofort Objekte bereit, die im Codesys als Variablen im Modbus-Speicherbereich liegen. Auch verschachtelte Strukturen und Arrays werden entsprechend abgebildet. Ich werde diesen Konverter demnächst auf GitHub veröffentlichen.

      Ich habe nun das Problem, dass auf der SPS der Modbus-Server immer läuft, auch wenn die Anwendung auf der SPS nicht gestartet ist. Beispielsweise, wenn ein neues Programm geladen wird, dass nicht per online-change aktualisiert werden kann. In diesem Fall liefert der Modbus-Server der SPS einen mit 0 initialisierten Speicherbereich aus. Wenn ich beispielsweise Temperaturfühler darüber im ioBroker auslese führt das in der Aufzeichnung zu dem Wert 0 während das Programm nicht läuft, obwohl dieser natürlich kein richtiger Messwert war.

      Ich würde nun gerne den Modbus-Adapter so lassen wie er ist und eine Art Proxy-Adapter nachschalten, der z.B. ein Flag prüft, ob die Anwendung läuft und eine Versionierung der Datenstruktur kennt, und erst dann die über Modbus gelesenen Objekte an einen gespiegelten Satz Objekte weitergibt. Eine Lösung mit einem händisch gepflegten Javascript kommt nicht in Frage, da zu es zu viele Objekte sind und die Fehleranfäligkeit zu hoch ist.
      Ich will also dafür einen Adapter bauen, der die Objekte eines anderen Adapters (in dem Fall Modbus) ausliest, bewertet, und anschließend an einen gespiegelten Satz Objekte weiterreicht. Ich habe die Alias Objekte gesehen, die schon sehr richtig dafür aussehen, jedoch habe ich keine Option zum Aktivieren und Deaktivieren der Getter und Setter gefunden.

      Ich würde mich freuen, wenn ihr mir einen Tipp geben könnt, auf welche Weise das am besten ioBroker-konform umzusetzen ist. Ich kann mir vorstellen, dass eine solche Funktion auch noch an anderen Stellen nützliche sein könnte.

      Ich bin beruflicher Softwareentwickler im C, C++ Umfeld unter Linux, hatte bisher nicht viel Berührung mit Javascript, sehe darin aber kein Problem. Ich bin also auch für einen komplexen Vorschlag zu haben.

      Viele Grüße und Hallo an alle hier im Forum
      Benny

      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by paul53
      #2

      @prog42 sagte:

      Ich habe die Alias Objekte gesehen, die schon sehr richtig dafür aussehen, jedoch habe ich keine Option zum Aktivieren und Deaktivieren der Getter und Setter gefunden.

      Diese Option gibt es auch nicht.

      @prog42 sagte in Proxy für Objekte des Modbus-Adapters:

      Eine Lösung mit einem händisch gepflegten Javascript kommt nicht in Frage, da zu es zu viele Objekte sind und die Fehleranfäligkeit zu hoch ist.

      Man kann mit dem $Selector alle Modbus-Datenpunkte erfassen. Ist die Eigenschaft common.read im Modbus-Adapter korrekt gesetzt ? Dann kann man die zu lesenden Datenpunkte zum Spiegeln auf eigene Datenpunkte filtern.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      prog42P 1 Reply Last reply
      1
      • paul53P paul53

        @prog42 sagte:

        Ich habe die Alias Objekte gesehen, die schon sehr richtig dafür aussehen, jedoch habe ich keine Option zum Aktivieren und Deaktivieren der Getter und Setter gefunden.

        Diese Option gibt es auch nicht.

        @prog42 sagte in Proxy für Objekte des Modbus-Adapters:

        Eine Lösung mit einem händisch gepflegten Javascript kommt nicht in Frage, da zu es zu viele Objekte sind und die Fehleranfäligkeit zu hoch ist.

        Man kann mit dem $Selector alle Modbus-Datenpunkte erfassen. Ist die Eigenschaft common.read im Modbus-Adapter korrekt gesetzt ? Dann kann man die zu lesenden Datenpunkte zum Spiegeln auf eigene Datenpunkte filtern.

        prog42P Offline
        prog42P Offline
        prog42
        wrote on last edited by
        #3

        @paul53 said in Proxy für Objekte des Modbus-Adapters:

        Man kann mit dem $Selector alle Modbus-Datenpunkte erfassen. Ist die Eigenschaft common.read im Modbus-Adapter korrekt gesetzt ? Dann kann man die zu lesenden Datenpunkte zum Spiegeln auf eigene Datenpunkte filtern.

        Der $Selector sieht sehr gut aus. Dann scheint sich dass ja wirklich sehr einfach als Script umsetzen zu lassen. Vielen Dank für den Tipp!

        common.read wird bei mir vom Modbus-Adapter für holdingRegisters und inputRegisters auf true gesetzt. Das ist korrekt.

        1 Reply Last reply
        0
        Reply
        • Reply as topic
        Log in to reply
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes


        Support us

        ioBroker
        Community Adapters
        Donate

        52

        Online

        32.4k

        Users

        81.3k

        Topics

        1.3m

        Posts
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
        ioBroker Community 2014-2025
        logo
        • Login

        • Don't have an account? Register

        • Login or register to search.
        • First post
          Last post
        0
        • Recent
        • Tags
        • Unread 0
        • Categories
        • Unreplied
        • Popular
        • GitHub
        • Docu
        • Hilfe