Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Mqtt best practice

    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 best practice

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

      Hallo, @mickym,

      vielen Dank, dann werde ich das mal mit dem ersten versuchen.

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

        @opossum Vorher solltest Du die Shellies in Dein eigenes WLAN über nehmen. Die Shellies machen ein eigenes WLAN auf, dem tritts Du mit Deinem Handy bei. Du schaust unter dem Handy was Du eine IP Adresse bekommen hast (in der Regel ist das 192.168.33.2). Dann kannst Dich mit dem Handy Browser unter der IP Adresse 192.168.33.1 auf den Shelly verbinden und dann ebenfalls über Internet & Security

        266d527c-9b7d-4905-90cd-dd762566e890-image.png

        im WIFI Mode Client den Shelly in Dein eigenes WLAN aufnehmen. Erst dann funktioniert natürlich die Verbindung zu Deinem mosquitto im gleichen Netz.

        D 1 Reply Last reply Reply Quote 1
        • D
          dos1973 @mickym last edited by

          @mickym

          Soweit habe ich alles fertig…
          Eins ist mir aufgefallen.

          Ich habe doch eine ganz reihe „Schalter“ Dp angelegt für das Vis. Die haben true oder false und werden mit dem node-red auf die mqqt DP gesynct.
          On=true, off=false

          Ich wollte ein Blockly script verwenden um diese DP auf True (shellys ein) zu prüfen und den Wert (+1) dann in einer variable hochzählen. Das Ergebnis (Anzahl) dann in einen DP schreiben.

          Das in die Variable +1 hochzählen geht nicht.

          Das geht nicht, solange node-red aktiviert ist. Sobald ich node-red instanz beendet funktioniert das blockly ohne Fehler, aktiviere ich node-red klaptt es nicht.

          Ich hab das blockly jetzt in der genauen Art auf die mqqt DP gesetzt und prüfe jetzt den „on“ status und zähle entsprechend hoch.

          Da klappt es dann.

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

            @dos1973 Ich mache die Statusprüfung halt im NodeRed und im Prinzip kannst Du ja mit Wildcards arbeiten und Objekten, da muss man nichts zählen.

            Im Prinzip wirst Du halt bei Deiner Lösung irgendwas gegenseitig blockieren.
            Ich habe über NodeRed ja dann auch im mqtt DP gesetzt - ist ein bisschen Durcheinander - ist halt Historie. Jedoch von der Logik relativ einfach:

            Hier mal ein Beispiel wie meine Lichtüberwachung aussieht:

            e8f03896-857c-48f2-93c5-71a246f77979-image.png

            Im mqtt - ist es flexibler als nun iobroker mit der Admin5 Struktur zu erreichen versucht. Das heißt "Folder"/"Device" können auch states sein.

            Nun siehst Du unter Licht die Räume und in den Räumen die Anzahl an Lampen.
            Sprich ist im Büro die Schreibtischlampe an, springen die jeweils übergesetzten Ordner auf on.

            50b05be3-6796-488a-9ac4-db714fcc7752-image.png

            So kann ich Visualisieren:

            1. Die einzelne Lampe
            2. Das in einem Raum Licht ist
            3. Das in der Wohnung Licht ist.

            Triggern kannst Du dann mit Sternchen bei iobroker-IN Nodes und Filterung - oder mit mqtt kann man ja einfach mit dem + die nächste Ebene prüfen.

            e7f309ad-acaa-4e7d-bf57-9445f64d84a6-image.png

            Wie gesagt alles nur Ideen und Anregungen.

            Ich muss auch gerade im Moment einiges umstellen, weil mir mein Zigbee Stick (CC2531) abgeraucht ist und die haben so ziemlich genau 1 Jahr Haltbarkeit. 😉 - Zum Glück habe ich noch einen Conbee2 der auch mit dem Zigbee Adapter arbeitet - allerdings schmeißt das gerade immer Fehlermeldungen. Du siehst gibt immer was zu tun. 😉

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

              @dos1973 sagte in Mqtt best practice:

              @mickym

              Soweit habe ich alles fertig…
              Eins ist mir aufgefallen.

              Ich habe doch eine ganz reihe „Schalter“ Dp angelegt für das Vis. Die haben true oder false und werden mit dem node-red auf die mqqt DP gesynct.
              On=true, off=false

              Ich wollte ein Blockly script verwenden um diese DP auf True (shellys ein) zu prüfen und den Wert (+1) dann in einer variable hochzählen. Das Ergebnis (Anzahl) dann in einen DP schreiben.

              Das in die Variable +1 hochzählen geht nicht.

              Das geht nicht, solange node-red aktiviert ist. Sobald ich node-red instanz beendet funktioniert das blockly ohne Fehler, aktiviere ich node-red klaptt es nicht.

              Ich hab das blockly jetzt in der genauen Art auf die mqqt DP gesetzt und prüfe jetzt den „on“ status und zähle entsprechend hoch.

              Da klappt es dann.

              Ehrlich gesagt verstehe ich nicht, warum es nicht funktioniert hat. Es sei denn es ist irgendeine Dauerschleife drin gewesen. Normalerweise musst Du jederzeit mit jedem Tool auf einen DP zugreifen können.

              D 1 Reply Last reply Reply Quote 0
              • D
                dos1973 @mickym last edited by

                @mickym

                Ist die dauerschleife nicht dadurch gegeben, dass node-red permanent auf den true-false status horcht? Er muss es ja in on-off übersetzen?

                Ich finde node red extrem unübersichtlich… auch gibt es da in gegensatz zu blockly kaum beispiele wie so ein payload erstellt wird, also inhalte etc. Nur vom flow Bild abzuleiten ist glaube ich (für mich) nicht machbar.

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

                  @dos1973 Nein - da ja nur Aktualisierungen bzw. Änderungen triggern. Du kannst ja einfach ein Debug Node hinter die Eingangsnode machen und siehst ob was rauskommt.

                  Die payload enthält immer die Nutzdaten - es ist aber einfach ein Nachrichtenobjekt - ein Javascript Objekt, das von einer Node zur nächsten geschickt wird und im Prinzip kannst Du selbst bestimmen, welche Eigenschaften so ein Objekt hat.

                  Dadurch sollte also keine Dauerschleife zustande kommen - aber wie gesagt leicht überprüfbar. Der Trigger der iobroker-IN Nodes ist der gleiche wie bei den Blocklies.

                  D 1 Reply Last reply Reply Quote 0
                  • D
                    dos1973 @mickym last edited by dos1973

                    @mickym

                    hi nochmals eine Frage.
                    ich spiele derzeit etwas mit einer shelly Vintage un dem Mqtt herum.
                    die Lampe über den command mit on/ off geht, jetzt wollte ich aber mal etwas mehr aber ich bekomme es nicht hin.

                    ich hab das bsp direkt von der Shelly website genommen.

                    Bildschirmfoto 2021-09-27 um 00.04.15.png

                    versuche das derzeit noch über den mqqt explorer---

                    Bildschirmfoto 2021-09-27 um 00.02.08.png

                    mach ich etwas falsch?

                    D 1 Reply Last reply Reply Quote 0
                    • D
                      dos1973 @dos1973 last edited by

                      irgendetwas ist hier "buggy", wenn ich den Befehl absetze, ist der shelly für 30sekunden offline...

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

                        @dos1973 das JSON Objekt musst Du in ein neu zu erstellenden set DP schreiben, nicht in command. Ausserdem darfst Du bei mqtt nicht ein JSON Objekt beschreiben, sondern einen String. Sprich Du musst das JSON Objekt in einen String umwandeln.

                        In Javascript nutzt DU dazu stringify

                        Ob die Konvertierung im Blockly nach String funktioniert weiss ich nicht.

                        In Node-Red setze ich zum Beispiel direkt den Dimmwert in dem JSON Objekt und wandel es dann in einen String um.

                        Sprich Du darfst in Deinem mqtt Client kein JSON Objekt sondern einen String übergeben

                        b98e7d25-380f-4767-8b4f-792d11a175da-image.png

                        Ob Dein mqtt Explorer die Konvertierung selbst durchführt, weiß ich nicht, gehe aber eigentlich davon aus.

                        Die Struktur sieht eigentlich identisch zum Dimmer aus:

                        3ba1a511-b1a3-43a1-8b86-80d08ea6607b-image.png

                        Wenn alles geklappt hat - wird der status DP zum Beispiel mit dem aktuellen Dimmwert aktualisiert:

                        c2529a1c-8a2d-4e95-baf2-ca8aac745194-image.png

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

                          @dos1973 sagte in Mqtt best practice:

                          irgendetwas ist hier "buggy", wenn ich den Befehl absetze, ist der shelly für 30sekunden offline...

                          Dann bootet der Shelly neu

                          D 1 Reply Last reply Reply Quote 0
                          • D
                            dos1973 @mickym last edited by dos1973

                            @mickym
                            ich versuche eben dein Bsp von vorher nachzubauen...

                            Bildschirmfoto 2021-09-27 um 19.03.33.png

                            Bildschirmfoto 2021-09-27 um 19.01.33.png

                            aber ich bekomme bei dem payload ein Fehler
                            Bildschirmfoto 2021-09-27 um 19.02.17.png

                            kannst du nochmals nachhelfen 😉

                            edit: auf String umgestellt, ist der Fehler weg...

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

                              @dos1973 Du musst kannst das schon als Objekt machen - die JSON Node wandelt Objekte in String um und umgekehrt, wenn man es nicht explizit angibt.

                              4d4e3dc1-ad4c-40ab-976c-e6c2f2e47afe-image.png

                              Da der Dimmer identisch zu dem VIntage funktioniert - habe ich es bei mir ausprobiert und gibt überhaupt kein Problem

                              d744ac18-d56c-461e-b73a-af186e767a58-image.png

                              Hier der Flow zum Import - die mqtt out Node musst halt noch setzen:

                              [
                                 {
                                     "id": "e7ba93bc.d0a76",
                                     "type": "change",
                                     "z": "169f5b00.a13415",
                                     "name": "",
                                     "rules": [
                                         {
                                             "t": "set",
                                             "p": "payload",
                                             "pt": "msg",
                                             "to": "{\"brightness\":100,\"turn\":\"on\",\"transition\":500}",
                                             "tot": "json"
                                         }
                                     ],
                                     "action": "",
                                     "property": "",
                                     "from": "",
                                     "to": "",
                                     "reg": false,
                                     "x": 590,
                                     "y": 880,
                                     "wires": [
                                         [
                                             "8d56af93.953c4"
                                         ]
                                     ]
                                 },
                                 {
                                     "id": "bc65361e.f542b8",
                                     "type": "inject",
                                     "z": "169f5b00.a13415",
                                     "name": "",
                                     "props": [
                                         {
                                             "p": "topic",
                                             "v": "true",
                                             "vt": "bool"
                                         }
                                     ],
                                     "repeat": "",
                                     "crontab": "",
                                     "once": false,
                                     "onceDelay": 0.1,
                                     "topic": "",
                                     "x": 410,
                                     "y": 880,
                                     "wires": [
                                         [
                                             "e7ba93bc.d0a76"
                                         ]
                                     ]
                                 },
                                 {
                                     "id": "8d56af93.953c4",
                                     "type": "json",
                                     "z": "169f5b00.a13415",
                                     "name": "",
                                     "property": "payload",
                                     "action": "",
                                     "pretty": false,
                                     "x": 790,
                                     "y": 880,
                                     "wires": [
                                         [
                                             "1ad1e9c5.dbaa86",
                                             "9696c9c7.db3af8"
                                         ]
                                     ]
                                 },
                                 {
                                     "id": "1ad1e9c5.dbaa86",
                                     "type": "debug",
                                     "z": "169f5b00.a13415",
                                     "name": "",
                                     "active": true,
                                     "tosidebar": true,
                                     "console": false,
                                     "tostatus": false,
                                     "complete": "false",
                                     "statusVal": "",
                                     "statusType": "auto",
                                     "x": 970,
                                     "y": 880,
                                     "wires": []
                                 }
                              ]
                              

                              Bei der Change Node musst halt wieder darauf achten, dass Du ein JSON Objekt verwendest:

                              28531f50-c983-4174-bfe5-6d11020a8102-image.png

                              Im status - wird nur die transitiontime nicht korrekt wieder gegeben.

                              D 1 Reply Last reply Reply Quote 0
                              • D
                                dos1973 @mickym last edited by

                                @mickym
                                das führt dazu dass der shelly rebootet.

                                Bildschirmfoto 2021-09-27 um 19.25.45.png

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

                                  @dos1973 Dann hat der Shelly hier ggf. einen Fehler - schau mal Parameter für Parameter. Vielleicht lässt mal die transition time weg.

                                  Im Prinzip funktioniert es auch, wenn Du das Objekt im set Punkt direkt beschreibst.

                                  Das tut bei mir:

                                  f457d07e-43d1-46b7-9393-238ee9874007-image.png

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

                                    @dos1973 Mach Dir keinen Kopf - die vintage Dinger haben wohl mit dem Dimmen generell ein Problem:

                                    Liegt also nicht an Dir oder an den Tools:

                                    https://www.shelly-support.eu/forum/index.php?thread/11261-shelly-vintage-mqtt-set-brightness-is-not-working/

                                    D 1 Reply Last reply Reply Quote 1
                                    • D
                                      dos1973 @mickym last edited by

                                      @mickym

                                      ok, nur on off im payload funktioniert. Der Link bestätigt den Fehler.
                                      habe eben noch das aktuellste update geladen.

                                      Gibt es denn noch eine alternative Möglichkeit, den Dimmlevel zu steuern?

                                      ich habe noch einen Spot im Schrank... werde damit mal testen

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

                                        @dos1973 Ich würde zwar auf das FW Update warten, aber Du kannst natürlich auch das HTTP Protokoll verwenden.

                                        06e9d5d2-9602-4403-8785-cc4c2a56ff2a-image.png

                                        Dieser Flow funktioniert bei mir auch:

                                        [
                                            {
                                                "id": "9e845204.a7a12",
                                                "type": "change",
                                                "z": "169f5b00.a13415",
                                                "name": "",
                                                "rules": [
                                                    {
                                                        "t": "set",
                                                        "p": "payload",
                                                        "pt": "msg",
                                                        "to": "{\"brightness\":100,\"turn\":\"on\"}",
                                                        "tot": "json"
                                                    }
                                                ],
                                                "action": "",
                                                "property": "",
                                                "from": "",
                                                "to": "",
                                                "reg": false,
                                                "x": 590,
                                                "y": 1020,
                                                "wires": [
                                                    [
                                                        "730a2f24.f40f1"
                                                    ]
                                                ]
                                            },
                                            {
                                                "id": "c518e7ea.47b508",
                                                "type": "inject",
                                                "z": "169f5b00.a13415",
                                                "name": "",
                                                "props": [
                                                    {
                                                        "p": "topic",
                                                        "v": "true",
                                                        "vt": "bool"
                                                    }
                                                ],
                                                "repeat": "",
                                                "crontab": "",
                                                "once": false,
                                                "onceDelay": 0.1,
                                                "topic": "",
                                                "x": 410,
                                                "y": 1020,
                                                "wires": [
                                                    [
                                                        "9e845204.a7a12"
                                                    ]
                                                ]
                                            },
                                            {
                                                "id": "24213500.57389c",
                                                "type": "debug",
                                                "z": "169f5b00.a13415",
                                                "name": "",
                                                "active": true,
                                                "tosidebar": true,
                                                "console": false,
                                                "tostatus": false,
                                                "complete": "true",
                                                "targetType": "full",
                                                "statusVal": "",
                                                "statusType": "auto",
                                                "x": 990,
                                                "y": 1020,
                                                "wires": []
                                            },
                                            {
                                                "id": "730a2f24.f40f1",
                                                "type": "http request",
                                                "z": "169f5b00.a13415",
                                                "name": "",
                                                "method": "GET",
                                                "ret": "txt",
                                                "paytoqs": "query",
                                                "url": "http://192.168.xxx.xxx/light/0/parameters",
                                                "tls": "",
                                                "persist": false,
                                                "proxy": "",
                                                "authType": "",
                                                "x": 790,
                                                "y": 1020,
                                                "wires": [
                                                    [
                                                        "24213500.57389c"
                                                    ]
                                                ]
                                            }
                                        ]
                                        

                                        Musst halt Deine IP Adresse verwenden und wenn Deine Shellies mit Kennwort gesichert sind, das halt in die Basisauthentifizierung angeben.

                                        Wenn alles OK ist, dann solltest Du über die HTTP Schnittstelle ein Returncode=200 zurück bekommen.

                                        dc969aa8-b6cd-4b82-99af-2655a357dbd5-image.png

                                        D 1 Reply Last reply Reply Quote 0
                                        • D
                                          dos1973 @mickym last edited by dos1973

                                          @mickym
                                          das klappt 1 A. Also das gefällt mir richtig gut.

                                          ich schau mal dass ich den Spot rauskrame...

                                          Danke Dir - fühl dich gedrückt 😉

                                          D 1 Reply Last reply Reply Quote 0
                                          • D
                                            dos1973 @dos1973 last edited by

                                            @dos1973
                                            noch was, das "inject" würde ich durch eine Vis DP button ersetzen und könnte dann schalten, könnte die flows dann um weitere "flows" ergänzen um eine Gruppe von Leuchten zu steuern?

                                            mickym 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

                                            935
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            mosquitto mqtt shellys
                                            6
                                            136
                                            9942
                                            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