Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. MQTT wie per Blockly senden?

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    MQTT wie per Blockly senden?

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      tklein last edited by

      Hallo,

      wie kann ich mittels des MQTT's Adapter einen MQTT Befehl/String in Blockly senden?

      Zum Setup:

      • Ich nutze die Milight Hub (https://github.com/sidoh/esp8266_milight_hub?fbclid=IwAR0ZYWfnxlkwW9cVhOlSUMfUfhI59Z6RKi6_oqH90RWERnPLnvd4bUyDc6E)
      • MQTT Daten kommen per MQTT-Adapter in den DP an

      Nun möchte ich die in der Hub angelernten Devices gerne im iob per mqtt ansteuern. Da habe ich momenten keinen Plan, wo/wie ich die Daten schriben/schicken muss

      c838b527-0467-48a7-9bdf-ea114a09800b-grafik.png

      Um einkommende Signale zu verarbeiten nutze ich diese Logik/Variante:

      63fa007e-e811-470b-8f72-c9f737b51055-grafik.png

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

        @tklein Versuch halt mal in den Update Punkt zu schreiben - kann man ja direkt im Admin des iobrokers ausprobieren.

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

          @tklein wenn es den Datenpunkt schon gibt unterhalb des mqtt Adapters kannst du einfach ganz normal reinschreiben.

          Wenn es den Datenpunkt noch nicht gibt und er also erst angelegt werden müsste, dann musst du SendTo benutzen:
          c368c21e-fad3-4b5c-bcb7-b5225c2fa74b-image.png

          Hier der Export:

          <xml xmlns="https://developers.google.com/blockly/xml">
            <block type="sendto_custom" id="BWr5ehE:SME/#2Y:xw7n" x="138" y="163">
              <mutation xmlns="http://www.w3.org/1999/xhtml" items="topic,message" with_statement="false"></mutation>
              <field name="INSTANCE">mqtt.0</field>
              <field name="COMMAND">sendMessage2Client</field>
              <field name="LOG"></field>
              <field name="WITH_STATEMENT">FALSE</field>
              <value name="ARG0">
                <shadow type="text" id="shDRnRIW0=J[-cD/uTNJ">
                  <field name="TEXT">znil/Tests/TestnachrichtBlockly</field>
                </shadow>
              </value>
              <value name="ARG1">
                <shadow type="text" id="KvpMsF((eyp:O5@zp#uw">
                  <field name="TEXT">99</field>
                </shadow>
              </value>
            </block>
          </xml>
          

          Du kannst natürlich auch immer die SendTo Variante nehmen.

          Diese Lösung funktioniert in Verbindung mit diesem MQTT Adapter (alte/neue Oberfläche)
          ad486920-4c91-49ac-bb77-4bcb384d21bc-image.png dfe26f45-e798-459b-ac34-768637533f6c-image.png

          Gefunden habe ich dies als ich mir mal die Hilfe des MQTT-Adapters durchgelesen habe:
          https://github.com/ioBroker/ioBroker.mqtt/blob/master/README.md
          Im Abschnitt "Sending messages". Meine Leistung ist das richtige in den Blockly-Block eingetragen zu haben (da muss das sendMessage2Client zwingend rein)

          T 1 Reply Last reply Reply Quote 0
          • T
            tklein @mickym last edited by

            @mickym said in MQTT wie per Blockly senden?:

            @tklein Versuch halt mal in den Update Punkt zu schreiben - kann man ja direkt im Admin des iobrokers ausprobieren.

            das hat nicht geklappt. war auch mein erster Gedanke. Bin mir aber auch nciht ganz sicher, was im String stehen sollte

            1 Reply Last reply Reply Quote 0
            • T
              tklein @BananaJoe last edited by

              @bananajoe besten Dank ür den Export.

              Hier meine Logs mit dem Blockly

              55d4953e-aaf4-4e8b-a11b-968fa82522f2-grafik.png

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

                @tklein Bevor Du irgendwas mit Blockly rumprobierst, solltest Du erst mal wissen, wie Deine mqtt Struktur ausschaut.

                In dem von Dir zitierten Link - solltest Du wohl über das Http Interface mal ein Schema einrichten:

                fe621793-1e22-4b11-a8ba-70f57088a68d-image.png

                Wie gesagt schau erst mal, dass Du über den iobroker und den Datenpunkten direkt schalten kannst - vorher brauchst Dich doch um gar kein Blockly kümmern, wenn Du nicht weißt wohin Du was schreiben sollst.

                Also sowas wie hier empfohlen:

                milight/:device_id/:device_type/:group_id
                
                T 1 Reply Last reply Reply Quote 0
                • T
                  tklein @mickym last edited by

                  @mickym said in MQTT wie per Blockly senden?:

                  milight/:device_id/:device_type/:group_id

                  hatte ich auch schon drin:

                  3d597950-31dd-4594-bfb4-1b3a9fb1adbb-grafik.png

                  Woher weiss der Block, was er mit den Parametern topic und message machen muss? Oder sind das fest definierte Parameternamen?

                  7967f4ed-eb0b-4409-ab31-268f35ebacd9-grafik.png

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

                    @tklein Nochmal das Blockly spielt hier gar keine Rolle - vergiss das erst mal. Wenn Du in den iobroker objekten direkt schalten kannst, dann kannst Dich im Blockly kümmern.

                    Diese Parameter sollte das Gerät selbst ersetzen, wie unter mqtt - beschrieben ersetzen:

                    :device_id - Device ID. Can be hexadecimal (e.g. 0x1234) or decimal (e.g. 4660).
                    :device_type - Remote type. rgbw, fut089, etc.
                    :group_id - Group. 0-4 for most remotes. The "All" group is group 0.

                    Und in diesen Datenpunkt schreibt man dann diese Kommandos - so beschreibt es das Beispiel:

                    publish('milight/0x118D/rgb_cct/1', '{"status":"ON","color":{"r":255,"g":200,"b":255},"brightness":100}')
                    

                    Das heißt, wenn sich eine Struktur ergeben hat - dann halt so einen JSON als Befehl reinschreiben. Auch auf Groß- und Kleinschreibung achten.

                    Du kannst das ja nochmal so lassen wie am Anfang - da hattest Du unter topic

                    topic-milight drin!

                    Dann hättest Du den Kommando JSON in diesen Datenpunkt schreiben müssen.

                    d2cd078e-bdd3-4c93-a732-4c11f0c60f50-image.png

                    T 1 Reply Last reply Reply Quote 0
                    • T
                      tklein @mickym last edited by

                      @mickym

                      Nachdem es so nicht funktioniert hatte

                      da28ab57-f551-4a55-956d-65c899be0c87-grafik.png

                      habe ich das topic wieder auf milight/:device_id/:device_type/:group_id. Dann konnte ich mit dem Admin in der GUI den DP aktualisieren und per steuere block in blockly und es wurde geschaltet 🙂

                      30a603ab-4b80-4981-a33e-164d91166b3e-grafik.png

                      Muss jetzt noch rausfinden, wie das Topic im sendTo Block aussehen muss.

                      Vielen Dank für die Hilfe und das Schubsen/Drücken in die richtige Richtung 🙂

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

                        @tklein dort musst du mit / arbeiten und das mqtt.0. weglassen,
                        also

                        milight/device_id/device_type/group_id
                        

                        müsste es sein (die Doppelpunkte verwirren mich und gehören meiner Meinung nach nicht dahin)

                        Nachtrag: und in der Message versuch mal alle nicht notwenigen Leerzeichen zu eliminieren, insbesondere keine "neue Zeile" zeichen etc. nur die nackten Daten als ein langer Text. Leerzeichen wenn als Daten für ein Element in " "

                        T 1 Reply Last reply Reply Quote 0
                        • T
                          tklein @BananaJoe last edited by

                          @bananajoe said in MQTT wie per Blockly senden?:

                          milight/device_id/device_type/group_id

                          besten Dank.

                          Manchmal schaltet er dann, habe aber einen Adapterabsturz 😱

                          f5a2f035-8b22-46a4-88d1-e1f8acb6fa78-grafik.png

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

                            @tklein muss sich ein anderer ansehen.
                            Ich nutze den MQTT-Adapter nur als Client zu einem Mosquitto-Server.

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

                              @tklein Wenn der Datenpunkt existiert dann brauchst Du doch kein sendTo. Das macht man max. 1 mal um ggf. einen Datenpunkt anzulegen. Ansonsten schreibst Du mit steuere ganz normal in den Datenpunkt, so wie Du es im iobroker admin auch machst.

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

                                @mickym naja, eigentlich sollte es immer mit sendTo gehen, oder? Das ja in diesem Fall keine Funktion die nur dem Anlegen des Datenpunktes dient, oder?

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

                                  @bananajoe Keine Ahnung - was der Adapter damit macht - aber mit dem Blockly ist es auf jeden Fall einfacher die Datenpunkte zu beschreiben. Ich glaube bei sendTo versucht der Adapter was zu publishen oder was der Teufel, was der macht. Aber bestehende Datenpunkte egal in welchem Adapter, beschreibe ich nicht mit sendTo sondern immer mit steuere oder aktualisiere.

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

                                    @mickym sagte in MQTT wie per Blockly senden?:

                                    @bananajoe Ich glaube bei sendTo versucht der Adapter was zu publishen oder was der Teufel, was der macht.

                                    Genau das soll er ja 🙂

                                    01findus 1 Reply Last reply Reply Quote 0
                                    • 01findus
                                      01findus @BananaJoe last edited by 01findus

                                      @bananajoe

                                      Hallo ich hatte das Thema auch.

                                      Bei mir funktioniert das Schreiben eines Zustands in MQTT einfach mit dem steuere Befehl:

                                      4af06b3b-a269-4a90-8f75-75410a7ab783-image.png

                                      setState("mqtt.0.SmartHome.Muc.Schlafzimmer1.Deckenlicht_Duo.cmnd.POWER1"/SmartHome/Muc/Schlafzimmer1/Deckenlicht_Duo/cmnd/POWER1/, 'OFF');

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

                                        @01findus aber da gibt es dann den Datenpunkt schon bei dir 🙂
                                        Die POWER Datenpunkte gehören ja zu denen welche automatisch erzeugt werden da das Tasmota-Gerät diese automatisch published (und abonniert).
                                        Unterhalb von /cmnd/ kannst du ja aber auch jeden anderen Befehl nutzen den man auch in der Tasmota-Konsole nutzen kann.

                                        Mit SendTo wird der Datenpunkt, falls es diesen noch nicht gibt, auch noch angelegt.
                                        Ob man das braucht oder nicht hängt - meine ich - auch von der Art des verwendeten MQTT-Brokers ab.
                                        Ich nutze den MQTT-Adapter als Client zu einem Mosquitto-Broker. Da klappte es nicht wenn ich den Datenpunkt unterhalb von mqtt.0 anlegte, der funktioniert dann nicht. Aber mit sendTo funktionierte es. Darauf gekommen bin ich weil ich mir gerne mal die Anleitungen zu den Adapter durchlese und es dort aufgeführt wurde.

                                        Das mag wohl anders sein wenn man den MQTT-Adapter als Broker nutzt, ich vermute dann kann man die Datenpunkte einfach anlegen und nutzen.
                                        Mein Problem mag auch inzwischen überholt sein.

                                        1 Reply Last reply Reply Quote 0
                                        • B
                                          bimmi last edited by bimmi

                                          --- falscher Beitrag ---

                                          Homoran 1 Reply Last reply Reply Quote 0
                                          • Homoran
                                            Homoran Global Moderator Administrators @bimmi last edited by Homoran

                                            @bimmi sagte in MQTT wie per Blockly senden?:

                                            dass es mit dem clip width und height ein Problem gibt. Der Datenpunkt ist eine "number".

                                            und was kommt da wirklich an?
                                            mal mit debug nachgesehen?

                                            spätestens erstelle Text wandelt es

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            989
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            23
                                            6545
                                            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