Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. function-node aktivieren/deaktivieren

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.0k

function-node aktivieren/deaktivieren

function-node aktivieren/deaktivieren

Scheduled Pinned Locked Moved Node-Red
10 Posts 3 Posters 373 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    mark_in dark
    wrote on last edited by
    #1

    Hallo,
    bin neu in Node-Red.
    Ich will eine Anwesenheitssimulation machen. Letztendlich gehn die "Daten" an KNX-Geräte. Das funktioniert schon mal.

    Meine "Hauptproblem" boolsche Logiken/Nodes vermisse ich in Node-Red im Vergleich zu andern Systemen.
    Ich will, dass der Funktionsnode nur dann ausgeführt wird, wenn eine externe boolsche Bedingung erfüllt ist. z.B. ein Schalter oder bestimmte Uhrzeiten um die Anwesenheitssimulation zu aktivieren.

    Mein Code funktioniert ja nicht, weil am Eingang der Funktion der Payload zyklisch durch den Taktgeber wieder überschrieben wird. Chat GPT hat zwar Vorschläge, die funktionieren aber nicht oder ich verstehe sie nicht.

    Danke schon mal.... 😊

    [
        {
            "id": "db744027d9c55da8",
            "type": "tab",
            "label": "Anwesenheitssimulation",
            "disabled": false,
            "info": ""
        },
        {
            "id": "6e26b231fd24ccf9",
            "type": "inject",
            "z": "db744027d9c55da8",
            "name": "Taktgeber",
            "props": [],
            "repeat": "1",
            "crontab": "",
            "once": true,
            "onceDelay": "0.1",
            "topic": "",
            "x": 330,
            "y": 260,
            "wires": [
                [
                    "cddee6fc22707fa6",
                    "9571faaa2cace06b"
                ]
            ]
        },
        {
            "id": "cddee6fc22707fa6",
            "type": "function",
            "z": "db744027d9c55da8",
            "name": "Zufällige Lampe",
            "func": "// Überprüfen, ob die Anwesenheitssimulation aktiv ist\nif (msg.payload) { // msg.payload ist true, wenn aktiv\n    // Zufällige Lampe auswählen\n    let randomLamp = Math.floor(Math.random() * 3); // Zufällige Lampe (0, 1 oder 2)\n\n    // Zufällige Lampe und Zustand initialisieren\n    let lampStates = [\"OFF\", \"OFF\", \"OFF\"]; // Standardmäßig sind alle Lampen aus\n\n    // Eine zufällige Lampe auf \"ON\" setzen\n    lampStates[randomLamp] = \"ON\";\n\n    // Sicherstellen, dass mindestens eine Lampe \"ON\" ist\n    if (Math.random() < 0.5) { // 50% Chance, eine andere Lampe ebenfalls \"ON\" zu setzen\n        let secondLamp = (randomLamp + 1) % 3; // Eine andere Lampe auswählen\n        lampStates[secondLamp] = \"ON\"; // Diese Lampe auf \"ON\" setzen\n    }\n\n    // Die Lampenstatus in die Payload einfügen\n    msg.payload = [\n        { lamp: 0, state: lampStates[0] },\n        { lamp: 1, state: lampStates[1] },\n        { lamp: 2, state: lampStates[2] }\n    ];\n\n    return msg; // Nachricht zurückgeben, wenn aktiv\n} else {\n    // Wenn nicht aktiv, keine Veränderung an den Lampen\n    return null; // Nachricht nicht zurückgeben\n}\n",
            "outputs": 1,
            "timeout": "",
            "noerr": 0,
            "initialize": "",
            "finalize": "",
            "libs": [],
            "x": 620,
            "y": 260,
            "wires": [
                [
                    "f1c40d8b.b6d9e"
                ]
            ]
        },
        {
            "id": "c1d9777a0b7e722d",
            "type": "switch",
            "z": "db744027d9c55da8",
            "name": "Lampensteuerung",
            "property": "payload.lamp",
            "propertyType": "msg",
            "rules": [
                {
                    "t": "eq",
                    "v": "0",
                    "vt": "num"
                },
                {
                    "t": "eq",
                    "v": "1",
                    "vt": "num"
                },
                {
                    "t": "eq",
                    "v": "2",
                    "vt": "num"
                }
            ],
            "checkall": "true",
            "repair": false,
            "outputs": 3,
            "x": 1210,
            "y": 260,
            "wires": [
                [
                    "acd34ee251bf299d"
                ],
                [
                    "1a1e642005d4f084"
                ],
                [
                    "d56321d052bed130"
                ]
            ]
        },
        {
            "id": "acd34ee251bf299d",
            "type": "change",
            "z": "db744027d9c55da8",
            "name": "Status für Lampe 1",
            "rules": [
                {
                    "t": "set",
                    "p": "payload",
                    "pt": "msg",
                    "to": "payload.state",
                    "tot": "msg"
                }
            ],
            "action": "",
            "property": "",
            "x": 1570,
            "y": 260,
            "wires": [
                [
                    "97f2e503ce554a63"
                ]
            ]
        },
        {
            "id": "97f2e503ce554a63",
            "type": "ui-led",
            "z": "db744027d9c55da8",
            "name": "Lampe 11",
            "group": "eae2e6e4e2b30e79",
            "order": 3,
            "width": 0,
            "height": 0,
            "label": "Lampe 11",
            "labelPlacement": "left",
            "labelAlignment": "flex-end",
            "states": [
                {
                    "value": "ON",
                    "valueType": "str",
                    "color": "#ffff00"
                },
                {
                    "value": "OFF",
                    "valueType": "str",
                    "color": "#808000"
                }
            ],
            "shape": "square",
            "showBorder": true,
            "showGlow": true,
            "x": 1960,
            "y": 260,
            "wires": []
        },
        {
            "id": "1a1e642005d4f084",
            "type": "change",
            "z": "db744027d9c55da8",
            "name": "Status für Lampe 2",
            "rules": [
                {
                    "t": "set",
                    "p": "payload",
                    "pt": "msg",
                    "to": "payload.state",
                    "tot": "msg"
                }
            ],
            "action": "",
            "property": "",
            "x": 1570,
            "y": 320,
            "wires": [
                [
                    "9f4c1f52e7edc3cc"
                ]
            ]
        },
        {
            "id": "d56321d052bed130",
            "type": "change",
            "z": "db744027d9c55da8",
            "name": "Status für Lampe 3",
            "rules": [
                {
                    "t": "set",
                    "p": "payload",
                    "pt": "msg",
                    "to": "payload.state",
                    "tot": "msg"
                }
            ],
            "action": "",
            "property": "",
            "x": 1570,
            "y": 380,
            "wires": [
                [
                    "3412a2106c836d52"
                ]
            ]
        },
        {
            "id": "9f4c1f52e7edc3cc",
            "type": "ui-led",
            "z": "db744027d9c55da8",
            "name": "Lampe 12",
            "group": "eae2e6e4e2b30e79",
            "order": 4,
            "width": 0,
            "height": 0,
            "label": "Lampe 12",
            "labelPlacement": "left",
            "labelAlignment": "flex-end",
            "states": [
                {
                    "value": "ON",
                    "valueType": "str",
                    "color": "#ffff00"
                },
                {
                    "value": "OFF",
                    "valueType": "str",
                    "color": "#808000"
                }
            ],
            "shape": "square",
            "showBorder": true,
            "showGlow": true,
            "x": 1960,
            "y": 320,
            "wires": []
        },
        {
            "id": "3412a2106c836d52",
            "type": "ui-led",
            "z": "db744027d9c55da8",
            "name": "Lampe 13",
            "group": "eae2e6e4e2b30e79",
            "order": 5,
            "width": 0,
            "height": 0,
            "label": "Lampe 13",
            "labelPlacement": "left",
            "labelAlignment": "flex-end",
            "states": [
                {
                    "value": "ON",
                    "valueType": "str",
                    "color": "#ffff00"
                },
                {
                    "value": "OFF",
                    "valueType": "str",
                    "color": "#808000"
                }
            ],
            "shape": "square",
            "showBorder": true,
            "showGlow": true,
            "x": 1960,
            "y": 380,
            "wires": []
        },
        {
            "id": "f1c40d8b.b6d9e",
            "type": "split",
            "z": "db744027d9c55da8",
            "name": "Split Lampenstatus",
            "splt": "\\n",
            "spltType": "auto",
            "arraySplt": "1",
            "arraySpltType": "len",
            "stream": false,
            "addname": "",
            "property": "payload",
            "x": 890,
            "y": 260,
            "wires": [
                [
                    "c1d9777a0b7e722d"
                ]
            ]
        },
        {
            "id": "9571faaa2cace06b",
            "type": "function",
            "z": "db744027d9c55da8",
            "name": "Uhrzeit prüfen",
            "func": "const currentTime = new Date();\nconst hours = currentTime.getHours();\n\nif (hours >= 18 && hours < 23) {\n    // Zwischen 18 und 23 Uhr\n    msg.payload = \"Lampen einschalten\"; // oder eine spezifische Steuerung für die Lampen\n} else {\n    // Außerhalb der erlaubten Zeiten\n    msg.payload = \"Lampen ausschalten\"; // oder eine spezifische Steuerung für die Lampen\n}\n\nreturn msg;\n",
            "outputs": 1,
            "timeout": 0,
            "noerr": 0,
            "initialize": "",
            "finalize": "",
            "libs": [],
            "x": 620,
            "y": 360,
            "wires": [
                []
            ]
        },
        {
            "id": "cc2b6675dc1a6ce3",
            "type": "ui-switch",
            "z": "db744027d9c55da8",
            "name": "",
            "label": "switch",
            "group": "eae2e6e4e2b30e79",
            "order": 0,
            "width": 0,
            "height": 0,
            "passthru": false,
            "decouple": false,
            "topic": "payload",
            "topicType": "msg",
            "style": "",
            "className": "",
            "layout": "row-spread",
            "clickableArea": "switch",
            "onvalue": "{\"simulation\": true}",
            "onvalueType": "json",
            "onicon": "",
            "oncolor": "",
            "offvalue": "{\"simulation\": false}",
            "offvalueType": "json",
            "officon": "",
            "offcolor": "",
            "x": 310,
            "y": 160,
            "wires": [
                [
                    "cddee6fc22707fa6"
                ]
            ]
        },
        {
            "id": "eae2e6e4e2b30e79",
            "type": "ui-group",
            "name": "Group 1",
            "page": "a3e6081f6177718a",
            "width": "2",
            "height": 1,
            "order": 1,
            "showTitle": true,
            "className": "",
            "visible": "true",
            "disabled": "false",
            "groupType": "default"
        },
        {
            "id": "a3e6081f6177718a",
            "type": "ui-page",
            "name": "Page 1",
            "ui": "e0f1fa3c5c6ad564",
            "path": "/page1",
            "icon": "home",
            "layout": "grid",
            "theme": "8077bd265499d558",
            "breakpoints": [
                {
                    "name": "Default",
                    "px": "0",
                    "cols": "3"
                },
                {
                    "name": "Tablet",
                    "px": "576",
                    "cols": "6"
                },
                {
                    "name": "Small Desktop",
                    "px": "768",
                    "cols": "9"
                },
                {
                    "name": "Desktop",
                    "px": "1024",
                    "cols": "12"
                }
            ],
            "order": 1,
            "className": "",
            "visible": "true",
            "disabled": "false"
        },
        {
            "id": "e0f1fa3c5c6ad564",
            "type": "ui-base",
            "name": "My Dashboard",
            "path": "/dashboard",
            "appIcon": "",
            "includeClientData": true,
            "acceptsClientConfig": [
                "ui-notification",
                "ui-control"
            ],
            "showPathInSidebar": false,
            "headerContent": "page",
            "navigationStyle": "default",
            "titleBarStyle": "default",
            "showReconnectNotification": true,
            "notificationDisplayTime": 1,
            "showDisconnectNotification": true,
            "allowInstall": true
        },
        {
            "id": "8077bd265499d558",
            "type": "ui-theme",
            "name": "Default Theme",
            "colors": {
                "surface": "#ffffff",
                "primary": "#0094CE",
                "bgPage": "#eeeeee",
                "groupBg": "#ffffff",
                "groupOutline": "#cccccc"
            },
            "sizes": {
                "density": "default",
                "pagePadding": "12px",
                "groupGap": "12px",
                "groupBorderRadius": "4px",
                "widgetGap": "12px"
            }
        },
        {
            "id": "1bc863875cde0fe8",
            "type": "global-config",
            "env": [],
            "modules": {
                "@flowfuse/node-red-dashboard-2-ui-led": "1.1.0",
                "@flowfuse/node-red-dashboard": "1.26.0"
            }
        }
    ]
    
    mickymM 1 Reply Last reply
    0
    • OliverIOO Offline
      OliverIOO Offline
      OliverIO
      wrote on last edited by
      #2

      @mark_in-dark

      hier hat @mickym mal AND und OR beschrieben
      https://forum.iobroker.net/topic/51180/boolean-logic-problem/5?_=1756650577534

      Meine Adapter und Widgets
      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
      Links im Profil

      1 Reply Last reply
      0
      • M mark_in dark

        Hallo,
        bin neu in Node-Red.
        Ich will eine Anwesenheitssimulation machen. Letztendlich gehn die "Daten" an KNX-Geräte. Das funktioniert schon mal.

        Meine "Hauptproblem" boolsche Logiken/Nodes vermisse ich in Node-Red im Vergleich zu andern Systemen.
        Ich will, dass der Funktionsnode nur dann ausgeführt wird, wenn eine externe boolsche Bedingung erfüllt ist. z.B. ein Schalter oder bestimmte Uhrzeiten um die Anwesenheitssimulation zu aktivieren.

        Mein Code funktioniert ja nicht, weil am Eingang der Funktion der Payload zyklisch durch den Taktgeber wieder überschrieben wird. Chat GPT hat zwar Vorschläge, die funktionieren aber nicht oder ich verstehe sie nicht.

        Danke schon mal.... 😊

        [
            {
                "id": "db744027d9c55da8",
                "type": "tab",
                "label": "Anwesenheitssimulation",
                "disabled": false,
                "info": ""
            },
            {
                "id": "6e26b231fd24ccf9",
                "type": "inject",
                "z": "db744027d9c55da8",
                "name": "Taktgeber",
                "props": [],
                "repeat": "1",
                "crontab": "",
                "once": true,
                "onceDelay": "0.1",
                "topic": "",
                "x": 330,
                "y": 260,
                "wires": [
                    [
                        "cddee6fc22707fa6",
                        "9571faaa2cace06b"
                    ]
                ]
            },
            {
                "id": "cddee6fc22707fa6",
                "type": "function",
                "z": "db744027d9c55da8",
                "name": "Zufällige Lampe",
                "func": "// Überprüfen, ob die Anwesenheitssimulation aktiv ist\nif (msg.payload) { // msg.payload ist true, wenn aktiv\n    // Zufällige Lampe auswählen\n    let randomLamp = Math.floor(Math.random() * 3); // Zufällige Lampe (0, 1 oder 2)\n\n    // Zufällige Lampe und Zustand initialisieren\n    let lampStates = [\"OFF\", \"OFF\", \"OFF\"]; // Standardmäßig sind alle Lampen aus\n\n    // Eine zufällige Lampe auf \"ON\" setzen\n    lampStates[randomLamp] = \"ON\";\n\n    // Sicherstellen, dass mindestens eine Lampe \"ON\" ist\n    if (Math.random() < 0.5) { // 50% Chance, eine andere Lampe ebenfalls \"ON\" zu setzen\n        let secondLamp = (randomLamp + 1) % 3; // Eine andere Lampe auswählen\n        lampStates[secondLamp] = \"ON\"; // Diese Lampe auf \"ON\" setzen\n    }\n\n    // Die Lampenstatus in die Payload einfügen\n    msg.payload = [\n        { lamp: 0, state: lampStates[0] },\n        { lamp: 1, state: lampStates[1] },\n        { lamp: 2, state: lampStates[2] }\n    ];\n\n    return msg; // Nachricht zurückgeben, wenn aktiv\n} else {\n    // Wenn nicht aktiv, keine Veränderung an den Lampen\n    return null; // Nachricht nicht zurückgeben\n}\n",
                "outputs": 1,
                "timeout": "",
                "noerr": 0,
                "initialize": "",
                "finalize": "",
                "libs": [],
                "x": 620,
                "y": 260,
                "wires": [
                    [
                        "f1c40d8b.b6d9e"
                    ]
                ]
            },
            {
                "id": "c1d9777a0b7e722d",
                "type": "switch",
                "z": "db744027d9c55da8",
                "name": "Lampensteuerung",
                "property": "payload.lamp",
                "propertyType": "msg",
                "rules": [
                    {
                        "t": "eq",
                        "v": "0",
                        "vt": "num"
                    },
                    {
                        "t": "eq",
                        "v": "1",
                        "vt": "num"
                    },
                    {
                        "t": "eq",
                        "v": "2",
                        "vt": "num"
                    }
                ],
                "checkall": "true",
                "repair": false,
                "outputs": 3,
                "x": 1210,
                "y": 260,
                "wires": [
                    [
                        "acd34ee251bf299d"
                    ],
                    [
                        "1a1e642005d4f084"
                    ],
                    [
                        "d56321d052bed130"
                    ]
                ]
            },
            {
                "id": "acd34ee251bf299d",
                "type": "change",
                "z": "db744027d9c55da8",
                "name": "Status für Lampe 1",
                "rules": [
                    {
                        "t": "set",
                        "p": "payload",
                        "pt": "msg",
                        "to": "payload.state",
                        "tot": "msg"
                    }
                ],
                "action": "",
                "property": "",
                "x": 1570,
                "y": 260,
                "wires": [
                    [
                        "97f2e503ce554a63"
                    ]
                ]
            },
            {
                "id": "97f2e503ce554a63",
                "type": "ui-led",
                "z": "db744027d9c55da8",
                "name": "Lampe 11",
                "group": "eae2e6e4e2b30e79",
                "order": 3,
                "width": 0,
                "height": 0,
                "label": "Lampe 11",
                "labelPlacement": "left",
                "labelAlignment": "flex-end",
                "states": [
                    {
                        "value": "ON",
                        "valueType": "str",
                        "color": "#ffff00"
                    },
                    {
                        "value": "OFF",
                        "valueType": "str",
                        "color": "#808000"
                    }
                ],
                "shape": "square",
                "showBorder": true,
                "showGlow": true,
                "x": 1960,
                "y": 260,
                "wires": []
            },
            {
                "id": "1a1e642005d4f084",
                "type": "change",
                "z": "db744027d9c55da8",
                "name": "Status für Lampe 2",
                "rules": [
                    {
                        "t": "set",
                        "p": "payload",
                        "pt": "msg",
                        "to": "payload.state",
                        "tot": "msg"
                    }
                ],
                "action": "",
                "property": "",
                "x": 1570,
                "y": 320,
                "wires": [
                    [
                        "9f4c1f52e7edc3cc"
                    ]
                ]
            },
            {
                "id": "d56321d052bed130",
                "type": "change",
                "z": "db744027d9c55da8",
                "name": "Status für Lampe 3",
                "rules": [
                    {
                        "t": "set",
                        "p": "payload",
                        "pt": "msg",
                        "to": "payload.state",
                        "tot": "msg"
                    }
                ],
                "action": "",
                "property": "",
                "x": 1570,
                "y": 380,
                "wires": [
                    [
                        "3412a2106c836d52"
                    ]
                ]
            },
            {
                "id": "9f4c1f52e7edc3cc",
                "type": "ui-led",
                "z": "db744027d9c55da8",
                "name": "Lampe 12",
                "group": "eae2e6e4e2b30e79",
                "order": 4,
                "width": 0,
                "height": 0,
                "label": "Lampe 12",
                "labelPlacement": "left",
                "labelAlignment": "flex-end",
                "states": [
                    {
                        "value": "ON",
                        "valueType": "str",
                        "color": "#ffff00"
                    },
                    {
                        "value": "OFF",
                        "valueType": "str",
                        "color": "#808000"
                    }
                ],
                "shape": "square",
                "showBorder": true,
                "showGlow": true,
                "x": 1960,
                "y": 320,
                "wires": []
            },
            {
                "id": "3412a2106c836d52",
                "type": "ui-led",
                "z": "db744027d9c55da8",
                "name": "Lampe 13",
                "group": "eae2e6e4e2b30e79",
                "order": 5,
                "width": 0,
                "height": 0,
                "label": "Lampe 13",
                "labelPlacement": "left",
                "labelAlignment": "flex-end",
                "states": [
                    {
                        "value": "ON",
                        "valueType": "str",
                        "color": "#ffff00"
                    },
                    {
                        "value": "OFF",
                        "valueType": "str",
                        "color": "#808000"
                    }
                ],
                "shape": "square",
                "showBorder": true,
                "showGlow": true,
                "x": 1960,
                "y": 380,
                "wires": []
            },
            {
                "id": "f1c40d8b.b6d9e",
                "type": "split",
                "z": "db744027d9c55da8",
                "name": "Split Lampenstatus",
                "splt": "\\n",
                "spltType": "auto",
                "arraySplt": "1",
                "arraySpltType": "len",
                "stream": false,
                "addname": "",
                "property": "payload",
                "x": 890,
                "y": 260,
                "wires": [
                    [
                        "c1d9777a0b7e722d"
                    ]
                ]
            },
            {
                "id": "9571faaa2cace06b",
                "type": "function",
                "z": "db744027d9c55da8",
                "name": "Uhrzeit prüfen",
                "func": "const currentTime = new Date();\nconst hours = currentTime.getHours();\n\nif (hours >= 18 && hours < 23) {\n    // Zwischen 18 und 23 Uhr\n    msg.payload = \"Lampen einschalten\"; // oder eine spezifische Steuerung für die Lampen\n} else {\n    // Außerhalb der erlaubten Zeiten\n    msg.payload = \"Lampen ausschalten\"; // oder eine spezifische Steuerung für die Lampen\n}\n\nreturn msg;\n",
                "outputs": 1,
                "timeout": 0,
                "noerr": 0,
                "initialize": "",
                "finalize": "",
                "libs": [],
                "x": 620,
                "y": 360,
                "wires": [
                    []
                ]
            },
            {
                "id": "cc2b6675dc1a6ce3",
                "type": "ui-switch",
                "z": "db744027d9c55da8",
                "name": "",
                "label": "switch",
                "group": "eae2e6e4e2b30e79",
                "order": 0,
                "width": 0,
                "height": 0,
                "passthru": false,
                "decouple": false,
                "topic": "payload",
                "topicType": "msg",
                "style": "",
                "className": "",
                "layout": "row-spread",
                "clickableArea": "switch",
                "onvalue": "{\"simulation\": true}",
                "onvalueType": "json",
                "onicon": "",
                "oncolor": "",
                "offvalue": "{\"simulation\": false}",
                "offvalueType": "json",
                "officon": "",
                "offcolor": "",
                "x": 310,
                "y": 160,
                "wires": [
                    [
                        "cddee6fc22707fa6"
                    ]
                ]
            },
            {
                "id": "eae2e6e4e2b30e79",
                "type": "ui-group",
                "name": "Group 1",
                "page": "a3e6081f6177718a",
                "width": "2",
                "height": 1,
                "order": 1,
                "showTitle": true,
                "className": "",
                "visible": "true",
                "disabled": "false",
                "groupType": "default"
            },
            {
                "id": "a3e6081f6177718a",
                "type": "ui-page",
                "name": "Page 1",
                "ui": "e0f1fa3c5c6ad564",
                "path": "/page1",
                "icon": "home",
                "layout": "grid",
                "theme": "8077bd265499d558",
                "breakpoints": [
                    {
                        "name": "Default",
                        "px": "0",
                        "cols": "3"
                    },
                    {
                        "name": "Tablet",
                        "px": "576",
                        "cols": "6"
                    },
                    {
                        "name": "Small Desktop",
                        "px": "768",
                        "cols": "9"
                    },
                    {
                        "name": "Desktop",
                        "px": "1024",
                        "cols": "12"
                    }
                ],
                "order": 1,
                "className": "",
                "visible": "true",
                "disabled": "false"
            },
            {
                "id": "e0f1fa3c5c6ad564",
                "type": "ui-base",
                "name": "My Dashboard",
                "path": "/dashboard",
                "appIcon": "",
                "includeClientData": true,
                "acceptsClientConfig": [
                    "ui-notification",
                    "ui-control"
                ],
                "showPathInSidebar": false,
                "headerContent": "page",
                "navigationStyle": "default",
                "titleBarStyle": "default",
                "showReconnectNotification": true,
                "notificationDisplayTime": 1,
                "showDisconnectNotification": true,
                "allowInstall": true
            },
            {
                "id": "8077bd265499d558",
                "type": "ui-theme",
                "name": "Default Theme",
                "colors": {
                    "surface": "#ffffff",
                    "primary": "#0094CE",
                    "bgPage": "#eeeeee",
                    "groupBg": "#ffffff",
                    "groupOutline": "#cccccc"
                },
                "sizes": {
                    "density": "default",
                    "pagePadding": "12px",
                    "groupGap": "12px",
                    "groupBorderRadius": "4px",
                    "widgetGap": "12px"
                }
            },
            {
                "id": "1bc863875cde0fe8",
                "type": "global-config",
                "env": [],
                "modules": {
                    "@flowfuse/node-red-dashboard-2-ui-led": "1.1.0",
                    "@flowfuse/node-red-dashboard": "1.26.0"
                }
            }
        ]
        
        mickymM Offline
        mickymM Offline
        mickym
        Most Active
        wrote on last edited by mickym
        #3

        @mark_in-dark Also entweder Du prüfst diverse Eigenschaften eines Nachrichtenobjektes ab, dann kannst Du Change oder function Nodes machen oder wenn Du externe Bedingungen nehmen willst, wie Uhrzeit nimmst, dann prüfst du die innerhalb des Flows ab. Wenn Du bestimmte Schalter zusätzlich abprüfen willst, machst Du das auch in dem Flow oder speicherst den Status im Kontext.

        f2b13b50-94c7-47e5-8473-884746ba4115-image.png

        Wenn Du also die Uhrzeit abprüfen willst, dann musst Du es halt in den Flow hängen - wenn Du die Nodes parallel machst dann ist es wie eine ODER Bedingung. Ich würde generell keine function Nodes verwenden, wenn möglich.

        Oder mit anderen Worten auf die Überschrift angewandt: Du musst halt vor die function Node eine Node setzen, die den Flow blockiert, sodass die function Node gar nicht mehr angesteuert wird.

        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

        M 1 Reply Last reply
        0
        • mickymM mickym

          @mark_in-dark Also entweder Du prüfst diverse Eigenschaften eines Nachrichtenobjektes ab, dann kannst Du Change oder function Nodes machen oder wenn Du externe Bedingungen nehmen willst, wie Uhrzeit nimmst, dann prüfst du die innerhalb des Flows ab. Wenn Du bestimmte Schalter zusätzlich abprüfen willst, machst Du das auch in dem Flow oder speicherst den Status im Kontext.

          f2b13b50-94c7-47e5-8473-884746ba4115-image.png

          Wenn Du also die Uhrzeit abprüfen willst, dann musst Du es halt in den Flow hängen - wenn Du die Nodes parallel machst dann ist es wie eine ODER Bedingung. Ich würde generell keine function Nodes verwenden, wenn möglich.

          Oder mit anderen Worten auf die Überschrift angewandt: Du musst halt vor die function Node eine Node setzen, die den Flow blockiert, sodass die function Node gar nicht mehr angesteuert wird.

          M Offline
          M Offline
          mark_in dark
          wrote on last edited by
          #4

          @mickym
          Danke für die Antwort.
          Auch wenn ich gerade noch nicht konkret duchblicke, muss ich wohl noch etwas Grundlagenforschung machen, obwohl ich eher ein einmaliges Projekt habe und darum nicht zu viel Zeit in die Einarbeitung in Node-Red stecken möchte.

          function-Node finde ich eigentlich praktisch, denn da hätte ich in den einen noch mehr hineingepackt, eben auch die Uhrzeitabfrage. Warum man functions-nodes nicht unbedingt verwenden soll, verstehe ich gerade nicht.

          OliverIOO 1 Reply Last reply
          0
          • M mark_in dark

            @mickym
            Danke für die Antwort.
            Auch wenn ich gerade noch nicht konkret duchblicke, muss ich wohl noch etwas Grundlagenforschung machen, obwohl ich eher ein einmaliges Projekt habe und darum nicht zu viel Zeit in die Einarbeitung in Node-Red stecken möchte.

            function-Node finde ich eigentlich praktisch, denn da hätte ich in den einen noch mehr hineingepackt, eben auch die Uhrzeitabfrage. Warum man functions-nodes nicht unbedingt verwenden soll, verstehe ich gerade nicht.

            OliverIOO Offline
            OliverIOO Offline
            OliverIO
            wrote on last edited by
            #5

            @mark_in-dark

            weil du dann node-red nicht benötigst, sondern einfach nur javascript schreibst und das dann direkt im javascript adapter ausführen könntest.

            node-red ist ja eher eine no-code (evtl low-code) Umgebung.
            die function node ist eher die notlösung um lücken zu füllen, die node-red nicht unterstützt oder es keine nodes zum nachinstallieren gibt.

            die grafische nachvollziehbarkeit von abläufen geht dann auch verloren.

            Meine Adapter und Widgets
            TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
            Links im Profil

            M 1 Reply Last reply
            1
            • OliverIOO OliverIO

              @mark_in-dark

              weil du dann node-red nicht benötigst, sondern einfach nur javascript schreibst und das dann direkt im javascript adapter ausführen könntest.

              node-red ist ja eher eine no-code (evtl low-code) Umgebung.
              die function node ist eher die notlösung um lücken zu füllen, die node-red nicht unterstützt oder es keine nodes zum nachinstallieren gibt.

              die grafische nachvollziehbarkeit von abläufen geht dann auch verloren.

              M Offline
              M Offline
              mark_in dark
              wrote on last edited by
              #6

              @oliverio
              ja da hast du auch wieder recht. Sehe aber in Node-Red den Vorteil, dass ich ein Lauzeitplattform, eine Webseite habe und meine KNX-Anbindung fertig funktionsfähig ist.
              Kann meine Gewünschte Anwesenheitssimulation gerne mit grafischen Nodes machen. Bin froh im irgendwelche Tipps. Vielleicht wäre eine andere Lösung als Node-Red besser geeignet für mein Vorhaben?

              OliverIOO 1 Reply Last reply
              0
              • M mark_in dark

                @oliverio
                ja da hast du auch wieder recht. Sehe aber in Node-Red den Vorteil, dass ich ein Lauzeitplattform, eine Webseite habe und meine KNX-Anbindung fertig funktionsfähig ist.
                Kann meine Gewünschte Anwesenheitssimulation gerne mit grafischen Nodes machen. Bin froh im irgendwelche Tipps. Vielleicht wäre eine andere Lösung als Node-Red besser geeignet für mein Vorhaben?

                OliverIOO Offline
                OliverIOO Offline
                OliverIO
                wrote on last edited by
                #7

                @mark_in-dark

                daher solltest.
                KNX funktioniert ja im iobroker grundsätzlich auch, aber halt mit entsprechenden Lizenzbeschränkungen.
                Keine node-red Polizei wird dir das verbieten 😉

                Meine Adapter und Widgets
                TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                Links im Profil

                M 1 Reply Last reply
                0
                • OliverIOO OliverIO

                  @mark_in-dark

                  daher solltest.
                  KNX funktioniert ja im iobroker grundsätzlich auch, aber halt mit entsprechenden Lizenzbeschränkungen.
                  Keine node-red Polizei wird dir das verbieten 😉

                  M Offline
                  M Offline
                  mark_in dark
                  wrote on last edited by
                  #8

                  @oliverio
                  Danke, iobroker kenne ich noch weniger, Du meinst damit wäre es einfacher meine Wünsch zu erfüllen, darf ruhige etwas kosten...

                  OliverIOO 1 Reply Last reply
                  0
                  • M mark_in dark

                    @oliverio
                    Danke, iobroker kenne ich noch weniger, Du meinst damit wäre es einfacher meine Wünsch zu erfüllen, darf ruhige etwas kosten...

                    OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    wrote on last edited by
                    #9

                    @mark_in-dark

                    du kannst ja mal probeweise installieren
                    https://github.com/ioBroker/ioBroker.knx?tab=readme-ov-file#license-requirements

                    bis zu einer grenze ist er kostenlos

                    dann noch den javascript adapter dazu
                    https://github.com/ioBroker/ioBroker.javascript

                    ich selbst habe kein knx. daher weiß ich nicht was wirklich einfacher ist

                    Meine Adapter und Widgets
                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                    Links im Profil

                    M 1 Reply Last reply
                    0
                    • OliverIOO OliverIO

                      @mark_in-dark

                      du kannst ja mal probeweise installieren
                      https://github.com/ioBroker/ioBroker.knx?tab=readme-ov-file#license-requirements

                      bis zu einer grenze ist er kostenlos

                      dann noch den javascript adapter dazu
                      https://github.com/ioBroker/ioBroker.javascript

                      ich selbst habe kein knx. daher weiß ich nicht was wirklich einfacher ist

                      M Offline
                      M Offline
                      mark_in dark
                      wrote on last edited by
                      #10

                      @OliverIO

                      Super! Herzlichen Dank, ich schaue es mir mal an.
                      Schönen Abend!

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      324

                      Online

                      32.4k

                      Users

                      81.3k

                      Topics

                      1.3m

                      Posts
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                      ioBroker Community 2014-2025
                      logo
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Recent
                      • Tags
                      • Unread 0
                      • Categories
                      • Unreplied
                      • Popular
                      • GitHub
                      • Docu
                      • Hilfe