Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Shellys ("Alt und Plus") über MQTT Adapter

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Shellys ("Alt und Plus") über MQTT Adapter

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

      @hotspot_2 Ja Du kannst die topics einzeln auslesen, Du kannst Deine Datenpunkte verwenden, du kannst wenn Du Deine Struktur einheitlich aufgebaut hast auch mit Wildcards arbeiten, dann brauchst Du nicht für jede Eingabe eine eigene Node verwenden. Du kannst diese Zustände triggern lassen oder auch die Gesamtzustände in einem eigenen Datenpunkt oder in mqtt abspeichern.

      Du hast zu jeder Nachricht ein topic, dass Du entweder extrahieren kannst oder modifizierst damit die Quelle leichter lesbar ist.
      Du kannst eine payload wieder ganz einfach über eine Change Node modifizieren, indem Du JSONATA benutzt und Strings miteinander verkettest: https://docs.jsonata.org/other-operators
      Also "string vorher " & payload & " string nachher". Du kannst aber auch die payload in einen Menge Text oder HTML Code über eine template Node formatieren, damit Du schöne Nachrichten bekommst. Keine Ahnung ob das von pushover unterstützt wird.

      Du kannst wie gesagt abwarten bis Du alle Zustände hast - mache ich meist bei zeitunkritischen Sachen - du kannst aber auch Objekte bilden und diese in Datenpunkte wegspeichern, um diese dann beim Neustart von NodeRed zur Verfügung zu haben.

      Ich habe mir für Alarm zustände eigene Strukturen gebastelt (battery, online, Fenster auf, etc.) :
      6bea1086-5724-4f04-a4e7-419978da338b-image.png

      und arbeite nur mit true und false:
      23dc7df6-39fc-406f-a72a-b8296e839603-image.png

      Also bist ja gar nicht so schlecht mit Deinem Anfang - aber du solltest bei allem Detail - immer Deine übergeordneten Ziele im Auge behalten.

      Ich denke, dass damit Deine Fragen beantwortet sein sollten, damit Du mit Deinem Flow weiter kommst.

      H 1 Reply Last reply Reply Quote 0
      • H
        hotspot_2 @mickym last edited by

        @mickym Super, das hilft erstmal.

        Wenn ich das hier mache:

        7dbd7a3d-7ace-4245-8c11-fdc45cfef58d-image.png

        Dann kommt am Ende nur "Wasseralarm." raus obwohl der msg.payload vorher "Waschküche" war. Stimmt der Bezeichner nicht?

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

          @hotspot_2 Dann war die payload leer oder undefined. 😉

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

            Zurück zur allgemeinen Betrachtung:

            ced7115c-6ad8-4638-b54b-695d0f305fe0-image.png

            Wenn im Status beispielsweise auch die Batteriewerte enthalten sind und der Aufbau gleich ist, kann man im mqtt sowas auch mit einer Node vereinfachen - indem man für bestimmte Hierarchielevel Wildcards benutzt und somit kannst Du einzelne Nodes sparen.

            In dem abgebildeten Beispiel ist die Struktur wunderbar gleich und unterscheidet sich im vorletzten level also bwm_wk und bwm_flur_keller.

            Sowas kannst Du auch durch abonnieren des topics mit einer Node erreichen in dem Du als topic folgendes angibst:

            shellies/sonstiges/+/status
            
            1 Reply Last reply Reply Quote 0
            • H
              hotspot_2 @mickym last edited by

              @mickym Ja, stimmt. Ich muss die Payload vorher auch in Anführungszeichen setzen. Dann klappt es perfekt.

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

                @hotspot_2 Nein die payload selbst nicht - das ist eine Variable die darf nicht in Anführungszeichen. Probiere halt mit Inject NOdes aus.

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

                  @hotspot_2 Und wie gesagt für komplexere Ausgaben - zum Beispiel Nachrichten kannst du auch template Nodes verwenden.

                  1 Reply Last reply Reply Quote 0
                  • H
                    hotspot_2 @mickym last edited by

                    @mickym Ich meinte dort wo ich "Waschküche" eingetragen habe als msg.payload muss "Waschküche" auch in Anführungszeichen in die Payload eingetragen werden (msg.payload) dann klappt das zusammensetzen einwandfrei.

                    d2466aa6-2bbf-4ce9-b129-400d7662f853-image.png

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

                      @hotspot_2 Na alle konstanten Strings die hinzufügen willst und keine Nachrichteneigenschaften sind müssen natürlich in Anführungszeichen. Die Nachrichteneigenschaft payload selbst im alten Nachrichtenobjekt darf aber nicht in Anführungszeichen, sonst wird ja der String "payload" ausgegeben.

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

                        @mickym sagte in Shellys ("Alt und Plus") über MQTT Adapter:

                        "string vorher " & payload & " string nachher"

                        Hier mal wieder ein paar Beispiele - für Nachrichtenausgaben:

                        85e9a8e3-94b8-4325-9e26-815056af83ba-image.png

                        [
                           {
                               "id": "2ab328e988fe8962",
                               "type": "change",
                               "z": "2e7d4cac81c671e3",
                               "name": "",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "payload",
                                       "pt": "msg",
                                       "to": "\"Der Batteriezustand von \" & topic  & \" ist: \" & payload",
                                       "tot": "jsonata"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 630,
                               "y": 2560,
                               "wires": [
                                   [
                                       "fdbbb7e82c59f1fd"
                                   ]
                               ]
                           },
                           {
                               "id": "fdbbb7e82c59f1fd",
                               "type": "debug",
                               "z": "2e7d4cac81c671e3",
                               "name": "Change Node einbinden",
                               "active": true,
                               "tosidebar": true,
                               "console": false,
                               "tostatus": false,
                               "complete": "payload",
                               "targetType": "msg",
                               "statusVal": "",
                               "statusType": "auto",
                               "x": 910,
                               "y": 2560,
                               "wires": []
                           },
                           {
                               "id": "1868aa0b492fe736",
                               "type": "inject",
                               "z": "2e7d4cac81c671e3",
                               "name": "",
                               "props": [
                                   {
                                       "p": "payload"
                                   },
                                   {
                                       "p": "topic",
                                       "vt": "str"
                                   }
                               ],
                               "repeat": "",
                               "crontab": "",
                               "once": false,
                               "onceDelay": 0.1,
                               "topic": "Wassermelder",
                               "payload": "kritisch",
                               "payloadType": "str",
                               "x": 320,
                               "y": 2560,
                               "wires": [
                                   [
                                       "2ab328e988fe8962",
                                       "3d8d3b38fe20eb70"
                                   ]
                               ]
                           },
                           {
                               "id": "3d8d3b38fe20eb70",
                               "type": "template",
                               "z": "2e7d4cac81c671e3",
                               "name": "",
                               "field": "payload",
                               "fieldType": "msg",
                               "format": "handlebars",
                               "syntax": "mustache",
                               "template": "<h1> Allgemeine Alarmzustände </h1>\n<p> Hier erstellen wir eine Tabelle in HTML: </p>\n\n<table> \n    <tr>\n      <th>Gerät</th>\n      <th>Batterie</th>\n    </tr>\n    <tr>\n      <td>{{topic}}</td>\n      <td>{{payload}}</td>\n    </tr>\n</table>",
                               "output": "str",
                               "x": 660,
                               "y": 2640,
                               "wires": [
                                   [
                                       "092b9c15f428310e"
                                   ]
                               ]
                           },
                           {
                               "id": "092b9c15f428310e",
                               "type": "debug",
                               "z": "2e7d4cac81c671e3",
                               "name": "Komplexerer Text",
                               "active": true,
                               "tosidebar": true,
                               "console": false,
                               "tostatus": false,
                               "complete": "payload",
                               "targetType": "msg",
                               "statusVal": "",
                               "statusType": "auto",
                               "x": 890,
                               "y": 2640,
                               "wires": []
                           }
                        ]
                        

                        Für komplexere Beispiele was die Template Node alles kann, schau hier: https://stevesnoderedguide.com/node-red-template-node

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

                          @mickym sagte in Shellys ("Alt und Plus") über MQTT Adapter:

                          @hotspot_2 OK - dann ist das der richtig - in der Output eigenschaft steht der Status - dann also bitte die mqtt-In Node auf dieses Status topic und dann eine debug-Node dahinter machen.

                          HI Mickym,
                          ich bekomme es leider nicht hin, ich stehe irgendwie auf dem Schlauch 😞
                          habe den Post jetzt x-xmal gelesen...

                          Bildschirmfoto 2023-04-07 um 15.47.57.png

                          ich mache das, aber er debuggt nicht, kann schalten wie ich will.

                          ich habe einen Shelly 2pm Plus, welcher im switch 0 und 1 via "output":false/ true gesteuert wurd
                          Bildschirmfoto 2023-04-07 um 15.49.05.png

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

                            @dos1973 Also als allererstes wenn Du mit mqtt Nodes arbeitest musst Du auch mqtt Schreibweise verwenden - da Du die nicht aus dem iobroker ausliest sonder via mqtt. Die topics stehen in dem mqtt Adapter unter Name. Du musst als den Namen aus dem mqtt-Adapter kopieren und nicht den Pfad zum Objekt.

                            Um also den Status von deinem switch:0 und switch:1 auszulesen musst Du die topics in der mqtt-IN Node auf

                            shellies/Licht/Badezimmer/status/switch:0
                            

                            bzw.

                            shellies/Licht/Badezimmer/status/switch:1
                            

                            setzen.

                            Sie Hierarchien der topics in der mqtt Schreibweise werden durch einen Schrägstrich und nicht durch einen Punkt getrennt. (mqtt kennt auch keine iobroker-Adapter und folglich auch keine Adapterinstanzen. 😉 )
                            Wenn das funktioniert melde Dich mal mit einem Screen-shot der debug1 Ausgabe.

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

                              @mickym
                              oh mann ... ja jetzt debuggt das

                              Mensch das hätte ich merken müssen

                              Bildschirmfoto 2023-04-07 um 16.06.00.png

                              output:false /true ist die Steuerung

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

                                @dos1973 Genau - Du musst also nur nach dem output selektieren bei Dir aber gleichzeitig noch nach der id - damit Du weisst welcher Schalter. Ich würde also das topic auf die ID setzen und die payload auf den output. Wenn Du das gerne also Flow hast. dann kopiere mal bitte den ganzen Wert in code-tags hier rein in dem Du in der ersten Zeile den Wert des objects kopierst.

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

                                  @mickym
                                  ich bekomme gerade nix verstanden 🙂

                                  ich verstehe momentan noch nicht was mein Ziel ist. mit den Gen1 Adaptern habe ich ja einen IOBroker DP den ich mit True / false schalte

                                  muss ich den Output wert als auch DP erzeugen?

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

                                    @dos1973 Nun Du schaltest über den rpc Datenpunkt - den brauchst Du wenn Du NodeRed mqtt-Out Nodes machst nicht erstellen, weil Du dann direkt das topic publishst - anschliessend siehst Du ihn auch im mqtt Adapter.

                                    Zum Schalten geht alles in einen rpc topic von dem ganzen Shelly:

                                    c52fa202-0988-4cf4-ad09-a7a0e984a965-image.png

                                    Ich habs schon mal in das msg.topic reingemacht - also selbst wenn du die mqtt-In Node nicht konfigurierst müsste es gehen:

                                    Also das topic habe ich gelb/orange markiert:

                                    7af426eb-5d00-4ad4-bafa-9750424e0f14-image.png

                                    Ich habe mal um es flexibel für Dich zu machen - eine Nachrichteneigenschaft "switch" definiert!

                                    15dc36d9-5cf8-4485-aa44-2ca22512d5dc-image.png

                                    Mit 0 oder 1 definierst Du welchen Schalter du schalten willst.

                                    Grün siehst du als die payload und den switch im Objekt dass Du an den rpc Datenpunkt schickst

                                    Letzlich noch lila markiert die beiden Parameter, die Du frei vergeben kannst.

                                    Die ID - ist eine Nummer von Dir - die userid der Name - damit identifiziert werden kann, wer das Kommando geschickt hat. Ich habe hier mal deinen Nickname verwendet, könnte aber auch Dein Flow Name sein, damit Du siehst woher das Kommando stammt.

                                    Unter command oder response - keine Ahnung wie das heißt wirst du dann unter diesem Namen den Response finden - auf Dein Kommando.

                                    Hier der Flow ohne mqtt Node:

                                    [
                                       {
                                           "id": "f5a80b40528a75e8",
                                           "type": "change",
                                           "z": "2e7d4cac81c671e3",
                                           "name": "",
                                           "rules": [
                                               {
                                                   "t": "set",
                                                   "p": "payload",
                                                   "pt": "msg",
                                                   "to": "{\t   \"id\":123,\t   \"src\":\"dos1973\",\t   \"method\":\"Switch.Set\",\t   \"params\":{\"id\":switch,\"on\":payload}\t}\t",
                                                   "tot": "jsonata"
                                               }
                                           ],
                                           "action": "",
                                           "property": "",
                                           "from": "",
                                           "to": "",
                                           "reg": false,
                                           "x": 330,
                                           "y": 2560,
                                           "wires": [
                                               [
                                                   "9ec24ed42e790442",
                                                   "9490029127cb8eb3"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "9490029127cb8eb3",
                                           "type": "debug",
                                           "z": "2e7d4cac81c671e3",
                                           "name": "shelly2 pm plus schalten",
                                           "active": true,
                                           "tosidebar": true,
                                           "console": false,
                                           "tostatus": false,
                                           "complete": "payload",
                                           "targetType": "msg",
                                           "statusVal": "",
                                           "statusType": "auto",
                                           "x": 570,
                                           "y": 2560,
                                           "wires": []
                                       },
                                       {
                                           "id": "2eba21bbc3e88516",
                                           "type": "inject",
                                           "z": "2e7d4cac81c671e3",
                                           "name": "",
                                           "props": [
                                               {
                                                   "p": "payload"
                                               },
                                               {
                                                   "p": "switch",
                                                   "v": "0",
                                                   "vt": "num"
                                               },
                                               {
                                                   "p": "topic",
                                                   "vt": "str"
                                               }
                                           ],
                                           "repeat": "",
                                           "crontab": "",
                                           "once": false,
                                           "onceDelay": 0.1,
                                           "topic": "shellies/Licht/Badezimmer/rpc",
                                           "payload": "true",
                                           "payloadType": "bool",
                                           "x": 130,
                                           "y": 2540,
                                           "wires": [
                                               [
                                                   "f5a80b40528a75e8"
                                               ]
                                           ]
                                       },
                                       {
                                           "id": "cc1bcd656187fadb",
                                           "type": "inject",
                                           "z": "2e7d4cac81c671e3",
                                           "name": "",
                                           "props": [
                                               {
                                                   "p": "payload"
                                               },
                                               {
                                                   "p": "switch",
                                                   "v": "1",
                                                   "vt": "num"
                                               },
                                               {
                                                   "p": "topic",
                                                   "vt": "str"
                                               }
                                           ],
                                           "repeat": "",
                                           "crontab": "",
                                           "once": false,
                                           "onceDelay": 0.1,
                                           "topic": "shellies/Licht/Badezimmer/rpc",
                                           "payload": "true",
                                           "payloadType": "bool",
                                           "x": 130,
                                           "y": 2580,
                                           "wires": [
                                               [
                                                   "f5a80b40528a75e8"
                                               ]
                                           ]
                                       }
                                    ]
                                    

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

                                      @dos1973 sagte in Shellys ("Alt und Plus") über MQTT Adapter:

                                      @mickym
                                      ich bekomme gerade nix verstanden 🙂

                                      ich verstehe momentan noch nicht was mein Ziel ist. mit den Gen1 Adaptern habe ich ja einen IOBroker DP den ich mit True / false schalte

                                      muss ich den Output wert als auch DP erzeugen?

                                      So nachdem Du mir Dein Objekt nicht direkt hier rauskopiert hast (worum ich Dich gebeten hatte), habe ich eins von @hotspot_2 vom Shelly 1pm Plus genommen. Es geht ja nur um den Schaltzustand in der output Eigenschaft.

                                      Du kannst also über Deine ID - also auch über das topic selbst ermitteln welcher Schalter geschaltet wurde:

                                      eb999900-eeb1-4745-b746-9dc2ad14b4d1-image.png

                                      [
                                         {
                                             "id": "75f785e48b93fffe",
                                             "type": "inject",
                                             "z": "2e7d4cac81c671e3",
                                             "name": "",
                                             "props": [
                                                 {
                                                     "p": "payload"
                                                 },
                                                 {
                                                     "p": "topic",
                                                     "vt": "str"
                                                 }
                                             ],
                                             "repeat": "",
                                             "crontab": "",
                                             "once": false,
                                             "onceDelay": 0.1,
                                             "topic": "shellies/Licht/Badezimmer/status/switch:0",
                                             "payload": "{\"id\":0,\"source\":\"WS_in\",\"output\":false,\"temperature\":{\"tC\":50.9,\"tF\":123.5}}",
                                             "payloadType": "json",
                                             "x": 130,
                                             "y": 2720,
                                             "wires": [
                                                 [
                                                     "7473ead3ad33cf0d",
                                                     "546e59d40d12cb04"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "7473ead3ad33cf0d",
                                             "type": "debug",
                                             "z": "2e7d4cac81c671e3",
                                             "name": "status:0 ausgabe",
                                             "active": true,
                                             "tosidebar": true,
                                             "console": false,
                                             "tostatus": false,
                                             "complete": "payload",
                                             "targetType": "msg",
                                             "statusVal": "",
                                             "statusType": "auto",
                                             "x": 390,
                                             "y": 2680,
                                             "wires": []
                                         },
                                         {
                                             "id": "546e59d40d12cb04",
                                             "type": "change",
                                             "z": "2e7d4cac81c671e3",
                                             "name": "",
                                             "rules": [
                                                 {
                                                     "t": "set",
                                                     "p": "topic",
                                                     "pt": "msg",
                                                     "to": "\"Badezimmer switch:\" & payload.id",
                                                     "tot": "jsonata"
                                                 },
                                                 {
                                                     "t": "set",
                                                     "p": "payload",
                                                     "pt": "msg",
                                                     "to": "payload.output",
                                                     "tot": "msg"
                                                 }
                                             ],
                                             "action": "",
                                             "property": "",
                                             "from": "",
                                             "to": "",
                                             "reg": false,
                                             "x": 350,
                                             "y": 2720,
                                             "wires": [
                                                 [
                                                     "2dd3b3ffbc52a638"
                                                 ]
                                             ]
                                         },
                                         {
                                             "id": "2dd3b3ffbc52a638",
                                             "type": "debug",
                                             "z": "2e7d4cac81c671e3",
                                             "name": "analysiert",
                                             "active": true,
                                             "tosidebar": true,
                                             "console": false,
                                             "tostatus": false,
                                             "complete": "payload",
                                             "targetType": "msg",
                                             "statusVal": "",
                                             "statusType": "auto",
                                             "x": 580,
                                             "y": 2720,
                                             "wires": []
                                         }
                                      ]
                                      

                                      Damit sollte nun aber alles klar sein???

                                      adbeba73-8101-4d4b-a397-b53c23be525e-image.png

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

                                        @mickym
                                        Ich probiere es gleich mal aus.
                                        Danke für deine Mühe und Geduld

                                        @mickym
                                        ich trau mich gear nicht fragen...
                                        sollte jetzt etwas passieren wenn ich dein Flow importiere?

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

                                          @dos1973 ... wir schaffen das zusammen. 🙂

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

                                            @mickym
                                            passiert leider nichts

                                            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

                                            532
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            512
                                            69358
                                            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