Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. Node Red und Blockly Scripte

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Node Red und Blockly Scripte

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

      @mickym
      Ich habe es jetzt auch grundsätzlich verstanden und werde es mal Testen.

      DATENPUNKTE sind ja bereits angelegt.
      Bildschirmfoto 2022-01-13 um 22.32.06.png

      Und dann so in Node Red anlegen
      Bildschirmfoto 2022-01-13 um 22.32.51.png

      Bildschirmfoto 2022-01-13 um 22.33.04.png

      Werde es morgen mal testen ob es geht!

      Du schreibst es könnte auch direkt in Node Red umgesetzt werden.

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

        @labamba Mach mal zwischen den iobroker out Nodes und den Alexa Nodes noch eine Change Node in dem Du ein Boolean = true setzt. Deine Datenpunkte sind alles Buttons, bei den Du ein Betätigung durch ein true auslöst.

        Schau dass Du ein Boolean und keinen String in den Datenpunkt sendest:

        e5fbef37-da52-4c2e-bfd8-99766bfb0f5e-image.png

        Achte auch darauf, dass im Adapter keine Stringkonvertierung eingeschaltet ist.

        L 2 Replies Last reply Reply Quote 1
        • L
          LaBamba @mickym last edited by LaBamba

          @mickym
          Danke schon einmal für die Hilfe!
          Werde es morgen mal testen.

          Wäre natürlich noch viel eleganter wenn über einen Sprachbefehl, die Position http-Befehl angesteuert werden könnte.
          Bzw. bei den normalen Rollläden habe ich es auch so:
          Bildschirmfoto 2022-01-13 um 23.05.08.png
          hinbekommen.

          Würde mich interessieren ob das mit dem Drehwinkel der Raffstore nach Zeit in Node Red auch ohne Skript umsetzbar ist.

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

            @labamba Kurzfristig wird das denke ich wahrscheinlich funktionieren, wobei ich die komplette Steuerung relativ umständlich finde.

            Mit den Buttons etc.

            Die Steuerung ist ja nur dieser Part des Blocklies:

            8a3768b6-c87d-4c46-8245-ab2b4da35a06-image.png

            Du scheinst Deine Shellies also weder über den Adapter noch über MQTT, sondern direkt über die HTTP API steuern.
            2d9339c3-f24b-4329-b86b-b6562f63c127-image.png

            Also sollte ja mit den Prozentzahlen, das wahrscheinlich so gehen:

            http://192.168.178.35/roller/0?go=to_pos&roller_pos=25
            

            Im Prinzip ist ja für ein Gerät die URL gleich und nur der Prozentwert ist halt anders. Deswegen verstehe ich auch nicht, warum man da zig Buttons macht, anstelle einfach eine Prozentzahl in einen Datenpunkt zu schreiben bzw. auch bei Sprachbefehl halt - stelle auf x %.

            Die URL um den Shelly mit HTTP zu steuern ist ja easy und habe ich ja oben schon gepostet.
            Wenn also Prozentzahlen über ALexa oder was auch immer ankommt, lässt sich doch die URL dynamsich anstelle von fix zusammenstellen.

            c3ec6d86-05fe-446c-b98a-d9b60b49c381-image.png

            [
               {
                   "id": "9a06b473.235f18",
                   "type": "inject",
                   "z": "54b226bc.0793e8",
                   "name": "",
                   "props": [
                       {
                           "p": "payload"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "",
                   "payload": "33",
                   "payloadType": "num",
                   "x": 370,
                   "y": 3300,
                   "wires": [
                       [
                           "bc71f50b.326a38"
                       ]
                   ]
               },
               {
                   "id": "ccd60e5e.43591",
                   "type": "inject",
                   "z": "54b226bc.0793e8",
                   "name": "",
                   "props": [
                       {
                           "p": "payload"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "",
                   "payload": "50",
                   "payloadType": "num",
                   "x": 370,
                   "y": 3340,
                   "wires": [
                       [
                           "bc71f50b.326a38"
                       ]
                   ]
               },
               {
                   "id": "bc71f50b.326a38",
                   "type": "change",
                   "z": "54b226bc.0793e8",
                   "name": "",
                   "rules": [
                       {
                           "t": "set",
                           "p": "url",
                           "pt": "msg",
                           "to": "\"http://192.168.178.37/roller/0?go=to_pos&roller_pos=\" & payload",
                           "tot": "jsonata"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 580,
                   "y": 3320,
                   "wires": [
                       [
                           "481de0a0.fbd69",
                           "750f057.435bffc"
                       ]
                   ]
               },
               {
                   "id": "481de0a0.fbd69",
                   "type": "http request",
                   "z": "54b226bc.0793e8",
                   "d": true,
                   "name": "",
                   "method": "GET",
                   "ret": "txt",
                   "paytoqs": false,
                   "url": "",
                   "persist": false,
                   "authType": "",
                   "x": 810,
                   "y": 3400,
                   "wires": [
                       []
                   ]
               },
               {
                   "id": "750f057.435bffc",
                   "type": "debug",
                   "z": "54b226bc.0793e8",
                   "name": "",
                   "active": true,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "url",
                   "targetType": "msg",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 780,
                   "y": 3320,
                   "wires": []
               },
               {
                   "id": "dca4ac48.28773",
                   "type": "inject",
                   "z": "54b226bc.0793e8",
                   "name": "",
                   "props": [
                       {
                           "p": "payload"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "",
                   "payload": "zu",
                   "payloadType": "str",
                   "x": 350,
                   "y": 3420,
                   "wires": [
                       [
                           "f3e31a0b.56ed58"
                       ]
                   ]
               },
               {
                   "id": "9cc01bbe.0f87a8",
                   "type": "inject",
                   "z": "54b226bc.0793e8",
                   "name": "",
                   "props": [
                       {
                           "p": "payload"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "",
                   "payload": "auf",
                   "payloadType": "str",
                   "x": 350,
                   "y": 3460,
                   "wires": [
                       [
                           "f3e31a0b.56ed58"
                       ]
                   ]
               },
               {
                   "id": "f3e31a0b.56ed58",
                   "type": "change",
                   "z": "54b226bc.0793e8",
                   "name": "prepare msg.url",
                   "rules": [
                       {
                           "t": "change",
                           "p": "payload",
                           "pt": "msg",
                           "from": "zu",
                           "fromt": "str",
                           "to": "close",
                           "tot": "str"
                       },
                       {
                           "t": "change",
                           "p": "payload",
                           "pt": "msg",
                           "from": "auf",
                           "fromt": "str",
                           "to": "open",
                           "tot": "str"
                       },
                       {
                           "t": "set",
                           "p": "url",
                           "pt": "msg",
                           "to": "\"http://192.168.178.37/roller/0?go=\" & payload",
                           "tot": "jsonata"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 560,
                   "y": 3460,
                   "wires": [
                       [
                           "46b0f67d.1b97b8",
                           "481de0a0.fbd69"
                       ]
                   ]
               },
               {
                   "id": "f51da40e.075a38",
                   "type": "inject",
                   "z": "54b226bc.0793e8",
                   "name": "",
                   "props": [
                       {
                           "p": "payload"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "",
                   "payload": "stop",
                   "payloadType": "str",
                   "x": 350,
                   "y": 3500,
                   "wires": [
                       [
                           "f3e31a0b.56ed58"
                       ]
                   ]
               },
               {
                   "id": "46b0f67d.1b97b8",
                   "type": "debug",
                   "z": "54b226bc.0793e8",
                   "name": "",
                   "active": true,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "url",
                   "targetType": "msg",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 780,
                   "y": 3460,
                   "wires": []
               }
            ]
            

            Was Du mit Drehwinkel meinst - weiss ich gerade nicht - ist das der 2. Teil Deines Blocklies?

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

              @labamba Zu dem 2. Teil des Blocklies - aber ich bin kein Blockly Spezialist:

              d4572741-0cf6-4963-9608-07854f88fa2e-image.png

              ... finde ich es nicht gut - buttons auf false zu setzen. Buttons sind Taster und sind stateless, dass heißt sie haben keinen Status. Ein Button oder Taster (also Lichtschalter als Taster) - drückst Du - dann wird true ausgelöst und triggert. Nach dem Trigger passiert nichts, bis wieder gedrückt wird - also wieder ein True kommt. Das heißt der Status eines Taster ist immer true und nie false. Es wird auf Aktualisierung getriggert, sprich wann wurde das true erneuert bzw. der Taster erneut gedrückt.

              Bei dem Timer gehe ich mal davon aus, dass das nur ein Schutz ist, dass innerhalb der 5 Sekunden, in den sich die Lamellen ausrichten, nicht erneut getriggert wird. Das kann man im NodeRed einfacher über einen Trigger lösen.

              screen.png

              Die Umsetzung dieses Blocklies in NodeRed würde ich halt so umsetzen:

              3e04bf01-789d-4d3d-a7eb-93a816e01e1e-image.png

              [
                  {
                      "id": "f4e53c99.91238",
                      "type": "ioBroker in",
                      "z": "54b226bc.0793e8",
                      "name": "",
                      "topic": "shelly.0.SHSW-25#B8AB96#1.Shutter.state",
                      "payloadType": "value",
                      "onlyack": "",
                      "func": "rbe",
                      "gap": "",
                      "fireOnStart": "false",
                      "x": 260,
                      "y": 3680,
                      "wires": [
                          [
                              "7bd3c3c7.4bfd8c"
                          ]
                      ]
                  },
                  {
                      "id": "7bd3c3c7.4bfd8c",
                      "type": "trigger",
                      "z": "54b226bc.0793e8",
                      "name": "",
                      "op1": "",
                      "op2": "",
                      "op1type": "pay",
                      "op2type": "nul",
                      "duration": "5",
                      "extend": false,
                      "overrideDelay": false,
                      "units": "s",
                      "reset": "",
                      "bytopic": "all",
                      "topic": "topic",
                      "outputs": 1,
                      "x": 520,
                      "y": 3680,
                      "wires": [
                          [
                              "ebcc8cd1.82d7d"
                          ]
                      ],
                      "info": "Blockiert erneutes Auslesen innerhalb von 5s."
                  },
                  {
                      "id": "ebcc8cd1.82d7d",
                      "type": "switch",
                      "z": "54b226bc.0793e8",
                      "name": "state = stop?",
                      "property": "payload",
                      "propertyType": "msg",
                      "rules": [
                          {
                              "t": "neq",
                              "v": "stop",
                              "vt": "str"
                          },
                          {
                              "t": "eq",
                              "v": "stop",
                              "vt": "str"
                          }
                      ],
                      "checkall": "true",
                      "repair": false,
                      "outputs": 2,
                      "x": 690,
                      "y": 3680,
                      "wires": [
                          [
                              "854914d1.80f738"
                          ],
                          [
                              "620673ff.34e66c"
                          ]
                      ]
                  },
                  {
                      "id": "854914d1.80f738",
                      "type": "change",
                      "z": "54b226bc.0793e8",
                      "name": "",
                      "rules": [
                          {
                              "t": "set",
                              "p": "prevState",
                              "pt": "flow",
                              "to": "payload",
                              "tot": "msg"
                          }
                      ],
                      "action": "",
                      "property": "",
                      "from": "",
                      "to": "",
                      "reg": false,
                      "x": 900,
                      "y": 3640,
                      "wires": [
                          []
                      ]
                  },
                  {
                      "id": "bf30a22.3e2196",
                      "type": "delay",
                      "z": "54b226bc.0793e8",
                      "name": "",
                      "pauseType": "delay",
                      "timeout": "2000",
                      "timeoutUnits": "milliseconds",
                      "rate": "1",
                      "nbRateUnits": "1",
                      "rateUnits": "second",
                      "randomFirst": "1",
                      "randomLast": "5",
                      "randomUnits": "seconds",
                      "drop": false,
                      "x": 1320,
                      "y": 3620,
                      "wires": [
                          [
                              "16923fb2.9ee55"
                          ]
                      ]
                  },
                  {
                      "id": "c6eeaa6e.706d18",
                      "type": "delay",
                      "z": "54b226bc.0793e8",
                      "name": "",
                      "pauseType": "delay",
                      "timeout": "2000",
                      "timeoutUnits": "milliseconds",
                      "rate": "1",
                      "nbRateUnits": "1",
                      "rateUnits": "second",
                      "randomFirst": "1",
                      "randomLast": "5",
                      "randomUnits": "seconds",
                      "drop": false,
                      "x": 1320,
                      "y": 3800,
                      "wires": [
                          [
                              "f830e8a.66e7b18"
                          ]
                      ]
                  },
                  {
                      "id": "16ca9de0.a76ef2",
                      "type": "delay",
                      "z": "54b226bc.0793e8",
                      "name": "",
                      "pauseType": "delay",
                      "timeout": "3100",
                      "timeoutUnits": "milliseconds",
                      "rate": "1",
                      "nbRateUnits": "1",
                      "rateUnits": "second",
                      "randomFirst": "1",
                      "randomLast": "5",
                      "randomUnits": "seconds",
                      "drop": false,
                      "x": 1320,
                      "y": 3680,
                      "wires": [
                          [
                              "9975679a.5841e8"
                          ]
                      ]
                  },
                  {
                      "id": "8a7cd4b5.269948",
                      "type": "delay",
                      "z": "54b226bc.0793e8",
                      "name": "",
                      "pauseType": "delay",
                      "timeout": "2850",
                      "timeoutUnits": "milliseconds",
                      "rate": "1",
                      "nbRateUnits": "1",
                      "rateUnits": "second",
                      "randomFirst": "1",
                      "randomLast": "5",
                      "randomUnits": "seconds",
                      "drop": false,
                      "x": 1320,
                      "y": 3740,
                      "wires": [
                          [
                              "9975679a.5841e8"
                          ]
                      ]
                  },
                  {
                      "id": "9975679a.5841e8",
                      "type": "ioBroker out",
                      "z": "54b226bc.0793e8",
                      "name": "",
                      "topic": "shelly.0.SHSW-25#B8AB96#1.Shutter.Pause",
                      "ack": "false",
                      "autoCreate": "false",
                      "stateName": "",
                      "role": "",
                      "payloadType": "",
                      "readonly": "",
                      "stateUnit": "",
                      "stateMin": "",
                      "stateMax": "",
                      "x": 1630,
                      "y": 3700,
                      "wires": []
                  },
                  {
                      "id": "f830e8a.66e7b18",
                      "type": "ioBroker out",
                      "z": "54b226bc.0793e8",
                      "name": "",
                      "topic": "shelly.0.SHSW-25#B8AB96#1.Shutter.Open",
                      "ack": "false",
                      "autoCreate": "false",
                      "stateName": "",
                      "role": "",
                      "payloadType": "",
                      "readonly": "",
                      "stateUnit": "",
                      "stateMin": "",
                      "stateMax": "",
                      "x": 1630,
                      "y": 3800,
                      "wires": []
                  },
                  {
                      "id": "16923fb2.9ee55",
                      "type": "ioBroker out",
                      "z": "54b226bc.0793e8",
                      "name": "",
                      "topic": "shelly.0.SHSW-25#B8AB96#1.Shutter.Close",
                      "ack": "false",
                      "autoCreate": "false",
                      "stateName": "",
                      "role": "",
                      "payloadType": "",
                      "readonly": "",
                      "stateUnit": "",
                      "stateMin": "",
                      "stateMax": "",
                      "x": 1630,
                      "y": 3620,
                      "wires": []
                  },
                  {
                      "id": "336d9d4.74eb162",
                      "type": "switch",
                      "z": "54b226bc.0793e8",
                      "name": "prevState open oder close",
                      "property": "prevState",
                      "propertyType": "flow",
                      "rules": [
                          {
                              "t": "eq",
                              "v": "open",
                              "vt": "str"
                          },
                          {
                              "t": "eq",
                              "v": "close",
                              "vt": "str"
                          }
                      ],
                      "checkall": "true",
                      "repair": false,
                      "outputs": 2,
                      "x": 1050,
                      "y": 3720,
                      "wires": [
                          [
                              "16ca9de0.a76ef2",
                              "bf30a22.3e2196"
                          ],
                          [
                              "8a7cd4b5.269948",
                              "c6eeaa6e.706d18"
                          ]
                      ]
                  },
                  {
                      "id": "620673ff.34e66c",
                      "type": "change",
                      "z": "54b226bc.0793e8",
                      "name": "= true",
                      "rules": [
                          {
                              "t": "set",
                              "p": "payload",
                              "pt": "msg",
                              "to": "true",
                              "tot": "bool"
                          }
                      ],
                      "action": "",
                      "property": "",
                      "from": "",
                      "to": "",
                      "reg": false,
                      "x": 850,
                      "y": 3720,
                      "wires": [
                          [
                              "336d9d4.74eb162"
                          ]
                      ]
                  }
              ]
              

              Die iobroker In Node muss man halt noch umstellen, dass die am Anfang initialisiert wird. Das machte nur bei mir keinen Sinn, da ich ja keinen Shelly Adapter habe. Und bei mehreren Raffstores muss man natürlich eine Flowvariable pro Raffstore anlegen, damit sich das nicht gegenseitig beeinflusst.

              Falls das tatsächlich nacheinander mit dem Close/Open und der Pause stattfinden soll, dass muss man es halt serialisieren.

              ec9c30fd-5ca1-415a-a545-fbf7449b1597-image.png

              [
                 {
                     "id": "bf30a22.3e2196",
                     "type": "delay",
                     "z": "54b226bc.0793e8",
                     "name": "",
                     "pauseType": "delay",
                     "timeout": "2000",
                     "timeoutUnits": "milliseconds",
                     "rate": "1",
                     "nbRateUnits": "1",
                     "rateUnits": "second",
                     "randomFirst": "1",
                     "randomLast": "5",
                     "randomUnits": "seconds",
                     "drop": false,
                     "x": 1300,
                     "y": 3640,
                     "wires": [
                         [
                             "16923fb2.9ee55",
                             "3f345786.acf108"
                         ]
                     ]
                 },
                 {
                     "id": "c6eeaa6e.706d18",
                     "type": "delay",
                     "z": "54b226bc.0793e8",
                     "name": "",
                     "pauseType": "delay",
                     "timeout": "2000",
                     "timeoutUnits": "milliseconds",
                     "rate": "1",
                     "nbRateUnits": "1",
                     "rateUnits": "second",
                     "randomFirst": "1",
                     "randomLast": "5",
                     "randomUnits": "seconds",
                     "drop": false,
                     "x": 1300,
                     "y": 3760,
                     "wires": [
                         [
                             "f830e8a.66e7b18",
                             "8a7cd4b5.269948"
                         ]
                     ]
                 },
                 {
                     "id": "8a7cd4b5.269948",
                     "type": "delay",
                     "z": "54b226bc.0793e8",
                     "name": "",
                     "pauseType": "delay",
                     "timeout": "2850",
                     "timeoutUnits": "milliseconds",
                     "rate": "1",
                     "nbRateUnits": "1",
                     "rateUnits": "second",
                     "randomFirst": "1",
                     "randomLast": "5",
                     "randomUnits": "seconds",
                     "drop": false,
                     "x": 1540,
                     "y": 3720,
                     "wires": [
                         [
                             "9975679a.5841e8"
                         ]
                     ]
                 },
                 {
                     "id": "9975679a.5841e8",
                     "type": "ioBroker out",
                     "z": "54b226bc.0793e8",
                     "name": "",
                     "topic": "shelly.0.SHSW-25#B8AB96#1.Shutter.Pause",
                     "ack": "false",
                     "autoCreate": "false",
                     "stateName": "",
                     "role": "",
                     "payloadType": "",
                     "readonly": "",
                     "stateUnit": "",
                     "stateMin": "",
                     "stateMax": "",
                     "x": 1870,
                     "y": 3680,
                     "wires": []
                 },
                 {
                     "id": "f830e8a.66e7b18",
                     "type": "ioBroker out",
                     "z": "54b226bc.0793e8",
                     "name": "",
                     "topic": "shelly.0.SHSW-25#B8AB96#1.Shutter.Open",
                     "ack": "false",
                     "autoCreate": "false",
                     "stateName": "",
                     "role": "",
                     "payloadType": "",
                     "readonly": "",
                     "stateUnit": "",
                     "stateMin": "",
                     "stateMax": "",
                     "x": 1610,
                     "y": 3800,
                     "wires": []
                 },
                 {
                     "id": "16923fb2.9ee55",
                     "type": "ioBroker out",
                     "z": "54b226bc.0793e8",
                     "name": "",
                     "topic": "shelly.0.SHSW-25#B8AB96#1.Shutter.Close",
                     "ack": "false",
                     "autoCreate": "false",
                     "stateName": "",
                     "role": "",
                     "payloadType": "",
                     "readonly": "",
                     "stateUnit": "",
                     "stateMin": "",
                     "stateMax": "",
                     "x": 1610,
                     "y": 3600,
                     "wires": []
                 },
                 {
                     "id": "3f345786.acf108",
                     "type": "delay",
                     "z": "54b226bc.0793e8",
                     "name": "",
                     "pauseType": "delay",
                     "timeout": "3100",
                     "timeoutUnits": "milliseconds",
                     "rate": "1",
                     "nbRateUnits": "1",
                     "rateUnits": "second",
                     "randomFirst": "1",
                     "randomLast": "5",
                     "randomUnits": "seconds",
                     "drop": false,
                     "x": 1540,
                     "y": 3660,
                     "wires": [
                         [
                             "9975679a.5841e8"
                         ]
                     ]
                 }
              ]
              

              und wenn man so was ganz elegant machen will - dann verpackt man das in einen Subflow - da sind dann auch die Flowvariable je Instanz initialisiert.

              Damit brauchst Du dann nicht für jedes Raffrollo einen neuen Flow erstellen, sondern nutzt einfach diese neue Node:

              5a6df67b-3fa9-4a83-a18f-e9677cee514f-image.png

              damit kannst dann einfach diese Node an die States Deiner Raffstores anhängen. Die Datenpunkte zum Schreiben werden dann automatisch aus dem Topic ermittelt.

              411e3552-335a-4336-8260-e750ab715d6e-image.png

              Hier der Flow mit den neuen Nodes:

              [
                 {
                     "id": "7e87c3e2.66c5fc",
                     "type": "subflow",
                     "name": "Raffstore Lamellen",
                     "info": "",
                     "category": "",
                     "in": [
                         {
                             "x": 40,
                             "y": 160,
                             "wires": [
                                 {
                                     "id": "2652732c.5f215c"
                                 }
                             ]
                         }
                     ],
                     "out": [],
                     "env": [],
                     "meta": {},
                     "color": "#DDAA99"
                 },
                 {
                     "id": "ebcc8cd1.82d7d",
                     "type": "switch",
                     "z": "7e87c3e2.66c5fc",
                     "name": "state = stop?",
                     "property": "payload",
                     "propertyType": "msg",
                     "rules": [
                         {
                             "t": "neq",
                             "v": "stop",
                             "vt": "str"
                         },
                         {
                             "t": "eq",
                             "v": "stop",
                             "vt": "str"
                         }
                     ],
                     "checkall": "true",
                     "repair": false,
                     "outputs": 2,
                     "x": 350,
                     "y": 160,
                     "wires": [
                         [
                             "854914d1.80f738"
                         ],
                         [
                             "620673ff.34e66c"
                         ]
                     ]
                 },
                 {
                     "id": "854914d1.80f738",
                     "type": "change",
                     "z": "7e87c3e2.66c5fc",
                     "name": "",
                     "rules": [
                         {
                             "t": "set",
                             "p": "prevState",
                             "pt": "flow",
                             "to": "payload",
                             "tot": "msg"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 560,
                     "y": 120,
                     "wires": [
                         []
                     ]
                 },
                 {
                     "id": "bf30a22.3e2196",
                     "type": "delay",
                     "z": "7e87c3e2.66c5fc",
                     "name": "",
                     "pauseType": "delay",
                     "timeout": "2000",
                     "timeoutUnits": "milliseconds",
                     "rate": "1",
                     "nbRateUnits": "1",
                     "rateUnits": "second",
                     "randomFirst": "1",
                     "randomLast": "5",
                     "randomUnits": "seconds",
                     "drop": false,
                     "x": 980,
                     "y": 80,
                     "wires": [
                         [
                             "3255c528.de590a"
                         ]
                     ]
                 },
                 {
                     "id": "c6eeaa6e.706d18",
                     "type": "delay",
                     "z": "7e87c3e2.66c5fc",
                     "name": "",
                     "pauseType": "delay",
                     "timeout": "2000",
                     "timeoutUnits": "milliseconds",
                     "rate": "1",
                     "nbRateUnits": "1",
                     "rateUnits": "second",
                     "randomFirst": "1",
                     "randomLast": "5",
                     "randomUnits": "seconds",
                     "drop": false,
                     "x": 980,
                     "y": 280,
                     "wires": [
                         [
                             "68ebda58.4eabe4"
                         ]
                     ]
                 },
                 {
                     "id": "8a7cd4b5.269948",
                     "type": "delay",
                     "z": "7e87c3e2.66c5fc",
                     "name": "",
                     "pauseType": "delay",
                     "timeout": "2850",
                     "timeoutUnits": "milliseconds",
                     "rate": "1",
                     "nbRateUnits": "1",
                     "rateUnits": "second",
                     "randomFirst": "1",
                     "randomLast": "5",
                     "randomUnits": "seconds",
                     "drop": false,
                     "x": 980,
                     "y": 220,
                     "wires": [
                         [
                             "4b9e4649.7a64b8"
                         ]
                     ]
                 },
                 {
                     "id": "9975679a.5841e8",
                     "type": "ioBroker out",
                     "z": "7e87c3e2.66c5fc",
                     "name": "",
                     "topic": "",
                     "ack": "false",
                     "autoCreate": "false",
                     "stateName": "",
                     "role": "",
                     "payloadType": "",
                     "readonly": "",
                     "stateUnit": "",
                     "stateMin": "",
                     "stateMax": "",
                     "x": 1440,
                     "y": 180,
                     "wires": []
                 },
                 {
                     "id": "336d9d4.74eb162",
                     "type": "switch",
                     "z": "7e87c3e2.66c5fc",
                     "name": "prevState open oder close",
                     "property": "prevState",
                     "propertyType": "flow",
                     "rules": [
                         {
                             "t": "eq",
                             "v": "open",
                             "vt": "str"
                         },
                         {
                             "t": "eq",
                             "v": "close",
                             "vt": "str"
                         }
                     ],
                     "checkall": "true",
                     "repair": false,
                     "outputs": 2,
                     "x": 710,
                     "y": 200,
                     "wires": [
                         [
                             "bf30a22.3e2196",
                             "3f345786.acf108"
                         ],
                         [
                             "c6eeaa6e.706d18",
                             "8a7cd4b5.269948"
                         ]
                     ]
                 },
                 {
                     "id": "620673ff.34e66c",
                     "type": "change",
                     "z": "7e87c3e2.66c5fc",
                     "name": "= true",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "true",
                             "tot": "bool"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 510,
                     "y": 200,
                     "wires": [
                         [
                             "336d9d4.74eb162"
                         ]
                     ]
                 },
                 {
                     "id": "3f345786.acf108",
                     "type": "delay",
                     "z": "7e87c3e2.66c5fc",
                     "name": "",
                     "pauseType": "delay",
                     "timeout": "3100",
                     "timeoutUnits": "milliseconds",
                     "rate": "1",
                     "nbRateUnits": "1",
                     "rateUnits": "second",
                     "randomFirst": "1",
                     "randomLast": "5",
                     "randomUnits": "seconds",
                     "drop": false,
                     "x": 980,
                     "y": 160,
                     "wires": [
                         [
                             "4b9e4649.7a64b8"
                         ]
                     ]
                 },
                 {
                     "id": "2652732c.5f215c",
                     "type": "change",
                     "z": "7e87c3e2.66c5fc",
                     "name": "",
                     "rules": [
                         {
                             "t": "change",
                             "p": "topic",
                             "pt": "msg",
                             "from": "(.*)\\/.*$",
                             "fromt": "re",
                             "to": "$1",
                             "tot": "str"
                         },
                         {
                             "t": "change",
                             "p": "topic",
                             "pt": "msg",
                             "from": "/",
                             "fromt": "str",
                             "to": ".",
                             "tot": "str"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 170,
                     "y": 160,
                     "wires": [
                         [
                             "ebcc8cd1.82d7d"
                         ]
                     ]
                 },
                 {
                     "id": "4b9e4649.7a64b8",
                     "type": "change",
                     "z": "7e87c3e2.66c5fc",
                     "name": "topic & \".Pause\"",
                     "rules": [
                         {
                             "t": "set",
                             "p": "topic",
                             "pt": "msg",
                             "to": "topic & \".Pause\"",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 1200,
                     "y": 180,
                     "wires": [
                         [
                             "9975679a.5841e8"
                         ]
                     ]
                 },
                 {
                     "id": "3255c528.de590a",
                     "type": "change",
                     "z": "7e87c3e2.66c5fc",
                     "name": "topic & \".Close\"",
                     "rules": [
                         {
                             "t": "set",
                             "p": "topic",
                             "pt": "msg",
                             "to": "topic & \".Close\"",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 1200,
                     "y": 80,
                     "wires": [
                         [
                             "9975679a.5841e8"
                         ]
                     ]
                 },
                 {
                     "id": "68ebda58.4eabe4",
                     "type": "change",
                     "z": "7e87c3e2.66c5fc",
                     "name": "topic & \".Open\"",
                     "rules": [
                         {
                             "t": "set",
                             "p": "topic",
                             "pt": "msg",
                             "to": "topic & \".Open\"",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 1200,
                     "y": 280,
                     "wires": [
                         [
                             "9975679a.5841e8"
                         ]
                     ]
                 },
                 {
                     "id": "f4e53c99.91238",
                     "type": "ioBroker in",
                     "z": "54b226bc.0793e8",
                     "name": "Raffstore Büro",
                     "topic": "shelly.0.SHSW-25#B8AB96#1.Shutter.state",
                     "payloadType": "value",
                     "onlyack": "",
                     "func": "rbe",
                     "gap": "",
                     "fireOnStart": "false",
                     "x": 410,
                     "y": 3400,
                     "wires": [
                         [
                             "7bd3c3c7.4bfd8c"
                         ]
                     ]
                 },
                 {
                     "id": "7bd3c3c7.4bfd8c",
                     "type": "trigger",
                     "z": "54b226bc.0793e8",
                     "name": "",
                     "op1": "",
                     "op2": "",
                     "op1type": "pay",
                     "op2type": "nul",
                     "duration": "5",
                     "extend": false,
                     "overrideDelay": false,
                     "units": "s",
                     "reset": "",
                     "bytopic": "all",
                     "topic": "topic",
                     "outputs": 1,
                     "x": 600,
                     "y": 3400,
                     "wires": [
                         [
                             "986fd6e5.d54658"
                         ]
                     ],
                     "info": "Blockiert erneutes Auslesen innerhalb von 5s."
                 },
                 {
                     "id": "986fd6e5.d54658",
                     "type": "subflow:7e87c3e2.66c5fc",
                     "z": "54b226bc.0793e8",
                     "name": "Raffstore Lamellen",
                     "env": [],
                     "x": 790,
                     "y": 3400,
                     "wires": []
                 },
                 {
                     "id": "b71a1586.1f4138",
                     "type": "ioBroker in",
                     "z": "54b226bc.0793e8",
                     "name": "Raffstore Eingang",
                     "topic": "shelly.0.SHSW-25#B8XYZ9#1.Shutter.state",
                     "payloadType": "value",
                     "onlyack": "",
                     "func": "rbe",
                     "gap": "",
                     "fireOnStart": "false",
                     "x": 390,
                     "y": 3460,
                     "wires": [
                         [
                             "fda80cf2.f9034"
                         ]
                     ]
                 },
                 {
                     "id": "fda80cf2.f9034",
                     "type": "trigger",
                     "z": "54b226bc.0793e8",
                     "name": "",
                     "op1": "",
                     "op2": "",
                     "op1type": "pay",
                     "op2type": "nul",
                     "duration": "5",
                     "extend": false,
                     "overrideDelay": false,
                     "units": "s",
                     "reset": "",
                     "bytopic": "all",
                     "topic": "topic",
                     "outputs": 1,
                     "x": 600,
                     "y": 3460,
                     "wires": [
                         [
                             "a685c1d8.c975d"
                         ]
                     ],
                     "info": "Blockiert erneutes Auslesen innerhalb von 5s."
                 },
                 {
                     "id": "a685c1d8.c975d",
                     "type": "subflow:7e87c3e2.66c5fc",
                     "z": "54b226bc.0793e8",
                     "name": "Raffstore Lamellen",
                     "env": [],
                     "x": 790,
                     "y": 3460,
                     "wires": []
                 }
              ]
              

              Wichtig ist das halt vorher eine Initialisierung mit open oder close stattgefunden hat.

              Ach und hab mir gerade Dein Blockly angeschaut - falls der Button und nicht der state triggern soll, dann muss man den Anfang halt noch umstellen. Das blicke ich bei den Blocklies nicht so ganz. Für mich sind das erst mal 2 unabhängige Trigger - einmal der Button Datenpunkt und einmal der State Datenpunkt des Shelly Adapters.

              Bei den iobroker-IN Nodes zu den Shelly Datenpunkten - diese ggf. umstellen, dass sie nur Nachrichten durchlassen, wenn sich ein Wert ändert. Shellies sind ja in der Regel geschwätzig und habe keine Ahnung wie der Shelly Adapter das handhabt.

              L 1 Reply Last reply Reply Quote 0
              • L
                LaBamba @mickym last edited by LaBamba

                @mickym
                Ich glaube ich muss erstmal eine Verständnisfrage klären.

                1. Rolladen (Fährt nur auf und ab)

                Sprachsteuerung:
                Das habe ich hinbekommen diesen über NODE RED mit einer Prozentangabe zu steuern. Also kein Skript notwendig. Funktioniert top seit 1 Jahr!

                Die Rückantwort habe ich hier über mqtt direkt auf iobroker-vis (Handy oder Tablettsanzeige). Also eine Anzeige zwischen 0-100% für den Öffnungsgrad des Rollo. Also nicht mal node-red notwendig. Funktioniert top!

                Handsteuerung:
                Jedoch habe ich auch ein Tablet oder ein Handy. Hier habe ich mir zur Steuerung Buttons angelegt. Hinter diesen Buttons liegt ein Skript das ausgelöst wird.Funktioniert top seit 1 Jahr!
                Die Rückantwort habe ich auch wieder über mqtt als Anzeige zwischen 0-100%.

                1. Raffstore
                  Dieser Fährt nicht nur auf und ab (könnte über % in node red geregelt werden/ Teil 1 des Skript) sonder hat Lamellen die in der Position geändert werden können (-90° bis 90°). Dies ist aber nur über die genaue Fahrzeit möglich (Teil 2 meines Skriptes). EIne andere Möglichkeit habe ich nicht gefunden. Das Skript schaut da etwas exotisch aus, da ich immer erst zum gleichen Ausgangspunkt für den Drehwinkel fahre.
                  D.h. Fährt der Raffstore in Position von oben nach unten, ist der Winkel der Lammelen 90°.
                  Fährt der Raffstore von unten nach oben ist, ist der Winkel der Lammelen -90°C.
                  Folglich macht der Raffstore dann erst eine Drehung auf 90° und anschliesend wird der Winkel über die Fahrzeit eingestellt.
                  Habe schon ein paar Wochen rumgetüftelt bis es sehr zuverlässig lief.

                Handsteuerung:
                Genau wie bei den Rolläden liegt ein Skript hinter den Buttons das ausgelöst wird. Funktioniert top seit 1 Jahr!
                Die Rückantwort habe ich auch wieder über mqtt als Anzeige zwischen 0-100%. Jedoch ist dies nur die Höhe des Raffstore. Denn Drehwinkel habe ich leider nicht geschafft mir ausgeben zu lassen. Wüsste gerade auch nicht wie.

                Sprachsteuerung:
                Hieran arbeite ich ja gerade. Die Lösung über Skripte finde ich auch nicht so toll. Problem wird sein. Das für jedes Skript ein Sprachbefehl notwendig ist. Bei ähnlichen Sprachbefehlen nervt Alexa schon rum.
                Eine Lösung über einen Sprachbefehl, einer Prozentangabe (höhe des Raffstore) und einer Zeiten Angabe (für den Drehwinkel) wäre schon wirklich nice.
                Jedoch habe ich keinen Plan wie das in NODE RED gehen könnte.
                Ich schaue mir aber mal an, was du mir da alles geschickt hast. Schon mal danke dafür.

                Allgemein: Für das Skript war es für mich sehr einfach den http Befehl für die Position, auf und ab zu verwenden. Läuft auch sehr zuverlässig!
                Jedoch verwende ich grundsätzlich mqtt für die Shellys.

                mickym 1 Reply Last reply Reply Quote 0
                • L
                  LaBamba last edited by LaBamba

                  https://forum.iobroker.net/assets/uploads/files/1642116367492-screen.png

                  Ich bin echt kein Script Experte und nehme gerne Verbesserungsvorschläge an. Ich habe leider nicht verstanden wie du dies im Script ändern würdest.

                  Bei dem Timer gehe ich mal davon aus, dass das nur ein Schutz ist, dass innerhalb der 5 Sekunden, in den sich die Lamellen ausrichten, nicht erneut getriggert wird. Genau so ist das gemeint. Jedoch schalte ich hier ja nichts mehr aus.

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

                    @labamba Also grundsätzlich ist das alles was ich sage, nicht als Kritik gemeint und wenn ich vermeintliche Verbesserungsvorschläge oder Alternativen vorschlage, habe ich vielleicht all Deinen Erfahrungsschatz nicht berücksichtigt.

                    Deine ursprüngliche Frage was ja wie Du NodeRed mit den Blocklies verbinden kannst und das habe ich ja am Anfang beantwortet und damit können wir es ja bewenden lassen.

                    Vielleicht habe ich halt nur ein Verständnisproblem oder keine Erklärung?

                    Also wenn ich sowas schrieb, wie:

                    Im Prinzip ist ja für ein Gerät die URL gleich und nur der Prozentwert ist halt anders. Deswegen verstehe ich auch nicht, warum man da zig Buttons macht, anstelle einfach eine Prozentzahl in einen Datenpunkt zu schreiben bzw. auch bei Sprachbefehl halt - stelle auf x %

                    Dann verstehe ich es halt nicht.

                    Wie gesagt, Du musst da nichts ändern oder gar als Angriff auf Deine Lösung sehen. Wenn Du zu Deiner Handsteuerung schreibst:

                    Handsteuerung:

                    Jedoch habe ich auch ein Tablet oder ein Handy. Hier habe ich mir zur Steuerung Buttons angelegt. Hinter diesen Buttons liegt ein Skript das ausgelöst wird.Funktioniert top seit 1 Jahr!

                    Die Rückantwort habe ich auch wieder über mqtt als Anzeige zwischen 0-100%.

                    dann meinte ich ja - ist doch gut, wenn Du aus Gründen der Bedienung hier Button nimmst, aber hätte man hinter diese Buttons nicht einfach Prozentzahlen in einen Datenpunkt schreiben können und das dann auswerten, anstelle für jeden Button in Deiner VIS einen eigenen Datenpunkt zu machen? Gibt ja vielleicht Gründe, die ich nicht verstehe.

                    Nun was ich auch nicht verstanden habe, wenn Du schreibst:

                    Allgemein: Für das Skript war es für mich sehr einfach den http Befehl für die Position, auf und ab zu verwenden. Läuft auch sehr zuverlässig!

                    Jedoch verwende ich grundsätzlich mqtt für die Shellys.

                    Liegt das generell daran, dass Du keine Kommandos über mqtt an Deine Shellies verschickst. Wie gesagt ist kein Problem wenn Du das über HTTP zu machen.

                    Über mqtt wäre es halt:

                    81b8902c-5093-43bf-8af8-32715278d70a-image.png

                    mit stop,close,open über das Topic:

                    shellies/shellyswitch25-<deviceid>/roller/0/command
                    

                    bzw.

                    shellies/shellyswitch25-<deviceid>/roller/0/command/pos
                    

                    gegangen - aber wie gesagt, es gibt mehrere Wege nach Rom und man kann das auch über http machen, dafür gibt es ja diese API.


                    So grundsätzlich gibt es für das Problem des Drehwinkels keine fertige Lösung, sondern ist ja gut, wie Du das mit Deinem Skript gelöst hast und ich habe ja Dein Skript nur in Node Red abgebildet (weil es Dich ja interessiert hat - ansonsten kannst Du ja wie gesagt über die Buttons einfach Deine Blocklies triggern, wie ursprünglich geplant).
                    Im Prinzip ist es - und das kann ich dann zum 2. Teil sagen - völlig egal, ob Du per Hand oder Sprachsteuerung Dein Raffstore steuerst, denn das Script wird ja durch den stop Status getriggert, um dann die Lamellen durch ein zeitliches Fahren in die Gegenrichtung die Lamellen auszurichten. Das habe ich schon verstanden und soweit auch mit dem Flow 1:1 umgesetzt - bis auf die Abprüfung eines Buttons. Das lässt sich, denke ich, auch nicht anders lösen.

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

                      @labamba sagte in Node Red und Blockly Scripte:

                      https://forum.iobroker.net/assets/uploads/files/1642116367492-screen.png

                      Ich bin echt kein Script Experte und nehme gerne Verbesserungsvorschläge an. Ich habe leider nicht verstanden wie du dies im Script ändern würdest.

                      Bei dem Timer gehe ich mal davon aus, dass das nur ein Schutz ist, dass innerhalb der 5 Sekunden, in den sich die Lamellen ausrichten, nicht erneut getriggert wird. Genau so ist das gemeint. Jedoch schalte ich hier ja nichts mehr aus.

                      Nun die erste Bemerkung zielte nur darauf, dass man das im NodeRed mit dem vorigen Wert über eine Flow-Variable lösen muss, weil die iobroker-IN Nodes hier nicht die gleichen Informationen zu einem Objekt rausrücken, wie der Trigger in einem Blockly.

                      Die zweite Bemerkung - insbesondere nachdem Du bestätigt hast, dass es nur zum Schutz dienen soll, dass während der Ausrichtung der Lamellen durch deren Bewegung keine neuen Trigger entstehen sollen, warum Du hier einen Button noch abfrägst. Im Prinzip wäre es doch ausreichend, wenn man einfach in der Zeit alle Trigger in der Zeit der Lamellenausrichtung jedes weitere Triggern unterbinden würde - da spielt doch der Button keine Rolle mehr?
                      So habe ich es nun zumindest in dem NR Flow umgesetzt.

                      Sprich ich verstehe einfach nicht, warum man den Button in dem Skript überhaupt braucht. Langt es nicht, dass das Skript einfach nicht ausgeführt wird, solange der Timer timeout aktiv ist (also die 5 sek.)?

                      In allen Fällen - egal ob mit Hand oder Sprachsteuerung - ist es doch so, dass mit dem stop im Status des Stores die Ausrichtung - sprich das kurze Anfahren in die Gegenrichtung eingeleitet wird.

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

                        @labamba sagte in Node Red und Blockly Scripte:

                        Sprachsteuerung:
                        Hieran arbeite ich ja gerade. Die Lösung über Skripte finde ich auch nicht so toll. Problem wird sein. Das für jedes Skript ein Sprachbefehl notwendig ist. Bei ähnlichen Sprachbefehlen nervt Alexa schon rum.
                        Eine Lösung über einen Sprachbefehl, einer Prozentangabe (höhe des Raffstore) und einer Zeiten Angabe (für den Drehwinkel) wäre schon wirklich nice.
                        Jedoch habe ich keinen Plan wie das in NODE RED gehen könnte

                        Nun verstehe ich auch nicht so ganz. Über die Prozentzahl kannst Du doch genauso wie bei den Rollläden die Öffnung bestimmen. Das Ausrichten erfolgt doch immer dann automatisch, wenn der state auf stop triggert?

                        OK wenn Du verschiedene Drehwinkel bei geschlossenem Raffstore erreichen willst, dann wird es natürlich schwierig und Du brauchst verschiedene Kommandos.
                        Aber egal wie, das mit der zeitlichen Steuerung lässt sich in NodeRed nahezu 1:1 wie in den Blocklies umsetzen.

                        1 Reply Last reply Reply Quote 0
                        • L
                          LaBamba @mickym last edited by LaBamba

                          @mickym

                          Leider hat es so nicht funktioniert. Das Skript wird nicht ausgelöst.
                          Bildschirmfoto 2022-01-14 um 21.44.31.png

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

                            @labamba Ich gehe mal von der 1. Version aus, in dem Du mit true Deinen Taster auslöst. Auf dem Screenshot ist ja noch nicht deployed. Hast Du die Change Node auch wie unten konfiguriert. Sonst musst halt mit Debug Nodes kontrollieren. Kommt aus der Alexa Node überhaupt was raus?

                            L 1 Reply Last reply Reply Quote 0
                            • L
                              LaBamba @mickym last edited by

                              @mickym said in Node Red und Blockly Scripte:

                              @labamba Ich gehe mal von der 1. Version aus, in dem Du mit true Deinen Taster auslöst. Auf dem Screenshot ist ja noch nicht deployed. Hast Du die Change Node auch wie unten konfiguriert. Sonst musst halt mit Debug Nodes kontrollieren. Kommt aus der Alexa Node überhaupt was raus?

                              Ja, Version 1!
                              Ich habe jetzt mal den Degub eingebaut. Dieser funktioniert grundsätzlich.
                              Bildschirmfoto 2022-01-14 um 21.58.28.png
                              Bekomme nur Büroverschattung reagiert gerade nicht!

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

                                @labamba Na dann musst Du auf der Blockly-Seite suchen - zumindest zeigt die iobroker out Node ja auch, dass was geschrieben wurde. Sollte auch am Zeitstempel Deines Button Datenpunktes sehen.

                                Für Buttons solltest Du auch generell auf aktualisiert und nicht auf geändert triggern.

                                dbd7c60f-60d6-4eda-8678-775abcd73f69-image.png

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

                                  @labamba sagte in Node Red und Blockly Scripte:

                                  @mickym said in Node Red und Blockly Scripte:

                                  @labamba Ich gehe mal von der 1. Version aus, in dem Du mit true Deinen Taster auslöst. Auf dem Screenshot ist ja noch nicht deployed. Hast Du die Change Node auch wie unten konfiguriert. Sonst musst halt mit Debug Nodes kontrollieren. Kommt aus der Alexa Node überhaupt was raus?

                                  Ja, Version 1!
                                  Ich habe jetzt mal den Degub eingebaut. Dieser funktioniert grundsätzlich.
                                  Bildschirmfoto 2022-01-14 um 21.58.28.png
                                  Bekomme nur Büroverschattung reagiert gerade nicht!

                                  Eventuell auch mal das komplette Nachrichtenobjekt aus der Alexa Node analysieren, um zu sehen, warum die Alexa Node - 2 mal triggert.

                                  1 Reply Last reply Reply Quote 0
                                  • L
                                    LaBamba @mickym last edited by

                                    @mickym said in Node Red und Blockly Scripte:

                                    @labamba Na dann musst Du auf der Blockly-Seite suchen - zumindest zeigt die iobroker out Node ja auch, dass was geschrieben wurde. Sollte auch am Zeitstempel Deines Button Datenpunktes sehen.

                                    Für Buttons solltest Du auch generell auf aktualisiert und nicht auf geändert triggern.

                                    dbd7c60f-60d6-4eda-8678-775abcd73f69-image.png

                                    Ich habe es jetzt so wie du vorgeschlagen hast angepasst und mir schnell einen Schalter zum testen gebaut. Jetzt spinnt der Raffstore beim Test rum.

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

                                      @labamba Nun falls das Blockly nun spinnt (was auch immer das bedeutet), weil 2 mal true kommt und es doppelt getriggert wird, dann kannst Du das zwar wieder zurück ändern, aber dann hatte quasi Dein Datenpunkt einen falschen Initialwert, weil wurde geändert ja nur dann triggert wenn false auf true geschaltet wird.
                                      Grundsätzlich triggert Dein Flow ja nun.
                                      Wie gesagt untersuche noch warum die Alexa Node 2 mal triggert, wenn es keinen Unterschied zwischen den beiden Nachrichten gibt , dann muss man halt wieder zeitlich entprellen. Aber letztlich musst Du untersuchen, warum er spinnt. Kannst ja manuell den DP - sprich den Button 2 mal betätigen, ob Du damit das gleiche Verhalten hast und ob es mit einmal drücken besser ist.

                                      L 1 Reply Last reply Reply Quote 0
                                      • L
                                        LaBamba @mickym last edited by

                                        @mickym said in Node Red und Blockly Scripte:

                                        @labamba Nun falls das Blockly nun spinnt (was auch immer das bedeutet)

                                        Das heisst er fährt etwas runter, dreht sich, wieder ein stück hoch und wiederholt das mehrfach.

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

                                          @labamba Nun ich war ja der Meinung, dass das mit Deinem Timer abgefangen wird. Nun wie gesagt - wenn Du es wie ursprünglich auf geändert lässt, dann war entweder der Initialwert nicht in Ordnung, aber man kann den Flow natürlich auch so basteln, dass nur eine Nachricht kommt und grundsätzlich einmal das Gegenteil von dem gesetzt wird, als im Moment gesetzt ist.

                                          Wie gesagt, dann ändern das Blockly halt wieder auf geändert und dann muss halt im Moment der Datenpunkt auf false stehen, bevor Du mit NodeRed auf true setzt.

                                          Wie gesagt kann man alles machen - nur im Moment sieht es für mich so aus, dass sich anfangs nichts getan hat, weil sich der Datenpunkt nicht geändert hat, aber auch nicht mit mehrfachen Triggern umgehen kann, weil sonst das Raffrolo spinnt.

                                          Jedenfalls triggert der NodeRed Flow richtig - nur wenn sich nichts tut und Du das Blockly wie am Anfang umstellst, dann muss sich halt auch der Inhalt des Datenpunktes ändert.

                                          Ich kann Dir zwar einen Flow basteln, der immer das Gegenteil in den Datenpunkt setzt und das zeitlich entkoppelt aber sauber ist das halt alles nicht.

                                          Ich weiß auch nicht, wie die Alexa Node den aktuellen Status ermittelt, vielleicht hast Du dadurch auch eine Endlosschleife.

                                          Wie gesagt im Prinzip funktioniert das Deines Blocklies so, aber das Gesamtkonstrukt oder die Gesamtlogik passt nicht.

                                          1 Reply Last reply Reply Quote 0
                                          • L
                                            LaBamba @mickym last edited by

                                            @mickym said in Node Red und Blockly Scripte:

                                            @labamba Also grundsätzlich ist das alles was ich sage, nicht als Kritik gemeint und wenn ich vermeintliche Verbesserungsvorschläge oder Alternativen vorschlage, habe ich vielleicht all Deinen Erfahrungsschatz nicht berücksichtigt.

                                            Deine ursprüngliche Frage was ja wie Du NodeRed mit den Blocklies verbinden kannst und das habe ich ja am Anfang beantwortet und damit können wir es ja bewenden lassen.

                                            Vielleicht habe ich halt nur ein Verständnisproblem oder keine Erklärung?

                                            Also wenn ich sowas schrieb, wie:

                                            Im Prinzip ist ja für ein Gerät die URL gleich und nur der Prozentwert ist halt anders. Deswegen verstehe ich auch nicht, warum man da zig Buttons macht, anstelle einfach eine Prozentzahl in einen Datenpunkt zu schreiben bzw. auch bei Sprachbefehl halt - stelle auf x %

                                            Dann verstehe ich es halt nicht.

                                            Wie gesagt, Du musst da nichts ändern oder gar als Angriff auf Deine Lösung sehen. Wenn Du zu Deiner Handsteuerung schreibst:

                                            Handsteuerung:

                                            Jedoch habe ich auch ein Tablet oder ein Handy. Hier habe ich mir zur Steuerung Buttons angelegt. Hinter diesen Buttons liegt ein Skript das ausgelöst wird.Funktioniert top seit 1 Jahr!

                                            Die Rückantwort habe ich auch wieder über mqtt als Anzeige zwischen 0-100%.

                                            dann meinte ich ja - ist doch gut, wenn Du aus Gründen der Bedienung hier Button nimmst, aber hätte man hinter diese Buttons nicht einfach Prozentzahlen in einen Datenpunkt schreiben können und das dann auswerten, anstelle für jeden Button in Deiner VIS einen eigenen Datenpunkt zu machen? Gibt ja vielleicht Gründe, die ich nicht verstehe.

                                            Nun was ich auch nicht verstanden habe, wenn Du schreibst:

                                            Allgemein: Für das Skript war es für mich sehr einfach den http Befehl für die Position, auf und ab zu verwenden. Läuft auch sehr zuverlässig!

                                            Jedoch verwende ich grundsätzlich mqtt für die Shellys.

                                            Liegt das generell daran, dass Du keine Kommandos über mqtt an Deine Shellies verschickst. Wie gesagt ist kein Problem wenn Du das über HTTP zu machen.

                                            Über mqtt wäre es halt:

                                            81b8902c-5093-43bf-8af8-32715278d70a-image.png

                                            mit stop,close,open über das Topic:

                                            shellies/shellyswitch25-<deviceid>/roller/0/command
                                            

                                            bzw.

                                            shellies/shellyswitch25-<deviceid>/roller/0/command/pos
                                            

                                            gegangen - aber wie gesagt, es gibt mehrere Wege nach Rom und man kann das auch über http machen, dafür gibt es ja diese API.


                                            So grundsätzlich gibt es für das Problem des Drehwinkels keine fertige Lösung, sondern ist ja gut, wie Du das mit Deinem Skript gelöst hast und ich habe ja Dein Skript nur in Node Red abgebildet (weil es Dich ja interessiert hat - ansonsten kannst Du ja wie gesagt über die Buttons einfach Deine Blocklies triggern, wie ursprünglich geplant).
                                            Im Prinzip ist es - und das kann ich dann zum 2. Teil sagen - völlig egal, ob Du per Hand oder Sprachsteuerung Dein Raffstore steuerst, denn das Script wird ja durch den stop Status getriggert, um dann die Lamellen durch ein zeitliches Fahren in die Gegenrichtung die Lamellen auszurichten. Das habe ich schon verstanden und soweit auch mit dem Flow 1:1 umgesetzt - bis auf die Abprüfung eines Buttons. Das lässt sich, denke ich, auch nicht anders lösen.

                                            Ich sehe es ja nicht als Angriff! Finde es sogar toll das du mir helfen willst.
                                            Ich werde mich mal in deine Vorschläge bzgl. Node-RED weiter einarbeiten.
                                            Ich glaube meine Lösung mit dem Auslösen des Scriptes ist nicht gerade perfekt.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            2
                                            57
                                            2927
                                            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