Files
HA-NerdFlows-Functions/climate/master-bedroom/shower-on.js

67 lines
1.7 KiB
JavaScript

const states = global.get('homeassistant.homeAssistant.states')
const ac = global.get('masterBedroom.aircon.installed', "diskCon")
const temp = global.get('outdoorTemp.tempStr')
const threshold = states['input_number.master_bedroom_aircon_run_threshold'].state
const nightTemp = states['input_number.master_bedroom_night_temp'].state
const bedTemp = states['input_number.master_bedroom_bedtime_temp'].state
const sleeping = states['input_boolean.master_bedroom_sleeping'].state
const masterBedroomAircon = ["climate.master_bedroom_aircon"]
let setTemp = []
let setHvac = "dry"
let setEco = "turn_off"
if (sleeping === 'on') {
setTemp = bedTemp
} else {
setTemp = nightTemp
}
let sendHvac = {
"payload": {
"action": "climate.set_hvac_mode",
"target": {
"entity_id": masterBedroomAircon
},
"data": {
"hvac_mode": setHvac
}
}
}
let sendTemp = {
"payload": {
"action": "climate.set_temperature",
"target": {
"entity_id": masterBedroomAircon
},
"data": {
"temperature": setTemp
}
}
}
let sendEco = {
"payload": {
"action": `switch.${setEco}`,
"target": {
"entity_id": ["switch.master_bedroom_aircon_eco_mode"]
},
"data": {}
}
}
if (ac === 'on') {
if (temp >= threshold) {
node.status({fill:"green",shape:"dot",text:`Shower Mode On: ${setTemp}°F`})
node.send([[sendHvac, sendTemp, sendEco]])
} else {
node.status({fill:"red",shape:"ring",text:"Too Cold"})
return null
}
} else {
node.status({fill:"red",shape:"ring",text:"A/C Not Installed"})
return null
}