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
72.92k stars 30.52k forks source link

ecobee - main units & remote sensors all report the exact same temperature #77920

Closed wixoff closed 2 years ago

wixoff commented 2 years ago

The problem

I have a two-zone climate system, and each zone has its own ecobee 3 thermostat connected via the ecobee integration (NOT HomeKit). As of the 2022.9 beta, all temperatures (from both thermostat units and all eight remote sensors I have attached) report the exact same temperature, down to the tenth of degree. If I look at sensor history, the same curve shows up for each sensor.

If I revert back to 2022.8.7, the temperatures all show up independently as they should.

There's nothing visible in the logs.

What version of Home Assistant Core has the issue?

core-2022.9.0b6

What was the last working version of Home Assistant Core?

core-2022.8.7

What type of installation are you running?

Home Assistant Container

Integration causing the issue

ecobee

Link to integration documentation on our website

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

Diagnostics information

The ecobee integration doesn't seem to support diagnostics.

Example YAML snippet

N/A

Anything in the logs that might be useful for us?

No ecobee-related messages are present in the logs.

Additional information

No response

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

ecobee documentation ecobee source (message by IssueLinks)

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

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

wixoff commented 2 years ago

I'll add:

Motion/presence is being indicated correctly on a per-sensor basis, and so is humidity (limited to the two "head units" that have humidity sensors).

mjmeli commented 2 years ago

I'm also seeing this after updating to 2022.9. All temperatures from the thermostat itself and the remote sensors are reporting the same. See here after I updated around 2pm that all 3 sensors switched to the same curve.

image

Same on my other thermostat and its remote sensors image

mjmeli commented 2 years ago

I wonder if this might be related to #76366, @rlippmann can you take a look?

jkrall commented 2 years ago

@rlippmann it looks to me like https://github.com/home-assistant/core/pull/76366/files#diff-3956fbc6cf7ce371903a60a437e326390d37f36bd45b4f6c57bbc44b6007961eR196 is the cause of this bug — by my read, this is now pulling all temperatures from the thermostats "actualTemperature" runtime_key... and no longer from the remote-sensor's value coming from sensor["capability"]["value"]

Crushalot88 commented 2 years ago

Can confirm I am also seeing this issue after upgrading HA to 2022.9 for all 8 of my ecobee smart 8 sensors. Reverting back to previous HA version resolves.

rlippmann commented 2 years ago

Each of the thermostats are reporting temperatures independently, correct? At least that’s what’s happening with me.

bdongithub commented 2 years ago

@rlippmann it looks to me like https://github.com/home-assistant/core/pull/76366/files#diff-3956fbc6cf7ce371903a60a437e326390d37f36bd45b4f6c57bbc44b6007961eR196 is the cause of this bug — by my read, this is now pulling all temperatures from the thermostats "actualTemperature" runtime_key... and no longer from the remote-sensor's value coming from sensor["capability"]["value"]

Confirmed, reverting back to item["value"] instead of thermostat["runtime"][self.entity_description.runtime_key] resolves the bug for me. I don't have any of the newer sensors to see if that breaks them, though.

rlippmann commented 2 years ago

@rlippmann it looks to me like https://github.com/home-assistant/core/pull/76366/files#diff-3956fbc6cf7ce371903a60a437e326390d37f36bd45b4f6c57bbc44b6007961eR196 is the cause of this bug — by my read, this is now pulling all temperatures from the thermostats "actualTemperature" runtime_key... and no longer from the remote-sensor's value coming from sensor["capability"]["value"]

Confirmed, reverting back to item["value"] instead of thermostat["runtime"][self.entity_description.runtime_key] resolves the bug for me. I don't have any of the newer sensors to see if that breaks them, though.

But it breaks the other sensors (AQI, VOC, CO2), correct?

jkrall commented 2 years ago

@rlippmann it looks to me like https://github.com/home-assistant/core/pull/76366/files#diff-3956fbc6cf7ce371903a60a437e326390d37f36bd45b4f6c57bbc44b6007961eR196 is the cause of this bug — by my read, this is now pulling all temperatures from the thermostats "actualTemperature" runtime_key... and no longer from the remote-sensor's value coming from sensor["capability"]["value"]

Confirmed, reverting back to item["value"] instead of thermostat["runtime"][self.entity_description.runtime_key] resolves the bug for me. I don't have any of the newer sensors to see if that breaks them, though.

