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

The evohome API does not support cooling #17

Open
slice396 opened this issue May 9, 2024 · 25 comments
Open

The evohome API does not support cooling #17

slice396 opened this issue May 9, 2024 · 25 comments

Comments

@slice396
Copy link

slice396 commented May 9, 2024

I have an evoHome setup with multiple zones and a heat pump with the ability to cool.

Im not able to cool within the home assistant. I can only choose heat or off.

Am i missing something? If i change the settings to cooling on the evohome. The temperature rises on the display and on evohome. In my case evoahome still thinks we are heating but it does work. So of i lower the temperature within home assistant the heat pump starts to cool.

I would love the ability to change to cooling on heating with home assistant.

@zxdavb
Copy link
Owner

zxdavb commented May 9, 2024

[edit] The API does not currently support cooling, see: #17 (comment)


I am keen to get cooling into the code, but - as I don't have cooling available to me (and neither the official API) - I'll need some help from someone who does.

What I need in the first instance is a coy of the JSON returned from the TCC webservers, so I can set up some virtual servers to dev/test against.

You can help with this fairly easily, if you're using HA, see:

The JSON does not contain any personally identifiable information, so you can post it here - or PM me if you prefer.

@slice396
Copy link
Author

slice396 commented May 11, 2024

This was very challenging from a phone...

Here you have the log, it's the complete log. Could not select the evohome part as you asked. If this is not what you asked for i will bring in my laptop and do it again;


2024-05-11 12:27:13.471 INFO (MainThread) [homeassistant.setup] Setting up evohome
...
2024-05-11 12:27:13.873 INFO (MainThread) [evohomeasync2.broker] GET https://tccna.honeywell.com/WebAPI/emea/api/v1/userAccount (200) = {'userId': ...
...
2024-05-11 12:27:14.187 INFO (MainThread) [evohomeasync2.broker] GET https://tccna.honeywell.com/WebAPI/emea/api/v1/location/installationInfo?userId=2972021&includeTemperatureControlSystems=True (200) = [{'locationInfo': {'locationId': ...

@zxdavb
Copy link
Owner

zxdavb commented May 11, 2024

Thanks for that, however...

I need this logging:

logger:
  logs:
    homeassistant.components.evohome: debug
    homeassistant.components.evohome.climate: debug
    homeassistant.components.evohome.water_heater: debug

You have provided this logging:

logger:
  logs:
    evohomeasync2: info
    evohomeasync2.broker: info

I note that you have at least two locations, so make sure you supply the JSON for the correct location.

@slice396
Copy link
Author

slice396 commented May 11, 2024

Like this?

<< SNIP >>

@zxdavb
Copy link
Owner

zxdavb commented May 11, 2024

Think so, lemme look at it.

@zxdavb
Copy link
Owner

zxdavb commented May 11, 2024

OK, so the JSON schema is limited to what we know so far. In particular, all zones have:

  • the setpointCapabilities with: "canControlCool": false

I has hoping to see "canControlCool": true, alongside some new JSON.

Can you confirm that your system supports cooling?

If so, it may be useful to send me some JSON when the system is actively cooling.

Please can you turn off logging via the client library because it does report personally identifiable information:

logger:
  logs:
    evohomeasync2: warning
    evohomeasync2.broker: warning

@zxdavb
Copy link
Owner

zxdavb commented May 11, 2024

Am i missing something? If i change the settings to cooling on the evohome. The temperature rises on the display and on evohome.

I am not sure what you mean by 'The temperature rises'?

Do you mean the current temperature, or the target temperature (the setpoint)?

In any case, both should decrease, no? (or: target heat temperature was 19.5, and target cool temperature was 20.5?)

Again, when the system is cooling, send me these two lines only:

  • [homeassistant.components.evohome] Config =
  • [homeassistant.components.evohome] Status =

@slice396
Copy link
Author

slice396 commented May 11, 2024

Thanks for the effort so far!

First "The temperature rises" thing i said earlier;

