Skip to content

Hass: Multiple Evohome Locations

David Bonnes edited this page Jul 18, 2024 · 50 revisions

Home Assistant's (HA) integration for Honeywell/Resideo Total Connection Comfort (EU), evohome, was written for systems with only a single Temperature Control System (TCS).

This wiki item describes a means to have multiple TCC TCSs (evohome systems) per HA instance. The instructions are intended for evohome systems, but should work with any TCC system available via the Honeywell/Resideo TCC website.

Note: If you use the technique described here to add a second evohome location, do not submit an issue to HA if you have a problem with it.

If you have multiple evohome controllers (either via multiple accounts, or multiple locations, or even multiple TCSs per location), then you can only have one of them available by the integration. Which TCS is defined by the location_idx parameter:

# Example configuration.yaml entry
evohome:
  username: !secret TCC_USERNAME
  password: !secret TCC_PASSWORD
  location_idx: 3  # location_idx is only required if non-zero

NOTE: The high precision feature (temps measured to 0.01 C rather than 0.5 C) only works with location_idx 0.

How to Setup a Secondary Evohome Integration

To work around this limitation, you must:

  • create a custom control for each additional TCS/controller, and keep the copy up-to-date as you update HA

NOTE: Every time you upgrade HA, you should expect to upgrade the custom_components folder too.

Step 0: Prerequisites...

Have HA up and running with a terminal (SSH) installed. Write down what version of HA you're running (you may want to upgrade to the latest version first).

Have the evohome integration setup/working OK, with a set location_idx: 0 and a default scan_interval:.

TIP: I recommend you create a secondary account on the TCC website, and give it access to your other location. This is to minimise your chances of exceeding the rate limits for authentication at the TCC website via the Grant Access button.

Step 1: Start with a clean setup...

The intention here is to remove any evohome integrations in the custom_components folder that were left over from before.

NOTE: It is important to repeat this process each time you upgrade HA, so that the evohome code is synchronous with your version of HA.

NOTE: Permissions will be an issue. If required, ensure you are running as root.

Go to the terminal, and change to the config directory, then:

  • cd /config
  • mkdir -p custom_components

TIP: If you get an error, no such file or directory, you have done something wrong.

The above will create the custom_components folder if required, and not complain it it already exists.

Ensure that there are no other evohome_* custom integrations left over from before:

  • cd /config/custom_components
  • ls -al | grep evo*

... if you do have any such folders, you should remove them (they contain only code, not data):

  • rm -rf evohome_*

NOTE: Be careful to delete only the evohome folders, and not the folders that contain any other integrations.

... _if _you do have an older core repo (containing a copy of the official integration) left over from before, remove it too:

  • rm -rf core

TIP: it won't hurt if you remove it anyway.

Step 2: Then copy across the relevant HA files...

Copy the official integration folder (if you have not done so before):

  • cd /config/custom_components
  • git clone --filter=blob:none --no-checkout --depth 1 --sparse https://github.com/home-assistant/core
  • cd core
  • git sparse-checkout add homeassistant/components/evohome

NOTE: You only need to do this step the one time.

Step 3: Create the custom component...

NOTE: In this step, you need to know the exact version of HA that you have.

Confirm the version of HA that you have (in this instance, it is 2024.7.2):

  • cat /config/.HA_VERSION

Now (and whenever you upgrade HA) you can checkout the specific version you need:

  • cd /config/custom_components/core
  • git fetch --tags
  • git checkout 2024.7.2

NOTE: Make sure you use the tag in /config/.HA_VERSION.

... and copy it across to the custom components folder (you can repeat this with evohome_2, etc.):

  • cd /config/custom_components
  • cp -r core/homeassistant/components/evohome evohome_1

NOTE: You will may a problem if evohome_1 was not removed, before.

Step 4: Then make the necessary changes...

Make the necessary changes to get the integration working as a custom component:

  • cd /config/custom_components/evohome_1
  • sed -i '/domain/ s/evohome/evohome_1/' manifest.json
  • sed -i '/{/a \ \ "version": "0.0.1",' manifest.json
  • sed -i '/DOMAIN/ s/evohome/evohome_1/' const.py

Step 5: Then check those changes...

You can check the above via:

  • cat manifest.json | grep -E 'dom|ver'
  "version": "0.0.1",
  "domain": "evohome_1",
  • cat const.py | grep 'DOMAIN'
DOMAIN: Final = "evohome_1"
STORAGE_KEY: Final = DOMAIN

See: update-evohome.sh for an example script (beware: was tested on HA OS 2023.12.1).

Step 6: Finally, enable the new integration

Ensure you have set your location_idx correctly (it defaults to 0). Below, the two integrations do not share a common username/password (but could), as you're better off creating an account for each location on the TCC website, to avoid some API rate limits for authentication (see below).

Add the following to HA via configuration.yaml:

# this account has multiple locations
evohome:  
  username: !secret TCC_USERNAME
  password: !secret TCC_PASSWORD
  location_idx: 0  # value depends upon your configuration

# this secondary account has only one location
evohome_1: 
  username: !secret TCC_USERNAME_1
  password: !secret TCC_PASSWORD_1

The alternative is to use the one account, and leverage the multiple locations of that account (i.e. location_idx: 1).

How to Grant Access to the TCC Location

Create a secondary TCC account

Grant access to your Location via your original account

References: