diff --git a/climate/master-bedroom/shower-off.js b/climate/master-bedroom/shower-off.js index 060fde5..46ae1c6 100644 --- a/climate/master-bedroom/shower-off.js +++ b/climate/master-bedroom/shower-off.js @@ -11,31 +11,33 @@ const sleeping = states['input_boolean.master_bedroom_sleeping'].state const hotDay = states['input_boolean.hot_day'].state const topic = msg.topic +const masterBedroomAircon = ["climate.master_bedroom_aircon"] + let setTemp = {} -let ecoMode = {} +let setEco = {} let duration = {} let end = {} -let hvac = {} +let setHvac = {} if (topic === 'toggle') { if (hotDay === 'on' || sleeping === 'on') { setTemp = bedTemp - ecoMode = 'none' + setEco = 'turn_off' } else { setTemp = nightTemp - ecoMode = 'eco' + setEco = 'turn_on' } } else if (topic === 'timer') { if (currentSetTemp == bedTemp) { setTemp = nightTemp if (hotDay === 'on') { - ecoMode = 'none' + setEco = 'turn_off' } else { - ecoMode = 'eco' + setEco = 'turn_on' } } else { setTemp = dayTemp - ecoMode = 'eco' + setEco = 'turn_on' } } @@ -50,36 +52,75 @@ if (setTemp == bedTemp) { if (setTemp == dayTemp) { end = true if (hotDay === 'off') { - hvac = 'off' + setHvac = 'off' } else { - hvac = 'cool' + setHvac = 'cool' } } else if (setTemp != bedTemp && coolingTime === 'on') { end = true - hvac = 'cool' + setHvac = 'cool' } else { end = false - hvac = 'cool' -} - -let setMsg = { - "set": setTemp, - "eco": ecoMode, - "hvac": hvac, - "end": end + setHvac = 'cool' } let timerStart = { "duration": duration } +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": {} + } +} + +let sendAcFan = { + "payload": { + "action": "climate.set_fan_mode", + "target": { + "entity_id": masterBedroomAircon + }, + "data": { + "fan_mode": "auto" + } + } +} + if (ac === 'on' && temp >= threshold) { if (sleeping === 'on' || coolingTime === 'on' || end === true) { node.status({fill:"green",shape:"dot",text:"Finished"}) - return [setMsg, null] + return [[sendHvac, sendTemp, sendAcFan, sendEco], null] } else { node.status({fill:"blue",shape:"dot",text:"Next Cycle"}) - return [setMsg, timerStart] + return [[sendHvac, sendTemp, sendAcFan, sendEco], timerStart] } } else if (ac === 'off') { node.status({fill:"red",shape:"ring",text:"A/C Not Installed"}) diff --git a/climate/master-bedroom/shower-on.js b/climate/master-bedroom/shower-on.js index cb0d3c8..b49a439 100644 --- a/climate/master-bedroom/shower-on.js +++ b/climate/master-bedroom/shower-on.js @@ -6,17 +6,56 @@ 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) { - if (sleeping === 'on') { - msg.set = bedTemp - node.status({fill:"green",shape:"dot",text:`Shower Mode On: ${bedTemp}`}) - return msg - } else { - msg.set = nightTemp - node.status({fill:"green",shape:"dot",text:`Shower Mode On: ${nightTemp}`}) - return msg - } + 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