When i change to cooling on the evoHome system itself, the setpoint of the rooms rises to 24 degrees. This is normal. What i notice within Home Assistant is that the system just thinks its still heating. Lowering the temperature will activate the heat pump in cooling. But home assistant just says "heating" or "off". But i cannot change it from heating to cooling or vise versa.

As you requested i did this;

  1. Changed the config.yaml to;
logger:
  default: info  # turn off debug messages, generally...
  logs:
    evohomeasync2: warning
    evohomeasync2.broker: warning
    homeassistant.components.evohome: debug
    homeassistant.components.evohome.climate: debug
    homeassistant.components.evohome.water_heater: debug
  1. removed the existing log file.
  2. Switched to cooling.
  3. Reboot Home Assistant.
  4. Made sure the system was actually cooling.
  5. Searched in the log for
[homeassistant.components.evohome] Config =
[homeassistant.components.evohome] Status =

And paste these lines below;

2024-05-11 20:26:16.503 DEBUG (MainThread) [homeassistant.components.evohome] Config = {'locationInfo': {'locationId': '6390479', 'timeZone': {'timeZoneId': 'WEuropeStandardTime', 'displayName': '(UTC+01:00) Amsterdam, Berlijn, Bern, Rome, Stockholm, Wenen', 'offsetMinutes': 60, 'currentOffsetMinutes': 120, 'supportsDaylightSaving': True}}, 'gateways': [{'gatewayInfo': {'gatewayId': '6008600', 'temperatureControlSystems': [{'systemId': '8222003', 'modelType': 'EvoTouch', 'zones': [{'zoneId': '8222000', 'modelType': 'HeatingZone', 'setpointCapabilities': {'maxHeatSetpoint': 35.0, 'minHeatSetpoint': 5.0, 'valueResolution': 0.5, 'canControlHeat': True, 'canControlCool': False, 'allowedSetpointModes': ['PermanentOverride', 'FollowSchedule', 'TemporaryOverride'], 'maxDuration': '1.00:00:00', 'timingResolution': '00:10:00'}, 'scheduleCapabilities': {'maxSwitchpointsPerDay': 6, 'minSwitchpointsPerDay': 1, 'timingResolution': '00:10:00', 'setpointValueResolution': 0.5}, 'name': 'Woonkamer', 'zoneType': 'UnderfloorHeating'}, {'zoneId': '8222001', 'modelType': 'HeatingZone', 'setpointCapabilities': {'maxHeatSetpoint': 35.0, 'minHeatSetpoint': 5.0, 'valueResolution': 0.5, 'canControlHeat': True, 'canControlCool': False, 'allowedSetpointModes': ['PermanentOverride', 'FollowSchedule', 'TemporaryOverride'], 'maxDuration': '1.00:00:00', 'timingResolution': '00:10:00'}, 'scheduleCapabilities': {'maxSwitchpointsPerDay': 6, 'minSwitchpointsPerDay': 1, 'timingResolution': '00:10:00', 'setpointValueResolution': 0.5}, 'name': 'MBR', 'zoneType': 'UnderfloorHeating'}, {'zoneId': '8222002', 'modelType': 'HeatingZone', 'setpointCapabilities': {'maxHeatSetpoint': 35.0, 'minHeatSetpoint': 5.0, 'valueResolution': 0.5, 'canControlHeat': True, 'canControlCool': False, 'allowedSetpointModes': ['PermanentOverride', 'FollowSchedule', 'TemporaryOverride'], 'maxDuration': '1.00:00:00', 'timingResolution': '00:10:00'}, 'scheduleCapabilities': {'maxSwitchpointsPerDay': 6, 'minSwitchpointsPerDay': 1, 'timingResolution': '00:10:00', 'setpointValueResolution': 0.5}, 'name': 'BK', 'zoneType': 'UnderfloorHeating'}, {'zoneId': '8403459', 'modelType': 'HeatingZone', 'setpointCapabilities': {'maxHeatSetpoint': 35.0, 'minHeatSetpoint': 5.0, 'valueResolution': 0.5, 'canControlHeat': True, 'canControlCool': False, 'allowedSetpointModes': ['PermanentOverride', 'FollowSchedule', 'TemporaryOverride'], 'maxDuration': '1.00:00:00', 'timingResolution': '00:10:00'}, 'scheduleCapabilities': {'maxSwitchpointsPerDay': 6, 'minSwitchpointsPerDay': 1, 'timingResolution': '00:10:00', 'setpointValueResolution': 0.5}, 'name': 'Kantoor', 'zoneType': 'UnderfloorHeating'}, {'zoneId': '8403460', 'modelType': 'HeatingZone', 'setpointCapabilities': {'maxHeatSetpoint': 35.0, 'minHeatSetpoint': 5.0, 'valueResolution': 0.5, 'canControlHeat': True, 'canControlCool': False, 'allowedSetpointModes': ['PermanentOverride', 'FollowSchedule', 'TemporaryOverride'], 'maxDuration': '1.00:00:00', 'timingResolution': '00:10:00'}, 'scheduleCapabilities': {'maxSwitchpointsPerDay': 6, 'minSwitchpointsPerDay': 1, 'timingResolution': '00:10:00', 'setpointValueResolution': 0.5}, 'name': 'Sauna', 'zoneType': 'UnderfloorHeating'}, {'zoneId': '8403596', 'modelType': 'HeatingZone', 'setpointCapabilities': {'maxHeatSetpoint': 35.0, 'minHeatSetpoint': 5.0, 'valueResolution': 0.5, 'canControlHeat': True, 'canControlCool': False, 'allowedSetpointModes': ['PermanentOverride', 'FollowSchedule', 'TemporaryOverride'], 'maxDuration': '1.00:00:00', 'timingResolution': '00:10:00'}, 'scheduleCapabilities': {'maxSwitchpointsPerDay': 6, 'minSwitchpointsPerDay': 1, 'timingResolution': '00:10:00', 'setpointValueResolution': 0.5}, 'name': 'Hut', 'zoneType': 'UnderfloorHeating'}, {'zoneId': '8222004', 'modelType': 'Unknown', 'setpointCapabilities': {'maxHeatSetpoint': 30.0, 'minHeatSetpoint': 5.0, 'valueResolution': 0.5, 'canControlHeat': True, 'canControlCool': False, 'allowedSetpointModes': ['PermanentOverride', 'FollowSchedule', 'TemporaryOverride'], 'maxDuration': '1.00:00:00', 'timingResolution': '00:10:00'}, 'scheduleCapabilities': {'maxSwitchpointsPerDay': 6, 'minSwitchpointsPerDay': 1, 'timingResolution': '00:10:00', 'setpointValueResolution': 0.5}, 'name': '', 'zoneType': 'Unknown'}], 'allowedSystemModes': [{'systemMode': 'Auto', 'canBePermanent': True, 'canBeTemporary': False}, {'systemMode': 'AutoWithEco', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '1.00:00:00', 'timingResolution': '01:00:00', 'timingMode': 'Duration'}, {'systemMode': 'AutoWithReset', 'canBePermanent': True, 'canBeTemporary': False}, {'systemMode': 'Away', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '99.00:00:00', 'timingResolution': '1.00:00:00', 'timingMode': 'Period'}, {'systemMode': 'DayOff', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '99.00:00:00', 'timingResolution': '1.00:00:00', 'timingMode': 'Period'}, {'systemMode': 'HeatingOff', 'canBePermanent': True, 'canBeTemporary': False}, {'systemMode': 'Custom', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '99.00:00:00', 'timingResolution': '1.00:00:00', 'timingMode': 'Period'}]}]}, 'temperatureControlSystems': [{'systemId': '8222003', 'modelType': 'EvoTouch', 'zones': [{'zoneId': '8222000', 'modelType': 'HeatingZone', 'setpointCapabilities': {'maxHeatSetpoint': 35.0, 'minHeatSetpoint': 5.0, 'valueResolution': 0.5, 'canControlHeat': True, 'canControlCool': False, 'allowedSetpointModes': ['PermanentOverride', 'FollowSchedule', 'TemporaryOverride'], 'maxDuration': '1.00:00:00', 'timingResolution': '00:10:00'}, 'scheduleCapabilities': {'maxSwitchpointsPerDay': 6, 'minSwitchpointsPerDay': 1, 'timingResolution': '00:10:00', 'setpointValueResolution': 0.5}, 'name': 'Woonkamer', 'zoneType': 'UnderfloorHeating'}, {'zoneId': '8222001', 'modelType': 'HeatingZone', 'setpointCapabilities': {'maxHeatSetpoint': 35.0, 'minHeatSetpoint': 5.0, 'valueResolution': 0.5, 'canControlHeat': True, 'canControlCool': False, 'allowedSetpointModes': ['PermanentOverride', 'FollowSchedule', 'TemporaryOverride'], 'maxDuration': '1.00:00:00', 'timingResolution': '00:10:00'}, 'scheduleCapabilities': {'maxSwitchpointsPerDay': 6, 'minSwitchpointsPerDay': 1, 'timingResolution': '00:10:00', 'setpointValueResolution': 0.5}, 'name': 'MBR', 'zoneType': 'UnderfloorHeating'}, {'zoneId': '8222002', 'modelType': 'HeatingZone', 'setpointCapabilities': {'maxHeatSetpoint': 35.0, 'minHeatSetpoint': 5.0, 'valueResolution': 0.5, 'canControlHeat': True, 'canControlCool': False, 'allowedSetpointModes': ['PermanentOverride', 'FollowSchedule', 'TemporaryOverride'], 'maxDuration': '1.00:00:00', 'timingResolution': '00:10:00'}, 'scheduleCapabilities': {'maxSwitchpointsPerDay': 6, 'minSwitchpointsPerDay': 1, 'timingResolution': '00:10:00', 'setpointValueResolution': 0.5}, 'name': 'BK', 'zoneType': 'UnderfloorHeating'}, {'zoneId': '8403459', 'modelType': 'HeatingZone', 'setpointCapabilities': {'maxHeatSetpoint': 35.0, 'minHeatSetpoint': 5.0, 'valueResolution': 0.5, 'canControlHeat': True, 'canControlCool': False, 'allowedSetpointModes': ['PermanentOverride', 'FollowSchedule', 'TemporaryOverride'], 'maxDuration': '1.00:00:00', 'timingResolution': '00:10:00'}, 'scheduleCapabilities': {'maxSwitchpointsPerDay': 6, 'minSwitchpointsPerDay': 1, 'timingResolution': '00:10:00', 'setpointValueResolution': 0.5}, 'name': 'Kantoor', 'zoneType': 'UnderfloorHeating'}, {'zoneId': '8403460', 'modelType': 'HeatingZone', 'setpointCapabilities': {'maxHeatSetpoint': 35.0, 'minHeatSetpoint': 5.0, 'valueResolution': 0.5, 'canControlHeat': True, 'canControlCool': False, 'allowedSetpointModes': ['PermanentOverride', 'FollowSchedule', 'TemporaryOverride'], 'maxDuration': '1.00:00:00', 'timingResolution': '00:10:00'}, 'scheduleCapabilities': {'maxSwitchpointsPerDay': 6, 'minSwitchpointsPerDay': 1, 'timingResolution': '00:10:00', 'setpointValueResolution': 0.5}, 'name': 'Sauna', 'zoneType': 'UnderfloorHeating'}, {'zoneId': '8403596', 'modelType': 'HeatingZone', 'setpointCapabilities': {'maxHeatSetpoint': 35.0, 'minHeatSetpoint': 5.0, 'valueResolution': 0.5, 'canControlHeat': True, 'canControlCool': False, 'allowedSetpointModes': ['PermanentOverride', 'FollowSchedule', 'TemporaryOverride'], 'maxDuration': '1.00:00:00', 'timingResolution': '00:10:00'}, 'scheduleCapabilities': {'maxSwitchpointsPerDay': 6, 'minSwitchpointsPerDay': 1, 'timingResolution': '00:10:00', 'setpointValueResolution': 0.5}, 'name': 'Hut', 'zoneType': 'UnderfloorHeating'}, {'zoneId': '8222004', 'modelType': 'Unknown', 'setpointCapabilities': {'maxHeatSetpoint': 30.0, 'minHeatSetpoint': 5.0, 'valueResolution': 0.5, 'canControlHeat': True, 'canControlCool': False, 'allowedSetpointModes': ['PermanentOverride', 'FollowSchedule', 'TemporaryOverride'], 'maxDuration': '1.00:00:00', 'timingResolution': '00:10:00'}, 'scheduleCapabilities': {'maxSwitchpointsPerDay': 6, 'minSwitchpointsPerDay': 1, 'timingResolution': '00:10:00', 'setpointValueResolution': 0.5}, 'name': '', 'zoneType': 'Unknown'}], 'allowedSystemModes': [{'systemMode': 'Auto', 'canBePermanent': True, 'canBeTemporary': False}, {'systemMode': 'AutoWithEco', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '1.00:00:00', 'timingResolution': '01:00:00', 'timingMode': 'Duration'}, {'systemMode': 'AutoWithReset', 'canBePermanent': True, 'canBeTemporary': False}, {'systemMode': 'Away', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '99.00:00:00', 'timingResolution': '1.00:00:00', 'timingMode': 'Period'}, {'systemMode': 'DayOff', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '99.00:00:00', 'timingResolution': '1.00:00:00', 'timingMode': 'Period'}, {'systemMode': 'HeatingOff', 'canBePermanent': True, 'canBeTemporary': False}, {'systemMode': 'Custom', 'canBePermanent': True, 'canBeTemporary': True, 'maxDuration': '99.00:00:00', 'timingResolution': '1.00:00:00', 'timingMode': 'Period'}]}]}]}

