Facilitate on-the-fly temperature changes in climate watchdog

This commit is contained in:
2025-04-30 15:38:47 -04:00
parent f290ae7582
commit 916e71619e

View File

@ -2440,12 +2440,16 @@
"894e510fd44b01e0", "894e510fd44b01e0",
"eee837a3c93b3abd", "eee837a3c93b3abd",
"2a02683008423af4", "2a02683008423af4",
"057eda6b0cd976d9" "057eda6b0cd976d9",
"6f9810d3986b67d9",
"15e2eb94a67c7024",
"77082c90f1eb9c32",
"88037340df0708d0"
], ],
"x": 14, "x": 14,
"y": 1319, "y": 1319,
"w": 1092, "w": 1092,
"h": 562 "h": 742
}, },
{ {
"id": "a09584861c2fe558", "id": "a09584861c2fe558",
@ -25161,6 +25165,184 @@
"y": 1840, "y": 1840,
"wires": [] "wires": []
}, },
{
"id": "6f9810d3986b67d9",
"type": "server-state-changed",
"z": "72f99805df043603",
"g": "5802ea32c1de36e8",
"name": "Day Temp",
"server": "9e87348d.9c1c48",
"version": 6,
"outputs": 1,
"exposeAsEntityConfig": "",
"entities": {
"entity": [
"input_number.emma_bedroom_daytime_temp"
],
"substring": [],
"regex": []
},
"outputInitially": false,
"stateType": "str",
"ifState": "",
"ifStateType": "str",
"ifStateOperator": "is",
"outputOnlyOnStateChange": true,
"for": "0",
"forType": "num",
"forUnits": "minutes",
"ignorePrevStateNull": false,
"ignorePrevStateUnknown": false,
"ignorePrevStateUnavailable": false,
"ignoreCurrentStateUnknown": true,
"ignoreCurrentStateUnavailable": true,
"outputProperties": [
{
"property": "payload",
"propertyType": "msg",
"value": "",
"valueType": "entityState"
},
{
"property": "topic",
"propertyType": "msg",
"value": "daytemp",
"valueType": "str"
}
],
"x": 200,
"y": 1900,
"wires": [
[
"88037340df0708d0"
]
]
},
{
"id": "15e2eb94a67c7024",
"type": "server-state-changed",
"z": "72f99805df043603",
"g": "5802ea32c1de36e8",
"name": "Night Temp",
"server": "9e87348d.9c1c48",
"version": 6,
"outputs": 1,
"exposeAsEntityConfig": "",
"entities": {
"entity": [
"input_number.emma_bedroom_night_temp"
],
"substring": [],
"regex": []
},
"outputInitially": false,
"stateType": "str",
"ifState": "",
"ifStateType": "str",
"ifStateOperator": "is",
"outputOnlyOnStateChange": true,
"for": "0",
"forType": "num",
"forUnits": "minutes",
"ignorePrevStateNull": false,
"ignorePrevStateUnknown": false,
"ignorePrevStateUnavailable": false,
"ignoreCurrentStateUnknown": true,
"ignoreCurrentStateUnavailable": true,
"outputProperties": [
{
"property": "payload",
"propertyType": "msg",
"value": "",
"valueType": "entityState"
},
{
"property": "topic",
"propertyType": "msg",
"value": "nighttemp",
"valueType": "str"
}
],
"x": 210,
"y": 1960,
"wires": [
[
"88037340df0708d0"
]
]
},
{
"id": "77082c90f1eb9c32",
"type": "server-state-changed",
"z": "72f99805df043603",
"g": "5802ea32c1de36e8",
"name": "Bedtime Temp",
"server": "9e87348d.9c1c48",
"version": 6,
"outputs": 1,
"exposeAsEntityConfig": "",
"entities": {
"entity": [
"input_number.emma_bedroom_bedtime_temp"
],
"substring": [],
"regex": []
},
"outputInitially": false,
"stateType": "str",
"ifState": "",
"ifStateType": "str",
"ifStateOperator": "is",
"outputOnlyOnStateChange": true,
"for": "0",
"forType": "num",
"forUnits": "minutes",
"ignorePrevStateNull": false,
"ignorePrevStateUnknown": false,
"ignorePrevStateUnavailable": false,
"ignoreCurrentStateUnknown": true,
"ignoreCurrentStateUnavailable": true,
"outputProperties": [
{
"property": "payload",
"propertyType": "msg",
"value": "",
"valueType": "entityState"
},
{
"property": "topic",
"propertyType": "msg",
"value": "bedtemp",
"valueType": "str"
}
],
"x": 210,
"y": 2020,
"wires": [
[
"88037340df0708d0"
]
]
},
{
"id": "88037340df0708d0",
"type": "function",
"z": "72f99805df043603",
"g": "5802ea32c1de36e8",
"name": "Set Temp Vars",
"func": "const topic = msg.topic\nconst payload = msg.payload\nconst lastMode = flow.get('emmaBedroom.lastMode', 'diskCon')\n\nif (topic === 'daytemp') {\n flow.set('emmaBedroom.dayTemp', payload, 'diskCon')\n} else if (topic === 'nighttemp') {\n flow.set(\"emmaBedroom.nightTemp\", payload, \"diskCon\")\n} else if (topic === 'bedtemp') {\n flow.set(\"emmaBedroom.bedTemp\", payload, \"diskCon\")\n}\n\nif (lastMode === 'day') {\n flow.set('emmaBedroom.airconTargetTemp', flow.get('emmaBedroom.dayTemp', 'diskCon'), 'diskCon')\n} else if (lastMode === 'night') {\n flow.set('emmaBedroom.airconTargetTemp', flow.get('emmaBedroom.nightTemp', 'diskCon'), 'diskCon')\n} else if (lastMode === 'bedtime') {\n flow.set('emmaBedroom.airconTargetTemp', flow.get('emmaBedroom.bedTemp', 'diskCon'), 'diskCon')\n}\n\nnode.status({fill:'green',shape:'dot',text:`Set ${topic} to ${payload}`})",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 480,
"y": 1960,
"wires": [
[]
]
},
{ {
"id": "48b8af9419ed18d6", "id": "48b8af9419ed18d6",
"type": "subflow:384eaf2f63dcb5db", "type": "subflow:384eaf2f63dcb5db",