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 Programmabschnitte aktivieren/deaktivieren

    NEWS

    • [erledigt] 15. 05. Wartungsarbeiten am ioBroker Forum

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Node-Red Programmabschnitte aktivieren/deaktivieren

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

      Hallo, liebe Community!
      Normalerweise programmiere ich Websites mit PHP und JavaScript und programmiere Arduinos. Aber bei NodeRed komme ich mit mit der function-Node nicht so richtig klar, um das damit umzusetzen.
      Das Problem ist, dass ich im Node-Red-Dashboard einen Schalter habe, mit dem ich steuern möchte, ob Alexa mich warnt oder nicht warnt, wenn meine Pflanze Wasser braucht. Funktioniert aber nicht.

      Ich habe das so gemacht, dass das Signal von dem Schalter in eine join-Node geht, welche den Schalter eigentlich nur als Trigger benutzen soll. Gleichzeitg geht in die join-Node ein Signal vom Pflanzensensor.
      Hab aber ein Screenshot von meinem Programm angefügt.

      Das Skript arbeitet aber natürlich nur, wenn man gerade erst den Schalter aktiviert hat, oder 2 mal ein Signal vom Pflanzensensor kommt.
      Warum das so ist, ist mir klar: weil der Schalter vom Node-Red-Dashboard seinen Status nur dann ausgibt, wenn er betätigt wird.
      Gibt es irgendeine andere Lösung, um den Programmabschnitt, in dem Alexa angesprochen wird zu deaktivieren?

      Danke für alle Antworten!

      Mein Programm

      R 1 Reply Last reply Reply Quote 0
      • R
        rewenode @Huffaaa last edited by

        @Huffaaa
        Bin mir nicht sicher, ob ich dein Problem komplett verstanden habe.
        Du willst also, dass das Signal vom Pflanzensensor nur weitergereicht wird, wenn der Schalter "Alexa warnen lassen" gesetzt ist?
        In dem Fall ist der Join-node sicher nicht die beste Wahl. Da solltest du

        1. mit dem Schalter eine Context-Variable Setzen
        2. mit dieser dann filtern z.B. mit einem function-node

        Beispiel flow


        [
        {
        "id": "3fba4b65.667e1c",
        "type": "ui_switch",
        "z": "6a5f248f.c43fe4",
        "name": "",
        "label": "Alexa warnen lassen",
        "tooltip": "",
        "group": "e5a09358.c99e4",
        "order": 4,
        "width": 0,
        "height": 0,
        "passthru": true,
        "decouple": "false",
        "topic": "AlexaWarnSwitch",
        "style": "",
        "onvalue": "true",
        "onvalueType": "bool",
        "onicon": "",
        "oncolor": "",
        "offvalue": "false",
        "offvalueType": "bool",
        "officon": "",
        "offcolor": "",
        "x": 280,
        "y": 700,
        "wires": [
        [
        "5161df40.dd73"
        ]
        ]
        },
        {
        "id": "5161df40.dd73",
        "type": "function",
        "z": "6a5f248f.c43fe4",
        "name": "Gate für Sensor",
        "func": "// init/set context variable\nif (typeof context.get("AlexaWarnSwitch") === "undefined") context.set("AlexaWarnSwitch","0");\n\n//if Switch, set context variable \nif (msg.topic == "AlexaWarnSwitch") {\n context.set("AlexaWarnSwitch", msg.payload);\n node.status({fill: (msg.payload === true) ? "green" : "red",\n shape:"dot", \n text: (msg.payload === true) ? "Warnung erlaubt" : "keine Warnung"\n })\n} else { // msg comes from sensor\n if (context.get("AlexaWarnSwitch")) node.send(msg); \n}\n",
        "outputs": 1,
        "noerr": 0,
        "x": 540,
        "y": 600,
        "wires": [
        [
        "b425223f.3fa538"
        ]
        ]
        },
        {
        "id": "48111ed4.b07f",
        "type": "comment",
        "z": "6a5f248f.c43fe4",
        "name": "topic="AlexaWarnSwitch"",
        "info": "",
        "x": 290,
        "y": 660,
        "wires": []
        },
        {
        "id": "b425223f.3fa538",
        "type": "debug",
        "z": "6a5f248f.c43fe4",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "x": 740,
        "y": 600,
        "wires": []
        },
        {
        "id": "39119b95.d05fbc",
        "type": "inject",
        "z": "6a5f248f.c43fe4",
        "name": "",
        "topic": "",
        "payload": "Sensorwert",
        "payloadType": "str",
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "x": 250,
        "y": 580,
        "wires": [
        [
        "5161df40.dd73"
        ]
        ]
        },
        {
        "id": "25b5104b.2bddf",
        "type": "comment",
        "z": "6a5f248f.c43fe4",
        "name": "Simuliert den Sensorwert",
        "info": "",
        "x": 290,
        "y": 540,
        "wires": []
        },
        {
        "id": "e5a09358.c99e4",
        "type": "ui_group",
        "z": "6a5f248f.c43fe4",
        "name": "Click",
        "tab": "7341130f.164e84",
        "order": 1,
        "disp": true,
        "width": "5"
        },
        {
        "id": "7341130f.164e84",
        "type": "ui_tab",
        "z": "6a5f248f.c43fe4",
        "name": "Home",
        "icon": "link",
        "order": 1
        }
        ]

        Voila_Capture 2019-06-11_01-41-03_AM.png

        Falls du das Schaltersignal innerhalb des Flow noch in anderen nodes benötigst, kannst du statt der context- eine flow Variable benutzen. Die Context Variable ist nur in dem function-node sichtbar, in dem sie angelegt wurde.
        Das ist natürlich nur eine von vielen Möglichkeiten

        Gruß

        R 1 Reply Last reply Reply Quote 0
        • H
          Huffaaa last edited by

          Vielen Dank für die Hilfe, das ist genau das, was ich gebraucht habe.
          Da werde ich jetzt aber auch erstmal das Skript studieren, um zu verstehen, wie es funktioniert.

          MfG

          1 Reply Last reply Reply Quote 0
          • R
            rewenode @rewenode last edited by

            @rewenode sagte in Node-Red Programmabschnitte aktivieren/deaktivieren:

            Beispiel flow

            Was immer da schief lief, der Export läßt sich nicht importieren.
            Nun sollte es gehen.

            [
                {
                    "id": "3fba4b65.667e1c",
                    "type": "ui_switch",
                    "z": "6a5f248f.c43fe4",
                    "name": "",
                    "label": "Alexa warnen lassen",
                    "tooltip": "",
                    "group": "e5a09358.c99e4",
                    "order": 4,
                    "width": 0,
                    "height": 0,
                    "passthru": true,
                    "decouple": "false",
                    "topic": "AlexaWarnSwitch",
                    "style": "",
                    "onvalue": "true",
                    "onvalueType": "bool",
                    "onicon": "",
                    "oncolor": "",
                    "offvalue": "false",
                    "offvalueType": "bool",
                    "officon": "",
                    "offcolor": "",
                    "x": 280,
                    "y": 700,
                    "wires": [
                        [
                            "5161df40.dd73"
                        ]
                    ]
                },
                {
                    "id": "5161df40.dd73",
                    "type": "function",
                    "z": "6a5f248f.c43fe4",
                    "name": "Gate für Sensor",
                    "func": "// init/set context variable\nif (typeof context.get(\"AlexaWarnSwitch\") === \"undefined\") context.set(\"AlexaWarnSwitch\",\"0\");\n\n//if Switch, set context variable \nif (msg.topic == \"AlexaWarnSwitch\") {\n    context.set(\"AlexaWarnSwitch\", msg.payload);\n    node.status({fill: (msg.payload === true) ? \"green\" : \"red\",\n                shape:\"dot\", \n                text: (msg.payload === true) ? \"Warnung erlaubt\" : \"keine Warnung\"\n                })\n} else {  // msg comes from sensor\n    if (context.get(\"AlexaWarnSwitch\")) node.send(msg); \n}\n",
                    "outputs": 1,
                    "noerr": 0,
                    "x": 540,
                    "y": 600,
                    "wires": [
                        [
                            "b425223f.3fa538"
                        ]
                    ]
                },
                {
                    "id": "48111ed4.b07f",
                    "type": "comment",
                    "z": "6a5f248f.c43fe4",
                    "name": "topic=\"AlexaWarnSwitch\"",
                    "info": "",
                    "x": 290,
                    "y": 660,
                    "wires": []
                },
                {
                    "id": "b425223f.3fa538",
                    "type": "debug",
                    "z": "6a5f248f.c43fe4",
                    "name": "",
                    "active": true,
                    "tosidebar": true,
                    "console": false,
                    "tostatus": false,
                    "complete": "true",
                    "targetType": "full",
                    "x": 740,
                    "y": 600,
                    "wires": []
                },
                {
                    "id": "39119b95.d05fbc",
                    "type": "inject",
                    "z": "6a5f248f.c43fe4",
                    "name": "",
                    "topic": "",
                    "payload": "Sensorwert",
                    "payloadType": "str",
                    "repeat": "",
                    "crontab": "",
                    "once": false,
                    "onceDelay": 0.1,
                    "x": 250,
                    "y": 580,
                    "wires": [
                        [
                            "5161df40.dd73"
                        ]
                    ]
                },
                {
                    "id": "25b5104b.2bddf",
                    "type": "comment",
                    "z": "6a5f248f.c43fe4",
                    "name": "Simuliert den Sensorwert",
                    "info": "",
                    "x": 290,
                    "y": 540,
                    "wires": []
                },
                {
                    "id": "e5a09358.c99e4",
                    "type": "ui_group",
                    "z": "6a5f248f.c43fe4",
                    "name": "Click",
                    "tab": "7341130f.164e84",
                    "order": 1,
                    "disp": true,
                    "width": "5"
                },
                {
                    "id": "7341130f.164e84",
                    "type": "ui_tab",
                    "z": "6a5f248f.c43fe4",
                    "name": "Home",
                    "icon": "link",
                    "order": 1
                }
            ]
            

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

            Support us

            ioBroker
            Community Adapters
            Donate

            537
            Online

            31.6k
            Users

            79.5k
            Topics

            1.3m
            Posts

            2
            4
            3423
            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