due to the flakeyness of the honeywell web site i have made changes to my own version of the driver. that when it gets and read timeout or unauthorized error, schedule a refresh automatically 5 minutes out.. it seems to be working fine for me... Let me know if anyone wants to get a copy of it or if you want the code to integrate into the stock version it looks something like this
also here is the fx to get the steam humidifier settings.
} catch (e) {
log.warn "Something went wrong (getstatus): $e"
def String eStr = e.toString()
def pair = eStr.split(" ")
def p1 = pair[0]
def p2 = pair[1]
if ((p2 == "Unauthorized") || (p2 == "Read"))
{
log.debug "in something went wrong"
if (fromUnauth)
{
log.debug "2nd Unauthorized failure ... giving up!"
}
else
{
log.debug "Scheduling a retry in 5 minutes due to Unauthorized!"
runIn(300,"refreshFromRunin")
}
}
}
}
...
} catch (e) {
log.warn "Something went wrong during login: $e"
def String eStr = e.toString()
def pair = eStr.split(" ")
def p1 = pair[0]
def p2 = pair[1]
if ((p2 == "Unauthorized") || (p2 == "Read"))
{
if (fromUnauth)
{
log.debug "2nd Unauthorized failure ... giving up!"
}
else
{
log.debug "Scheduling a retry in 5 minutes due to Unauthorized!"
runIn(300,"refreshFromRunin")
}
}
}
}
...
def refreshFromRunin()
{
log.debug "Calling refresh after Unauthorize failure!"
refresh(true)
}
def refresh(Boolean fromUnauth = false) {
log.debug "Executing 'refresh'"
def unit = location.temperatureScale
logDebug "pollInterval: $pollInterval, units: = $unit"
login(fromUnauth)
getHumidifierStatus(fromUnauth)
getStatus(fromUnauth)
}
def getHumidifierStatus(Boolean fromUnauth = false)
{
//'Referer': 'https://mytotalconnectcomfort.com/portal/Menu/${settings.honeywelldevice}',
log.debug "in get humid status!"
def params = [
uri: "https://mytotalconnectcomfort.com/portal/Device/Menu/GetHumData/${settings.honeywelldevice}",
headers: [
'Accept': '*/*',
'DNT': '1',
'dataType': 'json',
'cache': 'false',
'Accept-Encoding': 'plain',
'Cache-Control': 'max-age=0',
'Accept-Language': 'en-US,en,q=0.8',
'Connection': 'keep-alive',
'Host': 'rs.alarmnet.com',
'Referer': 'https://mytotalconnectcomfort.com/portal',
'X-Requested-With': 'XMLHttpRequest',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36',
'Cookie': device.data.cookiess ],
]
log.debug "sending getHumiditys request"
log.debug "url = $params"
try {
httpGet(params) { response ->
log.debug "GetHumidity Request was successful, $response.status"
log.debug "Humidifier data response = $response.data"
logDebug "ld = $response.data.latestData"
logDebug "humdata = $response.data.latestData.humData"
logInfo("lowerLimit: ${response.data.latestData.humData.lowerLimit}")
logInfo("upperLimit: ${response.data.humData.upperLimit}")
logInfo("SetPoint: ${response.data.humData.Setpoint}")
logInfo("DeviceId: ${response.data.humData.DeviceId}")
logInfo("IndoorHumidity: ${response.data.humData.IndoorHumidity}")
}
}
catch (e) {
log.error "Something went wrong (gethumidstatus): $e"
def String eStr = e.toString()
def pair = eStr.split(" ")
def p1 = pair[0]
def p2 = pair[1]
if ((p2 == "Unauthorized") || (p2 == "Read"))
{
if (fromUnauth)
{
log.debug "2nd Unauthorized failure ... giving up!"
}
else
{
log.debug "Scheduling a retry in 5 minutes due to Unauthorized!"
runIn(300,"refreshFromRunin")
}
}
}
}