Official Honeywell evohome/Round Thermostat integration (EU-only)

I moved forward. Custom component requires version in manifest.json

{
“domain”: “evohome2”,
“name”: “Honeywell Total Connect Comfort (Europe)”,
“documentation”: “Honeywell Total Connect Comfort (Europe) - Home Assistant”,
“requirements”: [“evohome-async==0.3.15”],
“codeowners”: [“@zxdavb”],
“iot_class”: “cloud_polling”,
“version”: “1.0.0”
}

I have following code in configuration.yaml:

evohome2:
username: !secret evohome2_login
password: !secret evohome_heslo

evohome3:
username: !secret evohome3_login
password: !secret evohome_heslo

evohome4:
username: !secret evohome4_login
password: !secret evohome_heslo

After fixing the problem above, there is an error during configuration,yaml check:

Component error: evohome4 - cannot import name ‘HTTP_SERVICE_UNAVAILABLE’ from ‘homeassistant.const’ (/usr/src/homeassistant/homeassistant/const.py)
Component error: evohome2 - cannot import name ‘HTTP_SERVICE_UNAVAILABLE’ from ‘homeassistant.const’ (/usr/src/homeassistant/homeassistant/const.py)
Component error: evohome3 - cannot import name ‘HTTP_SERVICE_UNAVAILABLE’ from ‘homeassistant.const’ (/usr/src/homeassistant/homeassistant/const.py)

Any idea how to fix it?

For the benefit of others, I think you meant:

evohome2:
  username: !secret evohome2_login
  password: !secret evohome_heslo

evohome3:
  username: !secret evohome3_login
  password: !secret evohome_heslo

evohome4:
  username: !secret evohome4_login
  password: !secret evohome_heslo

Problem: You are using an old (out of date) version of the evohome integration with a new(er) version of home-assistant. IN this specific case, see: Use HTTPStatus instead of… PR #57990

