home-assistant / core

:house_with_garden: Open source home automation that puts local control and privacy first.
https://www.home-assistant.io
Apache License 2.0
73.9k stars 30.97k forks source link

Honeywell Total Connect Comfort: "hvac_action" & "fan_action" never change from "idle". #72118

Closed jmichaelp62 closed 1 year ago

jmichaelp62 commented 2 years ago

The problem

I have a Honeywell Vision Pro 8000 (TH8321WF1001). Every attribute works/is usable with the Total Connect Comfort (US) integration except "hvac_action" & "fan_action" which are always on "idle". They have not changed from idle in the two weeks during which I've been working with Home Assistant daily.>

What version of Home Assistant Core has the issue?

2022.5.4

What was the last working version of Home Assistant Core?

No response

What type of installation are you running?

Home Assistant Core

Integration causing the issue

Honeywell Total Connect Comfort (US)

Link to integration documentation on our website

https://www.home-assistant.io/integrations/honeywell

Diagnostics information

I do not see an area that has this info.

Example YAML snippet

NA

Anything in the logs that might be useful for us?

NA

Additional information

Previously reported & closed without resolution in this issue: https://github.com/home-assistant/core/issues/68740

probot-home-assistant[bot] commented 2 years ago

honeywell documentation honeywell source (message by IssueLinks)

probot-home-assistant[bot] commented 2 years ago

Hey there @rdfurman, mind taking a look at this issue as it has been labeled with an integration (honeywell) you are listed as a code owner for? Thanks! (message by CodeOwnersMention)

jmichaelp62 commented 2 years ago

Is there anything I can do to provide information about my thermostat or any diagnostics I can run to provide information? Thanks.

jmichaelp62 commented 2 years ago

Is any help available for this or can someone point me to documentation for the Honeywell TCC integration so I can try to fix it myself?

rdfurman commented 2 years ago

Is the temperature reported changing at all? The integration may have been disconnected by the Honeywell TCC API due to rate limiting.

rdfurman commented 2 years ago

Likely dupe of https://github.com/home-assistant/core/issues/68740

jmichaelp62 commented 2 years ago

Thanks for taking the time to look at this & respond. Everything else appears to be functional with the limited testing I've done using them. No rate limiting. So I've really only been dealing with temperature & humidity tracking right now, & that has been great. It's frustrating to be unable to get any of the run time data that everyone else is able to get though.

On Thu, Jun 23, 2022, 4:36 PM RDFurman @.***> wrote:

Likely dupe of #68740 https://github.com/home-assistant/core/issues/68740

— Reply to this email directly, view it on GitHub https://github.com/home-assistant/core/issues/72118#issuecomment-1164850147, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZAUDZQJG5N5HAWEXWFMPSTVQTDFLANCNFSM5WKG3OOQ . You are receiving this because you authored the thread.Message ID: @.***>

jmichaelp62 commented 2 years ago

Can I do any testing or provide any information to help resolve this issue?

rdfurman commented 2 years ago

I have a feeling that this is a side effect of the 5 minute update interval. Are you able to set your HVAC to a temperature that will result in the unit running for longer than 5 minutes then check the state 5 minutes after you set it? Does it still show idle?

rdfurman commented 2 years ago

Looking at this a little closer, it seems like the somecomfort library isn't even returning a value for either of these values: image

equipment_output_status and fan_mode are what this integration maps to "hvac_action" & "fan_action" respectively. The screenshot above shows data directly from the somecomfort library while my unit is actively cooling my house, so the fan is running.

I'm starting to wonder if "hvac_action" & "fan_action" ever worked with this integration. I will keep digging into the response from mytotalconnectcomfort.com to see if there is a value we can key off to get what the HVAC is currently doing, not just what it's set to do.

rdfurman commented 2 years ago

Can I do any testing or provide any information to help resolve this issue?

Are you familiar with Postman? I'd like to see if your setup is returning anything under fanData. As of right now, my setup doesn't seem to return anything:

"fanData": {
    "fanMode": null,
    "fanModeAutoAllowed": false,
    "fanModeOnAllowed": false,
    "fanModeCirculateAllowed": false,
    "fanModeFollowScheduleAllowed": false,
    "fanIsRunning": null
},
"hasFan": false,
jmichaelp62 commented 2 years ago

Thanks, sorry I missed this earlier. The system has been running for 5 minutes & still reports idle.

On Sun, Aug 7, 2022 at 1:53 PM RDFurman @.***> wrote:

