Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. MQTT Broker empfängt Daten, sendet aber nicht an Client

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    MQTT Broker empfängt Daten, sendet aber nicht an Client

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

      @mickym bei mir - MQTT-Adapter als Client am Mosquitto - noch nie
      Und er hat oben wohl den Adapter als Client am laufen

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

        @bananajoe Ich habe den Client/Server Adapter auch als Client am mosquitto laufen und funktioniert einwandfrei. Man darf natürlich die Werte auch nur unbestätigt eintragen - aber das manuelle Anlegen der Datenpunkte ist genauso möglich.

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

          @mickym da muss ich zugeben das dies eben sogar funktioniert hat - wenn ich ein komplett neues Topic erstellt habe.
          Er stellt dann das im Adapter eingestellte Präfix voran.

          Wenn ich aber bei einem vorhandenen Topic etwas hinzufüge, z.B. bei einem meiner Tasmote Geräte, funktioniert das nicht, es kommt nichts an (auch ein MQTT Explorer sieht es nicht)

          Funktioniert (komplett neu angelegt)

          mqtt.0.Test22.Zahl
          

          Funktioniert nicht: (Teleperiod neu angelegt als mixed)

          mqtt.0.cmnd.Nous078.TelePeriod
          

          Wir haben also scheinbar beide Recht 🙂

          G mickym 2 Replies Last reply Reply Quote 0
          • G
            GiMichael @BananaJoe last edited by

            @BananaJoe & @mickym
            Danke für Eure Antworten. Habe es bis jetzt noch nicht zum laufen gebracht. Habe jetzt auch mal Klein-Schreibung probiert. Keine Verbesserung

            Der MQTT Adapter läuft als Server/Broker. Wenn ich MQTT richtig verstehe sollte das laufen, denn der Client sendet seine Daten (was funktioniert) und im IO Broker finde ich im Log die Subscription des Client. Nur sendet der Adapter sendet dann den Datenpunkt offenbar nicht an den Client. Schreibfehler kann ich nicht erkennen.

            Wie kann ich denn im MQTT Adapter des IO Brokers erkennen, was konkret gesendet wird. Vielleicht sendet er bisher gar nichts, oder etwas falsches? Gibt es da ein Log / Tool oder ähnliches oder muss ich einfach mal Wireshark bemühen um zu sehen, was wirklich auf der Schnittstelle los ist.

            Marc Berg 1 Reply Last reply Reply Quote 0
            • Marc Berg
              Marc Berg Most Active @GiMichael last edited by Marc Berg

              @gimichael sagte in MQTT Broker empfängt Daten, sendet aber nicht an Client:

              Wie kann ich denn im MQTT Adapter des IO Brokers erkennen, was konkret gesendet wird. Vielleicht sendet er bisher gar nichts, oder etwas falsches? Gibt es da ein Log / Tool oder ähnliches oder muss ich einfach mal Wireshark bemühen um zu sehen, was wirklich auf der Schnittstelle los ist.

              Du kannst ja das Loglevel des Adapters hochsetzen (via Experteneinstellungen/Instanz-Loglevel).

              Zeig' mal bitte Deine Einstellungsseite der MQTT-Instanz, vielleicht sieht man da etwas. Dort kann man auch noch die Trace-Ausgabe beeinflussen:
              070383d0-af82-462b-81de-3b1bbdce2ced-grafik.png

              G 1 Reply Last reply Reply Quote 0
              • G
                GiMichael @Marc Berg last edited by

                @marc-berg

                Trace OUtput habe ich gefunden. Loglevel? Meinst Du das hier?

                f6ea5e0f-fd8f-4822-8465-c51bf0f355fd-grafik.png

                Sehe auch gerade, dass die Verbindung nicht aufgebaut wird? Ist das normal, Werte kommen vom Client weiterhin an
                8c47b33d-8a19-4a62-bf6b-1d560ed77fab-grafik.png

                Anbei die Einstellungen
                609a4038-ae4e-40ef-b4e6-2dcb73e89eec-grafik.png

                963ec4de-66fd-4a85-bece-5103054435a2-grafik.png

                Interpretiere ich es richtig, dass der Broker keine Infos über solaranzeige/anzeige/1/heizen-mit-klimaanlage-aktiv schickt? Erkenne jedenfalls nichts im Log

                2022-08-23 10:17:01.514 - info: mqtt.0 (28518) Client [] connected with secret 1661242621513_1007
                2022-08-23 10:17:01.516 - debug: mqtt.0 (28518) Client [] with keepalive 60 set timeout to 90 seconds
                2022-08-23 10:17:01.520 - debug: mqtt.0 (28518) Client [] received subscribe package {"cmd":"subscribe","retain":false,"qos":1,"dup":false,"length":29,"topic":null,"payload":null,"subscriptions":[{"topic":"solaranzeige/anzeige/1/#","qos":0}],"messageId":1}
                2022-08-23 10:17:01.521 - debug: mqtt.0 (28518) Client [] Handle subscribe: {"topic":"solaranzeige/anzeige/1/#","qos":0}
                2022-08-23 10:17:01.521 - info: mqtt.0 (28518) Client [] subscribes on "solaranzeige/anzeige/1/#" with regex /^solaranzeige.anzeige.1(..)?/
                2022-08-23 10:17:01.522 - info: mqtt.0 (28518) Client [] subscribes on "solaranzeige/anzeige/1/#" with regex /^mqtt.0.solaranzeige.anzeige.1(..
                )?/
                2022-08-23 10:17:01.527 - debug: mqtt.0 (28518) Client [] received subscribe package {"cmd":"subscribe","retain":false,"qos":1,"dup":false,"length":28,"topic":null,"payload":null,"subscriptions":[{"topic":"solaranzeige/befehl/1/#","qos":0}],"messageId":2}
                2022-08-23 10:17:01.528 - debug: mqtt.0 (28518) Client [] Handle subscribe: {"topic":"solaranzeige/befehl/1/#","qos":0}
                2022-08-23 10:17:01.529 - info: mqtt.0 (28518) Client [] subscribes on "solaranzeige/befehl/1/#" with regex /^solaranzeige.befehl.1(..)?/
                2022-08-23 10:17:01.530 - info: mqtt.0 (28518) Client [] subscribes on "solaranzeige/befehl/1/#" with regex /^mqtt.0.solaranzeige.befehl.1(..
                )?/
                2022-08-23 10:17:01.722 - info: mqtt.0 (28518) Client [] publishOnSubscribe send all known states
                2022-08-23 10:17:01.731 - info: mqtt.0 (28518) Client [] publishOnSubscribe send all known states
                2022-08-23 10:17:04.155 - debug: mqtt.0 (28518) Client [] received publish package {"cmd":"publish","retain":false,"qos":0,"dup":false,"length":38,"topic":"solaranzeige/1/i_heizung_warmwasser","payload":{"type":"Buffer","data":[48]}}
                2022-08-23 10:17:04.156 - debug: mqtt.0 (28518) Server received "solaranzeige/1/i_heizung_warmwasser" (number): 0

                Marc Berg 1 Reply Last reply Reply Quote 0
                • Marc Berg
                  Marc Berg Most Active @GiMichael last edited by

                  @gimichael
                  ich würde sagen, hier fehlt ein ".*", oder?

                  4037e5a7-a25b-476d-9159-c8e9b4bb4140-grafik.png

                  G 1 Reply Last reply Reply Quote 0
                  • G
                    GiMichael @Marc Berg last edited by

                    @marc-berg
                    Steht als Hilfe ja auch so drunter. Wird laut Protokoll nun gesendet. Muss nur noch schauen, ob es richtig ankommt.

                    a11cb8de-964f-40b3-a3a0-0963b004a307-grafik.png

                    Allerbesten Dank.

                    Marc Berg 1 Reply Last reply Reply Quote 0
                    • Marc Berg
                      Marc Berg Most Active @GiMichael last edited by Marc Berg

                      @gimichael
                      Soviel ich weiß, wird die Verbindung nur grün, solange ein Client verbunden ist. Kann ich hier aber nicht testen, da ich den Adapter nicht installiert habe:

                      e8d1a606-280a-46eb-b5e1-6b3136ad5535-grafik.png

                      Es könnte aber auch daran liegen, dass Dein Client keinen Namen mitgibt:

                      f8972bab-593a-4bb7-a861-5a0099a30091-grafik.png

                      G 1 Reply Last reply Reply Quote 0
                      • G
                        GiMichael @Marc Berg last edited by

                        @marc-berg Nochmal Danke.

                        Gut zu wissen, muss ich mal beim Client schauen, warum da kein Name angegeben wird. Allerdings landet der Datenpunkt heizen-mit-klimaanlage-aktiv jetzt beim Client. Scheint jetzt zu funktionieren und ich kann mein Projekt weitermachen und weitere Datenpunkte übertragen.

                        1 Reply Last reply Reply Quote 1
                        • haus-automatisierung
                          haus-automatisierung Developer Most Active @mickym last edited by

                          @mickym sagte in MQTT Broker empfängt Daten, sendet aber nicht an Client:

                          @bananajoe Selbstverständlich kann man die Datenpunkte im MQTT Adapter einfach anlegen - habe ich immer so gemacht und das funktioniert auch.

                          Wenn Du das native-Attribut für das topic richtig setzt geht das - ja.

                          Beispiel:

                          {
                            "_id": "mqtt.0.service.weather.forecast.temperature.today",
                            "common": {
                              "name": "service/weather/forecast/temperature/today",
                              "write": true,
                              "read": true,
                              "role": "variable",
                              "desc": "mqtt client variable",
                              "type": "string"
                            },
                            "native": {
                              "topic": "service/weather/forecast/temperature/today"
                            },
                            "type": "state",
                            "from": "system.adapter.mqtt.0",
                            "user": "system.user.admin",
                            "ts": 1657460180836,
                            "acl": {
                              "object": 1636,
                              "state": 1636,
                              "owner": "system.user.admin",
                              "ownerGroup": "system.group.administrator"
                            }
                          }
                          

                          Würde ich aber nicht unbedingt empfehlen. Lieber einfach eine Nachricht senden und automatisch anlegen lassen.

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

                            @bananajoe Dann liegt bei Dir was im Argen - der mqtt Adapter macht doch keinen Unterschied in welchem Ast er was published - bei mir geht das mit den Tasmota Punkten ebenfalls einwandfrei. Wenn man ein 1:1 Abbild macht - dann nutzt man auch gar KEIN Präfix - woher soll den Tasmota das kennen - der ganze Pfad stimmt ja dann nicht mehr. Man macht am Besten alle Haken raus und lässt den Adapter machen. Ein Präfix ist nur sinnvoll, wenn ich anderes States publishen möchte und das unter einem eigenen Präfix verwalten möchte.

                            Der Präfix MUSS in der Regel leer bleiben:
                            24f38229-c49d-4a68-b0f4-92acf14d52bf-image.png

                            Du solltest lieber mal schauen, ob Du nicht zusätzlich Deinen ganzen tasmota topics unter /iobroker/cmnd nochmals angelegt hast. 😉 Und das Tasmota nichts subscribed was mit einem topic iobroker/# losgeht, das dürfte ja für Dich als Tasmota Spezialist bekannt sein. 😉 Natürlich nur, wenn Du es so eingetragen hast. Bei mir habe ich ja alle tasmotas mit Präfix Tasmota definiert und die Struktur umgedreht - deswegen habe ich eigene cmnd Aste für jedes Device und nicht für jedes Gerät einen Ast unter cmnd. 😉

                            2f400844-351b-4d2b-92c7-a08238eb6ad7-image.png

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

                              @mickym den Präfix habe ich da mit Absicht drin - um eben solche Sachen zu bemerken. Bei vorhandenen Topics gibt es das Problem ja auch nicht - aber wenn vorhandene, durch andere Geräte erstellte Topics erweitert werden sollen

                              Aber du hast Recht, kaum hatte ich das "iobroker" als Präfix aus den Adaptereinstellungen entfernt hat es zum ersten mal funktioniert. Obwohl es es dann keinen native-topic Eintrag an dem Datenpunkt gibt - den die automatisch erzeugten Datenpunkte aber haben. Oder die per sendTo erzeugten.

                              @haus-automatisierung wie wichtig der Eintrag nun ist vermag ich nicht zu sagen

                              mickym 1 Reply Last reply Reply Quote 0
                              • mickym
                                mickym Most Active @haus-automatisierung last edited by mickym

                                @haus-automatisierung Das muss auch nicht - der mqtt sendet auch wenn das da nativ fehlt - habe es gerade gemacht. Darüber habe ich mir bis jetzt in 2 Jahren, in dem ich das so mache noch nie Gedanken machen müssen. Ich verstehe auch nicht, was man dagegen hat, dass es mit direktem Anlegen der Datenpunkte im Adapter macht.

                                fb53eef1-a606-44a4-b879-b77bfcfd131c-image.png

                                6f5a65e6-8cf9-4b7d-8c9f-0e825235101c-image.png

                                Und das hat bei dem Adapter von Anfang an funktioniert. Ich ändere dann meist nur noch den Namen, da es einfach ist den zu kopieren.

                                Man muss es auch nicht kompliziert machen. Ich als NodeRed Nutzer kann gar nicht per sendTo was an den Adapter schicken Natürllich kann ich auch über andere mqtt Clients was publishen. Bei mir funktioniert das seit ich den Adapter in verschiedenen Versionen seit über 2 Jahren und man kanns auch kompliziert machen. Jedenfalls wenn kein anderen mqtt-Client zur Verfügung steht, der published, muss ich nicht Blockly oder Javascript lernen, um ein neues Topic via Adapter zu publishen.

                                Wenn natürlich die Maske zu publishen nicht passt oder man Präfixe einträgt - dann wissen halt manche nicht was sie tun.

                                In einer 2. Instanz nutze ich ein Präfix um die Daten des tr064 Adapter zu Publishen

                                f909cabe-05d6-4364-9b17-226e71bf8101-image.png

                                Es steht übrigens, dass das Präfix für alle Topics genutzt wird.

                                1fb71a3b-257a-4147-bfd8-0f427c06ff8c-image.png

                                @GiMichael

                                Um es auch nochmal zu sagen, habe ich schon mehrfach getan. Ein Broker sendet in erster Linie erst mal von sich nichts. Ein mqtt-Broker verwaltet die Informationen nur. Ein Client subscribed ein Topic und dann sendet der MQTT Broker an ALLE Clients, die diesen Topic abonniert haben.

                                Im Log siehst Du bei dem obigen Beispiel das gerade neue Topic:

                                060ae997-8189-48d3-882a-6d98b93e30ee-image.png

                                haus-automatisierung 1 Reply Last reply Reply Quote 0
                                • mickym
                                  mickym Most Active @BananaJoe last edited by mickym

                                  @bananajoe Sobald der Adapter topics published macht er das Präfix dran - Jedenfalls hat KEIN Präfix daran was verloren, wenn ich die Topics 1:1 übertragen will. Ich oben gerade beschrieben, wie ich es mit meiner 2. Instanz mache, wenn ich iobroker Daten über ein Präfix in mein mosquitto übertragen will. Warum es bei Dir bislang überhaupt funktioniert hat er der Adapter nicht überall was davor setzt kann ich Dir nicht beantworten - jedenfalls wenn er es täte dann wäre es richtig.

                                  Es steht ja Prefix für ALLE topics davor:

                                  ce594bc8-1169-4c61-9b8b-74d9322b46a9-image.png

                                  Warum der Adapter dann bei Deinem Tasmota Ast keinen Präfix davor macht, ist mir zwar ein Rätsel - aber in meinen Augen ist es in erster Linie falsch ein Präfix zu definieren, wenn ich keinen brauche. Und ich muss auch nicht die Welt bis ins Letzte verstehen, wenn das Teil in der Regel das tut, was es soll . 😁

                                  1 Reply Last reply Reply Quote 0
                                  • haus-automatisierung
                                    haus-automatisierung Developer Most Active @mickym last edited by

                                    @mickym sagte in MQTT Broker empfängt Daten, sendet aber nicht an Client:

                                    Das muss auch nicht - der mqtt sendet auch wenn das da nativ fehlt - habe es gerade gemacht.

                                    Ach guck, wieder was gelernt. Und direkt mal im Code nachgeschaut: Es gibt eine Funktion, welche die aktuelle ID in ein Topic umwandelt: https://github.com/ioBroker/ioBroker.mqtt/blob/47a0106676eb4f13395c66d12cc599d94229433b/lib/common.js#L3-L23

                                    Dann muss es damit aber in irgend einer Version mal Probleme gegeben haben, weil ich mich definitiv schon mit Leuten unterhalten habe, welche Objekte manuell erstellt haben und dann nix gepublished wurde.

                                    Empfehlen würde ich es deswegen nicht, weil man als Nutzer (meiner Meinung nach) nur eigene Objekte in 0_userdata.0 und alias.0 anlegen sollte. Das gibt ja auch der Admin vor und erlaubt das in anderen Namespaces gar nicht (außer, man wechselt in den Expertenmodus).

                                    mickym 1 Reply Last reply Reply Quote 0
                                    • mickym
                                      mickym Most Active @haus-automatisierung last edited by

                                      @haus-automatisierung In der Regel gebe ich Dir Recht, aber diese Möglichkeit über eigene Datenpunkte was zu publishen, da habe ich hier lange für "gekämpft" und Diskussionen geführt und ich bin froh, dass es so funktioniert, wie es tut.

                                      Man legt ja auch nicht Punkte in diesem Adapter an, um das als Datenspeicher zu nutzen - auch der alias Objektbaum hat eine bestimmte Funktion und muss published den Wert seiner Originaldatenpunkte. 😉

                                      Deswegen würde ich dem Fall Deine Liste durchaus erweitern:
                                      0_userdata.0 - zur Speicherung für eigene Daten jeglicher Art
                                      alias.0 - für das Mappen und Veröffentlichen von bereits vorhandenen States unter "neutralem" Namen
                                      mqtt - zum Publishen von mqtt topics

                                      Wie gesagt ich habe da lange Diskussionen geführt, dass der mqtt Adapter eine Sonderstellung einnimmt. Er lässt sich auch nicht in das vorgegebene iobroker Schema pressen - deswegen werden auch Verzeichnisse in topics gewandelt usw.

                                      Ein Shelly published nun mal mit originärem mqtt in

                                      e2f040ef-edaa-4368-961d-58b381072c49-image.png

                                      relay/0 - auch wenn es darunter noch ein command topic gibt. Aber wem erzähle ich das. 😁 😁 😁

                                      haus-automatisierung 1 Reply Last reply Reply Quote 0
                                      • haus-automatisierung
                                        haus-automatisierung Developer Most Active @mickym last edited by

                                        @mickym sagte in MQTT Broker empfängt Daten, sendet aber nicht an Client:

                                        dass der mqtt Adapter eine Sonderstellung einnimmt

                                        Da hast Du Recht. Eventuell müsste man den Admin dann mal dahingehend ändern, dass man dort auch ohne den Expertenmodus Objekte anlegen kann. Zumal ich die Objekte dort ja auch bearbeite (read / write anpassen) nachdem sie angelegt wurden.

                                        Es gibt ja keine "richtige" Struktur dort. Die legt man am Ende ja immer selbst an. Ob es über eigens definierte Topics ist oder manuell angelegte Objekte kommt ja auf das gleiche raus.

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

                                          @mickym sagte in MQTT Broker empfängt Daten, sendet aber nicht an Client:

                                          Du solltest lieber mal schauen, ob Du nicht zusätzlich Deinen ganzen tasmota topics unter /iobroker/cmnd nochmals angelegt hast. 😉

                                          Da ich bei solchen Sachen immer auf einem 3. Bildschirm den MQTT-Explorer mitlaufen habe: Nein, da passiert gar nichts, es wird nichts gesendet. Weshalb ich damals nach einer Lösung gesucht hatte, hier im Forum auch andere fand bei denen es nicht lief. Da ich mir es zur Gewohnheit gemacht habe auch mal die Anleitung eines Adapters zu lesen entdeckte ich dort die sendTo-Methode die dann auch auf anhieb funktionierte.
                                          Ich brauchte das vielfach zur Steuerung diverse Tasmota-Geräte und unter cmnd wird ja erst einmal nur das POWER angelegt. Und ich wollte die Datenpunkte im Skript anlegen, nicht mühsam von Hand.

                                          Ich bin jetzt noch kein so alter ioBroker-Hase, andererseits von den ioBroker + Adapterversionen doch schon ganz schön lange dabei. Keine Ahnung inwiefern sich das verhalten mit den Versionen geändert hat. Damals habe ich dann auch irgendwann beim Probieren wohl das iobroker im Adapter eingetragen.

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

                                            @bananajoe Wie gesagt ich lege die Punkte bei Bedarf manuell an - bzw. habe sich durch den Tasmota Device Manager anlegen lassen.

                                            a0e7f0b7-d237-489e-b34f-3de3adbc00bb-image.png

                                            backlog habe ich selbst angelegt - da der Name nicht stimmt - muss ich gleich mal ändern. 😉

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            929
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            31
                                            2336
                                            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