2024-05-11 20:26:16.657 DEBUG (MainThread) [homeassistant.components.evohome] Status = {'locationId': '6390479', 'gateways': [{'gatewayId': '6008600', 'temperatureControlSystems': [{'systemId': '8222003', 'zones': [{'zoneId': '8222000', 'temperatureStatus': {'temperature': 23.0, 'isAvailable': True}, 'activeFaults': [], 'setpointStatus': {'targetHeatTemperature': 23.0, 'setpointMode': 'FollowSchedule'}, 'name': 'Woonkamer'}, {'zoneId': '8222001', 'temperatureStatus': {'temperature': 25.0, 'isAvailable': True}, 'activeFaults': [], 'setpointStatus': {'targetHeatTemperature': 21.0, 'setpointMode': 'TemporaryOverride', 'until': '2024-05-11T20:30:00Z'}, 'name': 'MBR'}, {'zoneId': '8222002', 'temperatureStatus': {'temperature': 22.0, 'isAvailable': True}, 'activeFaults': [], 'setpointStatus': {'targetHeatTemperature': 23.0, 'setpointMode': 'FollowSchedule'}, 'name': 'BK'}, {'zoneId': '8403459', 'temperatureStatus': {'temperature': 23.5, 'isAvailable': True}, 'activeFaults': [], 'setpointStatus': {'targetHeatTemperature': 23.0, 'setpointMode': 'FollowSchedule'}, 'name': 'Kantoor'}, {'zoneId': '8403460', 'temperatureStatus': {'temperature': 25.5, 'isAvailable': True}, 'activeFaults': [], 'setpointStatus': {'targetHeatTemperature': 23.0, 'setpointMode': 'FollowSchedule'}, 'name': 'Sauna'}, {'zoneId': '8403596', 'temperatureStatus': {'temperature': 23.0, 'isAvailable': True}, 'activeFaults': [], 'setpointStatus': {'targetHeatTemperature': 23.0, 'setpointMode': 'FollowSchedule'}, 'name': 'Hut'}, {'zoneId': '8222004', 'temperatureStatus': {'isAvailable': False}, 'activeFaults': [], 'setpointStatus': {'targetHeatTemperature': 62.0, 'setpointMode': 'PermanentOverride'}, 'name': ''}], 'activeFaults': [], 'systemModeStatus': {'mode': 'Auto', 'isPermanent': True}}], 'activeFaults': []}]}