I have a feeling that this is a side effect of the 5 minute update interval. Are you able to set your HVAC to a temperature that will result in the unit running for longer than 5 minutes then check the state 5 minutes after you set it? Does it still show idle?

— Reply to this email directly, view it on GitHub https://github.com/home-assistant/core/issues/72118#issuecomment-1207455879, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZAUDZWX4I2FLACKG7TL4PDVX7ZYNANCNFSM5WKG3OOQ . You are receiving this because you authored the thread.Message ID: @.***>

jmichaelp62 commented 2 years ago

iirc other people get values for "hvac_action" & "fan_action", but it has been a while - I was driving myself crazy trying to get this to work when other people with Honeywell thermostats were able to but I wasn't, so I took a break.

On Sun, Aug 7, 2022 at 5:08 PM RDFurman @.***> wrote:

Looking at this a little closer, it seems like the somecomfort library isn't even returning a value for either of these values: [image: image] https://user-images.githubusercontent.com/2547448/183310877-428f0404-f033-49f8-a9ce-a8d5cf5cf68e.png

equipment_output_status and fan_mode are what this integration maps to "hvac_action" & "fan_action" respectively. The screenshot above shows data directly from the somecomfort library while my unit is actively cooling my house, so the fan is running.

I'm starting to wonder if "hvac_action" & "fan_action" ever worked with this integration. I will keep digging into the response from mytotalconnectcomfort.com to see if there is a value we can key off to get what the HVAC is currently doing, not just what it's set to do.

— Reply to this email directly, view it on GitHub https://github.com/home-assistant/core/issues/72118#issuecomment-1207485711, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZAUDZVTASFOK2YDI3S64TLVYAQVBANCNFSM5WKG3OOQ . You are receiving this because you authored the thread.Message ID: @.***>

jmichaelp62 commented 2 years ago

No, sorry I'm not familiar with Postman.

Also as of a few updates ago, I'm no longer able to set the temperature using Home Assistant. I get an error "not enough arguments for format string"

On Sun, Aug 7, 2022 at 5:41 PM RDFurman @.***> wrote:

Can I do any testing or provide any information to help resolve this issue?

Are you familiar with Postman? I'd like to see if your setup is returning anything under fanData. As of right now, my setup doesn't seem to return anything:

"fanData": { "fanMode": null, "fanModeAutoAllowed": false, "fanModeOnAllowed": false, "fanModeCirculateAllowed": false, "fanModeFollowScheduleAllowed": false, "fanIsRunning": null }, "hasFan": false,

— Reply to this email directly, view it on GitHub https://github.com/home-assistant/core/issues/72118#issuecomment-1207490489, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZAUDZVJPJUNDRW6ETJPYK3VYAUPXANCNFSM5WKG3OOQ . You are receiving this because you authored the thread.Message ID: @.***>

richardcalgary commented 2 years ago

i get the hvac_action using a template sensor
afoyerfan: value_template: "{{ state_attr('climate.phx1foyer', 'hvac_action') }}" This shows "cooling" when AC is on.

Perhaps it depends on the type of thermostat that you have, have you checked to see if the TCC app gets the information from your thermostat? My thermostat is a wifi thermostat, but am away from home and can't recall the model number.

rdfurman commented 2 years ago

Yeah mytotalconnectcomfort.com doesn't show a current action for my thermostat either.

richardcalgary commented 1 year ago

checked my RTH8500WF and found that the hvac_action does work however it is very slow to update

this chart shows that the hvac action is updating image

btw does anyone happen to know what the "foyer heating" trend is driven by?

jmichaelp62 commented 1 year ago

Thanks. I have a Honeywell TH8321WF1001 Wifi Vision Pro 8000. For some reason my model doesn't seem to work.

rdfurman commented 1 year ago

Yeah I'm thinking that some models don't actually show the current status of the HVAC unit. They may show the current mode (heating, cooling, etc.) but not if the unit is actively doing something (heating/cooling) vs sitting idle (temp is at target). Looks like @richardcalgary's unit does show current action while ours does not. This is not something we can control on the Home Assistant side. If mytotalconnectcomfort.com doesn't show the current action, then we won't be able to show anything on the Home Assistant side.

FYI @richardcalgary, the reason it looks "very slow to update" if because the honeywell integration is configured to update every 5 minutes. I did this because mytotalconnectcomfort.com has a tenancy to rate limit people who have multiple thermostats. I have done some work to change how we poll the API but this is still early testing.

I do not know where the "foyer heating" trend is coming from.

mkmer commented 1 year ago

