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

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

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

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

      @mickym Da ich viel mit Pushover, dem Alexa Adapter (Durchsagen) mache würde ich mir gerne ein paar zusätzliche Nodes installieren. Mein iobroker Server läuft auf debian auf einem NUC i3.

      Wenn ich da was nachinstalliere passt das mit der Anleitung hier (also mit dem iobroker Adapter), oder?

      https://flows.nodered.org/node/node-red-contrib-pushover

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

        @hotspot_2 Ja - aber nichts manuell installieren sondern nur über den Paletten-Manager. Ggf. den Haken in der Adapterkonfiguration aktivieren. Also nicht mit npm rumfuhrwerken.
        ee6e9be9-473a-48fa-b4ce-a900c2bb93aa-image.png
        Bei dem Adapter macht die Installation eigener Nodes wahrscheinlich Sinn weil der Adapter im iobroker nur mit SendTo Kommandos funktioniert. Ansonsten wenn Du bereits Adapter hast, die mit einer Hardware kommunizieren - erst den versuchen den Adapter zu nutzen.

        Wenn die Node nicht funktioniert habe ich auch ein kleines JS geschrieben mit dem man SendTo über einen Datenpunkt schreiben kann. Quasi als Proxy. Aber machs erst mal mit der Node. 😉

        Also mach das mit der NOde - das ist sicher in dem Fall die beste Wahl - hier mal der Thread wie man SendTo über einen "Proxy-Datenpunkt" simulieren kann: https://forum.iobroker.net/topic/57210/nodered-sendto-proxy-mit-js

        Du gehst ja ganz schön flot voran - es scheint, dass Dir NodeRed gefällt. 😉

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

          @mickym Ja, Node RED gefällt mir sehr gut.

          Der Plan ist alle Blocklys (eventuell auch die 2-3 Skripte (javascript)) komplett mit NodeRED zu machen. Wird ja dann auch einfacher und ich muss nicht alle Informationen erst in die Objekte schreiben mit NodeRED.

          Hast Du mir eventuell einen Tipp wo man mal ganz grob nachlesen kann wie man so einen ersten Flow erstellt? Wie z.B. 2 Bewegungsmelder erkennen Bewegung und schalten zwei Lichter an.

          Danke schon mal.

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

            @hotspot_2 Na Du hast ja schon lauter Flows erstellt. Mein Angebot steht, dass wir das zusammen machen. Im Prinzip machst Du es ja bereits alles doppelt. Denn so wie Du momentan nur Datenpunkte schreibst, kannst Du das natürlich auch nutzen, um gleich einen Flow zu machen. Du kannst ahlt

            1- entweder nochmal mit mqtt-In Nodes arbeiten.
            2- die vorhandenen Mqtt-Nodes bereits nutzen

            erst 1 nehmen und dann ggf. 2 ablösen. 😉

            Wie gesagt ich helfen Dir am Anfang gerne bestehende Aufgaben gemeinsam zu lösen.

            Ansonsten gibts hier einen einfachen Blog, wobei Du in meinen Augen schon mehr Wissen hast:
            https://www.smarthome-tricks.de/uebersicht-iobroker-node-red/
            Tutorials vom derzeitigen Entwickler des Shelly Adapters: von https://haus-automatisierung.com/nodered-tutorial-reihe/

            Ich persönlich bevorzuge (allerdings englisch) die Tutorials und Videos von Steve:
            https://stevesnoderedguide.com/

            Manchmal nutzt der mir aber noch zuviel Javascript und Function Nodes. 😉
            So hier mal so wie, wir gestartet haben mit Inject und Debug Nodes: https://www.youtube.com/watch?v=jWjyIz4Jz58&list=PLk0D2S-fqJ7YvR1wrpl8A4mhtBbYOlsE4&index=26
            und wenn du dort bist, da gibts ca. 77 Videos über verschiedene Nodes.

            Ein User hier an Board hat sich dieses Buch gekauft und ich habe es mir angeschaut und ich finde es nicht schlecht, wenn Du lieber so lesen möchtest: https://www.rheinwerk-verlag.de/node-red-das-umfassende-handbuch/

            Und letztlich halt noch das offizielle Forum: https://discourse.nodered.org/ als Bestandteil der offiziellen Seite.

            Aber wie gesagt - ich biete mich gerne an, mit Dir zusammen die ersten Flows zu machen und Dir die Basics zu erklären oder auch ein Blockly oder das mit den Bewegungsmeldern zusammen zu machen.

            Ich nutze es nicht, aber wenn Du in Node-Red auch puzzeln willst, gibts auch dafür eine Node:

            126551137-5c99d6d9-7097-47c1-8d0b-ea71d27ec7f7.gif

            😂 🤣 🤣 🤣

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

              @mickym Vielen Dank, das mit dem Buch überlege ich mir. Will mich da schon reinfuchsen jetzt, macht Spaß und die Möglichkeiten (was ich bisher erkennen kann) sind wesentlich mehr als mit Blockly usw.

              Aber auch auf dein Angebot komme ich gerne zurück. Vielleicht mal die nächsten Tage (wieder abends) sollte ja ruhiger werden ums Wochenende rum.

              Danke mal für die Infos.

              Nett, mit den Blocklys in Node-RED 😉

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

                @hotspot_2 Ja viele glauben, weil es wohl die meisten im iobroker nutzen (warum auch immer ? - weil es die Mehrzahl ist? ) das Blockly was mit dem iobroker zu tun hat.

                Blockly wurde für iobroker angepasst, aber im Grund ist Blockly nur eine grafische Programmieroberfläche von Google entwickelt: https://de.wikipedia.org/wiki/Blockly

                während Node-Red ursprünglich von der IBM entwickelt worden ist, bevor es der OpenSource Gemeinde zur Verfügung gestellt wurde: https://de.wikipedia.org/wiki/Node-RED

                Es gibt ein paar Einschränkungen mit NodeRed im iobroker - wie das SendTo - aber das liegt einfach daran, weil hier der Javascript-Adapter bevorzugt wird und deshalb nicht alle Funktionen zur Verfügung stehen. In manchen Fällen siehe mein Thread https://forum.iobroker.net/topic/57210/nodered-sendto-proxy-mit-js bist Du also auf den Javascript Adapter angewiesen.

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

                  @mickym

                  36cfbbfb-c078-49ac-945a-ca7997f22048-image.png

                  Das hier sollte mal mein erster Versuch sein. Idee: Einer der beiden Bewegungsmelder soll bei Bewegung (motion = true) soll zwei Lichter einschalten können bei Bewegung und nach einer Zeit von 2 Minuten sollen dann beide Lichter wieder ausgehen.

                  
                   [
                      {
                          "id": "397e721c8443f53e",
                          "type": "mqtt in",
                          "z": "692f3cf44001c136",
                          "name": "",
                          "topic": "shellies/sonstiges/bwm_wk/status",
                          "qos": "2",
                          "datatype": "auto-detect",
                          "broker": "b22fc4d3e3f172bb",
                          "nl": false,
                          "rap": true,
                          "rh": 0,
                          "inputs": 0,
                          "x": 270,
                          "y": 220,
                          "wires": [
                              [
                                  "ed8bbbbc42993b32"
                              ]
                          ]
                      },
                      {
                          "id": "4e9de718a2e77470",
                          "type": "mqtt in",
                          "z": "692f3cf44001c136",
                          "name": "",
                          "topic": "shellies/sonstiges/bwm_flur_keller/status",
                          "qos": "2",
                          "datatype": "auto-detect",
                          "broker": "b22fc4d3e3f172bb",
                          "nl": false,
                          "rap": true,
                          "rh": 0,
                          "inputs": 0,
                          "x": 300,
                          "y": 300,
                          "wires": [
                              [
                                  "15a6ca187c9d479c"
                              ]
                          ]
                      },
                      {
                          "id": "7ec7c96ff08e6063",
                          "type": "switch",
                          "z": "692f3cf44001c136",
                          "name": "",
                          "property": "payload",
                          "propertyType": "msg",
                          "rules": [
                              {
                                  "t": "true"
                              }
                          ],
                          "checkall": "true",
                          "repair": false,
                          "outputs": 1,
                          "x": 750,
                          "y": 260,
                          "wires": [
                              [
                                  "4c66f596cea681bc"
                              ]
                          ]
                      },
                      {
                          "id": "ed8bbbbc42993b32",
                          "type": "change",
                          "z": "692f3cf44001c136",
                          "name": "",
                          "rules": [
                              {
                                  "t": "set",
                                  "p": "payload",
                                  "pt": "msg",
                                  "to": "payload.motion",
                                  "tot": "msg"
                              }
                          ],
                          "action": "",
                          "property": "",
                          "from": "",
                          "to": "",
                          "reg": false,
                          "x": 570,
                          "y": 220,
                          "wires": [
                              [
                                  "7ec7c96ff08e6063"
                              ]
                          ]
                      },
                      {
                          "id": "15a6ca187c9d479c",
                          "type": "change",
                          "z": "692f3cf44001c136",
                          "name": "",
                          "rules": [
                              {
                                  "t": "set",
                                  "p": "payload",
                                  "pt": "msg",
                                  "to": "payload.motion",
                                  "tot": "msg"
                              }
                          ],
                          "action": "",
                          "property": "",
                          "from": "",
                          "to": "",
                          "reg": false,
                          "x": 570,
                          "y": 300,
                          "wires": [
                              [
                                  "7ec7c96ff08e6063"
                              ]
                          ]
                      },
                      {
                          "id": "4c66f596cea681bc",
                          "type": "change",
                          "z": "692f3cf44001c136",
                          "name": "",
                          "rules": [
                              {
                                  "t": "set",
                                  "p": "payload",
                                  "pt": "msg",
                                  "to": "{\t   \"id\":123,\t   \"src\":\"hotspot_2\",\t   \"method\":\"Switch.Set\",\t   \"params\":{\"id\":0,\"on\":true}\t}\t \t",
                                  "tot": "jsonata"
                              }
                          ],
                          "action": "",
                          "property": "",
                          "from": "",
                          "to": "",
                          "reg": false,
                          "x": 910,
                          "y": 260,
                          "wires": [
                              [
                                  "01f190a2c31e8843",
                                  "7e4966704c6d5a10",
                                  "a9d85b0db7b81d2f"
                              ]
                          ]
                      },
                      {
                          "id": "01f190a2c31e8843",
                          "type": "mqtt out",
                          "z": "692f3cf44001c136",
                          "name": "",
                          "topic": "shellies/licht/obergeschoss/bad/rpc",
                          "qos": "",
                          "retain": "",
                          "respTopic": "",
                          "contentType": "",
                          "userProps": "",
                          "correl": "",
                          "expiry": "",
                          "broker": "b22fc4d3e3f172bb",
                          "x": 1200,
                          "y": 260,
                          "wires": []
                      },
                      {
                          "id": "7e4966704c6d5a10",
                          "type": "delay",
                          "z": "692f3cf44001c136",
                          "name": "",
                          "pauseType": "delay",
                          "timeout": "2",
                          "timeoutUnits": "minutes",
                          "rate": "1",
                          "nbRateUnits": "1",
                          "rateUnits": "second",
                          "randomFirst": "1",
                          "randomLast": "5",
                          "randomUnits": "seconds",
                          "drop": false,
                          "allowrate": false,
                          "outputs": 1,
                          "x": 1140,
                          "y": 320,
                          "wires": [
                              [
                                  "41d173beaf2558fd"
                              ]
                          ]
                      },
                      {
                          "id": "5a98adb5dcfd8a1c",
                          "type": "mqtt out",
                          "z": "692f3cf44001c136",
                          "name": "",
                          "topic": "shellies/licht/obergeschoss/bad/rpc",
                          "qos": "",
                          "retain": "",
                          "respTopic": "",
                          "contentType": "",
                          "userProps": "",
                          "correl": "",
                          "expiry": "",
                          "broker": "b22fc4d3e3f172bb",
                          "x": 1620,
                          "y": 320,
                          "wires": []
                      },
                      {
                          "id": "41d173beaf2558fd",
                          "type": "change",
                          "z": "692f3cf44001c136",
                          "name": "",
                          "rules": [
                              {
                                  "t": "set",
                                  "p": "payload",
                                  "pt": "msg",
                                  "to": "{\t   \"id\":123,\t   \"src\":\"hotspot_2\",\t   \"method\":\"Switch.Set\",\t   \"params\":{\"id\":0,\"on\":false}\t}\t \t",
                                  "tot": "jsonata"
                              }
                          ],
                          "action": "",
                          "property": "",
                          "from": "",
                          "to": "",
                          "reg": false,
                          "x": 1330,
                          "y": 320,
                          "wires": [
                              [
                                  "5a98adb5dcfd8a1c",
                                  "7504bebaee958f29"
                              ]
                          ]
                      },
                      {
                          "id": "a9d85b0db7b81d2f",
                          "type": "mqtt out",
                          "z": "692f3cf44001c136",
                          "name": "",
                          "topic": "shellies/licht/obergeschoss/flur_oben/rpc",
                          "qos": "",
                          "retain": "",
                          "respTopic": "",
                          "contentType": "",
                          "userProps": "",
                          "correl": "",
                          "expiry": "",
                          "broker": "b22fc4d3e3f172bb",
                          "x": 1220,
                          "y": 200,
                          "wires": []
                      },
                      {
                          "id": "7504bebaee958f29",
                          "type": "mqtt out",
                          "z": "692f3cf44001c136",
                          "name": "",
                          "topic": "shellies/licht/obergeschoss/flur_oben/rpc",
                          "qos": "",
                          "retain": "",
                          "respTopic": "",
                          "contentType": "",
                          "userProps": "",
                          "correl": "",
                          "expiry": "",
                          "broker": "b22fc4d3e3f172bb",
                          "x": 1640,
                          "y": 380,
                          "wires": []
                      },
                      {
                          "id": "b22fc4d3e3f172bb",
                          "type": "mqtt-broker",
                          "name": "iobroker mqtt adapter",
                          "broker": "localhost",
                          "port": "1883",
                          "clientid": "mqttin_nodered",
                          "autoConnect": true,
                          "usetls": false,
                          "protocolVersion": "4",
                          "keepalive": "60",
                          "cleansession": true,
                          "birthTopic": "",
                          "birthQos": "0",
                          "birthPayload": "",
                          "birthMsg": {},
                          "closeTopic": "",
                          "closeQos": "0",
                          "closePayload": "",
                          "closeMsg": {},
                          "willTopic": "",
                          "willQos": "0",
                          "willPayload": "",
                          "willMsg": {},
                          "userProps": "",
                          "sessionExpiry": ""
                      }
                  ]
                  
                  

                  Passt das so grob?

                  Wenn ja, hätte ich mir glaub das Buch doch sparen können ;-). Habe aber das Ebook schon mal ein wenig angelesen.

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

                    @hotspot_2 Na ja nicht so ganz - aber ähnlich. 😉 - Damit ich deinen Flow importieren kann bitte in codetags innerhalb des Spoilers

                    Und in dem Buch gibts sicher noch das eine oder andere. 😉

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

                      @mickym Na ich habs mir mal angeschaut - im Prinzip kann man es so machen - wie Du es gemacht hast.
                      Also so verkehrt ist es nicht. 😉

                      Aber ich zeige Dir trotzdem in meinen Augen noch eine schönere Variante. 😉

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

                        @mickym

                        Hab das jetzt in Code Tags gepackt.

                        Ich lese die beiden Statis der Bewegungsmelder aus mit den mqtt-ins. Dann setze ich die payloads auf motion (true / false) und gehe dann mit beiden Eingängen auf eine Switch. Wenn true dann setze ich den Payload auf true und mache die beiden Lichter an. Parallel dazu starte ich eine Verzögerung von 2 Minuten die dann nach Ablauf den Payload zum abschalten auf die beiden mqtt-outs setzt. So ganz grob.

                        Ich merke aber gerade daß das Licht zwar angeht, aber das ausgehen nicht passt. Das ist fast zufällig mal länger mal kürzer. Außerdem hat der Shelly einen Zeit die minimal abläuft bis er wieder eine Bewegung erkennt bzw. wie langer Status auf true bleibt. Ich glaube ich brauch da noch sowas wie ein Trigger oder so.

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

                          @hotspot_2 Na wie gesagt im Prinzip passt das schon Deine Idee - aber Du wirst sehen, dass man logisch etwas strukturieren muss. 😉

                          So kommt ja ein mal aus dem einen oder anderen BWM eine Nachricht raus - und dann ist es so - dass der 2. Bewegungsmelder auf true geht und dann auch der Delay wirkt.

                          Normalerweise macht man das so, dass man die 2. Minuten erst loslaufen lässt, wenn von beiden BWM kein true Signal mehr kommt.

                          So nun zu den Verbesserungen:

                          1. Du brauchst keine 2 Change Nodes, da ja beide Nachrichtenobjekte gleich aufgebaut sind und Du jeweils die motion Eigenschaft extrahierst. Richtig ist dass nur true weitergeleitet werden soll:

                          e96dd754-b735-4f26-878a-bdb3f3032fd4-image.png

                          so und die Change Node kannst Du Dir auch noch sparen - da Du mit der switch Node direkt die Nachrichteneigenschaft angeben kannst, die Du überprüfen willst (wie gesagt in Node Red kannst Du direkt auf die Eigenschaften zugreifen):

                          10631720-fd74-4bfd-ac37-7896dfd60f86-image.png

                          1. So beide Lichter arbeiten ja auch mit den selben Nachrichtenobjekten nur einmal mit true oder false:

                          8e5ee5d3-1b89-4dbf-b58d-17c5a5cc1ca0-image.png

                          deswegen machst Du den Parameter wieder flexibel in dem Du das on nicht auf einen fixen Wert sondern auf die payload setzt:

                          69384844-7fe7-4972-b022-9fffb2d4fbe3-image.png

                          Somit haben wir den Rumpfflow und müssen die payload nur zwischen true und false schalten:

                          f6547e1b-1c41-44ba-84db-f8ff190a62e8-image.png

                          So und im Prinzip wenn die BWM true melden - interessiert uns nicht der Inhalt der payload - sondern nutzen nur den Trigger.
                          Am Besten lässt man die 2 Minuten erst dann loslaufen, wenn kein weiterer Impuls von einem der beiden Bewegungsmelder kommt. Dazu gibts eine sehr mächtige Node - die trigger Node (das was man im Blockly mühsam mit den Timern macht).

                          Diese sendet am Anfang true und sendet nicht fix nach 2 Minuten - sondern erst 2 Minuten nachdem kein weitere Nachricht eingegangen ist false:

                          00b325ea-55a5-489a-a322-2fdba91c17bf-image.png

                          Somit lässt sich Dein Flow wie folgt vereinfachen:

                          75cbb445-c0cd-4b54-b70b-dd740ac86dfe-image.png

                          [
                             {
                                 "id": "397e721c8443f53e",
                                 "type": "mqtt in",
                                 "z": "39f2583fbd04f592",
                                 "name": "",
                                 "topic": "shellies/sonstiges/bwm_wk/status",
                                 "qos": "2",
                                 "datatype": "auto-detect",
                                 "broker": "b22fc4d3e3f172bb",
                                 "nl": false,
                                 "rap": true,
                                 "rh": 0,
                                 "inputs": 0,
                                 "x": 410,
                                 "y": 280,
                                 "wires": [
                                     [
                                         "7ec7c96ff08e6063"
                                     ]
                                 ]
                             },
                             {
                                 "id": "4e9de718a2e77470",
                                 "type": "mqtt in",
                                 "z": "39f2583fbd04f592",
                                 "name": "",
                                 "topic": "shellies/sonstiges/bwm_flur_keller/status",
                                 "qos": "2",
                                 "datatype": "auto-detect",
                                 "broker": "b22fc4d3e3f172bb",
                                 "nl": false,
                                 "rap": true,
                                 "rh": 0,
                                 "inputs": 0,
                                 "x": 380,
                                 "y": 340,
                                 "wires": [
                                     [
                                         "7ec7c96ff08e6063"
                                     ]
                                 ]
                             },
                             {
                                 "id": "7ec7c96ff08e6063",
                                 "type": "switch",
                                 "z": "39f2583fbd04f592",
                                 "name": "",
                                 "property": "payload.motion",
                                 "propertyType": "msg",
                                 "rules": [
                                     {
                                         "t": "true"
                                     }
                                 ],
                                 "checkall": "true",
                                 "repair": false,
                                 "outputs": 1,
                                 "x": 630,
                                 "y": 300,
                                 "wires": [
                                     [
                                         "800abea06f19a103"
                                     ]
                                 ]
                             },
                             {
                                 "id": "4c66f596cea681bc",
                                 "type": "change",
                                 "z": "39f2583fbd04f592",
                                 "name": "",
                                 "rules": [
                                     {
                                         "t": "set",
                                         "p": "payload",
                                         "pt": "msg",
                                         "to": "{\t   \"id\":123,\t   \"src\":\"hotspot_2\",\t   \"method\":\"Switch.Set\",\t   \"params\":{\"id\":0,\"on\":payload}\t}\t \t",
                                         "tot": "jsonata"
                                     }
                                 ],
                                 "action": "",
                                 "property": "",
                                 "from": "",
                                 "to": "",
                                 "reg": false,
                                 "x": 990,
                                 "y": 300,
                                 "wires": [
                                     [
                                         "01f190a2c31e8843",
                                         "a9d85b0db7b81d2f"
                                     ]
                                 ]
                             },
                             {
                                 "id": "01f190a2c31e8843",
                                 "type": "mqtt out",
                                 "z": "39f2583fbd04f592",
                                 "name": "",
                                 "topic": "shellies/licht/obergeschoss/bad/rpc",
                                 "qos": "",
                                 "retain": "",
                                 "respTopic": "",
                                 "contentType": "",
                                 "userProps": "",
                                 "correl": "",
                                 "expiry": "",
                                 "broker": "b22fc4d3e3f172bb",
                                 "x": 1260,
                                 "y": 340,
                                 "wires": []
                             },
                             {
                                 "id": "a9d85b0db7b81d2f",
                                 "type": "mqtt out",
                                 "z": "39f2583fbd04f592",
                                 "name": "",
                                 "topic": "shellies/licht/obergeschoss/flur_oben/rpc",
                                 "qos": "",
                                 "retain": "",
                                 "respTopic": "",
                                 "contentType": "",
                                 "userProps": "",
                                 "correl": "",
                                 "expiry": "",
                                 "broker": "b22fc4d3e3f172bb",
                                 "x": 1280,
                                 "y": 260,
                                 "wires": []
                             },
                             {
                                 "id": "800abea06f19a103",
                                 "type": "trigger",
                                 "z": "39f2583fbd04f592",
                                 "name": "",
                                 "op1": "true",
                                 "op2": "false",
                                 "op1type": "bool",
                                 "op2type": "bool",
                                 "duration": "2",
                                 "extend": true,
                                 "overrideDelay": false,
                                 "units": "min",
                                 "reset": "",
                                 "bytopic": "all",
                                 "topic": "topic",
                                 "outputs": 1,
                                 "x": 790,
                                 "y": 300,
                                 "wires": [
                                     [
                                         "4c66f596cea681bc"
                                     ]
                                 ]
                             },
                             {
                                 "id": "b22fc4d3e3f172bb",
                                 "type": "mqtt-broker",
                                 "name": "iobroker mqtt adapter",
                                 "broker": "localhost",
                                 "port": "1883",
                                 "clientid": "mqttin_nodered",
                                 "autoConnect": true,
                                 "usetls": false,
                                 "protocolVersion": "4",
                                 "keepalive": "60",
                                 "cleansession": true,
                                 "birthTopic": "",
                                 "birthQos": "0",
                                 "birthPayload": "",
                                 "birthMsg": {},
                                 "closeTopic": "",
                                 "closeQos": "0",
                                 "closePayload": "",
                                 "closeMsg": {},
                                 "willTopic": "",
                                 "willQos": "0",
                                 "willPayload": "",
                                 "willMsg": {},
                                 "userProps": "",
                                 "sessionExpiry": ""
                             }
                          ]
                          

                          Da Du mit der trigger Node auch ganze Objekte verschicken kannst - kannst Du theoretisch sogar die Change Node am Ende sparen.

                          8d5bf8f6-fc20-41c4-997a-5d2c26bbe04e-image.png

                          In diesem Fall ist das true und false in den Objekten fest codiert:

                          [
                             {
                                 "id": "397e721c8443f53e",
                                 "type": "mqtt in",
                                 "z": "2e7d4cac81c671e3",
                                 "name": "",
                                 "topic": "shellies/sonstiges/bwm_wk/status",
                                 "qos": "2",
                                 "datatype": "auto-detect",
                                 "broker": "b22fc4d3e3f172bb",
                                 "nl": false,
                                 "rap": true,
                                 "rh": 0,
                                 "inputs": 0,
                                 "x": 330,
                                 "y": 1900,
                                 "wires": [
                                     [
                                         "7ec7c96ff08e6063"
                                     ]
                                 ]
                             },
                             {
                                 "id": "4e9de718a2e77470",
                                 "type": "mqtt in",
                                 "z": "2e7d4cac81c671e3",
                                 "name": "",
                                 "topic": "shellies/sonstiges/bwm_flur_keller/status",
                                 "qos": "2",
                                 "datatype": "auto-detect",
                                 "broker": "b22fc4d3e3f172bb",
                                 "nl": false,
                                 "rap": true,
                                 "rh": 0,
                                 "inputs": 0,
                                 "x": 300,
                                 "y": 1980,
                                 "wires": [
                                     [
                                         "7ec7c96ff08e6063"
                                     ]
                                 ]
                             },
                             {
                                 "id": "7ec7c96ff08e6063",
                                 "type": "switch",
                                 "z": "2e7d4cac81c671e3",
                                 "name": "",
                                 "property": "payload.motion",
                                 "propertyType": "msg",
                                 "rules": [
                                     {
                                         "t": "true"
                                     }
                                 ],
                                 "checkall": "true",
                                 "repair": false,
                                 "outputs": 1,
                                 "x": 550,
                                 "y": 1940,
                                 "wires": [
                                     [
                                         "800abea06f19a103"
                                     ]
                                 ]
                             },
                             {
                                 "id": "01f190a2c31e8843",
                                 "type": "mqtt out",
                                 "z": "2e7d4cac81c671e3",
                                 "name": "",
                                 "topic": "shellies/licht/obergeschoss/bad/rpc",
                                 "qos": "",
                                 "retain": "",
                                 "respTopic": "",
                                 "contentType": "",
                                 "userProps": "",
                                 "correl": "",
                                 "expiry": "",
                                 "broker": "b22fc4d3e3f172bb",
                                 "x": 980,
                                 "y": 1980,
                                 "wires": []
                             },
                             {
                                 "id": "a9d85b0db7b81d2f",
                                 "type": "mqtt out",
                                 "z": "2e7d4cac81c671e3",
                                 "name": "",
                                 "topic": "shellies/licht/obergeschoss/flur_oben/rpc",
                                 "qos": "",
                                 "retain": "",
                                 "respTopic": "",
                                 "contentType": "",
                                 "userProps": "",
                                 "correl": "",
                                 "expiry": "",
                                 "broker": "b22fc4d3e3f172bb",
                                 "x": 1000,
                                 "y": 1900,
                                 "wires": []
                             },
                             {
                                 "id": "800abea06f19a103",
                                 "type": "trigger",
                                 "z": "2e7d4cac81c671e3",
                                 "name": "",
                                 "op1": "{\"id\":123,\"src\":\"hotspot_2\",\"method\":\"Switch.Set\",\"params\":{\"id\":0,\"on\":true}}",
                                 "op2": "{\"id\":123,\"src\":\"hotspot_2\",\"method\":\"Switch.Set\",\"params\":{\"id\":0,\"on\":false}}",
                                 "op1type": "json",
                                 "op2type": "json",
                                 "duration": "2",
                                 "extend": true,
                                 "overrideDelay": false,
                                 "units": "min",
                                 "reset": "",
                                 "bytopic": "all",
                                 "topic": "topic",
                                 "outputs": 1,
                                 "x": 710,
                                 "y": 1940,
                                 "wires": [
                                     [
                                         "a9d85b0db7b81d2f",
                                         "01f190a2c31e8843"
                                     ]
                                 ]
                             },
                             {
                                 "id": "b22fc4d3e3f172bb",
                                 "type": "mqtt-broker",
                                 "name": "iobroker mqtt adapter",
                                 "broker": "localhost",
                                 "port": "1883",
                                 "clientid": "mqttin_nodered",
                                 "autoConnect": true,
                                 "usetls": false,
                                 "protocolVersion": "4",
                                 "keepalive": "60",
                                 "cleansession": true,
                                 "birthTopic": "",
                                 "birthQos": "0",
                                 "birthPayload": "",
                                 "birthMsg": {},
                                 "closeTopic": "",
                                 "closeQos": "0",
                                 "closePayload": "",
                                 "closeMsg": {},
                                 "willTopic": "",
                                 "willQos": "0",
                                 "willPayload": "",
                                 "willMsg": {},
                                 "userProps": "",
                                 "sessionExpiry": ""
                             }
                          ]
                          

                          Du siehst eigentlich sehr einfach der Flow. 😉

                          Halte Dich einfach immer daran, Eingänge links und Ausgänge rechts und in der Mitte findet die Transformation bzw. die Logik statt. In diesem Fall ist nach dem Filtern der Eingangsnachrichten - die ganze Logik in einer einzigen Node - der Trigger Node gespeichert.

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

                            @mickym Super.

                            Wie könnte ich denn noch einbauen das die Aktion nur dann erfolgt wenn ein Schalter (in den Objekten) auf true steht? Damit würde ich gerne die Funktion an- und abschalten über JARVIS.

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

                              @hotspot_2 Du frägst den Datenpunkt mit einer get Node ab. Wenn der Schalter mehrere Dinge blockieren soll, dann kann man das auch im Node-Red Kontext in einer Variablen abspeichern. Nun aber nur zu Deiner einfachen Abfrage. UND Bedingungen werden die Nodes natürlich in Serie geschaltet - in dem Fall macht es Sinn Deinen Switch Node sprechende Namen zu geben.

                              a948c502-77b6-4845-b542-6df25d09acae-image.png

                              Also einfach die beiden Nodes dazwischen klemmen;

                              [
                                 {
                                     "id": "ad67b76febdf0a92",
                                     "type": "ioBroker get",
                                     "z": "2e7d4cac81c671e3",
                                     "name": "Schalter",
                                     "topic": "",
                                     "attrname": "payload",
                                     "payloadType": "value",
                                     "errOnInvalidState": "nothing",
                                     "x": 760,
                                     "y": 1180,
                                     "wires": [
                                         [
                                             "c7a2538582f26f99"
                                         ]
                                     ]
                                 },
                                 {
                                     "id": "c7a2538582f26f99",
                                     "type": "switch",
                                     "z": "2e7d4cac81c671e3",
                                     "name": "Schalter = true?",
                                     "property": "payload",
                                     "propertyType": "msg",
                                     "rules": [
                                         {
                                             "t": "true"
                                         }
                                     ],
                                     "checkall": "true",
                                     "repair": false,
                                     "outputs": 1,
                                     "x": 940,
                                     "y": 1180,
                                     "wires": [
                                         [
                                             "800abea06f19a103"
                                         ]
                                     ]
                                 }
                              ]
                              

                              Wenn Du solch globale Schalter hast - kannst du die auch über eine In-Node einlesen und im Flow oder globalen Kontext abspeichern und dann über die Switch-Node direkt abprüfen. Damit sparst Du Dir jedesmal den Datenpunkt abzufragen.

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

                                @mickym Super! Das funktioniert ;-).

                                Nächstes Projekt wäre nun etwas zu basteln für mein Treppenhaus. Dazu habe ich über längere Zeit ein Blockly gebastelt, welches aber nicht mehr ganz funktioniert jetzt da der Shelly Adapter bei mir jetzt komplett raus ist.

                                Ich habe drei Shellys für Licht im Treppenhaus (Keller, oben und unten). Diese werden (oben und unten) über Schalter angesteuert und unten über einen Button1. Außerdem gibt es drei Bewegungsmelder im Treppenhaus (oben, unten und Keller) die auch das Licht einschalten können. Die Dauer, wie lange das Licht brennt nach Aktivierung lässt sich einstellen in JARVIS. Außerdem habe ich noch eingebaut im Blockly das wenn während die Dauer noch nicht abgelaufen ist Shellys bzw. das Licht wieder angeschalten werden sollte jemand bei brennendem Licht auf die Schalter drücken. Funktionierte eigentlich sehr gut das Blockly Skript bis zum Entfernen des Shelly Adapters.

                                Das wäre das Projekt was wir uns, wenn es für Dich passt, mal anschauen könnten.

                                Treppenhaus_V9.txt

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

                                  Wenn Du solch globale Schalter hast - kannst du die auch über eine In-Node einlesen und im Flow oder globalen Kontext abspeichern und dann über die Switch-Node direkt abprüfen. Damit sparst Du Dir jedesmal den Datenpunkt abzufragen.

                                  Wie können die im Flow und global abgespeichert werden? Global hiesse dann über alle alle Flows hinweg abrufbar? Ist das dann vergleichbar mit einer globalen Variable? Wird die dann auch aktualisiert wenn sich der Wert ändert?

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

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

                                    Wenn Du solch globale Schalter hast - kannst du die auch über eine In-Node einlesen und im Flow oder globalen Kontext abspeichern und dann über die Switch-Node direkt abprüfen. Damit sparst Du Dir jedesmal den Datenpunkt abzufragen.

                                    Wie können die im Flow und global abgespeichert werden? Global hiesse dann über alle alle Flows hinweg abrufbar? Ist das dann vergleichbar mit einer globalen Variable? Wird die dann auch aktualisiert wenn sich der Wert ändert?

                                    Ja 🙂 und Ja 🙂

                                    Generell siehst Du den Kontextinhalt der aktuell ist im Kontext Tab:

                                    4c09c0b0-e9e8-434f-a627-0999ac74f320-image.png

                                    Ich nehmen mal den Schalter - der kann ja auch durch das Objekt direkt getriggert werden. Nehmen wir mal an Du willst den Schalter mehrfach nutzen - dann fragst Du den nicht im Flow ab, sondern lässt den Datenpunkt direkt in den Flow-Kontext schreiben:

                                    Um eine globale (über alle Flows geltende Variable zu setzen), setzt Du diese im globalen Kontext, wenn sie nur in dem Flow gelten soll, dann im Flow Kontext.

                                    Setzen kannst Du das natürlich wieder über die tolle Change Node. 😉
                                    Hier setzt Du also die globale Variable active auf die payload Eigenschaft des Nachrichtenobjektes:

                                    918d0bef-3a25-4399-a1ad-715f476f6b81-image.png

                                    Der Datenpunkt setzt also direkt die Variable in Node-Red und kannst Du direkt im Kontext sehen:

                                    34cca294-d5e8-4c66-a185-bab98cd29326-image.png

                                    Diese Variable kannst Du im switch nun direkt abprüfen und sparst Dir die Abfrage des Wertes im Flow:

                                    14b368d8-7da5-439f-8b38-cef25dfd0b7e-image.png

                                    Somit sparst Du Dir in jedem Flow die Abfrage des Datenpunktes wenn Du diesen Status öfters brauchst:

                                    331e5844-3f25-45f5-a67b-a26e3ca50c90-image.png

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

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

                                      @mickym Super! Das funktioniert ;-).

                                      Nächstes Projekt wäre nun etwas zu basteln für mein Treppenhaus. Dazu habe ich über längere Zeit ein Blockly gebastelt, welches aber nicht mehr ganz funktioniert jetzt da der Shelly Adapter bei mir jetzt komplett raus ist.

                                      Ich habe drei Shellys für Licht im Treppenhaus (Keller, oben und unten). Diese werden (oben und unten) über Schalter angesteuert und unten über einen Button1. Außerdem gibt es drei Bewegungsmelder im Treppenhaus (oben, unten und Keller) die auch das Licht einschalten können. Die Dauer, wie lange das Licht brennt nach Aktivierung lässt sich einstellen in JARVIS. Außerdem habe ich noch eingebaut im Blockly das wenn während die Dauer noch nicht abgelaufen ist Shellys bzw. das Licht wieder angeschalten werden sollte jemand bei brennendem Licht auf die Schalter drücken. Funktionierte eigentlich sehr gut das Blockly Skript bis zum Entfernen des Shelly Adapters.

                                      Das wäre das Projekt was wir uns, wenn es für Dich passt, mal anschauen könnten.

                                      Treppenhaus_V9.txt

                                      @hotspot_2 Können wir machen - wobei ich das Blockly wieder mal sowas von unübersichtlich finde. Du hast doch alles auf die neuen Datenpunkte geändert, warum funktioniert das Blockly dann nicht?

                                      Ehrlich gesagt finde ich das Blockly aber so grottig aufgebaut, dass es mir lieber werden, wir würden die Logik neu implementieren? - Wäre das OK ?

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

                                        @mickym Na klar, völlig ok. Das Ding ist gewachsen mit Unterstützung von verschiedenen Seiten am Anfang und ich hab dann einfach weitergebastelt bis es funktioniert.

                                        Ich habe im Skript noch nicht alle Datenpunkte angepasst, daher funktioniert es gerade nicht.

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

                                          @hotspot_2 Gut.

                                          Dann meine 1. Frage:

                                          Die Dauer, wie lange das Licht brennt nach Aktivierung lässt sich einstellen in JARVIS.

                                          So dass heißt - dass ist die zentrale Instanz die das Licht ausschalten kann. Alle Buttons, Lichtschalter und Bewegungsmelder schalten immer ein - aber nie aus?

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

                                            @mickym Ja, alle Schalter, Buttons und Bewegungsmelder schalten immer ein, aber nie aus. Das ist so korrekt. Aus geht immer dann wenn die Zeit, die einstellbar ist, abgelaufen ist. Möchte man es wieder hell haben muss man Schalter /Button drücken oder sich bewegen ;-).

                                            Wenn dann trotzdem ein Schalter gedrückt wird, habe ich es abgefangen und den Shelly bzw. das Licht wieder angeschalten. Der Shelly schaltet ja nach der Betätigung des Schalters das Licht erstmal aus.

                                            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

                                            678
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

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