@slice396
Copy link
Author

I guess home assistant logs into the normal portal and changes settings like i would. I cannot change the system to cooling or heating within the portal. Only locally on the Evohome itself. So i guess its not easely fixable.

@zxdavb
Copy link
Owner

zxdavb commented May 11, 2024

My best guess is that I'd have to use a different API...

I am not even sure if ramses_rf would work, either.

@zxdavb
Copy link
Owner

zxdavb commented May 12, 2024

I am pretty sure I need to use another API - I will see I can contact the vendor & get access to it.

@slice396
Copy link
Author

I guess you are right. After testing i noticed some problems with cooling because home assistant thinks its saving energie by lowering the temperature. Because cooling is active the opposite is true. Im searching for a workaround but for now havent found a simple solution.

I've send a mail to my sales representative as well. Perhaps he knows a solution.

@zxdavb
Copy link
Owner

zxdavb commented May 13, 2024

There are several versions of API that speak to TCC/evohome - evohome-async can use two (of the earlier APIs).

I know another coder (who wrote an Amazon Alexa skill that can handle cooling) has been given access to a 3rd API, but his code - unlike mine - is not open source.

I will reach out to them and request advice, but because this library is open source, we may not get anywhere.

@slice396
Copy link
Author

Just received access to https://developer.honeywellhome.com/

