[
    {
        "id": "f6dc036f1d364073",
        "type": "tab",
        "label": "ZigBee Schalter",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "153ffe128f6a56c8",
        "type": "mqtt in",
        "z": "f6dc036f1d364073",
        "name": "MQQT Wohnraum",
        "topic": "zigbee2mqtt/Wohnraum",
        "qos": "2",
        "datatype": "json",
        "broker": "0ddb07c65cbb68bc",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 110,
        "y": 140,
        "wires": [
            [
                "60184193d23b2311",
                "85acaa09bf9a3b8d"
            ]
        ]
    },
    {
        "id": "573a0e3b7fafa6a7",
        "type": "link out",
        "z": "f6dc036f1d364073",
        "name": "Wohnraum_1_single",
        "mode": "link",
        "links": [
            "a4c0fd66546e7864"
        ],
        "x": 575,
        "y": 180,
        "wires": []
    },
    {
        "id": "300668af7e21c8a3",
        "type": "function",
        "z": "f6dc036f1d364073",
        "name": "Toggle Dimmer 1",
        "func": "// Liest den aktuellen Helligkeitswert vom Dimmer aus dem globalen Speicher\n// Die Dimmer-Controller-Flows von Pekaway speichern den Wert üblicherweise unter global.dimmerX\nlet currentBrightness = global.get(\"dimmer0\") || 0;\nlet newBrightness;\n\n// Wenn die aktuelle Helligkeit größer als 5% ist (als AN betrachtet), setze auf 0% (AUS).\n// Sonst setze auf 100% (AN).\nif (currentBrightness > 5) {\n    newBrightness = 0; // Ausschalten\n} else {\n    newBrightness = 100; // Einschalten (volle Helligkeit)\n}\n\n// Setze die Payload auf den neuen Helligkeitswert (0 oder 100)\nmsg.payload = newBrightness;\n\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 430,
        "y": 180,
        "wires": [
            [
                "573a0e3b7fafa6a7"
            ]
        ]
    },
    {
        "id": "60184193d23b2311",
        "type": "switch",
        "z": "f6dc036f1d364073",
        "name": "Switch: Action-Filter",
        "property": "payload.action",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "1_single",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "2_single",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "3_single",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "4_single",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 4,
        "x": 190,
        "y": 220,
        "wires": [
            [
                "300668af7e21c8a3"
            ],
            [
                "c1a80b5c3f2420b7"
            ],
            [
                "e612624c39f44a41"
            ],
            [
                "df95128bc74c6074"
            ]
        ]
    },
    {
        "id": "85acaa09bf9a3b8d",
        "type": "debug",
        "z": "f6dc036f1d364073",
        "name": "Debug Input",
        "active": false,
        "tosidebar": true,
        "console": true,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 440,
        "y": 80,
        "wires": []
    },
    {
        "id": "c1a80b5c3f2420b7",
        "type": "function",
        "z": "f6dc036f1d364073",
        "name": "Toggle Dimmer 2",
        "func": "// Liest den aktuellen Helligkeitswert vom Dimmer aus dem globalen Speicher\n// Die Dimmer-Controller-Flows von Pekaway speichern den Wert üblicherweise unter global.dimmerX\nlet currentBrightness = global.get(\"dimmer1\") || 0;\nlet newBrightness;\n\n// Wenn die aktuelle Helligkeit größer als 5% ist (als AN betrachtet), setze auf 0% (AUS).\n// Sonst setze auf 100% (AN).\nif (currentBrightness > 5) {\n    newBrightness = 0; // Ausschalten\n} else {\n    newBrightness = 100; // Einschalten (volle Helligkeit)\n}\n\n// Setze die Payload auf den neuen Helligkeitswert (0 oder 100)\nmsg.payload = newBrightness;\n\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 430,
        "y": 220,
        "wires": [
            [
                "b6ce89451b251dab"
            ]
        ]
    },
    {
        "id": "e612624c39f44a41",
        "type": "function",
        "z": "f6dc036f1d364073",
        "name": "Toggle Dimmer 3",
        "func": "// Liest den aktuellen Helligkeitswert vom Dimmer aus dem globalen Speicher\n// Die Dimmer-Controller-Flows von Pekaway speichern den Wert üblicherweise unter global.dimmerX\nlet currentBrightness = global.get(\"dimmer2\") || 0;\nlet newBrightness;\n\n// Wenn die aktuelle Helligkeit größer als 5% ist (als AN betrachtet), setze auf 0% (AUS).\n// Sonst setze auf 100% (AN).\nif (currentBrightness > 5) {\n    newBrightness = 0; // Ausschalten\n} else {\n    newBrightness = 100; // Einschalten (volle Helligkeit)\n}\n\n// Setze die Payload auf den neuen Helligkeitswert (0 oder 100)\nmsg.payload = newBrightness;\n\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 430,
        "y": 260,
        "wires": [
            [
                "10d523ba7dc106ab"
            ]
        ]
    },
    {
        "id": "b6ce89451b251dab",
        "type": "link out",
        "z": "f6dc036f1d364073",
        "name": "Wohnraum_1_single",
        "mode": "link",
        "links": [
            "1db51e9f7fe5ebea"
        ],
        "x": 575,
        "y": 220,
        "wires": []
    },
    {
        "id": "10d523ba7dc106ab",
        "type": "link out",
        "z": "f6dc036f1d364073",
        "name": "Wohnraum_1_single",
        "mode": "link",
        "links": [
            "09bf8b5862924eed"
        ],
        "x": 575,
        "y": 260,
        "wires": []
    },
    {
        "id": "df95128bc74c6074",
        "type": "function",
        "z": "f6dc036f1d364073",
        "name": "Ambiente Mode (Dimmer 0, 1, 3)",
        "func": "// Ambient-Mode für dimmer0, dimmer1, dimmer2\n// Ambient ON:  dimmer0 = 70%, dimmer1 = 0%, dimmer2 = 30%\n// Ambient OFF: alte Werte wiederherstellen\n\n// Flag, ob Ambient aktiv ist\nlet active = flow.get(\"ambient_active\") || false;\n\n// kleine Hilfsfunktion: sorgt dafür, dass wir immer eine Zahl zurückgeben\nfunction normalize(v) {\n    return (typeof v === \"number\" && !isNaN(v)) ? v : 0;\n}\n\nif (!active) {\n    // --------- AMBIENT EINSCHALTEN ---------\n\n    // aktuelle Werte sichern\n    const backup = {\n        dimmer0: global.get(\"dimmer0\"),\n        dimmer1: global.get(\"dimmer1\"),\n        dimmer2: global.get(\"dimmer2\")\n    };\n\n    // für Debug:\n    node.warn(\"Ambient ON – Backup: \" + JSON.stringify(backup));\n\n    flow.set(\"ambient_backup\", backup);\n    flow.set(\"ambient_active\", true);\n\n    // Ambient-Werte\n    const d0 = 70;\n    const d1 = 0;\n    const d2 = 30;\n\n    // 3 Ausgänge: je Dimmer ein Wert\n    return [\n        { payload: d0 },   // Ausgang 1 -> Dimmer0\n        { payload: d1 },   // Ausgang 2 -> Dimmer1\n        { payload: d2 }    // Ausgang 3 -> Dimmer2\n    ];\n\n} else {\n    // --------- AMBIENT AUSSCHALTEN ---------\n\n    const backup = flow.get(\"ambient_backup\") || {};\n\n    // hier NICHT mit \"|| 0\" arbeiten, sonst wird eine echte 0 überschrieben\n    let d0 = normalize(backup.dimmer0);\n    let d1 = normalize(backup.dimmer1);\n    let d2 = normalize(backup.dimmer2);\n\n    node.warn(\"Ambient OFF – Restore: \" + JSON.stringify({ d0, d1, d2 }));\n\n    flow.set(\"ambient_active\", false);\n\n\n    return [\n        { payload: d0 },   // Ausgang 1 -> Dimmer0\n        { payload: d1 },   // Ausgang 2 -> Dimmer1\n        { payload: d2 }    // Ausgang 3 -> Dimmer2\n    ];\n}\n",
        "outputs": 3,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 470,
        "y": 320,
        "wires": [
            [
                "b01022ae88ebdad1"
            ],
            [
                "dac7b0a24096d0f7"
            ],
            [
                "4915782826521d6c"
            ]
        ]
    },
    {
        "id": "b01022ae88ebdad1",
        "type": "link out",
        "z": "f6dc036f1d364073",
        "name": "Dimmer 0 Command OUT",
        "mode": "link",
        "links": [
            "a4c0fd66546e7864"
        ],
        "x": 665,
        "y": 300,
        "wires": []
    },
    {
        "id": "dac7b0a24096d0f7",
        "type": "link out",
        "z": "f6dc036f1d364073",
        "name": "Dimmer 1 Command OUT",
        "mode": "link",
        "links": [
            "1db51e9f7fe5ebea"
        ],
        "x": 665,
        "y": 340,
        "wires": []
    },
    {
        "id": "4915782826521d6c",
        "type": "link out",
        "z": "f6dc036f1d364073",
        "name": "Dimmer 3 Command OUT",
        "mode": "link",
        "links": [
            "09bf8b5862924eed"
        ],
        "x": 665,
        "y": 380,
        "wires": []
    },
    {
        "id": "0ddb07c65cbb68bc",
        "type": "mqtt-broker",
        "name": "",
        "broker": "localhost",
        "port": "1883",
        "clientid": "",
        "autoConnect": true,
        "usetls": false,
        "protocolVersion": "4",
        "keepalive": "60",
        "cleansession": true,
        "autoUnsubscribe": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthPayload": "",
        "birthMsg": {},
        "closeTopic": "",
        "closeQos": "0",
        "closePayload": "",
        "closeMsg": {},
        "willTopic": "",
        "willQos": "0",
        "willPayload": "",
        "willMsg": {},
        "userProps": "",
        "sessionExpiry": ""
    }
]