Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incorrect Thermostat Setpoint in HA (Gets converted/rounded? Why?!?) #103384

Closed
alexruffell opened this issue Nov 4, 2023 · 13 comments
Closed

Incorrect Thermostat Setpoint in HA (Gets converted/rounded? Why?!?) #103384

alexruffell opened this issue Nov 4, 2023 · 13 comments

Comments

@alexruffell
Copy link

alexruffell commented Nov 4, 2023

The problem

I submitted an issue on frontend and was told to submit one here.

home-assistant/frontend#17880

There appears to be some conversion or rounding happening on the setpoint which causes the value in HA to differ from the value shown in the ecobee app. Nest thermostats appear to have the same issue.

image image

In the example above, we see that both thermostats have a setpoint of 21C, however HA shows 21.0C for one and 20.8C for the other. I've had some argue with me that the issue is due to differences in how HA and ecobee/Nest perform their rounding but I want to stress the point that there should be no need to round/convert a setpoint given it is a fixed target value that on ecobee thermostats can only be picked at 0.5C increments.

I manually changed the setpoint to 20C (from 21C of the program) and HA now shows 20.2C ?!?

I have 12 additional ecobee temperature room sensors and while I see rounded values on the ecobee system, I see non rounded values in HA, and I LOVE THIS! This makes sense as HA is preserving accuracy of the data... but whatever it is doing to the setpoint does not.

I've seen this reported from people in Europe too I believe so this may not have anything to do with the issue but I will mention it. I am in the USA, but have my systems set to metric as I am European. I've always wondered whether some assumption (I am in the US so I would be using F) was made somewhere that leads to an unnecessary conversion being done.

What version of Home Assistant Core has the issue?

core-2023.11.0

What was the last working version of Home Assistant Core?

core-2023.11.0

What type of installation are you running?

Home Assistant OS

Integration causing the issue

climate

Link to integration documentation on our website

No response

Diagnostics information

No response

Example YAML snippet

No response

Anything in the logs that might be useful for us?

No response

Additional information

Adding ecobee diagnostic log recorded while I was on a manual setpoint of 20C and turned that off to go back to the programmed setting of 21C that HA shows as 20.8C:
home-assistant_ecobee_2023-11-04T15-42-21.118Z.log

