Evohome data extract and sensor data

Hi all,

Background:

We have 17 heating zones, kids which are here part time, the SWIMBO works a day of from the office, then from home. The eldest kid is often at her boyfriends house or unexpectedly away. Keeping on top of these movements is key to managing consumption Since the house is poorly insulated (very old) not heating is the best option as opposed to 24 hour loss replacement. All this drives automation and on our case there are good returns from doing so.

Two questions.

My first question is how to get more than one location going in the config since
each controller only supports 12 zones. We have two controllers.

Here is the official line:

Evohome

Blockquote
location_idx integer (Optional, default: 0)
Used to select which location to use, if your login has access to more than one location.
Multiple locations at one time are not officially supported.

But what would be a sensible way to unofficially make this work one wonders?

evohome:</sub>
    username: "redacted"</sub>
    password: "redacted"</sub>
    location_idx: 0</sub>
    scan_interval: 600</sub>

Basically I need a way to define two location_idx’s I guess. . . . ?

Second Question.

Right now the confusion is how to access the data in the code below which is exposed in the climate domain.

I am pretty new to HA and only really have allot of PowerShell scripting and some C# to fall back on. I am learning YAML [2 days]. So I’ll get there, but I am stuck here.

I can feel from the vast quantity of information needed to get this going, there are a number of different ways to do what I am after.

  • Via custom helpers,
  • templates
  • etc.

None of which I understand from a high level yet, even 10% yet, but that’s part of the fun.

This is what is exposed for the data from dev → states.

Entity
climate.back_door

hvac_modes:
  - "off"
  - heat
min_temp: 5
max_temp: 21
preset_modes:
  - none
  - temporary
  - permanent
current_temperature: 19
temperature: 19
preset_mode: none
status:
  setpoints:
    this_sp_from: "2025-02-28T08:50:00+00:00"
    this_sp_temp: 19
    next_sp_from: "2025-02-28T20:00:00+00:00"
    next_sp_temp: 10
  zone_id: [redacted]
  active_faults: []
  setpoint_status:
    target_heat_temperature: 19
    setpoint_mode: FollowSchedule
  temperature_status:
    temperature: 19
    is_available: true
friendly_name: Back Door
supported_features: 401

I can get all the data above as one big string in the template editor in developer mode like this.

{{ states.climate.back_door }}

or I can get it to tell me whether heat mode is set true or false which is the first element only like this.

{{ 'Yes' if is_state('climate.back_door', 'heat') else 'No' }}

However replacing the ‘heat’ attribute with anything else

{{ 'Yes' if is_state('climate.back_door.min_temp', '5') else 'No'  }}
or
{{ states.climate.back_door.min_temp  }}

listed above results in:
homeassistant.helpers.template,TemplateState object has no attribute min_temp.
Which tells me this must be a syntax issue on my part.

I can get the word “heat” returned if I do.

{{ states('climate.back_door') }}

So the state is accessible as an attribute - but that’s not really much use for binary state.
Off or Heat are the two options as it rarely gets above 35°c.

The things I most want to know are:

  1. what is the current,
  2. target,
  3. setpoint_modes.
  4. Then all four setpoint variables.

I just can’t seem to figure out how to access elements? perhaps they are not elements and you have to regex through the return string ?

Many thanks for any insights and I am sorry for the long post. I could not find another post
seeming to cover the same topic, similar, but not the same.

I think I have solved question two now - typical after posting how that happens

{{ state_attr('climate.back_door', 'status').setpoint_status.setpoint_mode }}
{{ state_attr('climate.back_door', 'status').setpoints.next_sp_temp }}