Huge rework of Main Scenes Handler #3
Fixed logic where it attempted to notify a TV even in rooms with no TV. Cut down on a LOT of nodes/connections using async msg sending. Single node for setting nightlight vs not.
This commit is contained in:
300
flows.json
300
flows.json
@ -310,11 +310,11 @@
|
||||
],
|
||||
"out": [
|
||||
{
|
||||
"x": 720,
|
||||
"x": 520,
|
||||
"y": 40,
|
||||
"wires": [
|
||||
{
|
||||
"id": "011c7df420cc7f1a",
|
||||
"id": "78a60e2da212f6aa",
|
||||
"port": 0
|
||||
}
|
||||
]
|
||||
@ -483,16 +483,16 @@
|
||||
"color": "#DDAA99",
|
||||
"icon": "node-red-contrib-huemagic/hue-scene.svg",
|
||||
"status": {
|
||||
"x": 1560,
|
||||
"y": 500,
|
||||
"x": 680,
|
||||
"y": 360,
|
||||
"wires": [
|
||||
{
|
||||
"id": "6ae79d1701e78840",
|
||||
"port": 0
|
||||
"id": "4ab49b8485f1886f",
|
||||
"port": 3
|
||||
},
|
||||
{
|
||||
"id": "defe84d113029e8e",
|
||||
"port": 0
|
||||
"id": "9af9a2966a477b33",
|
||||
"port": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -700,7 +700,9 @@
|
||||
"37f1c11c59a6ce16"
|
||||
],
|
||||
"x": 94,
|
||||
"y": 339
|
||||
"y": 339,
|
||||
"w": 1872,
|
||||
"h": 622
|
||||
},
|
||||
{
|
||||
"id": "39a7ac02f2727f1d",
|
||||
@ -864,7 +866,9 @@
|
||||
"51b11f9d5b8bfbb0"
|
||||
],
|
||||
"x": 34,
|
||||
"y": 179
|
||||
"y": 179,
|
||||
"w": 1292,
|
||||
"h": 382
|
||||
},
|
||||
{
|
||||
"id": "477e752fcd2e2a19",
|
||||
@ -952,7 +956,9 @@
|
||||
"febc179b34c8cf71"
|
||||
],
|
||||
"x": 34,
|
||||
"y": 39
|
||||
"y": 39,
|
||||
"w": 692,
|
||||
"h": 682
|
||||
},
|
||||
{
|
||||
"id": "46275dd0f9461013",
|
||||
@ -970,7 +976,9 @@
|
||||
"ca88f85ba00a6744"
|
||||
],
|
||||
"x": 34,
|
||||
"y": 739
|
||||
"y": 739,
|
||||
"w": 472,
|
||||
"h": 202
|
||||
},
|
||||
{
|
||||
"id": "ff6d8150e8d5e606",
|
||||
@ -1033,7 +1041,9 @@
|
||||
"c0933fcc8737bc0b"
|
||||
],
|
||||
"x": 34,
|
||||
"y": 239
|
||||
"y": 239,
|
||||
"w": 1032,
|
||||
"h": 322
|
||||
},
|
||||
{
|
||||
"id": "1ca205a84922c8c2",
|
||||
@ -1171,7 +1181,9 @@
|
||||
"b281061a4b08d2eb"
|
||||
],
|
||||
"x": 34,
|
||||
"y": 759
|
||||
"y": 759,
|
||||
"w": 612,
|
||||
"h": 202
|
||||
},
|
||||
{
|
||||
"id": "550e5b2d99316b12",
|
||||
@ -1196,7 +1208,9 @@
|
||||
"2516c6e3146cc851"
|
||||
],
|
||||
"x": 34,
|
||||
"y": 619
|
||||
"y": 619,
|
||||
"w": 1112,
|
||||
"h": 282
|
||||
},
|
||||
{
|
||||
"id": "f519aff597ece351",
|
||||
@ -1315,7 +1329,9 @@
|
||||
"51d05298561cfddb"
|
||||
],
|
||||
"x": 754,
|
||||
"y": 39
|
||||
"y": 39,
|
||||
"w": 672,
|
||||
"h": 262
|
||||
},
|
||||
{
|
||||
"id": "b708cb6d93f40dee",
|
||||
@ -1348,7 +1364,9 @@
|
||||
"a8d7f5e5d4f549b0"
|
||||
],
|
||||
"x": 34,
|
||||
"y": 579
|
||||
"y": 579,
|
||||
"w": 732,
|
||||
"h": 162
|
||||
},
|
||||
{
|
||||
"id": "4886967d0f8c0156",
|
||||
@ -1389,7 +1407,9 @@
|
||||
"5ba9cfc0194ef62a"
|
||||
],
|
||||
"x": 754,
|
||||
"y": 319
|
||||
"y": 319,
|
||||
"w": 672,
|
||||
"h": 622
|
||||
},
|
||||
{
|
||||
"id": "931cc27100c9317e",
|
||||
@ -1408,7 +1428,9 @@
|
||||
"f9bc4d36a0df7947"
|
||||
],
|
||||
"x": 34,
|
||||
"y": 759
|
||||
"y": 759,
|
||||
"w": 672,
|
||||
"h": 222
|
||||
},
|
||||
{
|
||||
"id": "6e83103b5c5311e9",
|
||||
@ -1426,7 +1448,9 @@
|
||||
"a75651492e779bfc"
|
||||
],
|
||||
"x": 34,
|
||||
"y": 19
|
||||
"y": 19,
|
||||
"w": 912,
|
||||
"h": 142
|
||||
},
|
||||
{
|
||||
"id": "88f099618e56926d",
|
||||
@ -1508,7 +1532,9 @@
|
||||
"15f7382daddb4b3e"
|
||||
],
|
||||
"x": 34,
|
||||
"y": 999
|
||||
"y": 999,
|
||||
"w": 632,
|
||||
"h": 82
|
||||
},
|
||||
{
|
||||
"id": "31767ffd6a647579",
|
||||
@ -1537,7 +1563,9 @@
|
||||
"e23e7b080ee3773f"
|
||||
],
|
||||
"x": 14,
|
||||
"y": 399
|
||||
"y": 399,
|
||||
"w": 1532,
|
||||
"h": 282
|
||||
},
|
||||
{
|
||||
"id": "1cc8b382530c33d0",
|
||||
@ -1589,7 +1617,9 @@
|
||||
"6b5d3e550ad76528"
|
||||
],
|
||||
"x": 34,
|
||||
"y": 39
|
||||
"y": 39,
|
||||
"w": 692,
|
||||
"h": 82
|
||||
},
|
||||
{
|
||||
"id": "4329e464360d0afa",
|
||||
@ -1631,7 +1661,9 @@
|
||||
"f260e2410571356a"
|
||||
],
|
||||
"x": 34,
|
||||
"y": 139
|
||||
"y": 139,
|
||||
"w": 1592,
|
||||
"h": 422
|
||||
},
|
||||
{
|
||||
"id": "fba69dfc80829db7",
|
||||
@ -3535,7 +3567,7 @@
|
||||
"type": "function",
|
||||
"z": "a062d9e6d44506dc",
|
||||
"name": "Format",
|
||||
"func": "const tpc = msg.topic\nconst pld = msg.payload\nvar dest = tpc.replaceAll(\"_\",\" \")\nvar scene = pld.replaceAll(\"_\",\" \")\n\nmsg.topic = dest\nmsg.payload = scene\n\nreturn msg;",
|
||||
"func": "const tpc = msg.topic\nconst pld = msg.payload\nvar dest = tpc.replaceAll(\"_\",\" \")\nvar scene = pld.replaceAll(\"_\",\" \")\n\nmsg.topic = dest\nmsg.payload = scene\n\nreturn msg",
|
||||
"outputs": 1,
|
||||
"noerr": 0,
|
||||
"initialize": "",
|
||||
@ -3570,25 +3602,6 @@
|
||||
"queue": "none",
|
||||
"x": 370,
|
||||
"y": 40,
|
||||
"wires": [
|
||||
[
|
||||
"011c7df420cc7f1a"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "011c7df420cc7f1a",
|
||||
"type": "function",
|
||||
"z": "a062d9e6d44506dc",
|
||||
"name": "Notification",
|
||||
"func": "const tpc = msg.topic\nvar dest = tpc.replaceAll(\" \",\"_\")\n\nscene = msg.payload\nmsg.dest = dest\n\nmsg.topic = \"Lights Changed\"\nmsg.payload = ('Lights changed to a new scene: ' + scene)\n\nif (msg.payload === 'Lights changed to a new scene: Reset') {\n return null;\n} else {\n return msg;\n}\nreturn msg;",
|
||||
"outputs": 1,
|
||||
"noerr": 0,
|
||||
"initialize": "",
|
||||
"finalize": "",
|
||||
"libs": [],
|
||||
"x": 590,
|
||||
"y": 40,
|
||||
"wires": [
|
||||
[]
|
||||
]
|
||||
@ -3766,12 +3779,10 @@
|
||||
"mustacheAltTags": false,
|
||||
"outputProperties": [],
|
||||
"queue": "none",
|
||||
"x": 1230,
|
||||
"y": 440,
|
||||
"x": 930,
|
||||
"y": 460,
|
||||
"wires": [
|
||||
[
|
||||
"6ae79d1701e78840"
|
||||
]
|
||||
[]
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -3825,52 +3836,19 @@
|
||||
"x": 1530,
|
||||
"y": 280,
|
||||
"wires": [
|
||||
[
|
||||
"22250920efccf4d1"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "a4926fb1dba17563",
|
||||
"type": "switch",
|
||||
"z": "a4ee891237e460a2",
|
||||
"name": "Nightlight?",
|
||||
"property": "payload",
|
||||
"propertyType": "msg",
|
||||
"rules": [
|
||||
{
|
||||
"t": "cont",
|
||||
"v": "Nightlight",
|
||||
"vt": "str"
|
||||
},
|
||||
{
|
||||
"t": "else"
|
||||
}
|
||||
],
|
||||
"checkall": "true",
|
||||
"repair": false,
|
||||
"outputs": 2,
|
||||
"x": 810,
|
||||
"y": 440,
|
||||
"wires": [
|
||||
[
|
||||
"c19b4dccc5d6a9af"
|
||||
],
|
||||
[
|
||||
"f07ca0de800cbc8f"
|
||||
]
|
||||
[]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "c19b4dccc5d6a9af",
|
||||
"type": "api-call-service",
|
||||
"z": "a4ee891237e460a2",
|
||||
"name": "Nightlight On",
|
||||
"name": "Nightlight Set",
|
||||
"server": "9e87348d.9c1c48",
|
||||
"version": 5,
|
||||
"debugenabled": false,
|
||||
"domain": "switch",
|
||||
"service": "turn_on",
|
||||
"service": "turn_{{nightlight}}",
|
||||
"areaId": [],
|
||||
"deviceId": [],
|
||||
"entityId": [
|
||||
@ -3882,37 +3860,8 @@
|
||||
"mustacheAltTags": false,
|
||||
"outputProperties": [],
|
||||
"queue": "none",
|
||||
"x": 990,
|
||||
"y": 420,
|
||||
"wires": [
|
||||
[
|
||||
"942a915b6599fb27"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "f07ca0de800cbc8f",
|
||||
"type": "api-call-service",
|
||||
"z": "a4ee891237e460a2",
|
||||
"name": "Nightlight Off",
|
||||
"server": "9e87348d.9c1c48",
|
||||
"version": 5,
|
||||
"debugenabled": false,
|
||||
"domain": "switch",
|
||||
"service": "turn_off",
|
||||
"areaId": [],
|
||||
"deviceId": [],
|
||||
"entityId": [
|
||||
"switch.adaptive_lighting_sleep_mode_{{topic}}"
|
||||
],
|
||||
"data": "",
|
||||
"dataType": "jsonata",
|
||||
"mergeContext": "",
|
||||
"mustacheAltTags": false,
|
||||
"outputProperties": [],
|
||||
"queue": "none",
|
||||
"x": 990,
|
||||
"y": 480,
|
||||
"x": 750,
|
||||
"y": 460,
|
||||
"wires": [
|
||||
[
|
||||
"942a915b6599fb27"
|
||||
@ -4029,25 +3978,6 @@
|
||||
[]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "6ae79d1701e78840",
|
||||
"type": "function",
|
||||
"z": "a4ee891237e460a2",
|
||||
"name": "Format",
|
||||
"func": "const str = msg.payload\nvar scene = str.replaceAll(\"_\",\" \")\n\nmsg.dest = msg.topic\n\nmsg.topic = \"Lights Changed\"\nmsg.payload = ('Lights changed to a new scene: ' + scene)\n\nif (msg.payload === 'Lights changed to a new scene: Reset') {\n return null;\n} else {\n return msg;\n}\nreturn msg;",
|
||||
"outputs": 1,
|
||||
"noerr": 0,
|
||||
"initialize": "",
|
||||
"finalize": "",
|
||||
"libs": [],
|
||||
"x": 1400,
|
||||
"y": 440,
|
||||
"wires": [
|
||||
[
|
||||
"60924f02885cc3c8"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "dc0972a3964e6513",
|
||||
"type": "api-call-service",
|
||||
@ -4075,46 +4005,15 @@
|
||||
[]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "22250920efccf4d1",
|
||||
"type": "link out",
|
||||
"z": "a4ee891237e460a2",
|
||||
"name": "Adaptive Lighting Flow",
|
||||
"mode": "link",
|
||||
"links": [
|
||||
"a092a70d91589196"
|
||||
],
|
||||
"x": 1695,
|
||||
"y": 280,
|
||||
"wires": []
|
||||
},
|
||||
{
|
||||
"id": "a092a70d91589196",
|
||||
"type": "link in",
|
||||
"z": "a4ee891237e460a2",
|
||||
"name": "Scene Formatting",
|
||||
"links": [
|
||||
"22250920efccf4d1"
|
||||
],
|
||||
"x": 1265,
|
||||
"y": 380,
|
||||
"wires": [
|
||||
[
|
||||
"6ae79d1701e78840"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "defe84d113029e8e",
|
||||
"type": "subflow:a062d9e6d44506dc",
|
||||
"z": "a4ee891237e460a2",
|
||||
"name": "",
|
||||
"x": 1280,
|
||||
"y": 340,
|
||||
"x": 980,
|
||||
"y": 400,
|
||||
"wires": [
|
||||
[
|
||||
"60924f02885cc3c8"
|
||||
]
|
||||
[]
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -4183,8 +4082,8 @@
|
||||
"mustacheAltTags": false,
|
||||
"outputProperties": [],
|
||||
"queue": "none",
|
||||
"x": 1580,
|
||||
"y": 440,
|
||||
"x": 920,
|
||||
"y": 340,
|
||||
"wires": [
|
||||
[]
|
||||
]
|
||||
@ -4213,8 +4112,8 @@
|
||||
],
|
||||
[
|
||||
"a81fd188d89faa25",
|
||||
"f9f11a5fa1492190",
|
||||
"dc0972a3964e6513"
|
||||
"dc0972a3964e6513",
|
||||
"4ab49b8485f1886f"
|
||||
]
|
||||
],
|
||||
"outputLabels": [
|
||||
@ -4228,14 +4127,14 @@
|
||||
"id": "9af9a2966a477b33",
|
||||
"type": "function",
|
||||
"z": "a4ee891237e460a2",
|
||||
"name": "Dynamic Rooms",
|
||||
"func": "var dynamicRooms = global.get(\"dynamicRooms\")\nvar topic = msg.topic\n\nif (dynamicRooms.includes(topic)) {\n return[msg,null]\n} else {\n return[null,msg]\n}",
|
||||
"outputs": 2,
|
||||
"name": "Routing",
|
||||
"func": "const str = msg.payload\nvar scene = str.replaceAll(\"_\", \" \")\nvar dynamicRooms = global.get(\"dynamicRooms\")\nvar tvRooms = global.get(\"tvRooms\")\nvar room = msg.topic\n\nvar notify = {\n \"dest\": room,\n \"topic\": \"Lights Changed\",\n \"payload\": \"Lights changed to a new scene: \" + scene\n}\n\nvar statusMsg = {\n \"payload\": \"Lights changed to a new scene: \" + scene\n}\n\nif (dynamicRooms.includes(room)) {\n node.send([msg,null,null,null])\n} else {\n node.send([null,msg,null,null])\n}\n\nif (tvRooms.includes(room)) {\n node.send([null,null,notify,null])\n}\n\nnode.send([null,null,null,statusMsg])",
|
||||
"outputs": 4,
|
||||
"noerr": 0,
|
||||
"initialize": "",
|
||||
"finalize": "",
|
||||
"libs": [],
|
||||
"x": 580,
|
||||
"x": 560,
|
||||
"y": 280,
|
||||
"wires": [
|
||||
[
|
||||
@ -4243,37 +4142,49 @@
|
||||
],
|
||||
[
|
||||
"3a4f567b17b2214e"
|
||||
]
|
||||
],
|
||||
[
|
||||
"60924f02885cc3c8"
|
||||
],
|
||||
[]
|
||||
],
|
||||
"outputLabels": [
|
||||
"Dynamic",
|
||||
"Else"
|
||||
"Else",
|
||||
"",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "f9f11a5fa1492190",
|
||||
"id": "4ab49b8485f1886f",
|
||||
"type": "function",
|
||||
"z": "a4ee891237e460a2",
|
||||
"name": "Dynamic Rooms",
|
||||
"func": "var states = global.get('homeassistant.homeAssistant.states')\nvar dynamicRooms = global.get(\"dynamicRooms\")\nvar topic = msg.topic\n\nif (dynamicRooms.includes(topic)) {\n var inputBoolean = \"input_boolean.\" + topic + \"_dynamic_scenes\"\n var boolState = states[inputBoolean].state\n if (boolState === 'on') {\n return [msg, null]\n } else {\n return [null, msg]\n }\n} else {\n return[null,msg]\n}",
|
||||
"outputs": 2,
|
||||
"name": "Routing",
|
||||
"func": "const str = msg.payload\nvar scene = str.replaceAll(\"_\", \" \")\nvar states = global.get('homeassistant.homeAssistant.states')\nvar dynamicRooms = global.get(\"dynamicRooms\")\nvar tvRooms = global.get(\"tvRooms\")\nvar room = msg.topic\n\nvar notify = {\n \"dest\": room,\n \"topic\":\"Lights Changed\",\n \"payload\":\"Lights changed to a new scene: \" + scene\n}\n\nvar statusMsg = {\n \"payload\": \"Lights changed to a new scene: \" + scene\n}\n\nif (scene.includes(\"Nightlight\")) {\n msg.nightlight = \"on\"\n} else {\n msg.nightlight = \"off\"\n}\n\nif (dynamicRooms.includes(room)) {\n var inputBoolean = \"input_boolean.\" + room + \"_dynamic_scenes\"\n var boolState = states[inputBoolean].state\n if (boolState === 'on') {\n node.send([msg,null,null,null])\n } else {\n node.send([null,msg,null,null])\n }\n} else {\n node.send([null,msg,null,null])\n}\n\nif (tvRooms.includes(room)) {\n node.send([null,null,notify,null])\n}\n\nnode.send([null,null,null,statusMsg])",
|
||||
"outputs": 4,
|
||||
"noerr": 0,
|
||||
"initialize": "",
|
||||
"finalize": "",
|
||||
"libs": [],
|
||||
"x": 580,
|
||||
"x": 560,
|
||||
"y": 440,
|
||||
"wires": [
|
||||
[
|
||||
"defe84d113029e8e"
|
||||
],
|
||||
[
|
||||
"a4926fb1dba17563"
|
||||
]
|
||||
"c19b4dccc5d6a9af"
|
||||
],
|
||||
[
|
||||
"60924f02885cc3c8"
|
||||
],
|
||||
[]
|
||||
],
|
||||
"outputLabels": [
|
||||
"Dynamic",
|
||||
"Else"
|
||||
"Non-Dynamic",
|
||||
"Notify",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -4428,9 +4339,7 @@
|
||||
]
|
||||
],
|
||||
"outputLabels": [
|
||||
"Adaptive",
|
||||
"Reset",
|
||||
"Otherwise"
|
||||
"Adaptive"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -10642,8 +10551,7 @@
|
||||
"y": 340,
|
||||
"wires": [
|
||||
[
|
||||
"b19f4a996fd4c2ee",
|
||||
"d790134891fedfcc"
|
||||
"b19f4a996fd4c2ee"
|
||||
]
|
||||
]
|
||||
},
|
||||
@ -28314,17 +28222,15 @@
|
||||
"type": "function",
|
||||
"z": "3e4ba157b540d183",
|
||||
"name": "Constants",
|
||||
"func": "// Set options here\nconst dynamicRooms = [\"living_room\",\"basement_studio\"]\n\n// Commit those options to global context\nglobal.set(\"dynamicRooms\", dynamicRooms);\n\nnode.status({fill:\"green\",shape:\"dot\",text:\"Saved\"});",
|
||||
"outputs": 1,
|
||||
"func": "// Set options here\nconst dynamicRooms = [\"living_room\",\"basement_studio\"]\nconst tvRooms = [\"living_room\",\"basement\",\"basement_studio\",\"master_bedroom\"]\n\n// Commit those options to global context\nglobal.set(\"dynamicRooms\", dynamicRooms)\nglobal.set(\"tvRooms\", tvRooms)\n\nnode.status({fill:\"green\",shape:\"dot\",text:\"Saved\"});",
|
||||
"outputs": 0,
|
||||
"noerr": 0,
|
||||
"initialize": "",
|
||||
"finalize": "",
|
||||
"libs": [],
|
||||
"x": 1040,
|
||||
"y": 620,
|
||||
"wires": [
|
||||
[]
|
||||
]
|
||||
"wires": []
|
||||
},
|
||||
{
|
||||
"id": "f49fc3da65a68efd",
|
||||
|
Reference in New Issue
Block a user