perhaps there is a use within; https://developer.honeywellhome.com/lyric/apis/post/devices/thermostats/%7BdeviceId%7D

Also requested the cooling capability for the portal. They told me the request has been added to the list, so i guess this will not happen soon.

@zxdavb
Copy link
Owner

zxdavb commented Jun 20, 2024

@slice396 Could you PM me at your convenience - either via github, or via https://community.home-assistant.io/

@slice396
Copy link
Author

Like right here?

@zxdavb
Copy link
Owner

zxdavb commented Jun 21, 2024

No, I want a private channel - PM or email.

Repository owner deleted a comment from slice396 Jun 21, 2024
@slice396
Copy link
Author

Tried to share my mail but ghost removed it. Do you have another way to communicate private?

@zxdavb
Copy link
Owner

zxdavb commented Jun 22, 2024

Tried to share my mail but ghost removed it. Do you have another way to communicate private?

No, I got it.

@zxdavb
Copy link
Owner

zxdavb commented Jul 15, 2024

@slice396 Can you confirm that you can control cooling via the TCC app?

@slice396
Copy link
Author

slice396 commented Jul 15, 2024 via email

@zxdavb
Copy link
Owner

zxdavb commented Jul 15, 2024

At the moment i can only enable cooling through the evoHome. Resideo (Roy
de Vos) told me they want to make this happen but it is, as of this moment,
not possible.

Oh! I had assumed the TCC app (on apple/android) was working!

What about the TCC website - can you control cooling there?

@slice396
Copy link
Author

Nope same story. Roy told me they are busy fixing this. He also told me the API has more possibilities. See my message from May 13.

Just received access to https://developer.honeywellhome.com/

perhaps there is a use within; https://developer.honeywellhome.com/lyric/apis/post/devices/thermostats/%7BdeviceId%7D

Also requested the cooling capability for the portal. They told me the request has been added to the list, so i guess this will not happen soon.

@zxdavb
Copy link
Owner

zxdavb commented Jul 16, 2024

I’m afraid I have bad news…

There is very good evidence that the TCC Web API simply does not support cooling for EMEA-based systems, and also:

  • no support in TCC mobile App
  • no support in TCC website

There is only support via the Evohome controller UI.

All: if you want cooling to be added to the API, I can only suggest you approach Resideo and ask that things change.

@slice396
Copy link
Author

slice396 commented Jul 16, 2024 via email

@zxdavb zxdavb changed the title Cooling within evoHome Does the evohome API support cooling Oct 27, 2024
@zxdavb zxdavb changed the title Does the evohome API support cooling The evohome API does not support cooling Dec 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants