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.
    • 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
                • G
                  GiMichael @mickym last edited by

                  @mickym

                  darf ich Euch nochmal bemühen. Die Übertragung funktioniert, aber immer nur sporadisch. Es kommt nur sehr selten ein neuer Wert an, obwohl in den Objekten der Wert schon längst geändert ist. Weiß jemand woran das liegt?

                  Lt. Log steht beides drin. hier ein Auszug. Es soll die aussentemp mit 31.8 übertragen werden. Leider stehen immer noch 34.4 von heute Vormittag drin. Beide Werte sehe ich hier im Log. Wird das vom IO-Broker Adapter falsch übertragen, oder sind die 34.4 die Rückmeldung vom Client an den Broker hier im IO Broker? Und der Client übernimmt einfach die 31.8 nicht.

                  2022-08-25 20:08:01.440 - info: mqtt.0 (23196) Client [] connected with secret 1661450881439_4253
                  2022-08-25 20:08:01.441 - debug: mqtt.0 (23196) Client [] with keepalive 60 set timeout to 90 seconds
                  2022-08-25 20:08:01.455 - debug: mqtt.0 (23196) 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-25 20:08:01.455 - debug: mqtt.0 (23196) Client [] Handle subscribe: {"topic":"solaranzeige/anzeige/1/#","qos":0}
                  2022-08-25 20:08:01.456 - info: mqtt.0 (23196) Client [] subscribes on "solaranzeige/anzeige/1/#" with regex /^solaranzeige.anzeige.1(..)?/
                  2022-08-25 20:08:01.456 - info: mqtt.0 (23196) Client [] subscribes on "solaranzeige/anzeige/1/#" with regex /^mqtt.0.solaranzeige.anzeige.1(..
                  )?/
                  2022-08-25 20:08:01.457 - debug: mqtt.0 (23196) 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-25 20:08:01.457 - debug: mqtt.0 (23196) Client [] Handle subscribe: {"topic":"solaranzeige/befehl/1/#","qos":0}
                  2022-08-25 20:08:01.457 - info: mqtt.0 (23196) Client [] subscribes on "solaranzeige/befehl/1/#" with regex /^solaranzeige.befehl.1(..)?/
                  2022-08-25 20:08:01.458 - info: mqtt.0 (23196) Client [] subscribes on "solaranzeige/befehl/1/#" with regex /^mqtt.0.solaranzeige.befehl.1(..
                  )?/
                  2022-08-25 20:08:03.441 - debug: mqtt.0 (23196) Client [] send to this client "solaranzeige/anzeige/1/aussentemp": 34.4
                  2022-08-25 20:08:04.181 - debug: mqtt.0 (23196) 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-25 20:08:04.181 - debug: mqtt.0 (23196) Server received "solaranzeige/1/i_heizung_warmwasser" (number): 0
                  2022-08-25 20:08:21.852 - error: modbus.0 (1180) Socket Error
                  2022-08-25 20:08:21.853 - error: modbus.0 (1180) Client in error state.
                  2022-08-25 20:08:21.853 - warn: modbus.0 (1180) On error: {"errno":"ETIMEDOUT","code":"ETIMEDOUT","syscall":"connect","address":"192.168.0.102","port":502}
                  2022-08-25 20:08:30.049 - silly: mqtt.0 (23196) States user redis pmessage mqtt.0.solaranzeige.anzeige.1./mqtt.0.solaranzeige.anzeige.1.aussentemp:{"val":31.3,ack":true,"ts":1661450910023,"q":0,"c":"script.js.Heizungssteuerung","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1661450430030}
                  2022-08-25 20:08:30.051 - debug: mqtt.0 (23196) stateChange mqtt.0.solaranzeige.anzeige.1.aussentemp: {"val":31.3,"ack":true,"ts":1661450910023,"q":0,"c":"script.js.Heizungssteuerung","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1661450430030}
                  mqtt.0.solaranzeige.anzeige.1.
                  /mqtt.0.solaranzeige.anzeige.1.aussentemp:{"val":31.3,"ack":true,"ts":1661450940066,"q":0,"c":"script.js.Heizungssteuerung","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1661450430030}
                  2022-08-25 20:09:00.078 - debug: mqtt.0 (23196) stateChange mqtt.0.solaranzeige.anzeige.1.aussentemp: {"val":31.3,"ack":true,"ts":1661450940066,"q":0,"c":"script.js.Heizungssteuerung","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1661450430030}
                  2022-08-25 20:09:00.255 - info: mqtt.0 (23196) Client [] connection closed: disconnected

                  mickym Marc Berg 2 Replies Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @GiMichael last edited by mickym

                    @gimichael Wäre super - wenn Du solche Log Auszüge in CodeTags packst - nur mal generell.

                    Code-Tags.gif

                    So ich habs aber nun auch geschafft - vom mqtt-Client auf den Broker der das dann wieder published auch wenn ACK=true ist und zurück.

                    Das sind die Broker Einstellungen:

                    6d384c41-253f-437b-9329-19368a9b8af1-image.png

                    Das sind die Client Einstellungen:

                    ac08b6bc-8147-45d1-a69a-a39b05319f78-image.png

                    So hier mal - wie sich das gegenseitig aktualisiert. Wichtig ist, dass man bei Zuständen wirklich nur Änderungen publizieren darf, sonst ist die Endlosschleife vorprogrammiert.

                    Hier mal der Videobeweis:

                    mqtt.0 = Brokerinstanz
                    mqtt.1 = Clientinstanz

                    mqtt client-server.mp4

                    Funktioniert auch mit bestätigten Werten ACK = true.

                    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:

                      @mickym

                      darf ich Euch nochmal bemühen. Die Übertragung funktioniert, aber immer nur sporadisch. Es kommt nur sehr selten ein neuer Wert an, obwohl in den Objekten der Wert schon längst geändert ist. Weiß jemand woran das liegt?

                      Völlig ins blaue geschossen, würde ich sagen, dass der Client nicht (mehr) verbunden ist. Das schaut in den Logs so aus. Insofern solltest Du Dir das hier nochmals ansehen:

                      b473fe55-6621-458a-8e99-62481bf45669-grafik.png

                      Bin mir ziemlich sicher, dass hier der Client verbunden sein muss (alles grün), sonst kommen die "published" Nachrichten nicht an.

                      Ich an Deiner Stelle würde mit einem anderen MQTT-Client (siehe zweiter Post) gegentesten.

                      mickym G 2 Replies Last reply Reply Quote 0
                      • mickym
                        mickym Most Active @Marc Berg last edited by

                        @marc-berg Ja das ist natürlich Voraussetzung - ich habe bei den mqtt Adapter untereinander festgestellt, dass die Verbindung auch nur zuverlässig klappt, wenn der Client eine eigene Client-ID benutzt. Standardmässig werden immer nur die Adapterinstanznamen genutzt - und die können auf unterschiedlichen Maschinen ja gleich sein.

                        Marc Berg G 2 Replies Last reply Reply Quote 0
                        • Marc Berg
                          Marc Berg Most Active @mickym last edited by

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

                          @marc-berg Ja das ist natürlich Voraussetzung - ich habe bei den mqtt Adapter untereinander festgestellt, dass die Verbindung auch nur zuverlässig klappt, wenn der Client eine eigene Client-ID benutzt. Standardmässig werden immer nur die Adapterinstanznamen genutzt - und die können auf unterschiedlichen Maschinen ja gleich sein.

                          Habe etwas falsch zitiert, die Nachricht sollte natürlich an @GiMichael gehen. 🙂

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

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

                            Habe etwas falsch zitiert, die Nachricht sollte natürlich an @GiMichael gehen.

                            Entschuldigung. 😧

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

                              @marc-berg
                              Danke, scheint jetzt mit dem Senden von Zuständen auch zu laufen. Jede Änderung wird verwendet und vom Client auch empfangen. Ich teste aber weiter, ob es so funktioniert.

                              Die Verbindung wird immer auf- und abgebaut. Scheint normal zu sein. Deshalb laufend X bei Verbindung.

                              das mit dem Code merke ich mir :-)
                              
                              1 Reply Last reply Reply Quote 0
                              • G
                                GiMichael @mickym last edited by

                                @mickym Ebenfalls Danke

                                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

                                884
                                Online

                                31.9k
                                Users

                                80.2k
                                Topics

                                1.3m
                                Posts

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