Solution: You have to re-copy the contemporaneous homeassistant/components/evohome/* files to custom_components\evohomeX every time HA is updated - and then re-edit them as described above.

1 Like

Works perfectly now, thank you !

I am trying to make a sensor to monitor the battery status of the radiator valve. It doesn’t work, could anyone give guidance please? This is in my sensor.yaml

- platform: template
    sensors:
      climate.dressing_room_battery_status:
        friendly_name: "Dressing Room Battery Status"
 #       icon_template: mdi:battery
        value_template: >-
          {% if state_attr('climate.dressing_room', 'status').active_faults %}
            {% if state_attr('climate.dressing_room', 'status').active_faults[0].faultType == 'TempZoneActuatorLowBattery' %}
              There is a low battery
            {% endif %}
              There is a Fault!
          {% else %}
             No issue
          {% endif %}

@zxdavb David, firstly excellent integration and thank you for all the time put in maintaining/improving it!

A quick ask; is there any way to generate a sensor to monitor the connection/last update received from the Honeywell side? Essentially I want to build a sensor that notifies me if the connection drops and monitors/reports on the last time I received an update from the API.

The wonderful team that maintain the LightwaveRF integration recently added the ability to monitor this and it’s been a game changer as if the connection does drop I can receive both a notification and have generated automations to essentially force it to reconnect. It would be something I’d also be super interested implementing for this integration, as an additional layer of protection/robustness.

Once again a heartfelt thank you for the work you do here, this is a fantastic integration.

@Neep This is maybe not the answer you’re wanting.

I do not really use the official integration any more…

All my development time is with ramses_cc (and ramses_rf), which is available to add (manually) via HACS.

The ramses_cc integration can (or will eventually) do everything that the API-based integration can do, and a lot more.

It does not need the internet (but does need a USB dongle, about £40 - or cheaper if you make one).

Hi all,

I’m trying to get Home Assistant to work with my EU Honeywell Evohome setup, but i keep running into the following error:

2022-09-15 14:13:44.862 ERROR (MainThread) [homeassistant.components.evohome] Failed to authenticate with the vendor's server. Check your username and password. NB: Some special password characters that work correctly via the website will not work via the web API. Message is: Unable to obtain an Access Token, hint: {"error":"invalid_grant"}
2022-09-15 14:13:44.865 ERROR (MainThread) [homeassistant.setup] Setup failed for evohome: Integration failed to initialize.

My configuration.yaml

# Loads default set of integrations. Do not remove.
default_config:

# Text to speech
tts:
  - platform: google_translate

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 0.0.0.0/0

evohome:
  username: !secret evo_username
  password: !secret evo_password
  location_idx: 0
  scan_interval: 360

The evohome username is an e-mail address and the password does have a special character “#”.
Although i can change the password, the website requires at least one special character in the password.

I am able to logon using the Evohome website with the account, no issues there.
I’ve changed the password of the account, but that didn’t help resolve the issue.

I’m running Home Assistant within a docker container.

What version of Home Assistant Core has the issue?

22.9.4

What type of installation are you running?

Home Assistant Container on docker

I hope someone can point me in the direction of a solution.

Thanks for any assist.

You haven’t said if you tried using the at sign @?

What do you mean?

The username is an email address, so it includes an @ sign.

The password includes no @ sign.

I mean use an @ in the password instead of an #.

I changed the password so it now includes only an “@” as a special character, however that didn’t resolve the issue.

The log entries:

Setup failed for evohome: Integration failed to initialize.

11:50:06 – (ERROR) setup.py

Failed to authenticate with the vendor's server. Check your username and password. NB: Some special password characters that work correctly via the website will not work via the web API. Message is: Unable to obtain an Access Token, hint: {"error":"invalid_grant"}

11:50:05 – (ERROR) evohome

I am sorry, I have run out of ideas…

Some people have created another account & given location permission from one account to another - maybe that will work.

I’ll try that, thanks!

update, that worked instantly, thanks again!

Hi there, firstly thanks for the great work ! I’m taking my first steps on a Smartthings to HA migration due to the ongoing work Samsung are doing on ensuring that my home automation will slowly start to collapse over time !

I’m learning a lot and having the usual ongoing Google search, try, smash head against brick wall and then repeat…again…and again…

I’ve set up Evohome Zone Boost Automations, which took a while to get the required 30 minute duration, rather than the default next set point. This involved using Duration and Minutes Data points.

I’ve now spent time trying to get the DHW to turn on and off, but I couldn’t get either water_heater.turn_on or water_heater.set_operation_mode to accept a Duration… water_heater.turn_on defaults to Permanent and water_heater.set_operation_mode defaults to the next setpoint.

I do know that the Evohome API can accept a Duration on the DHW in some shape or form as it’s possible on the existing Smartthings Integration by @andremain , who coincidentally has moved to HA so hopefully could advise on the Evohome API parameters !!

If you could look at this it would be great !

To be able to show a room as being heated, which state should I look at? I want to change the room icon colour to show that the thermostat is on and giving heat.
I could just assume that the room temperature is lower than the set temperature but I think that is not the best solution.

There is no way to do this with the web-based (i.e. using the REST API) integration.

I did have something similar to you thinking - it was unsatisfactory and so was removed.

However, for the sake of a £35 dongle (cheaper if you make it yourself), you can get heat demand per zone:

Beware - the heat demand per zone will tell you what teh zone wants - it wont tell you what the controller has decided to do about it (that is, optimisations) - although the above integration will also tell you if the boiler is receiving a call for heat.

I am sorry, I do not have capacity fro this at the moment - almost all my spare time is working with the RF version (although I do have an outstanding evohome PR with two more waiting for it to be merged).

I would be willing to facilitate a PR to HA’s evohome integration, or to evohome-async.

The state-of-the-art is the RF integration (see above post) - it should do want you’re wanting, and more - for example:

  • get schedules (set is a WIP), incl. DHW schedules
  • change DHW setpoint

Thank you I will check that out. It seems a bit over the top for what I want to do. I will see if I have any integration that can listen for that channel already (probably not).

Thanks for this, I will look into the RF Integration as it could contain some of the parameters that I have asked @andremain over on the Smartthings side before he moved to Home Assistant, such as the % Demand setting that a zone is at e.g. Lounge - 80%.

With respect to PR I’m assuming that you mean Pull Request ? But coming for a Demand Management background you could also mean Product Request. Can you please clarify what you mean !

It does expose this date (you simply can’t get this via the web api).

Yes: Pull Request.