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.
    • R
      Renegade 0 last edited by

      Hi,
      ich habe den io.Broker mqtt server/client als client eingerichtet.
      über meine Vis setze ich per trigger-Button eine Variable. Diese greift node-Red auf und sendet dann einen mqtt-Befehl.
      2 von 3 funktionieren auch. Dich der 3. wird mir zwar im Datenpunkt angezeigt, aber kommt nicht am subscriber an. Sende ich den Befehl über ein Python-Script bekommt sowohl der subscriber als auch der io.Broker den Wert.

      Wie kann das sein?

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

        @renegade-0 Als erstes brauchst Du immer einen Broker - wo ist denn Dein Broker?
        Wenn Du den Adapter nicht als Client sondern als Broker konfiguriert hast, dann schau ins Log, ob eine Nachricht nach ca. 11 retries gelöscht wurde, dann ist es wieder das Adapter Problem als Broker.

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

          @mickym
          Der Broker ist separat über mosquitto auf dem "Server"(io.Broker) installiert. Dazu läuft direkt im io.Broker halt der Adapter mqtt Server/Client als Client, um die Datenpunkte in den io.B zu bekommen. Auf einem 2. Raspi läuft mein python Script je eines für senden und eines für empfangen.

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

            @renegade-0 Ok dann ist ja alles super - dann habe ich trotzdem das Problem nicht begriffen. Wenn bei einem subscriber nichts ankommt, dann ist es immer das Problem des subscribers ein Broker sendet nichts, sondern sagt höchstens es ist was neues da. Also ich versteh es nicht

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

              @mickym
              Das seltsame ist, sende ich vom client per script, kommt es über den Broker(serverseitig) beim Subscriberscript an. Und auch im io.B subscriber Adapter.
              Sende ich aber vom io.B aus, kommt es am Datenpunkt (mqtt.0.xx) an, aber nicht am script auf der Client Seite.

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

                @renegade-0 Du darfst das ACK flag wahrscheinlich nicht setzen bzw. poste mal Deine Adapterkonfig da sollte nichts angehakt sein.

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

                  @mickym

                  von welchem Adapter meinst jetzt genau?

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

                    @renegade-0 Na kann doch nur der Mqtt Adapter im iobroker sein, der gibt es ja anscheinend nicht richtig an den broker weiter

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

                      @mickym
                      13ca304a-1a6e-44c6-8d4c-e9f7134e2785-grafik.png

                      67d9ba4e-4a3c-4de4-899e-0d23010385ae-grafik.png

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

                        @renegade-0 würde beide ausmachen. Ich habe die gleiche Konfig auch mit mosquitto.

                        1. Hast Du keine eigenen States in der Regel
                        2. Auch wenn es keine Änderungen gibt, sind aktualisiereungen oft sinnvoll.

                        bc7eae1b-befe-4acf-8474-86046781e8a4-image.png

                        Ausserdem würde ich eine Client - Id setzen. Ggf. im mosquitto.log schauen, ob da Fehler drin sind.

                        Na was unter mqtt.0.* ist - warum soll das beim Verbinden gepublished werden. Das wäre nur dann sinnvoll, wenn Du was publishen würdest, was noch nicht im broker ist.

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

                          @mickym
                          Teste ich gleich mal.

                          Muss das heut Nacht noch zum laufen bekommen. Morgen geht der Mist in der Früh zur Meisterschule. 😉
                          Wie meinst du eigene States?

                          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:

                            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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            976
                                            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