@@ -0,0 +1,440 @@
|
||||
[
|
||||
{
|
||||
"id": "brd05c91e3",
|
||||
"type": "mqtt-broker",
|
||||
"name": "mosquitto",
|
||||
"broker": "mosquitto",
|
||||
"port": "1883",
|
||||
"clientid": "",
|
||||
"autoConnect": true,
|
||||
"usetls": false,
|
||||
"protocolVersion": "4",
|
||||
"keepalive": "60",
|
||||
"cleansession": true,
|
||||
"birthTopic": "",
|
||||
"birthQos": "0",
|
||||
"birthPayload": "",
|
||||
"closeTopic": "",
|
||||
"closeQos": "0",
|
||||
"closePayload": "",
|
||||
"willTopic": "",
|
||||
"willQos": "0",
|
||||
"willPayload": ""
|
||||
},
|
||||
{
|
||||
"id": "uib31315d0b",
|
||||
"type": "ui-base",
|
||||
"name": "Dashboard",
|
||||
"path": "/dashboard",
|
||||
"includeClientData": true,
|
||||
"acceptsClientConfig": [
|
||||
"ui-notification",
|
||||
"ui-control"
|
||||
],
|
||||
"showPathInSidebar": false,
|
||||
"navigationStyle": "default",
|
||||
"titleBarStyle": "default"
|
||||
},
|
||||
{
|
||||
"id": "uit1f2d1d17",
|
||||
"type": "ui-theme",
|
||||
"name": "Default Theme",
|
||||
"colors": {
|
||||
"surface": "#ffffff",
|
||||
"primary": "#0094CE",
|
||||
"bgPage": "#eeeeee",
|
||||
"groupBg": "#ffffff",
|
||||
"groupOutline": "#cccccc"
|
||||
},
|
||||
"sizes": {
|
||||
"pagePadding": "12px",
|
||||
"groupGap": "12px",
|
||||
"groupBorderRadius": "4px",
|
||||
"widgetGap": "12px"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "uipc7a69acb",
|
||||
"type": "ui-page",
|
||||
"name": "Home",
|
||||
"ui": "uib31315d0b",
|
||||
"icon": "home",
|
||||
"path": "/home",
|
||||
"theme": "uit1f2d1d17",
|
||||
"layout": "flex",
|
||||
"order": 0,
|
||||
"className": "",
|
||||
"visible": true,
|
||||
"disabled": false
|
||||
},
|
||||
{
|
||||
"id": "uig32ecccd2",
|
||||
"type": "ui-group",
|
||||
"name": "Plugs",
|
||||
"page": "uipc7a69acb",
|
||||
"width": "6",
|
||||
"height": "1",
|
||||
"order": 1,
|
||||
"showTitle": true,
|
||||
"className": "",
|
||||
"visible": true,
|
||||
"disabled": false
|
||||
},
|
||||
{
|
||||
"id": "f810d3244",
|
||||
"type": "tab",
|
||||
"label": "Zigbee Monitor",
|
||||
"disabled": false,
|
||||
"info": "Button dispatches single vs hold-release to different plug sets. Plug plumbing (state-in, /set out, dashboard widget, per-channel mapper) is generated by flow2json.py from the plugs lists below.",
|
||||
"env": []
|
||||
},
|
||||
{
|
||||
"id": "zigbee-state-squiggle",
|
||||
"type": "mqtt in",
|
||||
"wires": [
|
||||
[
|
||||
"text-squiggle"
|
||||
]
|
||||
],
|
||||
"name": "",
|
||||
"broker": "brd05c91e3",
|
||||
"topic": "zigbee2mqtt/Squiggle",
|
||||
"qos": "0",
|
||||
"datatype": "auto",
|
||||
"z": "f810d3244",
|
||||
"x": 170,
|
||||
"y": 80
|
||||
},
|
||||
{
|
||||
"id": "text-squiggle",
|
||||
"type": "ui-text",
|
||||
"wires": [],
|
||||
"name": "Squiggle",
|
||||
"group": "uig32ecccd2",
|
||||
"width": "6",
|
||||
"height": "2",
|
||||
"order": 1,
|
||||
"label": "Squiggle",
|
||||
"format": "{{msg.payload.state}}",
|
||||
"layout": "row-spread",
|
||||
"className": "",
|
||||
"z": "f810d3244",
|
||||
"x": 770,
|
||||
"y": 150
|
||||
},
|
||||
{
|
||||
"id": "plug-out-squiggle",
|
||||
"type": "mqtt out",
|
||||
"wires": [],
|
||||
"name": "",
|
||||
"broker": "brd05c91e3",
|
||||
"topic": "zigbee2mqtt/Squiggle/set",
|
||||
"qos": "2",
|
||||
"retain": false,
|
||||
"z": "f810d3244",
|
||||
"x": 770,
|
||||
"y": 220
|
||||
},
|
||||
{
|
||||
"id": "zigbee-state-sideboard",
|
||||
"type": "mqtt in",
|
||||
"wires": [
|
||||
[
|
||||
"text-sideboard"
|
||||
]
|
||||
],
|
||||
"name": "",
|
||||
"broker": "brd05c91e3",
|
||||
"topic": "zigbee2mqtt/Sideboard Lamp",
|
||||
"qos": "0",
|
||||
"datatype": "auto",
|
||||
"z": "f810d3244",
|
||||
"x": 170,
|
||||
"y": 290
|
||||
},
|
||||
{
|
||||
"id": "text-sideboard",
|
||||
"type": "ui-text",
|
||||
"wires": [],
|
||||
"name": "Sideboard Lamp",
|
||||
"group": "uig32ecccd2",
|
||||
"width": "6",
|
||||
"height": "2",
|
||||
"order": 2,
|
||||
"label": "Sideboard Lamp",
|
||||
"format": "{{msg.payload.state}}",
|
||||
"layout": "row-spread",
|
||||
"className": "",
|
||||
"z": "f810d3244",
|
||||
"x": 770,
|
||||
"y": 360
|
||||
},
|
||||
{
|
||||
"id": "plug-out-sideboard",
|
||||
"type": "mqtt out",
|
||||
"wires": [],
|
||||
"name": "",
|
||||
"broker": "brd05c91e3",
|
||||
"topic": "zigbee2mqtt/Sideboard Lamp/set",
|
||||
"qos": "2",
|
||||
"retain": false,
|
||||
"z": "f810d3244",
|
||||
"x": 770,
|
||||
"y": 430
|
||||
},
|
||||
{
|
||||
"id": "zigbee-state-bamboo",
|
||||
"type": "mqtt in",
|
||||
"wires": [
|
||||
[
|
||||
"text-bamboo"
|
||||
]
|
||||
],
|
||||
"name": "",
|
||||
"broker": "brd05c91e3",
|
||||
"topic": "zigbee2mqtt/Bamboo Lights",
|
||||
"qos": "0",
|
||||
"datatype": "auto",
|
||||
"z": "f810d3244",
|
||||
"x": 170,
|
||||
"y": 500
|
||||
},
|
||||
{
|
||||
"id": "text-bamboo",
|
||||
"type": "ui-text",
|
||||
"wires": [],
|
||||
"name": "Bamboo Lights",
|
||||
"group": "uig32ecccd2",
|
||||
"width": "6",
|
||||
"height": "2",
|
||||
"order": 3,
|
||||
"label": "Bamboo Lights",
|
||||
"format": "{{msg.payload.state}}",
|
||||
"layout": "row-spread",
|
||||
"className": "",
|
||||
"z": "f810d3244",
|
||||
"x": 770,
|
||||
"y": 570
|
||||
},
|
||||
{
|
||||
"id": "plug-out-bamboo",
|
||||
"type": "mqtt out",
|
||||
"wires": [],
|
||||
"name": "",
|
||||
"broker": "brd05c91e3",
|
||||
"topic": "zigbee2mqtt/Bamboo Lights/set",
|
||||
"qos": "2",
|
||||
"retain": false,
|
||||
"z": "f810d3244",
|
||||
"x": 770,
|
||||
"y": 640
|
||||
},
|
||||
{
|
||||
"id": "zigbee-state-couch",
|
||||
"type": "mqtt in",
|
||||
"wires": [
|
||||
[
|
||||
"text-couch"
|
||||
]
|
||||
],
|
||||
"name": "",
|
||||
"broker": "brd05c91e3",
|
||||
"topic": "zigbee2mqtt/Dual Outlet - Couch",
|
||||
"qos": "0",
|
||||
"datatype": "auto",
|
||||
"z": "f810d3244",
|
||||
"x": 170,
|
||||
"y": 710
|
||||
},
|
||||
{
|
||||
"id": "text-couch",
|
||||
"type": "ui-text",
|
||||
"wires": [],
|
||||
"name": "Dual Outlet - Couch",
|
||||
"group": "uig32ecccd2",
|
||||
"width": "6",
|
||||
"height": "2",
|
||||
"order": 4,
|
||||
"label": "Dual Outlet - Couch",
|
||||
"format": "{{msg.payload.state_1}} / {{msg.payload.state_2}}",
|
||||
"layout": "row-spread",
|
||||
"className": "",
|
||||
"z": "f810d3244",
|
||||
"x": 770,
|
||||
"y": 780
|
||||
},
|
||||
{
|
||||
"id": "mapper-couch",
|
||||
"type": "function",
|
||||
"wires": [
|
||||
[
|
||||
"plug-out-couch"
|
||||
]
|
||||
],
|
||||
"name": "Toggle each outlet",
|
||||
"func": "msg.payload = {state_1: 'TOGGLE', state_2: 'TOGGLE'};\nreturn msg;",
|
||||
"outputs": 1,
|
||||
"noerr": 0,
|
||||
"initialize": "",
|
||||
"finalize": "",
|
||||
"libs": [],
|
||||
"z": "f810d3244",
|
||||
"x": 450,
|
||||
"y": 850
|
||||
},
|
||||
{
|
||||
"id": "plug-out-couch",
|
||||
"type": "mqtt out",
|
||||
"wires": [],
|
||||
"name": "",
|
||||
"broker": "brd05c91e3",
|
||||
"topic": "zigbee2mqtt/Dual Outlet - Couch/set",
|
||||
"qos": "2",
|
||||
"retain": false,
|
||||
"z": "f810d3244",
|
||||
"x": 770,
|
||||
"y": 920
|
||||
},
|
||||
{
|
||||
"id": "zigbee-state-djbooth",
|
||||
"type": "mqtt in",
|
||||
"wires": [
|
||||
[
|
||||
"text-djbooth"
|
||||
]
|
||||
],
|
||||
"name": "",
|
||||
"broker": "brd05c91e3",
|
||||
"topic": "zigbee2mqtt/DJ Booth",
|
||||
"qos": "0",
|
||||
"datatype": "auto",
|
||||
"z": "f810d3244",
|
||||
"x": 170,
|
||||
"y": 990
|
||||
},
|
||||
{
|
||||
"id": "text-djbooth",
|
||||
"type": "ui-text",
|
||||
"wires": [],
|
||||
"name": "DJ Booth",
|
||||
"group": "uig32ecccd2",
|
||||
"width": "6",
|
||||
"height": "2",
|
||||
"order": 5,
|
||||
"label": "DJ Booth",
|
||||
"format": "{{msg.payload.state}}",
|
||||
"layout": "row-spread",
|
||||
"className": "",
|
||||
"z": "f810d3244",
|
||||
"x": 770,
|
||||
"y": 1060
|
||||
},
|
||||
{
|
||||
"id": "plug-out-djbooth",
|
||||
"type": "mqtt out",
|
||||
"wires": [],
|
||||
"name": "",
|
||||
"broker": "brd05c91e3",
|
||||
"topic": "zigbee2mqtt/DJ Booth/set",
|
||||
"qos": "2",
|
||||
"retain": false,
|
||||
"z": "f810d3244",
|
||||
"x": 770,
|
||||
"y": 1130
|
||||
},
|
||||
{
|
||||
"id": "button-in",
|
||||
"type": "mqtt in",
|
||||
"wires": [
|
||||
[
|
||||
"single-filter",
|
||||
"hold-filter"
|
||||
]
|
||||
],
|
||||
"name": "",
|
||||
"x": 170,
|
||||
"y": 80,
|
||||
"broker": "brd05c91e3",
|
||||
"topic": "zigbee2mqtt/Door Button",
|
||||
"qos": "0",
|
||||
"datatype": "auto",
|
||||
"z": "f810d3244"
|
||||
},
|
||||
{
|
||||
"id": "single-filter",
|
||||
"type": "function",
|
||||
"wires": [
|
||||
[
|
||||
"plug-out-squiggle",
|
||||
"plug-out-sideboard",
|
||||
"plug-out-bamboo",
|
||||
"mapper-couch"
|
||||
]
|
||||
],
|
||||
"name": "Single click",
|
||||
"x": 450,
|
||||
"y": 80,
|
||||
"func": "const now = Date.now();\nconst last = context.get('lastTime') || 0;\nif (now - last < 50) return null;\ncontext.set('lastTime', now);\ntry {\n const p = JSON.parse(msg.payload);\n if (p.action === 'single') {\n msg.payload = { state: 'TOGGLE' };\n return msg;\n }\n} catch (e) {}\nreturn null;\n",
|
||||
"outputs": 1,
|
||||
"noerr": 0,
|
||||
"initialize": "",
|
||||
"finalize": "",
|
||||
"libs": [],
|
||||
"z": "f810d3244"
|
||||
},
|
||||
{
|
||||
"id": "hold-filter",
|
||||
"type": "function",
|
||||
"wires": [
|
||||
[
|
||||
"plug-out-djbooth"
|
||||
]
|
||||
],
|
||||
"name": "Hold release",
|
||||
"x": 450,
|
||||
"y": 80,
|
||||
"func": "const now = Date.now();\nconst last = context.get('lastTime') || 0;\nif (now - last < 50) return null;\ncontext.set('lastTime', now);\ntry {\n const p = JSON.parse(msg.payload);\n if (p.action === 'release') {\n msg.payload = { state: 'TOGGLE' };\n return msg;\n }\n} catch (e) {}\nreturn null;\n",
|
||||
"outputs": 1,
|
||||
"noerr": 0,
|
||||
"initialize": "",
|
||||
"finalize": "",
|
||||
"libs": [],
|
||||
"z": "f810d3244"
|
||||
},
|
||||
{
|
||||
"id": "permit-btn",
|
||||
"type": "ui-button",
|
||||
"wires": [
|
||||
[
|
||||
"mqtt-out"
|
||||
]
|
||||
],
|
||||
"name": "Permit Join (60s)",
|
||||
"x": 170,
|
||||
"y": 220,
|
||||
"group": "uig32ecccd2",
|
||||
"payload": "{\"value\": true, \"time\": 60}",
|
||||
"payloadType": "json",
|
||||
"topic": "zigbee2mqtt/bridge/request/permit_join",
|
||||
"width": "3",
|
||||
"height": "1",
|
||||
"order": 9,
|
||||
"className": "",
|
||||
"z": "f810d3244",
|
||||
"icon": "",
|
||||
"label": "Permit Join (60s)"
|
||||
},
|
||||
{
|
||||
"id": "mqtt-out",
|
||||
"type": "mqtt out",
|
||||
"wires": [],
|
||||
"name": "",
|
||||
"x": 770,
|
||||
"y": 220,
|
||||
"broker": "brd05c91e3",
|
||||
"topic": "",
|
||||
"qos": "2",
|
||||
"retain": false,
|
||||
"z": "f810d3244"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user