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. Inject Node und externer Taster

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Inject Node und externer Taster

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

      Hallo,
      ich versuche einen Flow mittels externem Taster ein und auszuschalten. Der Flow wird mehrmals am Tag mit einer Inject-Node gestartet (Intervall) jedoch würde ich gerne den Flow über den Taster an der Wand de/aktivieren.
      Ich habe schon einiges versucht, Function Noder (if - else) und auch die Combine - If Node, aber irgendwie komm ich nicht weiter.

      Ist es möglich mit einer Function Node bei Bedarf den Flow von außen Flow zu stoppen? Zur Zeit ist das mit einer "und" Logik gelöst.

      [
      {
      "id": "cb94dae72b52787d",
      "type": "tab",
      "label": "Flow 1",
      "disabled": false,
      "info": "",
      "env": []
      },
      {
      "id": "b3bab377eeb5196a",
      "type": "knxUltimate",
      "z": "cb94dae72b52787d",
      "server": "46bc7c174d9cbb62",
      "topic": "23/1/0",
      "outputtopic": "1",
      "dpt": "1.001",
      "initialread": 0,
      "notifyreadrequest": false,
      "notifyresponse": false,
      "notifywrite": true,
      "notifyreadrequestalsorespondtobus": false,
      "notifyreadrequestalsorespondtobusdefaultvalueifno tinitialized": "0",
      "listenallga": false,
      "name": "Beschattung ein/aus",
      "outputtype": "write",
      "outputRBE": false,
      "inputRBE": false,
      "formatmultiplyvalue": 1,
      "formatnegativevalue": "leave",
      "formatdecimalsvalue": 999,
      "passthrough": "no",
      "x": 260,
      "y": 280,
      "wires": [
      [
      "9f797de0d49f4172",
      "5b81a727abd404f8",
      "28f2e05ff898b2ec"
      ]
      ]
      },
      {
      "id": "9f797de0d49f4172",
      "type": "debug",
      "z": "cb94dae72b52787d",
      "name": "",
      "active": true,
      "tosidebar": true,
      "console": false,
      "tostatus": false,
      "complete": "false",
      "statusVal": "",
      "statusType": "auto",
      "x": 570,
      "y": 220,
      "wires": []
      },
      {
      "id": "5b81a727abd404f8",
      "type": "knxUltimate",
      "z": "cb94dae72b52787d",
      "server": "46bc7c174d9cbb62",
      "topic": "23/1/1",
      "outputtopic": "",
      "dpt": "1.001",
      "initialread": 0,
      "notifyreadrequest": false,
      "notifyresponse": false,
      "notifywrite": true,
      "notifyreadrequestalsorespondtobus": false,
      "notifyreadrequestalsorespondtobusdefaultvalueifno tinitialized": "0",
      "listenallga": false,
      "name": "Beschattung status",
      "outputtype": "write",
      "outputRBE": false,
      "inputRBE": false,
      "formatmultiplyvalue": 1,
      "formatnegativevalue": "leave",
      "formatdecimalsvalue": 999,
      "passthrough": "no",
      "x": 590,
      "y": 280,
      "wires": [
      []
      ]
      },
      {
      "id": "53b3045781867257",
      "type": "time-inject",
      "z": "cb94dae72b52787d",
      "name": "Inject",
      "nameInt": "Sonnenaufgang Ende - Sonnenuntergang B... =... ↻30min",
      "positionConfig": "d836509a.67bc4",
      "props": [
      {
      "p": "",
      "pt": "msgPayload",
      "v": "true",
      "vt": "bool",
      "o": "",
      "oT": "none",
      "oM": "60000",
      "f": 0,
      "fS": 0,
      "fT": "Millisekunden UNIX-Zeit",
      "fI": "0",
      "next": true,
      "days": "*",
      "months": "*",
      "onlyOddDays": false,
      "onlyEvenDays": false,
      "onlyOddWeeks": false,
      "onlyEvenWeeks": false
      },
      {
      "p": "",
      "pt": "msgTopic",
      "v": "2",
      "vt": "str",
      "o": "",
      "oT": "none",
      "oM": "60000",
      "f": 0,
      "fS": 0,
      "fT": "Millisekunden UNIX-Zeit",
      "fI": "0",
      "next": false,
      "days": "*",
      "months": "*",
      "onlyOddDays": false,
      "onlyEvenDays": false,
      "onlyOddWeeks": false,
      "onlyEvenWeeks": false
      }
      ],
      "injectTypeSelect": "interval-time",
      "intervalCount": "30",
      "intervalCountType": "num",
      "intervalCountMultiplier": 60000,
      "time": "sunriseEnd",
      "timeType": "pdsTime",
      "offset": 0,
      "offsetType": "none",
      "offsetMultiplier": 60000,
      "timeEnd": "sunsetStart",
      "timeEndType": "pdsTime",
      "timeEndOffset": 0,
      "timeEndOffsetType": "none",
      "timeEndOffsetMultiplier": 60000,
      "timeDays": "*",
      "timeOnlyOddDays": false,
      "timeOnlyEvenDays": false,
      "timeOnlyOddWeeks": false,
      "timeOnlyEvenWeeks": false,
      "timeMonths": "*",
      "timedatestart": "",
      "timedateend": "",
      "property": "",
      "propertyType": "none",
      "propertyCompare": "true",
      "propertyThreshold": "",
      "propertyThresholdType": "num",
      "timeAlt": "",
      "timeAltType": "entered",
      "timeAltDays": "*",
      "timeAltOnlyOddDays": false,
      "timeAltOnlyEvenDays": false,
      "timeAltOnlyOddWeeks": false,
      "timeAltOnlyEvenWeeks": false,
      "timeAltMonths": "*",
      "timeAltOffset": 0,
      "timeAltOffsetType": "none",
      "timeAltOffsetMultiplier": 60000,
      "once": false,
      "onceDelay": 0.1,
      "recalcTime": 2,
      "x": 210,
      "y": 380,
      "wires": [
      [
      "c8ddf5a5f8fadf07",
      "28f2e05ff898b2ec"
      ]
      ]
      },
      {
      "id": "c8ddf5a5f8fadf07",
      "type": "debug",
      "z": "cb94dae72b52787d",
      "name": "",
      "active": true,
      "tosidebar": true,
      "console": false,
      "tostatus": false,
      "complete": "false",
      "statusVal": "",
      "statusType": "auto",
      "x": 370,
      "y": 440,
      "wires": []
      },
      {
      "id": "28f2e05ff898b2ec",
      "type": "BooleanLogic",
      "z": "cb94dae72b52787d",
      "name": "",
      "operation": "AND",
      "inputCount": 2,
      "topic": "result",
      "x": 520,
      "y": 380,
      "wires": [
      [
      "ec68c7f109cc5394",
      "3f146cd9e0e2d4b5"
      ]
      ]
      },
      {
      "id": "ec68c7f109cc5394",
      "type": "debug",
      "z": "cb94dae72b52787d",
      "name": "",
      "active": true,
      "tosidebar": true,
      "console": false,
      "tostatus": false,
      "complete": "false",
      "statusVal": "",
      "statusType": "auto",
      "x": 690,
      "y": 340,
      "wires": []
      },
      {
      "id": "3f146cd9e0e2d4b5",
      "type": "switch",
      "z": "cb94dae72b52787d",
      "name": "",
      "property": "payload",
      "propertyType": "msg",
      "rules": [
      {
      "t": "true"
      }
      ],
      "checkall": "true",
      "repair": false,
      "outputs": 1,
      "x": 990,
      "y": 380,
      "wires": [
      []
      ]
      },
      {
      "id": "46bc7c174d9cbb62",
      "type": "knxUltimate-config",
      "host": "192.168.178.21",
      "port": "3671",
      "physAddr": "1.0.251",
      "suppressACKRequest": true,
      "csv": "",
      "KNXEthInterface": "Auto",
      "KNXEthInterfaceManuallyInput": "",
      "statusDisplayLastUpdate": true,
      "statusDisplayDeviceNameWhenALL": true,
      "statusDisplayDataPoint": false,
      "stopETSImportIfNoDatapoint": "stop",
      "loglevel": "error",
      "name": "MDT KNX IP Interface ",
      "localEchoInTunneling": true,
      "delaybetweentelegrams": "40",
      "delaybetweentelegramsfurtherdelayREAD": "1",
      "ignoreTelegramsWithRepeatedFlag": false,
      "keyringFileXML": "",
      "autoReconnect": "yes"
      },
      {
      "id": "d836509a.67bc4",
      "type": "position-config",
      "name": "Johnsdorf/Brunn",
      "isValide": "true",
      "longitude": "0",
      "latitude": "0",
      "angleType": "deg",
      "timeZoneOffset": "99",
      "timeZoneDST": "0",
      "stateTimeFormat": "3",
      "stateDateFormat": "12",
      "contextStore": ""
      }
      ]
      
      mickym 1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @hpgo last edited by mickym

        Was brauchst Du dafür eine Function Node - kompletter Nonsense. Blockiere halt einfach Deine Flows mit einer switch Node - und in dem Fall - ich importiere Deinen Flow nicht . weil ich keine Boolschen Nodes habe noch KNX - also mach lieber einen Screenshot und blockiere einfach Deinen Flow - was ist da schwierig? - kannst ja gleich hinter die Inject Node machen.

        Wenn Du einen Taster hast dann kannst den DP doch auslesen und in eine FLow- oder Globale Variable stecken.

        Also mach einen Screenshot mit der Inject NOde hinter die man die Blockade setzt. Dann postest Deinen Datenpunkt und ob der true oder false liefert. Und hört mit den function Nodes auf - ihr macht das Konzept von Node Red kaputt. Ihr könnt auch alle Euere Flows in einer Function NOde programmieren - damit sieht man die Logik nicht mehr - ist schwer zu debuggen und dann könnt ihr auch gleich Javascript schreiben und braucht kein Node Red dafür.

        Hier mal zur Demonstration:

        2f7b5b01-fb51-4c92-aeaa-9b85fa273c68-image.png

        [
           {
               "id": "fcaa4c37.c0c9",
               "type": "inject",
               "z": "1ab75cb7.c52763",
               "name": "bin  alle 5 s aktiv, wenn man mich lässt",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "5",
               "crontab": "",
               "once": true,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "bin  alle 5 s aktiv, wenn man mich lässt",
               "payloadType": "str",
               "x": 340,
               "y": 240,
               "wires": [
                   [
                       "c53c894e.5ed588"
                   ]
               ]
           },
           {
               "id": "69d4c85c.1500b8",
               "type": "debug",
               "z": "1ab75cb7.c52763",
               "name": "",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "false",
               "statusVal": "",
               "statusType": "auto",
               "x": 810,
               "y": 240,
               "wires": []
           },
           {
               "id": "6520cdb8.a1f914",
               "type": "ioBroker in",
               "z": "1ab75cb7.c52763",
               "name": "",
               "topic": "0_userdata.0.Lichtschalter",
               "payloadType": "value",
               "onlyack": "",
               "func": "all",
               "gap": "",
               "fireOnStart": "false",
               "x": 310,
               "y": 160,
               "wires": [
                   [
                       "e1d3b827.dd8e18"
                   ]
               ]
           },
           {
               "id": "e1d3b827.dd8e18",
               "type": "change",
               "z": "1ab75cb7.c52763",
               "name": "",
               "rules": [
                   {
                       "t": "set",
                       "p": "fRun",
                       "pt": "flow",
                       "to": "payload",
                       "tot": "msg"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 570,
               "y": 160,
               "wires": [
                   []
               ]
           },
           {
               "id": "c53c894e.5ed588",
               "type": "switch",
               "z": "1ab75cb7.c52763",
               "name": "fRun = true ?",
               "property": "fRun",
               "propertyType": "flow",
               "rules": [
                   {
                       "t": "true"
                   }
               ],
               "checkall": "true",
               "repair": false,
               "outputs": 1,
               "x": 620,
               "y": 240,
               "wires": [
                   [
                       "69d4c85c.1500b8"
                   ]
               ]
           }
        ]
        

        Und hier ein kleines Video - das zeigt - wie man mit einem iobroker Datenpunkte also Deinem Taster die Inject Node und damit den Flow blockiert oder aktiviert:

        Flow extern steuern.mp4

        und wenn Du mehrere Flows mit Deinem Schalter blockieren willst - nimmst halt statt einer Flowvaribalen eine globale Variable. Dafür ist das Zeug ja da - das man hier assynchron arbeiten kann.

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

          Vielen Dank, es funktioniert! Ich hab lange nach einer Lösung gesucht.
          Ja gut man braucht also keine Function Nodes - ok ich werd es mir merken, es gibt (fast) immer eine andere Lösung.

          Was du mit dem Datenpunkt in iobroker meinst weiß ich allerdings nicht. Iobroker läuft bei mir als Docker Container aber hab ich nicht in Verwendung.

          LgFlow ein-aus.PNG

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

            @hpgo ich verstehe nicht, warum Du den Taster (oben) mit dem Flow unten inject-Node Flow verbindest, außer Du wolltest einen direkten Trigger durch das Einschalten.

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

            Support us

            ioBroker
            Community Adapters
            Donate

            873
            Online

            31.7k
            Users

            79.7k
            Topics

            1.3m
            Posts

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