Skip to content

Node-RED~

You can integrate an openHASP plate in Node-RED by subscribing and publishing to its MQTT topics.

The following is an example of how to use Node-RED to read PIN numbers from an alarm button matrix on page 12, and display those numbers back to the screen on p12b2.

First we define p12b1 as the matrix, and p12b2 as the area where to re-display the PIN. Add the following to pages_online.jsonl

{"comment":" ----------- Page 12 layout ------------"}

{"page":12,"id":1,"obj":"btnmatrix","x":10,"y":40,"w":220,"h":220,"options":["1","2","3","\n","4","5","6","\n","7","8","9","\n","Home","0","Away"],"toggle":false,"one_check":false}
{"page":12,"id":2,"obj":"label","x":104,"y":22,"h":30,"w":40,"text":"    ","text_color":"white","align":0,"bg_color":"#2C3E50"}

Button Matrix

Node-RED Flow Visualised

The following jsonl is for 13 Lanbon L8 panels and can be imported

[
    {
        "id": "0b80aa53cbe8e6e2",
        "type": "tab",
        "label": "Lanbon Security Panel",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "e7faec55927cd35a",
        "type": "mqtt in",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "topic": "hasp/livingroom/state/p12b1",
        "qos": "0",
        "datatype": "utf8",
        "broker": "441d674c9c4a7f07",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 140,
        "y": 80,
        "wires": [
            [
                "8ac3fdee648284fe"
            ]
        ]
    },
    {
        "id": "99cabcc7d52bfc9b",
        "type": "debug",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 1290,
        "y": 200,
        "wires": []
    },
    {
        "id": "ac7b661dc1513061",
        "type": "change",
        "z": "0b80aa53cbe8e6e2",
        "name": "MakeNums",
        "rules": [
            {
                "t": "change",
                "p": "payload",
                "pt": "msg",
                "from": "{\"event\":\"down\",\"val\":0,\"text\":\"1\"}",
                "fromt": "str",
                "to": "1",
                "tot": "str"
            },
            {
                "t": "change",
                "p": "payload",
                "pt": "msg",
                "from": "{\"event\":\"down\",\"val\":1,\"text\":\"2\"}",
                "fromt": "str",
                "to": "2",
                "tot": "str"
            },
            {
                "t": "change",
                "p": "payload",
                "pt": "msg",
                "from": "{\"event\":\"down\",\"val\":2,\"text\":\"3\"}",
                "fromt": "str",
                "to": "3",
                "tot": "str"
            },
            {
                "t": "change",
                "p": "payload",
                "pt": "msg",
                "from": "{\"event\":\"down\",\"val\":3,\"text\":\"4\"}",
                "fromt": "str",
                "to": "4",
                "tot": "str"
            },
            {
                "t": "change",
                "p": "payload",
                "pt": "msg",
                "from": "{\"event\":\"down\",\"val\":4,\"text\":\"5\"}",
                "fromt": "str",
                "to": "5",
                "tot": "str"
            },
            {
                "t": "change",
                "p": "payload",
                "pt": "msg",
                "from": "{\"event\":\"down\",\"val\":5,\"text\":\"6\"}",
                "fromt": "str",
                "to": "6",
                "tot": "str"
            },
            {
                "t": "change",
                "p": "payload",
                "pt": "msg",
                "from": "{\"event\":\"down\",\"val\":6,\"text\":\"7\"}",
                "fromt": "str",
                "to": "7",
                "tot": "str"
            },
            {
                "t": "change",
                "p": "payload",
                "pt": "msg",
                "from": "{\"event\":\"down\",\"val\":7,\"text\":\"8\"}",
                "fromt": "str",
                "to": "8",
                "tot": "str"
            },
            {
                "t": "change",
                "p": "payload",
                "pt": "msg",
                "from": "{\"event\":\"down\",\"val\":8,\"text\":\"9\"}",
                "fromt": "str",
                "to": "9",
                "tot": "str"
            },
            {
                "t": "change",
                "p": "payload",
                "pt": "msg",
                "from": "{\"event\":\"down\",\"val\":10,\"text\":\"0\"}",
                "fromt": "str",
                "to": "0",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 450,
        "y": 160,
        "wires": [
            [
                "9739abb6f93766f6"
            ]
        ]
    },
    {
        "id": "d23a2c349910face",
        "type": "function",
        "z": "0b80aa53cbe8e6e2",
        "name": "BuildPIN",
        "func": "var pin=global.get('pin') || \"\";\n\nvar count=global.get('count') || 0;\ncount +=1;\nglobal.set('count',count)\n\npin = pin+msg.payload;\nglobal.set('pin',pin)\n\n\nif (count >= 4) {\n  msg.payload=pin;\n  global.set('count',undefined)\n  global.set('pin',undefined)\n  return msg;\n}\n",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 680,
        "y": 180,
        "wires": [
            [
                "194eed57a4506f13",
                "eaa539f1f670e8ea",
                "978adaf5813fc4c9",
                "421fb70f969f4c42",
                "4b8a2bd06dcf1342"
            ]
        ]
    },
    {
        "id": "8ac3fdee648284fe",
        "type": "switch",
        "z": "0b80aa53cbe8e6e2",
        "name": "OnDown",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "cont",
                "v": "{\"event\":\"down\"",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 1,
        "x": 420,
        "y": 80,
        "wires": [
            [
                "5249d096ebe1aab7",
                "ac7b661dc1513061"
            ]
        ]
    },
    {
        "id": "978adaf5813fc4c9",
        "type": "api-call-service",
        "z": "0b80aa53cbe8e6e2",
        "name": "Disarm Alarm",
        "server": "669eed80.4f9844",
        "version": 5,
        "debugenabled": false,
        "domain": "alarm_control_panel",
        "service": "alarm_disarm",
        "areaId": [],
        "deviceId": [],
        "entityId": [
            "alarm_control_panel.alarm"
        ],
        "data": "{\"code\":msg.payload}",
        "dataType": "jsonata",
        "mergeContext": "",
        "mustacheAltTags": false,
        "outputProperties": [],
        "queue": "none",
        "x": 920,
        "y": 200,
        "wires": [
            [
                "99cabcc7d52bfc9b"
            ]
        ]
    },
    {
        "id": "8b34728627566066",
        "type": "mqtt in",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "topic": "hasp/mainhall/state/p12b1",
        "qos": "0",
        "datatype": "utf8",
        "broker": "441d674c9c4a7f07",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 150,
        "y": 140,
        "wires": [
            [
                "8ac3fdee648284fe"
            ]
        ]
    },
    {
        "id": "da5ff263f7265cee",
        "type": "mqtt in",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "topic": "hasp/ensuite/state/p12b1",
        "qos": "0",
        "datatype": "utf8",
        "broker": "441d674c9c4a7f07",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 150,
        "y": 200,
        "wires": [
            [
                "8ac3fdee648284fe"
            ]
        ]
    },
    {
        "id": "16c2241ebfe6d928",
        "type": "mqtt in",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "topic": "hasp/mbr/state/p12b1",
        "qos": "0",
        "datatype": "utf8",
        "broker": "441d674c9c4a7f07",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 160,
        "y": 260,
        "wires": [
            [
                "8ac3fdee648284fe"
            ]
        ]
    },
    {
        "id": "9152a3b91fa4ce8a",
        "type": "mqtt in",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "topic": "hasp/porch/state/p12b1",
        "qos": "0",
        "datatype": "utf8",
        "broker": "441d674c9c4a7f07",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 150,
        "y": 320,
        "wires": [
            [
                "8ac3fdee648284fe"
            ]
        ]
    },
    {
        "id": "df2df457211af7fa",
        "type": "mqtt in",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "topic": "hasp/dining/state/p12b1",
        "qos": "0",
        "datatype": "utf8",
        "broker": "441d674c9c4a7f07",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 150,
        "y": 380,
        "wires": [
            [
                "8ac3fdee648284fe"
            ]
        ]
    },
    {
        "id": "ef006a2ad5f4033f",
        "type": "mqtt in",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "topic": "hasp/downbath/state/p12b1",
        "qos": "0",
        "datatype": "utf8",
        "broker": "441d674c9c4a7f07",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 140,
        "y": 440,
        "wires": [
            [
                "8ac3fdee648284fe"
            ]
        ]
    },
    {
        "id": "6dc9dabe1edb7af5",
        "type": "mqtt in",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "topic": "hasp/kitchen/state/p12b1",
        "qos": "0",
        "datatype": "utf8",
        "broker": "441d674c9c4a7f07",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 150,
        "y": 500,
        "wires": [
            [
                "8ac3fdee648284fe"
            ]
        ]
    },
    {
        "id": "fb8196aa68104765",
        "type": "mqtt in",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "topic": "hasp/garage/state/p12b1",
        "qos": "0",
        "datatype": "utf8",
        "broker": "441d674c9c4a7f07",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 150,
        "y": 560,
        "wires": [
            [
                "8ac3fdee648284fe"
            ]
        ]
    },
    {
        "id": "a416144df4052b42",
        "type": "mqtt in",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "topic": "hasp/downhall/state/p12b1",
        "qos": "0",
        "datatype": "utf8",
        "broker": "441d674c9c4a7f07",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 140,
        "y": 620,
        "wires": [
            [
                "8ac3fdee648284fe"
            ]
        ]
    },
    {
        "id": "9305a215bd8a3a87",
        "type": "mqtt out",
        "z": "0b80aa53cbe8e6e2",
        "name": "MQTTPublishMood",
        "topic": "hasp/plates/command",
        "qos": "0",
        "retain": "",
        "respTopic": "",
        "contentType": "",
        "userProps": "",
        "correl": "",
        "expiry": "",
        "broker": "441d674c9c4a7f07",
        "x": 1310,
        "y": 40,
        "wires": []
    },
    {
        "id": "5249d096ebe1aab7",
        "type": "change",
        "z": "0b80aa53cbe8e6e2",
        "name": "White",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "moodlight {\"state\": true, \"r\": 255, \"g\": 255, \"b\": 255, \"brightness\": 255}",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 650,
        "y": 40,
        "wires": [
            [
                "1c99afe47fe6da11",
                "9305a215bd8a3a87"
            ]
        ]
    },
    {
        "id": "3a59fcd31e572bb0",
        "type": "change",
        "z": "0b80aa53cbe8e6e2",
        "name": "Black",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "moodlight {\"state\": true, \"r\": 0, \"g\": 0, \"b\": 0, \"brightness\": 255}",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 810,
        "y": 80,
        "wires": [
            [
                "9305a215bd8a3a87"
            ]
        ]
    },
    {
        "id": "197cb8bad0ea98a3",
        "type": "api-call-service",
        "z": "0b80aa53cbe8e6e2",
        "name": "ArmAway",
        "server": "669eed80.4f9844",
        "version": 5,
        "debugenabled": false,
        "domain": "alarm_control_panel",
        "service": "alarm_arm_away",
        "areaId": [],
        "deviceId": [],
        "entityId": [
            "alarm_control_panel.alarm"
        ],
        "data": "{\"code\":\"1776\"}",
        "dataType": "jsonata",
        "mergeContext": "",
        "mustacheAltTags": false,
        "outputProperties": [],
        "queue": "none",
        "x": 940,
        "y": 320,
        "wires": [
            [
                "99cabcc7d52bfc9b"
            ]
        ]
    },
    {
        "id": "eaa539f1f670e8ea",
        "type": "change",
        "z": "0b80aa53cbe8e6e2",
        "name": "Purple",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "moodlight {\"state\": true, \"r\": 255, \"g\": 0, \"b\": 255, \"brightness\": 255}",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 950,
        "y": 380,
        "wires": [
            [
                "9305a215bd8a3a87",
                "cae42e223294ce38"
            ]
        ]
    },
    {
        "id": "194eed57a4506f13",
        "type": "function",
        "z": "0b80aa53cbe8e6e2",
        "name": "Reset",
        "func": "  global.set('count',undefined)\n  global.set('pin',undefined)\n  msg.payload = \"\"",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 670,
        "y": 240,
        "wires": [
            [
                "421fb70f969f4c42"
            ]
        ]
    },
    {
        "id": "9739abb6f93766f6",
        "type": "switch",
        "z": "0b80aa53cbe8e6e2",
        "name": "0-9HomeAway",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "btwn",
                "v": "0",
                "vt": "num",
                "v2": "9",
                "v2t": "num"
            },
            {
                "t": "eq",
                "v": "{\"event\":\"down\",\"val\":9,\"text\":\"Home\"}",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "{\"event\":\"down\",\"val\":11,\"text\":\"Away\"}",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 3,
        "x": 440,
        "y": 240,
        "wires": [
            [
                "d23a2c349910face",
                "f9f85bc88ea6f404"
            ],
            [
                "194eed57a4506f13"
            ],
            [
                "194eed57a4506f13",
                "c861944aac699e3e",
                "206a424a07c9fb22"
            ]
        ]
    },
    {
        "id": "11dad534fd1a944e",
        "type": "change",
        "z": "0b80aa53cbe8e6e2",
        "name": "Black",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "moodlight {\"state\": true, \"r\": 0, \"g\": 0, \"b\": 0, \"brightness\": 255}",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 1010,
        "y": 440,
        "wires": [
            [
                "9305a215bd8a3a87"
            ]
        ]
    },
    {
        "id": "cae42e223294ce38",
        "type": "delay",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "pauseType": "delay",
        "timeout": "1",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "allowrate": false,
        "outputs": 1,
        "x": 880,
        "y": 440,
        "wires": [
            [
                "11dad534fd1a944e"
            ]
        ]
    },
    {
        "id": "4b8a2bd06dcf1342",
        "type": "mqtt out",
        "z": "0b80aa53cbe8e6e2",
        "name": "MQTTPublishPIN",
        "topic": "hasp/plates/command/p12b2.text",
        "qos": "0",
        "retain": "",
        "respTopic": "",
        "contentType": "",
        "userProps": "",
        "correl": "",
        "expiry": "",
        "broker": "441d674c9c4a7f07",
        "x": 1310,
        "y": 120,
        "wires": []
    },
    {
        "id": "f9f85bc88ea6f404",
        "type": "function",
        "z": "0b80aa53cbe8e6e2",
        "name": "DisplayPIN",
        "func": "var pin=global.get('pin')\n// pin = pin+msg.payload;\nmsg.payload = pin;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 690,
        "y": 140,
        "wires": [
            [
                "4b8a2bd06dcf1342"
            ]
        ]
    },
    {
        "id": "149782424f319147",
        "type": "change",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "****",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 1040,
        "y": 500,
        "wires": [
            [
                "4b8a2bd06dcf1342",
                "88031b2f0bea8fef"
            ]
        ]
    },
    {
        "id": "421fb70f969f4c42",
        "type": "delay",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "pauseType": "delay",
        "timeout": "500",
        "timeoutUnits": "milliseconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "allowrate": false,
        "outputs": 1,
        "x": 870,
        "y": 500,
        "wires": [
            [
                "149782424f319147"
            ]
        ]
    },
    {
        "id": "88031b2f0bea8fef",
        "type": "delay",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "pauseType": "delay",
        "timeout": "500",
        "timeoutUnits": "milliseconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "allowrate": false,
        "outputs": 1,
        "x": 870,
        "y": 560,
        "wires": [
            [
                "bf47160c100015ca"
            ]
        ]
    },
    {
        "id": "bf47160c100015ca",
        "type": "change",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "    ",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 1040,
        "y": 560,
        "wires": [
            [
                "4b8a2bd06dcf1342"
            ]
        ]
    },
    {
        "id": "c861944aac699e3e",
        "type": "delay",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "pauseType": "delay",
        "timeout": "15",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "allowrate": false,
        "outputs": 1,
        "x": 660,
        "y": 300,
        "wires": [
            [
                "371b17d0dd9918dc",
                "24f9431e18e5d5f2"
            ]
        ]
    },
    {
        "id": "1c99afe47fe6da11",
        "type": "delay",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "pauseType": "delay",
        "timeout": "300",
        "timeoutUnits": "milliseconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "allowrate": false,
        "outputs": 1,
        "x": 670,
        "y": 80,
        "wires": [
            [
                "3a59fcd31e572bb0"
            ]
        ]
    },
    {
        "id": "206a424a07c9fb22",
        "type": "change",
        "z": "0b80aa53cbe8e6e2",
        "name": "30 sec",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "Alarm will arm away in 30 seconds",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 410,
        "y": 300,
        "wires": [
            []
        ]
    },
    {
        "id": "24f9431e18e5d5f2",
        "type": "change",
        "z": "0b80aa53cbe8e6e2",
        "name": "15 sec",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "15 seconds",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 410,
        "y": 360,
        "wires": [
            []
        ]
    },
    {
        "id": "371b17d0dd9918dc",
        "type": "delay",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "pauseType": "delay",
        "timeout": "10",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "allowrate": false,
        "outputs": 1,
        "x": 660,
        "y": 360,
        "wires": [
            [
                "b8098924ec49405c",
                "56b96ab40a26daeb"
            ]
        ]
    },
    {
        "id": "b8098924ec49405c",
        "type": "delay",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "pauseType": "delay",
        "timeout": "5",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "allowrate": false,
        "outputs": 1,
        "x": 660,
        "y": 420,
        "wires": [
            [
                "197cb8bad0ea98a3"
            ]
        ]
    },
    {
        "id": "56b96ab40a26daeb",
        "type": "change",
        "z": "0b80aa53cbe8e6e2",
        "name": "5 Secs",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "5 Seconds",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 410,
        "y": 420,
        "wires": [
            []
        ]
    },
    {
        "id": "0b8f9dbd664953e2",
        "type": "api-call-service",
        "z": "0b80aa53cbe8e6e2",
        "name": "ArmHome",
        "server": "669eed80.4f9844",
        "version": 5,
        "debugenabled": false,
        "domain": "alarm_control_panel",
        "service": "alarm_arm_home",
        "areaId": [],
        "deviceId": [],
        "entityId": [
            "alarm_control_panel.alarm"
        ],
        "data": "{\"code\":\"1776\"}",
        "dataType": "jsonata",
        "mergeContext": "",
        "mustacheAltTags": false,
        "outputProperties": [],
        "queue": "none",
        "x": 940,
        "y": 260,
        "wires": [
            [
                "99cabcc7d52bfc9b"
            ]
        ]
    },
    {
        "id": "0bf633ce2d98dd79",
        "type": "mqtt in",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "topic": "hasp/upbath/state/p12b1",
        "qos": "0",
        "datatype": "utf8",
        "broker": "441d674c9c4a7f07",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 150,
        "y": 680,
        "wires": [
            [
                "8ac3fdee648284fe"
            ]
        ]
    },
    {
        "id": "e3bf26032c55a701",
        "type": "debug",
        "z": "0b80aa53cbe8e6e2",
        "name": "debug 1",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 640,
        "y": 580,
        "wires": []
    },
    {
        "id": "9a8d3eea339efbdc",
        "type": "mqtt in",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "topic": "hasp/allys_room/state/p12b1",
        "qos": "0",
        "datatype": "utf8",
        "broker": "441d674c9c4a7f07",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 140,
        "y": 740,
        "wires": [
            [
                "8ac3fdee648284fe"
            ]
        ]
    },
    {
        "id": "7aac330a4bb67fe8",
        "type": "mqtt in",
        "z": "0b80aa53cbe8e6e2",
        "name": "",
        "topic": "hasp/victorias_room/state/p12b1",
        "qos": "0",
        "datatype": "utf8",
        "broker": "441d674c9c4a7f07",
        "nl": false,
        "rap": true,
        "rh": 0,
        "inputs": 0,
        "x": 130,
        "y": 800,
        "wires": [
            [
                "8ac3fdee648284fe"
            ]
        ]
    },
    {
        "id": "441d674c9c4a7f07",
        "type": "mqtt-broker",
        "name": "192.168.0.21",
        "broker": "192.168.0.21",
        "port": "1883",
        "clientid": "",
        "autoConnect": true,
        "usetls": false,
        "protocolVersion": "4",
        "keepalive": "60",
        "cleansession": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthPayload": "",
        "birthMsg": {},
        "closeTopic": "",
        "closeQos": "0",
        "closePayload": "",
        "closeMsg": {},
        "willTopic": "",
        "willQos": "0",
        "willPayload": "",
        "willMsg": {},
        "sessionExpiry": ""
    },
    {
        "id": "669eed80.4f9844",
        "type": "server",
        "name": "Home Assistant",
        "version": 5,
        "addon": true,
        "rejectUnauthorizedCerts": true,
        "ha_boolean": "y|yes|true|on|home|open",
        "connectionDelay": false,
        "cacheJson": false,
        "heartbeat": false,
        "heartbeatInterval": 30,
        "areaSelector": "friendlyName",
        "deviceSelector": "friendlyName",
        "entitySelector": "friendlyName",
        "statusSeparator": "at: ",
        "statusYear": "hidden",
        "statusMonth": "short",
        "statusDay": "numeric",
        "statusHourCycle": "h23",
        "statusTimeFormat": "h:m",
        "enableGlobalContextStore": true
    }
]