zxdavb / evohome-async

An asyncio Python client to access the Evohome web service
http://evohome-client.readthedocs.org/en/latest/
Apache License 2.0
11 stars 13 forks source link

Does the evohome API support cooling #17

Open slice396 opened 6 months ago

slice396 commented 6 months ago

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 commented 6 months ago

[edit] The API does not currently support cooling, see: https://github.com/zxdavb/evohome-async/issues/17#issuecomment-2230421789


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 commented 6 months ago

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 commented 6 months ago

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 commented 6 months ago

Like this?

<< SNIP >>

zxdavb commented 6 months ago

Think so, lemme look at it.

zxdavb commented 6 months ago

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

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 commented 6 months ago

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:

slice396 commented 6 months ago

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
  2. removed the existing log file.
  3. Switched to cooling.
  4. Reboot Home Assistant.
  5. Made sure the system was actually cooling.
  6. 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 commented 6 months ago

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 commented 6 months ago

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 commented 6 months ago

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

slice396 commented 6 months ago

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 commented 6 months ago

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 commented 6 months ago

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 commented 5 months ago

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

slice396 commented 5 months ago

Like right here?

zxdavb commented 5 months ago

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

slice396 commented 5 months ago

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

zxdavb commented 5 months ago

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

No, I got it.

zxdavb commented 4 months ago

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

slice396 commented 4 months ago

Hello,

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.

Sincerely,

Wouter

Op ma 15 jul 2024 om 11:54 schreef David Bonnes @.***>:

@slice396 https://github.com/slice396 Can you confirm that you can control cooling via the TCC app?

— Reply to this email directly, view it on GitHub https://github.com/zxdavb/evohome-async/issues/17#issuecomment-2228114092, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABMMAP5UVQKIOO7O4KRHNBTZMOL4JAVCNFSM6AAAAABHOZ7JNGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMRYGEYTIMBZGI . You are receiving this because you were mentioned.Message ID: @.***>

zxdavb commented 4 months ago

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 commented 4 months ago

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 commented 4 months ago

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:

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 commented 4 months ago

Thanks for trying. I've already requested the feature but i guess it will take some time before it is added.

Op di 16 jul 2024 om 11:20 schreef David Bonnes @.***>:

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.

— Reply to this email directly, view it on GitHub https://github.com/zxdavb/evohome-async/issues/17#issuecomment-2230421789, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABMMAP34AVCZXJBKAUITL3LZMTQVJAVCNFSM6AAAAABHOZ7JNGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMZQGQZDCNZYHE . You are receiving this because you were mentioned.Message ID: @.***>