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. Off Topic
  4. Iobroker <--> NodeRed Docker Modbus

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Iobroker <--> NodeRed Docker Modbus

Geplant Angeheftet Gesperrt Verschoben Off Topic
nodereddockermodbus
3 Beiträge 2 Kommentatoren 283 Aufrufe 2 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.
  • M Offline
    M Offline
    Malaus
    schrieb am zuletzt editiert von
    #1

    Hallo Zusammen,

    ich möchte gerne ioBroker mit Nodered über Modbus verbinden.
    Alles ist auf einem RPI4, dabei ist ioBroker normal und Nodered unter Docker installiert worden.
    ioBroker ist unter der IP 192.168.2.100 und Nodered unter 192.168.2.130 (macVlan) zu erreichen.

    Innerhalb von Nodered funktioniert alles. Ich kann über Modbus schreiben und lesen.
    Bildschirm­foto 2022-11-19 um 10.43.29.png

    Unter ioBroker habe ich ebenfalls Nodered installiert und die gleichen Komponenten genommen, um das Register zu lesen:
    Bildschirm­foto 2022-11-19 um 10.46.36.png
    Hier erhalte ich eine Fehlermeldung:

    Client -> fsm init state after reconnecting  TCP@192.168.2.130:502 default Unit-Id: 6
    

    Unter Modbus Adapter als Master, kommt diese Meldung:

    On error: {"errno":-113,"code":"EHOSTUNREACH","syscall":"connect","address":"192.168.2.130","port":502}
    

    Wenn ich das richtig verstehe, kann das Gerät ...130 nicht erreicht werden.

    Leider, komme ich hier an meine Grenzen und weiß nicht, was ich einstellen muss, damit sich diese Geräte erreichen.
    Da Nodered unter Docker als MacVlan eingestellt worden ist, müssten ja alle Ports offen sein?

    Hoffe mir kann jemand helfen.

    Hier ist noch der Flow:

    [
        {
            "id": "c32b1b035b30c015",
            "type": "tab",
            "label": "Flow 2",
            "disabled": false,
            "info": "",
            "env": []
        },
        {
            "id": "3f39af9bcc140e8c",
            "type": "modbus-write",
            "z": "c32b1b035b30c015",
            "name": "",
            "showStatusActivities": true,
            "showErrors": true,
            "unitid": "",
            "dataType": "HoldingRegister",
            "adr": "0",
            "quantity": "1",
            "server": "30b6ebc808160e96",
            "emptyMsgOnFail": false,
            "keepMsgProperties": false,
            "x": 500,
            "y": 280,
            "wires": [
                [
                    "7af7161827adc045"
                ],
                [
                    "05f3c7b49256bbfb"
                ]
            ]
        },
        {
            "id": "e3308ae254bd820d",
            "type": "random",
            "z": "c32b1b035b30c015",
            "name": "",
            "low": 1,
            "high": 10,
            "inte": "true",
            "property": "payload",
            "x": 160,
            "y": 280,
            "wires": [
                [
                    "8804ceacf61db760"
                ]
            ]
        },
        {
            "id": "46699a0f8ba6ac80",
            "type": "inject",
            "z": "c32b1b035b30c015",
            "name": "",
            "props": [
                {
                    "p": "payload"
                },
                {
                    "p": "topic",
                    "vt": "str"
                }
            ],
            "repeat": "",
            "crontab": "",
            "once": false,
            "onceDelay": 0.1,
            "topic": "",
            "payload": "",
            "payloadType": "date",
            "x": 160,
            "y": 220,
            "wires": [
                [
                    "e3308ae254bd820d"
                ]
            ]
        },
        {
            "id": "05f3c7b49256bbfb",
            "type": "modbus-response",
            "z": "c32b1b035b30c015",
            "name": "",
            "registerShowMax": 20,
            "x": 710,
            "y": 280,
            "wires": []
        },
        {
            "id": "7af7161827adc045",
            "type": "debug",
            "z": "c32b1b035b30c015",
            "name": "debug 6",
            "active": true,
            "tosidebar": true,
            "console": false,
            "tostatus": false,
            "complete": "false",
            "statusVal": "",
            "statusType": "auto",
            "x": 680,
            "y": 240,
            "wires": []
        },
        {
            "id": "8804ceacf61db760",
            "type": "function",
            "z": "c32b1b035b30c015",
            "name": "Output 1 control",
            "func": "msg.payload = { value: msg.payload, \n'fc': 6, \n'unitid': 1, \n'address': 0 , \n'quantity': 1 } \nreturn msg;",
            "outputs": 1,
            "noerr": 0,
            "initialize": "",
            "finalize": "",
            "libs": [],
            "x": 320,
            "y": 280,
            "wires": [
                [
                    "3f39af9bcc140e8c"
                ]
            ]
        },
        {
            "id": "064a12e96ba1f6d4",
            "type": "modbus-flex-server",
            "z": "c32b1b035b30c015",
            "name": "",
            "logEnabled": true,
            "serverAddress": "192.168.2.130",
            "serverPort": "502",
            "responseDelay": 100,
            "unitId": 1,
            "delayUnit": "ms",
            "coilsBufferSize": 20000,
            "registersBufferSize": 20000,
            "minAddress": 0,
            "splitAddress": 10000,
            "funcGetCoil": "function getFlexCoil(addr, unitID) {\n\tif (unitID === node.unitId && \n\t\taddr >= node.minAddress && \n\t\taddr <= node.splitAddress) { \n\n\t\treturn node.coils.readUInt8(addr * node.bufferFactor) \n\t}  \n}",
            "funcGetDiscreteInput": "function getFlexDiscreteInput(addr, unitID) {\n\taddr += node.splitAddress\n\tif (unitID === node.unitId && \n\t\taddr >= node.splitAddress && \n\t\taddr <= node.splitAddress * 2) { \n\n\t\treturn node.coils.readUInt8(addr * node.bufferFactor) \n\t}  \n}",
            "funcGetInputRegister": "function getFlexInputRegister(addr, unitID) { \n\tif (unitID === node.unitId && \n\t\taddr >= node.minAddress && \n\t\taddr <= node.splitAddress) { \n\n\t\treturn node.registers.readUInt16BE(addr * node.bufferFactor)  \n\t} \n}",
            "funcGetHoldingRegister": "function getFlexHoldingRegsiter(addr, unitID) { \n\taddr += node.splitAddress\n\tif (unitID === node.unitId && \n\t\taddr >= node.splitAddress && \n\t\taddr <= node.splitAddress * 2) { \n\n\t\treturn node.registers.readUInt16BE(addr * node.bufferFactor)  \n\t} \n}",
            "funcSetCoil": "function setFlexCoil(addr, value, unitID) { \n\tif (unitID === node.unitId && \n\t\taddr >= node.minAddress && \n\t\taddr <= node.splitAddress) { \n\n\t\tnode.coils.writeUInt8(value, addr * node.bufferFactor)  \n\t} \n}",
            "funcSetRegister": "function setFlexRegister(addr, value, unitID) { \n\taddr += node.splitAddress\n\tif (unitID === node.unitId && \n\t\taddr >= node.splitAddress && \n\t\taddr <= node.splitAddress * 2) { \n\n\t\tnode.registers.writeUInt16BE(value, addr * node.bufferFactor)  \n\t} \n}",
            "showErrors": true,
            "x": 380,
            "y": 100,
            "wires": [
                [],
                [],
                [],
                [],
                []
            ]
        },
        {
            "id": "3ebc92c2c64ebe19",
            "type": "inject",
            "z": "c32b1b035b30c015",
            "name": "",
            "props": [
                {
                    "p": "payload"
                },
                {
                    "p": "topic",
                    "vt": "str"
                }
            ],
            "repeat": "",
            "crontab": "",
            "once": false,
            "onceDelay": 0.1,
            "topic": "",
            "payload": "",
            "payloadType": "date",
            "x": 160,
            "y": 400,
            "wires": [
                [
                    "f8d19f13feb1fd4c"
                ]
            ]
        },
        {
            "id": "f8d19f13feb1fd4c",
            "type": "modbus-getter",
            "z": "c32b1b035b30c015",
            "name": "",
            "showStatusActivities": true,
            "showErrors": true,
            "logIOActivities": false,
            "unitid": "",
            "dataType": "HoldingRegister",
            "adr": "0",
            "quantity": "1",
            "server": "30b6ebc808160e96",
            "useIOFile": false,
            "ioFile": "",
            "useIOForPayload": false,
            "emptyMsgOnFail": false,
            "keepMsgProperties": false,
            "x": 500,
            "y": 400,
            "wires": [
                [],
                [
                    "6f9a0dcac2cb4296"
                ]
            ]
        },
        {
            "id": "6f9a0dcac2cb4296",
            "type": "modbus-response",
            "z": "c32b1b035b30c015",
            "name": "",
            "registerShowMax": 20,
            "x": 710,
            "y": 400,
            "wires": []
        },
        {
            "id": "30b6ebc808160e96",
            "type": "modbus-client",
            "name": "",
            "clienttype": "tcp",
            "bufferCommands": true,
            "stateLogEnabled": false,
            "queueLogEnabled": false,
            "failureLogEnabled": true,
            "tcpHost": "192.168.2.130",
            "tcpPort": "502",
            "tcpType": "DEFAULT",
            "serialPort": "/dev/ttyUSB",
            "serialType": "RTU-BUFFERD",
            "serialBaudrate": "9600",
            "serialDatabits": "8",
            "serialStopbits": "1",
            "serialParity": "none",
            "serialConnectionDelay": "100",
            "serialAsciiResponseStartDelimiter": "0x3A",
            "unit_id": 1,
            "commandDelay": 1,
            "clientTimeout": 1000,
            "reconnectOnTimeout": true,
            "reconnectTimeout": 2000,
            "parallelUnitIdsAllowed": true
        }
    ]
    
    1 Antwort Letzte Antwort
    0
    • mickymM Offline
      mickymM Offline
      mickym
      Most Active
      schrieb am zuletzt editiert von mickym
      #2

      Ich kenn mich mit dem Modbus nicht aus. Aber kann es sein, dass Du nicht mehrfach auf die gleiche Schnittstelle zugreifen kannst. Mach halt mal Deine Dockerinstallation mit NodeRed (also die funktioniert) komplett inaktiv und schau, ob dann der Connect funktioniert?

      Und dann auch immer nur eines - entweder Adapter oder NodeRed. - Ich kann mir immer schlecht vorstellen, dass man solche Schnittstellen mehrfach nutzen kann ohne das es Konflikte gibt.

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      M 1 Antwort Letzte Antwort
      0
      • mickymM mickym

        Ich kenn mich mit dem Modbus nicht aus. Aber kann es sein, dass Du nicht mehrfach auf die gleiche Schnittstelle zugreifen kannst. Mach halt mal Deine Dockerinstallation mit NodeRed (also die funktioniert) komplett inaktiv und schau, ob dann der Connect funktioniert?

        Und dann auch immer nur eines - entweder Adapter oder NodeRed. - Ich kann mir immer schlecht vorstellen, dass man solche Schnittstellen mehrfach nutzen kann ohne das es Konflikte gibt.

        M Offline
        M Offline
        Malaus
        schrieb am zuletzt editiert von
        #3

        @mickym
        Verbindungen kann man mehrere öffnen, dafür gibts die Device ID.

        Wenn ich unter ioBroker Nodered einen Modbus Server öffne und in das Register 0 einen Wert schreibe, kann ich über iobroker Modbus Adapter & Nodered Container, diesen Wert abrufen.
        In die andere Richtung, also von Nodered Container zu ioBroker funktioniert es leider nicht, Weder MacVlan oder Bridge Mode.
        Hier mal bildlich dargestellt:
        Bildschirm­foto 2022-11-19 um 18.00.43.png

        Meine Vermutung ist, dass da sich irgendwas beißt, weil alles von einem Gerät kommt.
        Mit der Lösung, könnte ich leben. Dennoch würde es mich schon interessieren, wieso die andere Variante nicht funktioniert.

        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

        673

        Online

        32.6k

        Benutzer

        82.1k

        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