[Workaround] Evohome multiple concurrent locations

For detailed instruction on how to do this, look here: Home Assistant: Multiple Evohome Locations

The above is a first draft: please submit an Issue if that wiki has any problems with it.

Good luck.

@zxdavb I already have a custom _components folder housing several other custom integrations, you mention start with a clean set up, does this mean I need to make a second custom_components folder or can I just add the secondary instance of evohome in my existing folder?

@zxdavb I followed all the steps in your WIKI but still get the message "integration error: ‘evohome_1’ - not found :frowning:

The meaning was to remove all the existing evohome folders from under custom_components, if any.

The custom_components folder, and any of the ‘other’ folders under it - those containing other integrations - should remain unmolested.

I am sorry if the language was not clear.

You can simply add an evohome_1 folder to the custom_components folder, but you must also delete any evohome* folders left over from before.

Regarding the rest, I will check it tomorrow-ish, and get back to you.

In the meantime, could you provide more detail about your installation, and some specifics of how you achieved the instructions in the wiki.

Please include a copy of your configuration.yaml,

@zxdavb I did try to add to my existing custom_components folder following the steps you gave in WIKI using the SHH Terminal add-on also did try to add it by manually download the evohome Integration raw files and copy paste them in evohome_1 folder within custom_components trying with samba share from my PC and trying to add true file editor, all 3 of these ways to add the secondary integration result in the same error message that integration not can be found.

My primary evohome integration runs already for over 1,5 year without problems

Like this I tryed to add it to my configuration.yaml

evohome:
username: “primary account”
password: “##########”
location_idx: “1”
evohome_1:
username: “granted access account”
password: “##########”
location_idx: “0”

And this is my system info running on a “home assistant blue” device:

System Information

version core-2023.8.3
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.11.4
os_name Linux
os_version 6.1.39
arch aarch64
timezone Europe/Bucharest
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4996
Installed Version 1.32.1
Stage running
Available Repositories 1272
Downloaded Repositories 27
AccuWeather
can_reach_server ok
remaining_requests 24
Home Assistant Cloud
logged_in true
subscription_expiration September 15, 2023 at 03:00
relayer_connected true
relayer_region eu-central-1
remote_enabled true
remote_connected true
alexa_enabled false
google_enabled true
remote_server eu-central-1-4.ui.nabu.casa
certificate_status ready
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 10.4
update_channel stable
supervisor_version supervisor-2023.08.1
agent_version 1.5.1
docker_version 23.0.6
disk_total 113.9 GB
disk_used 62.5 GB
healthy true
supported true
board odroid-n2
supervisor_api ok
version_api ok
installed_addons Spotify Connect (0.12.4), Home Assistant Google Drive Backup (0.111.1), File editor (5.6.0), Advanced SSH & Web Terminal (15.0.7), Samba share (10.0.2), MariaDB (2.6.1), ESPHome (2023.8.1), Assistant Relay (0.7.4), Mosquitto broker (6.2.1), Zigbee2MQTT (1.32.2-1)
Dashboards
dashboards 1
resources 16
views 21
mode storage
Recorder
oldest_recorder_run August 9, 2023 at 08:45
current_recorder_run August 19, 2023 at 00:21
estimated_db_size 1640.14 MiB
database_engine mysql
database_version 10.6.12
Sonoff
version 3.5.2 (2ad1cd7)
cloud_online 10 / 10
local_online 10 / 10
Spotify
api_endpoint_reachable ok

@sesame26 Thanks for the additional information…

I apologise: I believe English may not be your native language, and so if I have misunderstood you, please forgive me…

First, I am only needing you to confirm that you followed the instructions in the Wiki exactly. If you added a command, or didn’t execute a command, then do tell me.

I am not interested in using Samba, etc - this is not in the wiki article. Please limit yourself to the exact instructions of the wiki.

Please be precise. For example, use formatting when necessary.

re: the configuration.yaml, I think you meant:

evohome:
  username: "primary account"
  password: "##########"
  location_idx: 1
evohome_1:
  username: "granted access account"
  password: "##########"
  location_idx: 0

Please use the secrets.yaml file as described in the wiki.

Please follow the wiki again, but only via the SSH add-on. I wonder if you have a problem with permissions (I am using a different SSH add-on), so - when you’ve finished, try:

ls -al /config/custom_components/evohome_1

And post the results here.

@sesame26 I just had a look…

I have made a few mistakes in the instructions.

For now, I will remove this bit:

    await asyncio.sleep(5)

… and the manifest.json is missing a comma:

  "requirements": ["evohome-async==0.3.15"]

… it should have a trailing comma:

  "requirements": ["evohome-async==0.3.15"],

So, I will edit the wiki, and post here when it is good for you to try again.

@sesame26 OK, try now. Good luck.

@zxdavb yes I did follow the WIKI exactly as you described everything in there

My configuration.yaml indeed looks like you posted BUT I have, username, password and idx_location values all between " " so I not use 1 as value for idx_location but “1” I have it like this also in original evohome config and it works for 1.5 year already.

