Possible prevention of Kallen's white noise being turned off at 11pm

home_automation/Home-Assistant-Configs#233
This commit is contained in:
2025-04-02 15:54:11 -04:00
parent 8a1f727595
commit 6207e38806

View File

@ -8,10 +8,15 @@ const brightness = states['switch.adaptive_lighting_kallen_bedroom'].attributes.
const fadeNight = states['input_number.wakeup_lights_fade_night'].state const fadeNight = states['input_number.wakeup_lights_fade_night'].state
const hotDay = states['input_boolean.hot_day'].state const hotDay = states['input_boolean.hot_day'].state
const heatWarning = states['binary_sensor.heat_warning'].state const heatWarning = states['binary_sensor.heat_warning'].state
const fanState = states['fan.kallen_bedroom_fan'].state
const fanAvailable = fanState !== 'unavailable'
const fanSeparate = states['binary_sensor.kallen_fan_separate_schedule'].state const fanSeparate = states['binary_sensor.kallen_fan_separate_schedule'].state
const schedMode = states['input_select.scheduled_climate_mode_kallen_bedroom'].state const schedMode = states['input_select.scheduled_climate_mode_kallen_bedroom'].state
const topic = msg.topic const topic = msg.topic
const toggle = msg.toggle const toggle = msg.toggle || ''
const roomName = 'Kallen Bedroom'
node.log("Kallen Bedroom: Constants Set") node.log("Kallen Bedroom: Constants Set")
let setFan = [] let setFan = []
@ -19,8 +24,12 @@ let setWhiteNoise = []
let setVolume = [] let setVolume = []
let setLights = [] let setLights = []
let setWake = [] let setWake = []
node.log("Kallen Bedroom: Variables Defined") node.log(`${roomName}: Variables Defined`)
if (schedMode === 'White Noise') {
setFan = 'turn_off'
} else {
if (fanAvailable) {
if (toggle === 'off' && (hotDay === 'on' || heatWarning === 'on')) { if (toggle === 'off' && (hotDay === 'on' || heatWarning === 'on')) {
setFan = 'turn_on' setFan = 'turn_on'
} else if ((toggle === 'on' || topic === 'kallen-fan') && schedMode === 'Fan') { } else if ((toggle === 'on' || topic === 'kallen-fan') && schedMode === 'Fan') {
@ -28,18 +37,27 @@ if (toggle === 'off' && (hotDay === 'on' || heatWarning === 'on')) {
} else { } else {
setFan = 'turn_off' setFan = 'turn_off'
} }
} else {
if (schedMode === 'Fan') {
node.log(`${roomName}: Fan is unavailable, forcing White Noise mode`)
}
setFan = 'turn_off'
}
}
if (schedMode === 'White Noise' && toggle === 'on') { if ((schedMode === 'White Noise' && toggle === 'on') || (schedMode === 'Fan' && !fanAvailable)) {
setWhiteNoise = 'turn_on'
} else if (topic === 'kallen-fan' && !fanAvailable && schedMode !== 'N/A') {
setWhiteNoise = 'turn_on' setWhiteNoise = 'turn_on'
} else { } else {
setWhiteNoise = 'turn_off' setWhiteNoise = 'turn_off'
} }
if (toggle === 'on') { if (topic === 'boolean' && toggle === 'on') {
setVolume = parseFloat(nightVolume) setVolume = parseFloat(nightVolume)
setLights = 'turn_on' setLights = 'turn_on'
setWake = 'turn_off' setWake = 'turn_off'
} else { } else if (topic === 'boolean' && toggle === 'off') {
setVolume = parseFloat(dayVolume) setVolume = parseFloat(dayVolume)
setWake = 'turn_on' setWake = 'turn_on'
} }
@ -49,7 +67,7 @@ let fadeFinal = Math.round(fadeMult)
let brtFinal = Math.round(brightness) let brtFinal = Math.round(brightness)
node.log("Kallen Bedroom: Decision Logic Complete") node.log(`${roomName}: Decision Logic Complete`)
let sendFan = { let sendFan = {
"payload": { "payload": {
@ -112,33 +130,34 @@ let sleepMsg = {
"payload": "sleep" "payload": "sleep"
} }
node.log("Kallen Bedroom: Message Payloads Defined") node.log(`${roomName}: Message Payloads Defined`)
node.log("----- Kallen Bedroom: Set Parameters -----") node.log(`----- ${roomName}: Set Parameters -----`)
node.log(`setFan: ${setFan}`) node.log(`${roomName}: fanAvailable: ${fanAvailable}`)
node.log(`setWhiteNoise: ${setWhiteNoise}`) node.log(`${roomName}: setFan: ${setFan}`)
node.log(`setVolume: ${setVolume}`) node.log(`${roomName}: setWhiteNoise: ${setWhiteNoise}`)
node.log(`setLights: ${setLights}`) node.log(`${roomName}: setVolume: ${setVolume}`)
node.log(`setWake: ${setWake}`) node.log(`${roomName}: setLights: ${setLights}`)
node.log("----- Kallen Bedroom: End Parameters -----") node.log(`${roomName}: setWake: ${setWake}`)
node.log(`----- ${roomName}: End Parameters -----`)
if (vacationMode === 'off' && overnight === 'off' && kallenLoc === 'home') { if (vacationMode === 'off' && overnight === 'off' && kallenLoc === 'home') {
if (topic === 'kallen-fan' && fanSeparate === 'on') { if (topic === 'kallen-fan' && fanSeparate === 'on') {
node.status({fill:"green",shape:"dot",text:"Fan"}) node.status({fill:"green",shape:"dot",text:"Fan"})
node.log("Kallen Bedroom: Early Fan") node.log(`${roomName}: Early Fan`)
node.send([null,[sendFan,sendWhiteNoise],null]) node.send([null,[sendFan,sendWhiteNoise],null])
} else if (toggle === 'off') { } else if (topic === 'boolean' && toggle === 'off') {
node.status({fill:"green",shape:"dot",text:"Wakeup"}) node.status({fill:"green",shape:"dot",text:"Wakeup"})
node.log("Kallen Bedroom: Wake") node.log(`${roomName}: Wake`)
node.send([wakeMsg,[sendFan,sendWhiteNoise,sendVolume,sendWake],null]) node.send([wakeMsg,[sendFan,sendWhiteNoise,sendVolume,sendWake],null])
} else if (toggle === 'on') { } else if (topic === 'boolean' && toggle === 'on') {
node.status({fill:"green",shape:"dot",text:"Sleep"}) node.status({fill:"green",shape:"dot",text:"Sleep"})
node.log("Kallen Bedroom: Sleep") node.log(`${roomName}: Sleep`)
node.send([null,[sendFan,sendWhiteNoise,sendVolume,sendLights,sendWake],sleepMsg]) node.send([null,[sendFan,sendWhiteNoise,sendVolume,sendLights,sendWake],sleepMsg])
} }
} else { } else {
node.status({fill:"red",shape:"ring",text:"Blocked"}) node.status({fill:"red",shape:"ring",text:"Blocked"})
node.log("Kallen Bedroom: Flow Blocked") node.log(`${roomName}: Flow Blocked`)
} }
node.log("Kallen Bedroom: Processing Complete") node.log(`${roomName}: Processing Complete`)