From fd0ca2cb772cb73fbd9f4dc1ddb7942a5dfdabc2 Mon Sep 17 00:00:00 2001 From: Tony Stork Date: Wed, 2 Apr 2025 15:54:51 -0400 Subject: [PATCH] Possible prevention of Kallen's white noise being turned off at 11pm home_automation/Home-Assistant-Configs#233 --- flows.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flows.json b/flows.json index d85e901..9c3ccf3 100644 --- a/flows.json +++ b/flows.json @@ -21256,7 +21256,7 @@ "z": "72f99805df043603", "g": "39a7ac02f2727f1d", "name": "Processing", - "func": "const states = global.get('homeassistant.homeAssistant.states')\nconst vacationMode = states['input_boolean.vacation_mode'].state\nconst overnight = states['input_boolean.kallen_overnight'].state\nconst kallenLoc = states['person.kallen_stork'].state\nconst dayVolume = states['input_number.kallen_bedroom_google_speaker_day_volume'].state\nconst nightVolume = states['input_number.kallen_bedroom_google_speaker_night_volume'].state\nconst brightness = states['switch.adaptive_lighting_kallen_bedroom'].attributes.brightness_pct\nconst fadeNight = states['input_number.wakeup_lights_fade_night'].state\nconst hotDay = states['input_boolean.hot_day'].state\nconst heatWarning = states['binary_sensor.heat_warning'].state\nconst fanSeparate = states['binary_sensor.kallen_fan_separate_schedule'].state\nconst schedMode = states['input_select.scheduled_climate_mode_kallen_bedroom'].state\nconst topic = msg.topic\nconst toggle = msg.toggle\nnode.log(\"Kallen Bedroom: Constants Set\")\n\nlet setFan = []\nlet setWhiteNoise = []\nlet setVolume = []\nlet setLights = []\nlet setWake = []\nnode.log(\"Kallen Bedroom: Variables Defined\")\n\nif (toggle === 'off' && (hotDay === 'on' || heatWarning === 'on')) {\n setFan = 'turn_on'\n} else if ((toggle === 'on' || topic === 'kallen-fan') && schedMode === 'Fan') {\n setFan = 'turn_on'\n} else {\n setFan = 'turn_off'\n}\n\nif (schedMode === 'White Noise' && toggle === 'on') {\n setWhiteNoise = 'turn_on'\n} else {\n setWhiteNoise = 'turn_off'\n}\n\nif (toggle === 'on') {\n setVolume = parseFloat(nightVolume)\n setLights = 'turn_on'\n setWake = 'turn_off'\n} else {\n setVolume = parseFloat(dayVolume)\n setWake = 'turn_on'\n}\n\nlet fadeMult = fadeNight * 60\nlet fadeFinal = Math.round(fadeMult)\n\nlet brtFinal = Math.round(brightness)\n\nnode.log(\"Kallen Bedroom: Decision Logic Complete\")\n\nlet sendFan = {\n \"payload\": {\n \"action\": `fan.${setFan}`,\n \"target\": {\n \"entity_id\": [\"fan.kallen_bedroom_fan\"]\n },\n \"data\": {}\n }\n}\n\nlet sendWhiteNoise = {\n \"payload\": {\n \"action\": `input_boolean.${setWhiteNoise}`,\n \"target\": {\n \"entity_id\": [\"input_boolean.white_noise_kallen_bedroom\"]\n },\n \"data\": {}\n }\n}\n\nlet sendVolume = {\n \"payload\": {\n \"action\": \"media_player.volume_set\",\n \"target\": {\n \"entity_id\": [\"media_player.kallen_bedroom_google_speaker\"]\n },\n \"data\": {\n \"volume_level\": setVolume\n }\n }\n}\n\nlet sendLights = {\n \"payload\": {\n \"action\": `light.${setLights}`,\n \"target\": {\n \"entity_id\": [\"light.kallen_bedroom_lights\"]\n },\n \"data\": {}\n }\n}\n\nlet sendWake = {\n \"payload\": {\n \"action\": `input_boolean.${setWake}`,\n \"target\": {\n \"entity_id\": [\"input_boolean.kallen_awake\"]\n },\n \"data\": {}\n }\n}\n\nlet wakeMsg = {\n \"brightness\": brtFinal,\n \"fade\": fadeFinal\n}\n\nlet sleepMsg = {\n \"payload\": \"sleep\"\n}\n\nnode.log(\"Kallen Bedroom: Message Payloads Defined\")\n\nnode.log(\"----- Kallen Bedroom: Set Parameters -----\")\nnode.log(`setFan: ${setFan}`)\nnode.log(`setWhiteNoise: ${setWhiteNoise}`)\nnode.log(`setVolume: ${setVolume}`)\nnode.log(`setLights: ${setLights}`)\nnode.log(`setWake: ${setWake}`)\nnode.log(\"----- Kallen Bedroom: End Parameters -----\")\n\nif (vacationMode === 'off' && overnight === 'off' && kallenLoc === 'home') {\n if (topic === 'kallen-fan' && fanSeparate === 'on') {\n node.status({fill:\"green\",shape:\"dot\",text:\"Fan\"})\n node.log(\"Kallen Bedroom: Early Fan\")\n node.send([null,[sendFan,sendWhiteNoise],null])\n } else if (toggle === 'off') {\n node.status({fill:\"green\",shape:\"dot\",text:\"Wakeup\"})\n node.log(\"Kallen Bedroom: Wake\")\n node.send([wakeMsg,[sendFan,sendWhiteNoise,sendVolume,sendWake],null])\n } else if (toggle === 'on') {\n node.status({fill:\"green\",shape:\"dot\",text:\"Sleep\"})\n node.log(\"Kallen Bedroom: Sleep\")\n node.send([null,[sendFan,sendWhiteNoise,sendVolume,sendLights,sendWake],sleepMsg])\n }\n} else {\n node.status({fill:\"red\",shape:\"ring\",text:\"Blocked\"})\n node.log(\"Kallen Bedroom: Flow Blocked\")\n}\n\nnode.log(\"Kallen Bedroom: Processing Complete\")", + "func": "const states = global.get('homeassistant.homeAssistant.states')\nconst vacationMode = states['input_boolean.vacation_mode'].state\nconst overnight = states['input_boolean.kallen_overnight'].state\nconst kallenLoc = states['person.kallen_stork'].state\nconst dayVolume = states['input_number.kallen_bedroom_google_speaker_day_volume'].state\nconst nightVolume = states['input_number.kallen_bedroom_google_speaker_night_volume'].state\nconst brightness = states['switch.adaptive_lighting_kallen_bedroom'].attributes.brightness_pct\nconst fadeNight = states['input_number.wakeup_lights_fade_night'].state\nconst hotDay = states['input_boolean.hot_day'].state\nconst heatWarning = states['binary_sensor.heat_warning'].state\nconst fanState = states['fan.kallen_bedroom_fan'].state\nconst fanAvailable = fanState !== 'unavailable'\nconst fanSeparate = states['binary_sensor.kallen_fan_separate_schedule'].state\nconst schedMode = states['input_select.scheduled_climate_mode_kallen_bedroom'].state\nconst topic = msg.topic\nconst toggle = msg.toggle || ''\n\nconst roomName = 'Kallen Bedroom'\n\nnode.log(\"Kallen Bedroom: Constants Set\")\n\nlet setFan = []\nlet setWhiteNoise = []\nlet setVolume = []\nlet setLights = []\nlet setWake = []\nnode.log(`${roomName}: Variables Defined`)\n\nif (schedMode === 'White Noise') {\n setFan = 'turn_off'\n} else {\n if (fanAvailable) {\n if (toggle === 'off' && (hotDay === 'on' || heatWarning === 'on')) {\n setFan = 'turn_on'\n } else if ((toggle === 'on' || topic === 'kallen-fan') && schedMode === 'Fan') {\n setFan = 'turn_on'\n } else {\n setFan = 'turn_off'\n }\n } else {\n if (schedMode === 'Fan') {\n node.log(`${roomName}: Fan is unavailable, forcing White Noise mode`)\n }\n setFan = 'turn_off'\n }\n}\n\nif ((schedMode === 'White Noise' && toggle === 'on') || (schedMode === 'Fan' && !fanAvailable)) {\n setWhiteNoise = 'turn_on'\n} else if (topic === 'kallen-fan' && !fanAvailable && schedMode !== 'N/A') {\n setWhiteNoise = 'turn_on'\n} else {\n setWhiteNoise = 'turn_off'\n}\n\nif (topic === 'boolean' && toggle === 'on') {\n setVolume = parseFloat(nightVolume)\n setLights = 'turn_on'\n setWake = 'turn_off'\n} else if (topic === 'boolean' && toggle === 'off') {\n setVolume = parseFloat(dayVolume)\n setWake = 'turn_on'\n}\n\nlet fadeMult = fadeNight * 60\nlet fadeFinal = Math.round(fadeMult)\n\nlet brtFinal = Math.round(brightness)\n\nnode.log(`${roomName}: Decision Logic Complete`)\n\nlet sendFan = {\n \"payload\": {\n \"action\": `fan.${setFan}`,\n \"target\": {\n \"entity_id\": [\"fan.kallen_bedroom_fan\"]\n },\n \"data\": {}\n }\n}\n\nlet sendWhiteNoise = {\n \"payload\": {\n \"action\": `input_boolean.${setWhiteNoise}`,\n \"target\": {\n \"entity_id\": [\"input_boolean.white_noise_kallen_bedroom\"]\n },\n \"data\": {}\n }\n}\n\nlet sendVolume = {\n \"payload\": {\n \"action\": \"media_player.volume_set\",\n \"target\": {\n \"entity_id\": [\"media_player.kallen_bedroom_google_speaker\"]\n },\n \"data\": {\n \"volume_level\": setVolume\n }\n }\n}\n\nlet sendLights = {\n \"payload\": {\n \"action\": `light.${setLights}`,\n \"target\": {\n \"entity_id\": [\"light.kallen_bedroom_lights\"]\n },\n \"data\": {}\n }\n}\n\nlet sendWake = {\n \"payload\": {\n \"action\": `input_boolean.${setWake}`,\n \"target\": {\n \"entity_id\": [\"input_boolean.kallen_awake\"]\n },\n \"data\": {}\n }\n}\n\nlet wakeMsg = {\n \"brightness\": brtFinal,\n \"fade\": fadeFinal\n}\n\nlet sleepMsg = {\n \"payload\": \"sleep\"\n}\n\nnode.log(`${roomName}: Message Payloads Defined`)\n\nnode.log(`----- ${roomName}: Set Parameters -----`)\nnode.log(`${roomName}: fanAvailable: ${fanAvailable}`)\nnode.log(`${roomName}: setFan: ${setFan}`)\nnode.log(`${roomName}: setWhiteNoise: ${setWhiteNoise}`)\nnode.log(`${roomName}: setVolume: ${setVolume}`)\nnode.log(`${roomName}: setLights: ${setLights}`)\nnode.log(`${roomName}: setWake: ${setWake}`)\nnode.log(`----- ${roomName}: End Parameters -----`)\n\nif (vacationMode === 'off' && overnight === 'off' && kallenLoc === 'home') {\n if (topic === 'kallen-fan' && fanSeparate === 'on') {\n node.status({fill:\"green\",shape:\"dot\",text:\"Fan\"})\n node.log(`${roomName}: Early Fan`)\n node.send([null,[sendFan,sendWhiteNoise],null])\n } else if (topic === 'boolean' && toggle === 'off') {\n node.status({fill:\"green\",shape:\"dot\",text:\"Wakeup\"})\n node.log(`${roomName}: Wake`)\n node.send([wakeMsg,[sendFan,sendWhiteNoise,sendVolume,sendWake],null])\n } else if (topic === 'boolean' && toggle === 'on') {\n node.status({fill:\"green\",shape:\"dot\",text:\"Sleep\"})\n node.log(`${roomName}: Sleep`)\n node.send([null,[sendFan,sendWhiteNoise,sendVolume,sendLights,sendWake],sleepMsg])\n }\n} else {\n node.status({fill:\"red\",shape:\"ring\",text:\"Blocked\"})\n node.log(`${roomName}: Flow Blocked`)\n}\n\nnode.log(`${roomName}: Processing Complete`)", "outputs": 3, "timeout": "", "noerr": 0,