@richardcalgary - The API (somecomfort) gets rate limited if polling is faster than 5 minutes. I have worked out some discovery and proposed a fix to the owner that would allow us to poll as fast as 1 second without being rate limited. I suspect 15 or 30 seconds would be a sufficient polling rate to catch and display the operation. Until he accepts the update in the API, we're stuck with a 5 minute poll and many times miss the "running" event.

jmichaelp62 commented 1 year ago

@mkmer - Thanks for looking at an alternate path to fixing this & proposing a solution. Hopefully we'll find a way, I like the thermostat but really want to get this information about my HVAC system.

mkmer commented 1 year ago

@mkmer - Thanks for looking at an alternate path to fixing this & proposing a solution. Hopefully we'll find a way, I like the thermostat but really want to get this information about my HVAC system.

It's mostly selfish, I want to measure run time and it's currently truncating up to 5 minutes of run time. If you know how to setup a custom_integration, I can share a version that pulls from the PR and you could see if it addresses the issue for you.

jmichaelp62 commented 1 year ago

@mkmer Do you mean installing through HACS here? If not, in any event I either figure out how or I don't - if I do all is good, so share it please! Thanks. image

mkmer commented 1 year ago

clone this repo: https://github.com/mkmer/HA_Honeywell.git Place the entire "honeywell" directory in the "custom_components" folder in your HA config directory.

The component is modified to poll at 10 seconds, it uses a modified somecomfort repo in the manifest that allows us to poll faster without tripping the rate limit.

If the data is actually there, this should catch it. For me I'm now much closer at estimating gas consumption based on run time.

rdfurman commented 1 year ago

@mkmer This is actually a super interesting finding! This may pair well with another experiment I've been running on the side to make the honeywell integration use separate polling for each entity.

Branch: https://github.com/rdfurman/core/tree/separate_device_polling

I took a quick peak at your PR in somecomfort. One thing we will need to sort out is how we want to handle the session eventually expiring and a login being required. But this is absolutely an exciting discovery!

mkmer commented 1 year ago

@rdfurman : I agree on sorting out the expiration/connection error - what wasn't clear to me was if the expiration error would trip something at the HA level to reconnect (To be honest, I didn't look that close). For a "start", I wanted to "prove" it worked without tripping the API rate limit. I've had my phone, web page, and HA all connected at the same time and not seen a rate limit error, so I think we're good there.

In the end, somecomfort should probably be reworked to use aiohttp and go async. It's not too difficult, and could be a start to refactoring/reducing what appears to be quite a lot of code.

find me on discord if you need a tester or discuss "things"

mkmer commented 1 year ago

@mkmer This is actually a super interesting finding! This may pair well with another experiment I've been running on the side to make the honeywell integration use separate polling for each entity.

Branch: https://github.com/rdfurman/core/tree/separate_device_polling

I took a quick peak at your PR in somecomfort. One thing we will need to sort out is how we want to handle the session eventually expiring and a login being required. But this is absolutely an exciting discovery!

Peaking at your branch, it may make more sense to have a datacoordinator (standard HA device function) that manages the polling and notifies the sensors and climate device when it's finished.

rdfurman commented 1 year ago

Yeah now that I think about it, the original reason I started that branch was because I assumed the device endpoints were being rate limited. But since you've found that it's the login that is rate limited I think the DataUpdateCoordinator approach would probably be better.

mkmer commented 1 year ago

Back to the problem statement for this issue: It appears you and @jmichaelp62 are not getting the EquipmentOutputStatus key to change in the JSON data (right?) - I see two other keys: StatusCool and StatusHeat which do not change for my thermostat, but maybe they are for your model? Could be we use these two + EquipmentOutputStatus to turn on the operation mode of that's the case.

mkmer commented 1 year ago

@rdfurman - I think I have the solution for login back in when the session expires. It's in the PR, and appears to be working for me. I'm not sure owner or the API is "alive" - no response to my PR. We may need to take over the API - probably should move to AIOhttp. Thoughts? (I'm willing to work on that if you agree)

mkmer commented 1 year ago

2023.2 will have a new AsyncIO api and improved polling performance (30 seconds) - please give it a shot in February.

mkmer commented 1 year ago

Did 2023.2 address this issue?

richardcalgary commented 1 year ago

I had to reload the integration after the update but a quick check shows that it updates within the 30 second window. I'll look again in a couple of days and report back if I find anything different.

Thanks for all of your work improving this integration.

mkmer commented 1 year ago

@home-assistant close