59 lines
1.1 KiB
JavaScript
59 lines
1.1 KiB
JavaScript
const { postTemp, getCurrentTemp } = require('./honeywell')
|
|
const { onTempChangeRequested } = require('./slack')
|
|
require('./games')
|
|
|
|
const coolMode = 'Cool'
|
|
const heatMode = 'Heat'
|
|
|
|
const minTemp = 68
|
|
const maxTemp = 80
|
|
|
|
let lowTemp = 72
|
|
let highTemp = 74
|
|
|
|
const cleanTemp = temp => {
|
|
if (temp > maxTemp) {
|
|
temp = maxTemp
|
|
} else if (temp < minTemp) {
|
|
temp = minTemp
|
|
}
|
|
return temp
|
|
}
|
|
|
|
onTempChangeRequested(change => {
|
|
const { indoorTemperature } = getCurrentTemp()
|
|
switch (change) {
|
|
case 'Hotter': {
|
|
lowTemp += 2
|
|
highTemp += 2
|
|
break;
|
|
}
|
|
case 'Colder': {
|
|
lowTemp -= 2
|
|
highTemp -= 2
|
|
break;
|
|
}
|
|
case 'Good': {
|
|
return
|
|
}
|
|
}
|
|
|
|
highTemp = cleanTemp(highTemp)
|
|
lowTemp = cleanTemp(lowTemp)
|
|
|
|
const mode =
|
|
indoorTemperature < lowTemp ? heatMode : // Heat if lower than low
|
|
indoorTemperature > highTemp ? coolMode : // Cool if hotter than high
|
|
change === 'Hotter' ? heatMode : coolMode // Otherwise (lower priority) follow the requested change
|
|
|
|
if (!mode) {
|
|
return
|
|
}
|
|
|
|
postTemp({
|
|
coolSetpoint: lowTemp,
|
|
heatSetpoint: highTemp,
|
|
mode
|
|
})
|
|
})
|