Honeywell thermostat won't change temperature if it's in auto mode

Hi guys, I’m new to home-assistant and it’s been a bit of a learning curve, but also fun figuring everything out. However, I’ve been having one small issue. I have an automation to set the temperature on my Honeywell thermostat (Honeywell Home RTH9585WF1004 Wi-Fi Smart Color Thermostat) and everything works great! Unless the thermostat is in auto mode (following the schedule). If it’s in auto mode, then no temp settings work, including changing the temp from the lovelace ui. I’m sure there’s a way to set it to a temporary or permanent hold (I’d settle for either, but a temporary one would be best) even when it’s following the schedule. If I manually put it in a hold, it works just fine. I googled around and all I could find was someone saying that if it’s in heat/cool mode you have to use target_temp_(high/low) but that’s what I’ve been using and no dice.

Here’s my config in automations.yaml.

  alias: Stop thermostat
  description: turn off thermostat via IFTTT
  trigger:
  - event_data:
      action: call_service
    event_type: ifttt_webhook_received
    platform: event
  condition: []
  action:
  - data:
      entity_id: climate.thermostat
      hvac_mode: heat_cool
      target_temp_high: 82
      target_temp_low: 62
    service: climate.set_temperature

Nothing, eh?

This is not exactly what you’re looking for, but I control my Honeywell RTH6580WF WiFi thermostats just fine from within HA using the Honeywell climate integration.

This uses their “Total Connect Comfort” portal account that you’d use to access the Honeywell thermostats from a web page or app. Here’s my configuration.yaml entry:

# Honeywell Thermostats
climate:
  - platform: honeywell
    region: us
    username: [Honeywell account]
    password: [Honeywell PW]
    scan_interval: 180

Note that if you set the scan_interval too short, you’ll get rate limited by their servers.

I can change the temperature from HA, and it does a “temporary hold.” When the next scheduled time hits, the setting goes back to following that schedule. I don’t see any way to do a permanent hold, or change the schedule, from within HA.

Yeah, that’s what I’m using, although I don’t have a scan_interval set. It can get the thermostat status fine, but it won’t change the temperature unless the thermostat is already on a hold. If it’s following the schedule, it won’t do anything…

climate:
  - platform: honeywell
    username: [my account]
    password: [my password]
    region: us
    away_cool_temperature: 82
    away_heat_temperature: 61

You’re going to quickly get beyond my area of knowledge here, so I want to go back to the basics.

You mentioned that it doesn’t work from the Lovelace card, either. Let’s start there. Go to Developer Tools / States. Scroll down to the climate.thermostat entry. It should show the state, and a long list of attributes. Click the “i” to the left of the entry.

You should get a generic thermostat control display like the one below. The up and down arrows change the temperature setting on mine. The number changes to red until it’s been sent to the thermostat, then it goes back to black and the thermostat shows the new value as a temporary hold.

I assume you’ve tried all this, but if the change doesn’t work from here it’s safer to assume a problem with the underlying integration, and not your automation.

We can also compare attributes between my implementation and yours. It could be the different models of thermostats expose different attributes, which might mean they work differently.

You might also want to rule out rate limiting. I found this note in the Honeywell evohome/TCC system documentation. Not an exact match for the US integration, but it may be instructive:

This is an IoT cloud-polling device, and the recommended scan_interval is 180 seconds. Testing has indicated that this is a safe interval that - by itself - shouldn’t cause you to be rate-limited by Honeywell.

I think the rate limiting would show up as an error in the log, but it’s been a while since I checked so I’m not sure which log.

Ok, I added the line for the scan_interval.
I went ahead and tried ti from the developer screen, and the number turns red, then black. After a few seconds it just reverts back to the value it was before. I’m not seeing any errors in the logs that I can find, but I guess it could be going to a log I don’t know about. It does accurately show what the settings are right now, and I’ve definitely seen it change successfully - but only if the thermostat is already placed into a hold.

It sure does sound like there’s a problem between the HA integration and the Honeywell API. My thermostat is a different model, so maybe that’s why it works. The weird thing is, if the thermostat uses the Honeywell “Total Connect Comfort” web site, then you’d think the API would be the same.

Does it work from the TCC web site? On there, you have a choice between permanent and temporary hold. Since this distinction isn’t implemented in the HA integration, maybe that’s the sticking point. But why would mine work?

