[
    {
        "id": "9d4b83832f284554",
        "type": "inject",
        "z": "0e4ef1e0739bd351",
        "name": "Init Dimmy Inputs",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.5,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 200,
        "y": 2800,
        "wires": [
            [
                "9bede78cffb946a3"
            ]
        ]
    },
    {
        "id": "9bede78cffb946a3",
        "type": "function",
        "z": "0e4ef1e0739bd351",
        "name": "Build Dimmy config messages",
        "func": "// Button \u2192 dimmer index (1-based as used in file, null = none)\n// dimmer0=d1, dimmer1=d2, dimmer2=d3, dimmer4=d5, dimmer5=d6, dimmer6=d7\nconst mapping = [\n    { key: 'dimmy1', dimmer: 7  }, // Button1 \u2192 dimmer6\n    { key: 'dimmy2', dimmer: 1  }, // Button2 \u2192 dimmer0\n    { key: 'dimmy3', dimmer: 2  }, // Button3 \u2192 dimmer1\n    { key: 'dimmy4', dimmer: null }, // Button4 \u2192 none\n    { key: 'dimmy5', dimmer: null }, // Button5 \u2192 none\n    { key: 'dimmy6', dimmer: 3  }, // Button6 \u2192 dimmer2\n    { key: 'dimmy7', dimmer: 6  }, // Button7 \u2192 dimmer5\n    { key: 'dimmy8', dimmer: 5  }, // Button8 \u2192 dimmer4\n];\n\nconst relayKeys = ['one','two','three','four','five','six','seven','eight',\n                   'nine','ten','eleven','twelve','thirteen','fourteen','fifteen','sixteen'];\n\nconst messages = [];\n\nmapping.forEach(({ key, dimmer }) => {\n    // Set global type\n    global.set('mcpinput_' + key + '_type', 'button');\n\n    // Build config object\n    const relays = {};\n    relayKeys.forEach(k => relays[k] = false);\n\n    const dimmers = {};\n    for (let i = 1; i <= 15; i++) {\n        dimmers['d' + i] = (dimmer !== null && i === dimmer);\n    }\n\n    messages.push({\n        filename: 'pekaway/mcpinput_' + key,\n        payload: JSON.stringify({ relays, dimmers })\n    });\n});\n\nnode.warn('Dimmy globals set, sending ' + messages.length + ' config files to write');\nreturn [messages];",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 440,
        "y": 2800,
        "wires": [
            [
                "c755c94bf6344cde"
            ]
        ]
    },
    {
        "id": "c755c94bf6344cde",
        "type": "split",
        "z": "0e4ef1e0739bd351",
        "name": "",
        "splt": "\\n",
        "spltType": "str",
        "arraySplt": 1,
        "arraySpltType": "len",
        "stream": false,
        "addname": "",
        "x": 630,
        "y": 2800,
        "wires": [
            [
                "15aa7f0c0c4049e9"
            ]
        ]
    },
    {
        "id": "15aa7f0c0c4049e9",
        "type": "file",
        "z": "0e4ef1e0739bd351",
        "name": "",
        "filename": "filename",
        "filenameType": "msg",
        "appendNewline": false,
        "createDir": true,
        "overwriteFile": "true",
        "encoding": "none",
        "x": 790,
        "y": 2800,
        "wires": [
            []
        ]
    },
    {
        "id": "ad6760d9d96041c0",
        "type": "mqtt in",
        "z": "0e4ef1e0739bd351",
        "name": "Dimmy Button Events",
        "topic": "pkw/stat/PekawayMOTA/RESULT",
        "qos": "2",
        "datatype": "json",
        "broker": "0ddb07c65cbb68bc",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 200,
        "y": 2860,
        "wires": [
            [
                "2c34e7756a4f4e02"
            ]
        ]
    },
    {
        "id": "2c34e7756a4f4e02",
        "type": "function",
        "z": "0e4ef1e0739bd351",
        "name": "Dimmy Buttons \u2192 mcpinput",
        "func": "// Map Button number to dimmy mcpinput key\nconst buttonMap = {\n    'Button1': 'dimmy1',\n    'Button2': 'dimmy2',\n    'Button3': 'dimmy3',\n    'Button4': 'dimmy4',\n    'Button5': 'dimmy5',\n    'Button6': 'dimmy6',\n    'Button7': 'dimmy7',\n    'Button8': 'dimmy8'\n};\n\n// Find which button was pressed\nconst buttonKey = Object.keys(buttonMap).find(k => msg.payload[k]);\nif (!buttonKey) return null;\n\nconst action = msg.payload[buttonKey].Action;\nconst mcpinput = buttonMap[buttonKey];\nconst filename = 'pekaway/mcpinput_' + mcpinput;\n\nfunction makeMsg(status) {\n    return {\n        payload: status,\n        mcpinput: mcpinput,\n        mcpinput_status: status,\n        filename: filename\n    };\n}\n\n// SINGLE \u2192 press + release\nif (action === 'SINGLE') {\n    node.send([makeMsg(true)]);\n    setTimeout(() => {\n        node.send([makeMsg(false)]);\n    }, 200);\n    return null;\n}\n\n// HOLD \u2192 press only\nif (action === 'HOLD') {\n    node.send([makeMsg(true)]);\n    return null;\n}\n\n// CLEAR \u2192 release\nif (action === 'CLEAR') {\n    node.send([makeMsg(false)]);\n    return null;\n}\n\nreturn null;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 440,
        "y": 2860,
        "wires": [
            [
                "589dafb549634a11"
            ]
        ]
    },
    {
        "id": "589dafb549634a11",
        "type": "link out",
        "z": "0e4ef1e0739bd351",
        "name": "\u2192 file in (dimmy inputs)",
        "mode": "link",
        "links": [
            "4ef47b1bf2260f83"
        ],
        "x": 660,
        "y": 2860,
        "wires": []
    }
]