I will tomorrow try again your adjusted WIKI and let you know if did succeed or not.

Thanks!

@zxdavb I did try add again and still have the same error that integration can not be found if i run the following line > ls -al /config/custom_components/evohome_1 > I get to see following on the picture I added below to this post

2023-08-19_23-15-00

@sesame26

What did you get when you:

cat /config/custom_components/evohome_1/manifest.json

… and:

cat /config/custom_components/evohome_1/const.py | grep 'DOMAIN'

@zxdavb excactly the same as in the WIKI

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

DOMAIN = “evohome_1”
STORAGE_KEY = DOMAIN

If you don’t have the asyncio.sleep(5) in __init__.py, then I suggest you simply restart HA.

HA will still start, and the log file will include the reason why evohome_1 wasn’t found.

Please use formatting - wrap text in three back-quotes, for example.

When you have restarted, try this:

cat /config/home-assistant.log | grep evohome

@zxdavb it will even restart if gives error in Developer Tools? I not get the “Configuration will not prevent Home Assistant from starting!” message now, so honestly I find it a bit scary to still restart this way :frowning:

It is your system, so up to you.

… but I have - as expected - just successfully restarted HA even with this error message:

The system cannot restart because the configuration is not valid: Integration error: evohome_x - Integration 'evohome_x' not found.

You restart as you describe, but select Advanced options at the bottom of the dialog box, then Reboot system, then Reboot.

When I correct my configuration.yaml (from evohome_x: back to evohome_1:), and corrupt my manifest,json, and restart HA again, in the error log, I executed:

cat /config/home-assistant.log | grep evohome

… and got:

2023-08-19 21:54:13.035 ERROR (SyncWorker_0) [homeassistant.loader] Error parsing manifest.json file at /config/custom_components/evohome_1/manifest.json: trailing comma is not allowed: line 9 column 21 (char 328)
2023-08-19 21:54:34.279 ERROR (MainThread) [homeassistant.setup] Setup failed for evohome_1: Integration not found.

… all the other integrations started successfully.

Sorry:

To reboot, go to Settings, then three button menu on the top-right, then Restart Home Assistant, then select Advanced options at the bottom of the dialog box, then Reboot system , then REBOOT .

@zxdavb I did delete again all and then added manual with file editor

  1. I created new folder “evohome_1” in the “custom_components” folder
  2. after that I did upload 1 by 1 the files I did download as “raw” from the HA core github “https://github.com/home-assistant/core/tree/2023.8.3/homeassistant/components/evohome”
  3. then I manual adjusted within file editor the manifest.json and the const.py file so they where the same as how you described them in the WIKI

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

“”“Support for (EMEA/EU-based) Honeywell TCC climate systems.”""
DOMAIN = “evohome_1”

STORAGE_VER = 1
STORAGE_KEY = DOMAIN

The Parent’s (i.e. TCS, Controller’s) operating mode is one of:

EVO_RESET = “AutoWithReset”
EVO_AUTO = “Auto”
EVO_AUTOECO = “AutoWithEco”
EVO_AWAY = “Away”
EVO_DAYOFF = “DayOff”
EVO_CUSTOM = “Custom”
EVO_HEATOFF = “HeatingOff”

The Children’s operating mode is one of:

EVO_FOLLOW = “FollowSchedule” # the operating mode is ‘inherited’ from the TCS
EVO_TEMPOVER = “TemporaryOverride”
EVO_PERMOVER = “PermanentOverride”

These are used only to help prevent E501 (line too long) violations

GWS = “gateways”
TCS = “temperatureControlSystems”

UTC_OFFSET = “currentOffsetMinutes”

  1. then I did access my custom_components folder through SSH Terminal using following comand : cd ~/config/custom_components

  2. after that I executed following comand to give executable rights to the files in evohome_1 folder : chmod +x evohome_1/*

  3. then I restarted HA

  4. then I added credentials to configuration.yaml
    evohome:
    username: “primary account”
    password: “##########”
    location_idx: “1”
    evohome_1:
    username: “granted access account”
    password: “##########”
    location_idx: “0”

  5. checked config in “Developer Tools” tools and I had no more error and got the “Configuration will not prevent Home Assistant from starting!” message

After did do a other restart and all started up as expected and I have climate entities for my second location as well services added for the second location starting with evohome_1.xxxxxxxx

So finally I got it working!

Thank you for your help and efforts!

Well-done.

For those who follow, I recommend this process, instead of the above:

Home Assistant: Multiple Evohome Locations

It offers several advantages over the process described above, and - if people raise an issue on the repo - I will keep the wiki up to date.

1 Like

For those who want to have multiple evohome locations, this wiki has the solution.

evohome:
  username: !secret TCC_USERNAME
  password: !secret TCC_PASSWORD
  location_idx: 0

evohome_1:
  username: !secret TCC_USERNAME_1
  password: !secret TCC_PASSWORD_1
  location_idx: 1

It is the same wiki as the previous post, but has been updated to correct an issue.

If you have any difficulties with it, then submit an issue here.