Yeah, from the website I can change temperatures pretty easily. Not sure about the distinction between temp and perm holds, though. I’ll have to play with it some when I get home. It’s a little frustrating as I felt like HA was the perfect answer to the fact that neither amazon alexa or google assistant support setting both a heat and cool level at once.

As an aside, in fact, Google is pretty annoying - if you set a cool point and it’s in auto mode, it sets the heat point exactly 10 degrees below that. So if I use a routine when I leave the house to set cooling to 85, it sets the heat to 75. I live in florida, and in the winter, the temp can swing from 50 to 80 during the day, so while this would keep the cooling from kicking off, it pretty much guarantees that the heat would turn on instead. I didn’t figure out what was happening until the Honeywell monthly report came in saying that the heating ran for 3 hours in October (and it was definitely NOT cold enough for that!). Anyway, turned out that since the house had cooled to around 72 overnight, when I left and set the away temp to 85 with GA, it set the bottom end to 75 and would activate the heat. UGH.

When I press the up or down arrows on the app, I have the option to just “submit” it or “switch to permanent hold.” If I just tap submit, the thermostat will indicate it’s on hold (set at the new temperature) until the next schedule change, when it reverts back to using the schedule programmed into the stat. Permanent hold is, well, permanent until you cancel it.

So I ran a test. I put a thermostat on a permanent hold using the app. Waited a while, and sure enough, it showed up in HA at the “new” set temperature. I used HA to set it back to what it was before, then went back the app.

It was still saying permanent hold, but now displaying the temperature I’d set in HA.

So, in my testing, the HA up and down arrows work about as you’d expect. They’ll create a temporary hold if there isn’t one, and change a permanent hold if it’s already set. Again, HA has no clue about schedules set in the thermostat, but can change the setting.

Had the exact same issues with my Honeywell thermostats. Temperature change would not work when in Following Schedule mode. It only responded to HA when in Permanent Hold mode. Since the thermostat occasionally went into Following Schedule mode, I went into the settings of the thermostat and set to non-programmable. (SETTINGS>Preferences>Advanced Perferences>Scheduling Options>Non-Programable) This disables the automatic scheduling function and the thermostat now always runs in permanent hold mode and always responded to HA.

Yeah it’s looking like that’s teh only option if I want HA to be able to set the stat… but I like the schedule! :frowning_face: Oh well, I like the temperature history that shows up.

This is not what I’m seeing. I have three Honeywell thermostats and they’re all set to follow a schedule. I’ve already changed two of them this morning. The “target temperature” in HA reflects the value I changed it to. The thermostat shows “hold until…” whatever the next scheduled change is. At that time it’ll go back to following the schedule.

What I can’t do from HA is make it a permanent hold. If it’s already in permanent hold mode, I can change the target temperature setting in HA, but not cancel the hold and return to the schedule. For that I need to use the Honeywell app or web site, or do it right at the thermostat.

The “target temperature” in HA reflects the value I changed it to. The thermostat shows “hold until…” whatever the next scheduled change is. At that time it’ll go back to following the schedule.

How did you accomplish that? Anything I send to it is ignored unless the thermostat is already in a permanent hold.

It just works. I have Honeywell RTH6580WF thermostats. Odd that it doesn’t work for you. I’m at a loss as to where to even look. Since it works when in permanent hold, we know the Honeywell API is properly connected.

I just bought the Honeywell RTH9585WF, put the following code in my configuration.yaml…

climate 1:
  platform: honeywell
  username: [email protected]
  password: mypassword
  region: us
  scan_interval: 180

but can’t seem to figure out how to setup a proper thermostat card on my lovelace. I get these…

is it possible to add the info and controls from the popup into the card?

if anyone is looking for a cloudless thermostat, stay clear of honeywell. I installed the honeywell RTH9585 and if I disconnect the modem I can’t control the thermostat on my own wifi. in other words, every time I change the settings it goes out over the internet to the cloud just to adjust the temperature. this is unacceptable. I am returning it to home depot and going to try the Venstar T7850 ColorTouch Thermostat 7 Day Programmable w/ WiFi. I want a cloudless smart home. period.

Just did a bunch of testing on this subject and did a write up… I hope it helps. Not sure if it effects other total connect thermostats. Click the header below to go to the article page.