Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. Hilfe bei mqtt über node Red

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Hilfe bei mqtt über node Red

    This topic has been deleted. Only users with topic management privileges can see it.
    • mickym
      mickym Most Active @Renegade 0 last edited by

      @renegade-0 sagte in Hilfe bei mqtt über node Red:

      Sende ich aber vom io.B aus

      Ansonsten musst halt das noch mal erklären - sende vom iobroker aus.

      R 2 Replies Last reply Reply Quote 0
      • R
        Renegade 0 @mickym last edited by

        @mickym

        in der Vis habe ich einen Button. Dieser triggert einen Logik-Datenpunkt. Dieser Datenpunkt wird von node Red aufgegriffen, das setzt bei true dann die richtige payload und schickt sie über mqtt-Node ab.

        mickym 1 Reply Last reply Reply Quote 0
        • mickym
          mickym Most Active @Renegade 0 last edited by

          @renegade-0 Ja wenn NodeRed über mqtt-Node was in den Broker schreibt, dann tut es dann ja in mosquitto. So wenn dann im Subscriber - also im iobroker MQTT Adapter dies ankommt, dann ist ja alles in Ordnung.

          VIS => Datenpunkt ibBroker => NodeRed => mosquitto => mqtt.0 Adapter.

          Ich versteh das Problem nicht, ist soch alles richtig so.

          R 1 Reply Last reply Reply Quote 0
          • R
            Renegade 0 @mickym last edited by

            @mickym

            mqtt-empfangen.py

            #!/usr/bin/python
            import paho.mqtt.client as mqtt
            import RPi.GPIO as GPIO
            
            MQTT_SERVER = "192.168.33.65"
            MQTT_PATH = "client/Door"
            
            GPIO.setmode(GPIO.BCM)
            
            GPIO.setup(22, GPIO.OUT)
            
            ## The callback for when the client receives a CONNACK response from the server.
            def on_connect(client, userdata, flags, rc):
                print("Connected with result code "+str(rc))
            
                # Subscribing in on_connect() means that if we lose the connection and
                # reconnect then subscriptions will be renewed.
                client.subscribe(MQTT_PATH)
            
            # The callback for when a PUBLISH message is received from the server.
            def on_message(client, userdata, msg):
                value = str(msg.payload)
                print(msg.topic+":"+value)
                if value == "open":
                    print(value+" OK")
                    GPIO.output(22, GPIO.HIGH)
                elif value == "stop":
                    GPIO.output(22, GPIO.LOW)
                else:
                    print("Error")
                # more callbacks, etc
            
            client = mqtt.Client()
            client.on_connect = on_connect
            client.on_message = on_message
            
            client.connect(MQTT_SERVER, 1883, 60)
            
            # Blocking call that processes network traffic, dispatches callbacks and
            # handles reconnecting.
            # Other loop*() functions are available that give a threaded interface and a
            # manual interface.
            client.loop_forever()
            

            mqtt-senden.py

            #!/usr/bin/python
            import serial
            import time
            import paho.mqtt.publish as publish
            
            MQTT_SERVER = "192.168.33.65"
            MQTT_PATH = "client"
            
            
            # adapt name (baud rate has to be the same than in the arduino sketch)
            s = serial.Serial('/dev/ttyUSB0', 9600)
            #s.open()
            
            # Arduino resets after a serial connection
            print "Waiting 3s for Arduino..."
            time.sleep(3)
            
            try:
                while True:
                    path,response = s.readline().split(':')
                    MQTT_PATH_active = MQTT_PATH+"/"+path
                    publish.single(MQTT_PATH_active, response, hostname=MQTT_SERVER)
                    print(MQTT_PATH_active)
                    print(response)
            except KeyboardInterrupt:
                s.close()
            

            und rein zum testen

            mqtt-test.py

            #!/usr/bin/python
            import paho.mqtt.publish as publish
            
            MQTT_SERVER = "192.168.33.65"
            MQTT_PATH = "client/Door"
            
            publish.single(MQTT_PATH, "test", hostname=MQTT_SERVER)
            print(MQTT_PATH+":Test")
            
            mickym 1 Reply Last reply Reply Quote 0
            • R
              Renegade 0 @mickym last edited by

              @mickym

              das ist es ja gerade. mqtt.0.xx zeigt den wert auch an, aber das python-script "mqtt-empfangen.py" bekommt ihn nicht.
              wenn ich aber "mqtt-test.py" starte, bekommt das empfangen und der mqtt.o.xx den Wert.

              1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @Renegade 0 last edited by mickym

                @renegade-0 Ich bin leider kein python spezialist bzw. hab damit noch nichts gemacht. Wenn es aber eindeutig beim mqtt.0 ankommt, dann ist es auch im mosquitto. Also kann es nur an Deinem Empfangsskript liegen.

                Im Prinzip kannst Du Dir höchstens noch das mosquitto.log anschauen. Vielleicht gibst mal in dem Empfangsskript alles unter client/Door an. Jedenfalls würde ich ausschließlich da suchen - wenn ein Fehler beim Schreiben im Node-Red oder im mosquitto vorliegen würde, dann würde es auch nicht im mqtt.0 Adapter ankommen.

                Im Prinzip kannst ja auch mal im mqtt.0.client.Door was reinschreiben und schauen, ob was in Deinem Empfangsskript ankommt.

                R 2 Replies Last reply Reply Quote 0
                • R
                  Renegade 0 @mickym last edited by

                  @mickym

                  es scheint wirklich was mit dem empfangsscript zu tun zu haben. Das hat aber schon mal funktioniert. 😕
                  Selbst beim direktem reinschreiben reagiert es nicht.

                  1 Reply Last reply Reply Quote 0
                  • R
                    Renegade 0 @mickym last edited by Renegade 0

                    @mickym
                    nein liegt an node Red.

                    Hab den Datenpunkt gelöscht, mqtt neu gestartet und dann über mein script einen bEfehl geschickt. Wurde sauber angelegt. Wenn ich händisch reinschreibe bekommt auch das subscriber-Script alles mit. Sobald ich aber über node-Red ausführe, war es das. Dann geht danach nicht mal mehr händisch editieren zum script durch. Nur noch script zu script.

                    [
                        {
                            "id": "dd4aec7d.a7fd1",
                            "type": "tab",
                            "label": "Flow 1",
                            "disabled": false,
                            "info": ""
                        },
                        {
                            "id": "4e816657.424e48",
                            "type": "change",
                            "z": "dd4aec7d.a7fd1",
                            "name": "set-value door_open",
                            "rules": [
                                {
                                    "t": "set",
                                    "p": "payload",
                                    "pt": "msg",
                                    "to": "open",
                                    "tot": "str"
                                }
                            ],
                            "action": "",
                            "property": "",
                            "from": "",
                            "to": "",
                            "reg": false,
                            "x": 520,
                            "y": 100,
                            "wires": [
                                [
                                    "71572ac2.0ce8a4"
                                ]
                            ]
                        },
                        {
                            "id": "5f695b99.e5c724",
                            "type": "switch",
                            "z": "dd4aec7d.a7fd1",
                            "name": "true",
                            "property": "payload",
                            "propertyType": "msg",
                            "rules": [
                                {
                                    "t": "eq",
                                    "v": "true",
                                    "vt": "str"
                                },
                                {
                                    "t": "eq",
                                    "v": "false",
                                    "vt": "str"
                                }
                            ],
                            "checkall": "true",
                            "repair": false,
                            "outputs": 2,
                            "x": 330,
                            "y": 120,
                            "wires": [
                                [
                                    "4e816657.424e48"
                                ],
                                [
                                    "79472b61.0581f4"
                                ]
                            ]
                        },
                        {
                            "id": "71572ac2.0ce8a4",
                            "type": "mqtt out",
                            "z": "dd4aec7d.a7fd1",
                            "name": "mqtt-door",
                            "topic": "/client/Door/",
                            "qos": "",
                            "retain": "",
                            "respTopic": "",
                            "contentType": "",
                            "userProps": "",
                            "correl": "",
                            "expiry": "",
                            "broker": "ee5bd6c2.8ac368",
                            "x": 1080,
                            "y": 100,
                            "wires": []
                        },
                        {
                            "id": "a573d46d.f2cc28",
                            "type": "ioBroker in",
                            "z": "dd4aec7d.a7fd1",
                            "name": "door_open",
                            "topic": "0_userdata.0.door-server.vis.door_open",
                            "payloadType": "value",
                            "onlyack": "",
                            "func": "all",
                            "gap": "",
                            "fireOnStart": "false",
                            "x": 160,
                            "y": 120,
                            "wires": [
                                [
                                    "5f695b99.e5c724"
                                ]
                            ]
                        },
                        {
                            "id": "79472b61.0581f4",
                            "type": "change",
                            "z": "dd4aec7d.a7fd1",
                            "name": "set-value door_close",
                            "rules": [
                                {
                                    "t": "set",
                                    "p": "payload",
                                    "pt": "msg",
                                    "to": "stop",
                                    "tot": "str"
                                }
                            ],
                            "action": "",
                            "property": "",
                            "from": "",
                            "to": "",
                            "reg": false,
                            "x": 520,
                            "y": 140,
                            "wires": [
                                [
                                    "9b29328e.a01dd"
                                ]
                            ]
                        },
                        {
                            "id": "9b29328e.a01dd",
                            "type": "delay",
                            "z": "dd4aec7d.a7fd1",
                            "name": "",
                            "pauseType": "delay",
                            "timeout": "3",
                            "timeoutUnits": "seconds",
                            "rate": "1",
                            "nbRateUnits": "1",
                            "rateUnits": "second",
                            "randomFirst": "1",
                            "randomLast": "5",
                            "randomUnits": "seconds",
                            "drop": false,
                            "x": 760,
                            "y": 140,
                            "wires": [
                                []
                            ]
                        },
                        {
                            "id": "ee5bd6c2.8ac368",
                            "type": "mqtt-broker",
                            "name": "mqtt-1",
                            "broker": "192.168.33.65",
                            "port": "1883",
                            "clientid": "",
                            "usetls": false,
                            "protocolVersion": "4",
                            "keepalive": "60",
                            "cleansession": true,
                            "birthTopic": "",
                            "birthQos": "0",
                            "birthPayload": "",
                            "birthMsg": {},
                            "closeTopic": "",
                            "closeQos": "0",
                            "closePayload": "",
                            "closeMsg": {},
                            "willTopic": "",
                            "willQos": "0",
                            "willPayload": "",
                            "willMsg": {},
                            "sessionExpiry": ""
                        }
                    ]
                    
                    mickym 1 Reply Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @Renegade 0 last edited by mickym

                      Mach mal den führenden "/" in der mqtt-Node raus - das darf nicht.

                      Also nicht

                      "topic": "/client/Door/"
                      

                      sondern

                      "topic": "client/Door"
                      

                      In Deinem Empfangsskript hast Du es ja auch ohne eingegeben. Auch kein / danach. Sondern einfach Pfad zum Punkt.

                      Darf glaub auch grundsätzlich nicht - da gibts einige Artikel zu,

                      Im Übrigen würde ich Dir empfehlen - ist kein MUSS, Deinen mqtt-clients Namen zu verpassen, dass macht ggf. die Fehlersuche im mosquitto-log einfacher:

                      1623453939: New client connected from 127.0.0.1 as mqttClientFhem (c1, k30, u'user').
                      1623453959: New connection from 127.0.0.1 on port 1883.
                      1623453959: New client connected from 127.0.0.1 as mqttClientIobrokerPublishSubscribeAll (c1, k1000, u'user').
                      1623453973: New connection from 127.0.0.1 on port 1883.
                      1623453973: New client connected from 127.0.0.1 as mqttClientIobrokerPublishOnly (c1, k1000, u'user').
                      1623453975: New connection from 192.168.178.28 on port 1883.
                      1623453975: Socket error on client mqttClientNodeRed, disconnecting.
                      1623453975: New client connected from 192.168.178.28 as mqttClientNodeRed (c0, k60, u'user').
                      1623454068: Client mqttClientIobrokerPublishOnly disconnected.
                      
                      R 1 Reply Last reply Reply Quote 0
                      • R
                        Renegade 0 @mickym last edited by Renegade 0

                        @mickym
                        wie starte ich das log?
                        leider der selbe Fehler. 😕

                        mickym 1 Reply Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @Renegade 0 last edited by mickym

                          @renegade-0 Das log wird automatisch geschrieben. Wenn Du nichts verändert hast, steht es unter
                          /var/log/mosquitto

                          Dort das Letzte ist mosquitto.log

                          Wenn Du das Topic korrigiert hast und noch keine großartigen retain messages drin hast, lösche ggf. nochmal die mosquitto.db und starte mosquitto neu und auch den Node-Red Adapter neu.

                          In Deiner mosquitto.conf unter /etc/mosquitto

                          steht in der Regel folgendes:

                          persistence true
                          persistence_location /var/lib/mosquitto/
                          
                          log_dest file /var/log/mosquitto/mosquitto.log
                          

                          Das erste ist der Pfad zur Mosquitto Datenbank, das zweite der Pfad zur Logdatein.

                          1 Reply Last reply Reply Quote 0
                          • mickym
                            mickym Most Active @Renegade 0 last edited by mickym

                            @renegade-0 sagte in Hilfe bei mqtt über node Red:

                            @mickym
                            Teste ich gleich mal.
                            Muss das heut Nacht noch zum laufen bekommen. Morgen geht der Mist in der Früh zur Meisterschule.

                            Falls Du unter Zeitdruck stehst und es nur um die Kommunikation zwischen VIS und Deinem Python Skript geht, kannst als Workaround Node-Red ja auch direkt in den Datenpunkt unter mqtt.0.client.Door mit einer iobroker Node schreiben lassen.

                            Dann published halt Dein mqtt Adapter. Auch wenn man das Problem eigentlich untersuchen sollte, aber es wäre eine Alternative, um halt ggf. die Kommunikation bis morgen hinzubekommen.

                            Und wie gesagt - mache alle Haken in Deinem iobroker Adapter raus. Nichts publishen beim Verbinden und so.

                            R 1 Reply Last reply Reply Quote 0
                            • R
                              Renegade 0 @mickym last edited by Renegade 0

                              @mickym

                              @mickym sagte in Hilfe bei mqtt über node Red:

                              Falls Du unter Zeitdruck stehst und es nur um die Kommunikation zwischen VIS und Deinem Python Skript geht, kannst als Workaround Node-Red ja auch direkt in den Datenpunkt unter mqtt.0.client.Door mit einer iobroker Node schreiben lassen.

                              Das rettet mir gerade ein paar Stunden Schlaf. Also nach löschen der db und reboot, ging dann wenigstens das manuelle eintragen nach dem node-Red wieder, allerdings node-Red mqtt geht weiterhin nicht. sChreibt zwar in den Datenpunkt, aber sendet diesen nicht.

                              Das direkt reinschreiben haut hin.

                              @mickym sagte in Hilfe bei mqtt über node Red:

                              Und wie gesagt - mache alle Haken in Deinem iobroker Adapter raus. Nichts publishen beim Verbinden und so.

                              hab nur noch den reject Unauthorised drinnen.

                              mickym 1 Reply Last reply Reply Quote 0
                              • mickym
                                mickym Most Active @Renegade 0 last edited by

                                @renegade-0 sagte in Hilfe bei mqtt über node Red:

                                @mickym sagte in Hilfe bei mqtt über node Red:

                                Und wie gesagt - mache alle Haken in Deinem iobroker Adapter raus. Nichts publishen beim Verbinden und so.

                                hab nur noch den reject Unauthorised drinnen.

                                Das passt ja - so habe ich es auch.

                                Wenn Dir der Workaround hilft kannst. Dir ja Zeit lassen.

                                Wenn Du in Deiner mqtt-Server konfiguration eine Client ID einträgst, dann kannst Du im Log ja prüfen, ob als Letztes ein Connected für Deinen Node-Red Client drin steht.

                                New client connected from 192.168.178.28 as mqttClientNodeRed (c0, k60, u'user').
                                

                                17e2dc19-15a8-4217-89f9-3e7742376b1c-image.png

                                Dann hast Du hier ja einen Punkt angegenen, der den Status ebenfalls anzeigen sollte:

                                bcd1bc10-9158-414b-b260-2450fc554218-image.png

                                das heisst auch im iobroker unter Deinem mqtt.0 solltest Du in diesem Pfad den Status des Node-Red clients sehen:

                                2f6c5653-e0d8-4ef3-9c7c-5a65c0a22cc0-image.png

                                R 1 Reply Last reply Reply Quote 0
                                • R
                                  Renegade 0 @mickym last edited by

                                  @mickym
                                  OK, habsch mal so übernommen.

                                  Danke dir. JEtzt gehts weiter mit der Suchfunktion, dann ist Feierabend 🙂

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

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  1.1k
                                  Online

                                  31.7k
                                  Users

                                  79.7k
                                  Topics

                                  1.3m
                                  Posts

                                  2
                                  26
                                  1169
                                  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