But it breaks the other sensors (AQI, VOC, CO2), correct?

Looking at the ecobee API docs ... it looks like sensor capability data should be returned for all sensor types:

The type of sensor capability. Values: adc, co2, dryContact, humidity, temperature, occupancy, unknown.

Were you not getting back these newer sensor types via this payload, and that's why you switched to looking them up against the thermostat "runtime" payload?

If so... perhaps branching on the "type" attribute, and using item["value"] by default, and your new code for only the specific new types? Bit of a hack/workaround, but not sure why you wouldn't be getting back what you expect in item["value"] for all sensor types.

jkrall commented 2 years ago

Each of the thermostats are reporting temperatures independently, correct? At least that’s what’s happening with me.

Just noticed this reply ... wanted to clarify one additional thing here. For me, this bug is occuring with my remote sensors — which might not be a situation you're testing locally? Specifically, these are not separate thermostats reporting different temperaturs, but a single thermostat w/ multiple remote sensor units. (eg, these: https://www.amazon.com/ecobee-SmartSensor-2-Pack-White/dp/B07NQVWRR3)

rlippmann commented 2 years ago

@rlippmann it looks to me like https://github.com/home-assistant/core/pull/76366/files#diff-3956fbc6cf7ce371903a60a437e326390d37f36bd45b4f6c57bbc44b6007961eR196 is the cause of this bug — by my read, this is now pulling all temperatures from the thermostats "actualTemperature" runtime_key... and no longer from the remote-sensor's value coming from sensor["capability"]["value"]

Confirmed, reverting back to item["value"] instead of thermostat["runtime"][self.entity_description.runtime_key] resolves the bug for me. I don't have any of the newer sensors to see if that breaks them, though.

But it breaks the other sensors (AQI, VOC, CO2), correct?

Looking at the ecobee API docs ... it looks like sensor capability data should be returned for all sensor types:

The type of sensor capability. Values: adc, co2, dryContact, humidity, temperature, occupancy, unknown.

Were you not getting back these newer sensor types via this payload, and that's why you switched to looking them up against the thermostat "runtime" payload?

If so... perhaps branching on the "type" attribute, and using item["value"] by default, and your new code for only the specific new types? Bit of a hack/workaround, but not sure why you wouldn't be getting back what you expect in item["value"] for all sensor types.

No, I was getting "Unknown" for the other sensors, which is why I used the runtime key.

I actually reverted the temperature and humidity to item["value"]. Using the runtime key for temperature gives the average temperature across sensors as reported by the thermostat, not the actual temperature (I put a remote sensor in the refrigerator to test).

jkrall commented 2 years ago

I actually reverted the temperature and humidity to item["value"]. Using the runtime key for temperature gives the average temperature across sensors as reported by the thermostat, not the actual temperature (I put a remote sensor in the refrigerator to test).

Awesome. Just found your commit and it looks good to me... appreciate the quick work digging into this!

rlippmann commented 2 years ago

Working on getting the PR now.

JeffOnGithub commented 2 years ago

Awesome! I got the same thing here with remote sensor after the upgrade. Thanks :)

bdongithub commented 2 years ago

@rlippmann it looks to me like https://github.com/home-assistant/core/pull/76366/files#diff-3956fbc6cf7ce371903a60a437e326390d37f36bd45b4f6c57bbc44b6007961eR196 is the cause of this bug — by my read, this is now pulling all temperatures from the thermostats "actualTemperature" runtime_key... and no longer from the remote-sensor's value coming from sensor["capability"]["value"]

Confirmed, reverting back to item["value"] instead of thermostat["runtime"][self.entity_description.runtime_key] resolves the bug for me. I don't have any of the newer sensors to see if that breaks them, though.

But it breaks the other sensors (AQI, VOC, CO2), correct?

Couldn't say; I don't have the fancy new sensors to test a fix against so the best I could do is confirm root cause. Thanks for the quick turnaround on the patch!

Ali229 commented 2 years ago

Same problem after 2022.9, sensor just shows whatever the main unit shows.

sgabelnick commented 2 years ago

I have the same problem. 3 sensors reported correct temperatures with Home Assistant 2022.8.6 but with 9.0 show the temperature on the ecobee thermostat.