ecobee related lines:

	Line   27: 2023-11-03 13:49:09.543 INFO (MainThread) [homeassistant.components.climate] Setting up climate.ecobee
	Line 1118: 2023-11-03 21:22:21.230 WARNING (MainThread) [homeassistant.helpers.entity] Update of binary_sensor.kids_bedroom_ecobee_sensor_occupancy is taking over 10 seconds
	Line 1119: 2023-11-03 21:22:41.230 WARNING (MainThread) [homeassistant.components.binary_sensor] Updating ecobee binary_sensor took longer than the scheduled update interval 0:00:30
	Line 1120: 2023-11-03 21:22:41.328 ERROR (SyncWorker_28) [pyecobee] Connection to ecobee timed out while attempting to get thermostats. Possible connectivity outage.
	Line 1402: 2023-11-04 01:31:21.596 WARNING (MainThread) [homeassistant.helpers.entity] Update of binary_sensor.kids_bedroom_ecobee_sensor_occupancy is taking over 10 seconds
	Line 1403: 2023-11-04 01:31:41.595 WARNING (MainThread) [homeassistant.components.binary_sensor] Updating ecobee binary_sensor took longer than the scheduled update interval 0:00:30
	Line 1404: 2023-11-04 01:31:41.638 ERROR (SyncWorker_58) [pyecobee] Connection to ecobee timed out while attempting to get thermostats. Possible connectivity outage.
	Line 2185: 2023-11-04 10:35:25.456 ERROR (SyncWorker_33) [pyecobee] Error from ecobee while attempting to set climate hold: 11: Function error. Invalid combinations of required params. Please provide params in any of these combinations: [[coolHoldTemp, heatHoldTemp], [holdClimateRef, coolHoldTemp, heatHoldTemp], [fanSpeed], [coolHoldTemp, heatHoldTemp, fan], [holdClimateRef, coolHoldTemp, heatHoldTemp, fan], [fanSpeed, fan], [fan]] Function: setHold
	Line 2226: 2023-11-04 10:41:42.663 DEBUG (SyncWorker_14) [pyecobee] Making request to thermostat endpoint to get thermostats: url: https://api.ecobee.com/1/thermostat, headers: {'Content-Type': 'application/json;charset=UTF-8', 'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlJFWXhNVEpDT0Rnek9UaERRelJHTkRCRlFqZEdNVGxETnpaR1JUZzRNalEwTmtWR01UQkdPQSJ9.eyJpc3MiOiJodHRwczovL2F1dGguZWNvYmVlLmNvbS8iLCJzdWIiOiJhdXRoMHw3MjlmODZjZS04N2NkLTQ1ZDgtYTA1ZS01MGU2ODVjZDI3YzEiLCJhdWQiOlsiaHR0cHM6Ly9kZXZlbG9wZXItYXBwcy5lY29iZWUuY29tL2FwaS92MSIsImh0dHBzOi8vZWNvYmVlLXByb2QuYXV0aDAuY29tL3VzZXJpbmZvIl0sImlhdCI6MTY5OTExMDc5MywiZXhwIjoxNjk5MTE0MzkzLCJhenAiOiJ5dTlzelhaTE1VdzZzc2hNaW51R2VUeTlxMThqSnpsSyIsInNjb3BlIjoib3BlbmlkIHNtYXJ0V3JpdGUgb2ZmbGluZV9hY2Nlc3MifQ.TN7yFzLbS6w03xt8hRZ7PIqgu4NuTaBzmK2siBXYY9RcXBfCaunYlq7ffWm5ANdhTvG-_vtcCh6gjP60SXvWYZtC5STYe3RQfVU-j-HuxUIond3O_3NinXRP5UZgcCAs3Xu_JzJFaj1r25S1RPzajnQAyZ7nrIJiKLo3EBReUwsTMD2D2ZoEEGzMa9mQmepJXtGVZwFQsMLDQCwH-i58TlyrKJv-H3L4IguMqiQBo1hptzfyb47M3Z4L6_pt3FxRsnF-HhSJThilBiCDZOaunwG4okIQOfzd8oxbe6RnWN86dRmbbh8KjA_Eoe5dtTGnD2VlPknTa9x9HJ8mbTilbw'}, params: {'json': '{"selection": {"selectionType": "registered", "includeRuntime": "true", "includeSensors": "true", "includeProgram": "true", "includeEquipmentStatus": "true", "includeEvents": "true", "includeWeather": "true", "includeSettings": "true"}}'}, body: None
	Line 2227: 2023-11-04 10:41:43.110 DEBUG (SyncWorker_14) [pyecobee] Request response: 200: {'page': {'page': 1, 'totalPages': 1, 'pageSize': 2, 'total': 2}, 'thermostatList': [{'identifier': '522603559018', 'name': 'Upstairs', 'thermostatRev': '231104153943', 'isRegistered': True, 'modelNumber': 'vulcanSmart', 'brand': 'ecobee', 'features': 'Home,HomeKit', 'lastModified': '2023-11-04 15:39:43', 'thermostatTime': '2023-11-04 10:41:43', 'utcTime': '2023-11-04 15:41:43', 'settings': {'hvacMode': 'heat', 'lastServiceDate': '2022-01-07', 'serviceRemindMe': False, 'monthsBetweenService': 6, 'remindMeDate': '2022-07-07', 'vent': 'off', 'ventilatorMinOnTime': 20, 'serviceRemindTechnician': False, 'eiLocation': '', 'coldTempAlert': 500, 'coldTempAlertEnabled': True, 'hotTempAlert': 920, 'hotTempAlertEnabled': True, 'coolStages': 1, 'heatStages': 1, 'maxSetBack': 100, 'maxSetForward': 80, 'quickSaveSetBack': 40, 'quickSaveSetForward': 40, 'hasHeatPump': False, 'hasForcedAir': True, 'hasBoiler': False, 'hasHumidifier': False, 'hasErv': False, 'hasHrv': False, 'condensationAvoid': False, 'useCelsius': True, 'useTimeFormat12': False, 'locale': 'en', 'humidity': '36', 'humidifierMode': 'off', 'backlightOnIntensity': 7, 'backlightSleepIntensity': 4, 'backlightOffTime': 60, 'soundTickVolume': 0, 'soundAlertVolume': 0, 'compressorProtectionMinTime': 300, 'compressorProtectionMinTemp': 350, 'stage1HeatingDifferentialTemp': 5, 'stage1CoolingDifferentialTemp': 5, 'stage1HeatingDissipationTime': 31, 'stage1CoolingDissipationTime': 31, 'heatPumpReversalOnCool': True, 'fanControlRequired': True, 'fanMinOnTime': 10, 'heatCoolMinDelta': 50, 'tempCorrection': 0, 'holdAction': 'askMe', 'heatPumpGroundWater': False, 'hasElectric': False, 'hasDehumidifier': False, 'dehumidifierMode': 'off', 'dehumidifierLevel': 60, 'dehumidifyWithAC': False, 'dehumidifyOvercoolOffset': 0, 'autoHeatCoolFeatureEnabled': True, 'wifiOfflineAlert': False, 'heatMinTemp': 450, 'heatMaxTemp': 1200, 'coolMinTemp': -100, 'coolMaxTemp': 1200, 'heatRangeHigh': 7 ...
	Line 2228: 2023-11-04 10:41:43.126 DEBUG (MainThread) [homeassistant.components.ecobee] Updating ecobee

PLEASE EDIT/REMOVE ANYTHING THAT SHOULD NOT BE SHARED

@alexruffell
Copy link
Author

alexruffell commented Nov 4, 2023

This other issue appears to be similar except that it is a Nest thermostat and it appears that the Nest API is sending a weird possibly converted setpoint which therefore needs some rounding... and the issue there lies with different rounding rules/preferences. In my case, I would not expect ANY rounding given the setpoint should be pulled in as set in ecobee thus not needing any conversion/rounding.

#100256

@home-assistant
Copy link

home-assistant bot commented Nov 4, 2023

Hey there @marthoc, @marcolivierarsenault, 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!

Code owner commands

Code owners of ecobee can trigger bot actions by commenting:

  • @home-assistant close Closes the issue.
  • @home-assistant rename Awesome new title Renames the issue.
  • @home-assistant reopen Reopen the issue.
  • @home-assistant unassign ecobee Removes the current integration label and assignees on the issue, add the integration domain after the command.

(message by CodeOwnersMention)


ecobee documentation
ecobee source
(message by IssueLinks)

@codyc1515
Copy link
Contributor

codyc1515 commented Nov 16, 2023

I faced the same issue with libdyson-wg/ha-dyson. This is actually a core issue of some sort, not ecobee.

@marcolivierarsenault
Copy link
Contributor

marcolivierarsenault commented Dec 10, 2023

no particular treatment done to the value, this is the way the platform works

@marcolivierarsenault
Copy link
Contributor

@home-assistant close

@codyc1515
Copy link
Contributor

codyc1515 commented Dec 10, 2023

Huh. So it is expected that the value is displayed incorrectly? As I said before this also impacts Dyson users. It’s not an Ecobee issue. Example here - libdyson-wg/ha-dyson#39

Can we reopen this and reassign to the core maintainers?

@marcolivierarsenault
Copy link
Contributor

It's rounded. (or I understood your problem wrong)

@marcolivierarsenault
Copy link
Contributor

Ecobee app/api is very average. It is possible to set value via the api that the official app cannot reproduce. I suggest setting it up with HA instead.

@alexruffell
Copy link
Author

alexruffell commented Dec 11, 2023

This makes no sense at all. A setpoint (target temperature) is set in 0.5C increments (on ecobee) so 20.0 - 20.5 - 21.0, etc. The value should not be changed in any way by HA and HA should therefore show the exact setpoint value as shown on the thermostat. Instead, when the program sets the value, it is always off as if it was converted (not rounded). For example, my setpoint on the upstairs thermostat is currently 21.0C but in HA it shows 20.9C. There is absolutely no plausible reason for the two numbers to differ other than some bug (unnecessary math). Please elaborate on why this is considered normal so I can understand where the confusion lies.

@marcolivierarsenault
Copy link
Contributor

marcolivierarsenault commented Dec 11, 2023

What I am explaining you is the API of Ecobee is giving back these numbers.

Example, here is a screenshot of my ecobee app.

Image

Now here is a screenshot of the raw content of Ecobee API (not through Home Assistant) just getting the raw data from their API for my device.

Desired heat is the value we use in the ecobee-homeassitant integration

Image

You can see it's 697.
When you divide by 10, it gives you the Faraneight value. 69.7.

If you convert back to celcius you get 20.94444444 which rounded gives 20.9 thus Home Assistant gives the right value.

I do not understand Why Ecobee as set that value to 697 when I ask it to be 21c but this is what we have to deal with.

@alexruffell
Copy link
Author

@marcolivierarsenault I just had a chat with ecobee support and they found that my comfort settings were set to those non 0.5C increment numbers that I was seeing within HA. Their website, the thermostats and their app was showing my heating setting was 21C however in the backend they had 20.8C which is what HA was receiving. Tech support told me that there was a "decimal point enabled on the ecobee side" which he disabled and said it should fix the issue. I asked for clarification but he just said it was a glitch on the ecobee backend side. He also mentioned it is a per thermostat setting, not per account. He said the fix is permanent so I should no longer have the issue. Below is a report of my data on their end that shows that 20.8C which was supposed to be 21.0C.

1

I will look at what HA shows me for the next few schedule changes (if I set it manually it is correct) to see if it is correct. I also found the ecobee developer documentation and will try to figure out how to make the API call so I can see what ecobee sends me... I find it strange that they would send temperature in F degrees (referring to your screenshot) if everything is set to C, especially when ecobee is a Canadian company and most of the world uses C... as a Metric person stuck in a "Imperial / Standard (lol)" country, I have to deal with these issues a lot :( Even in my car Acura thought it would be a bright idea to disable the C setting for the thermometer to discourage gray exports to Canada :(

@marcolivierarsenault
Copy link
Contributor

Yeah. Honestly the overall backend/api of exobee is very bad IMO

There are a lot of issue with it.

@alexruffell
Copy link
Author

I am hoping that with Matter, things might improve and it might even be possible to make the thermostats local... we'll see.

Thanks for the information/help that led me to finding the issue! It has been torturing me for a long time!

@github-actions github-actions bot locked and limited conversation to collaborators Jan 11, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants