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

Very intriguing… I have a 10 year old Worcester boiler so fingers crossed OpenTherm works with it. :slight_smile:

Hi, I’m trying to have a button that will heat a certain climate entity for a certain amount of time.
I want to make the values customizable so I’ve created an input_number and I want to read its value to pass it on in the call.

Service evohome: set_zone_override
Service data:

entity_id: climate.badkamer
setpoint: 20
duration:
  minutes: {{ states('input_number.minutes') | float }}

but it does not accept this :frowning:


Failed to call service evohome/set_zone_override. expected float for dictionary value @ data[‘duration’][‘minutes’]

I don’t understand why and what I am doing wrong. If I paste this into Template evaluator it returns 30.

I have some examples in my config. Click on the title to see the code.

1 Like

Am I the only one having the same issue right now?

Mine’s working. I did see the entities disappear for a few minutes a day or two ago, but they are working now.

If you can log onto the TCC website - try changing your password to something simple - there are some special ASCII characters that the website will accept, but the RESTful API will not.

I had a very simple password, only numbers and letters…
I’ve changed it anyway on the TCC site, replaced it in the config, restarted and automagically it works again :mage:

I looked at some examples in my config of templates which I used for different purposes, and when casting I had some extra () around the entity. Also, for set zone override durations I expressed it as JSON for some reason, so an extra set of {}. Finally it looks like you forgot to express this as a data_template. My guess as to how it should look is more like the below:

  action:
    service: evohome.set_zone_override
    data:
      entity_id: climate.badkamer
      setpoint: 20
    data_template:
      duration: >
        { minutes: {{ (states('input_number.minutes')) | float }} }

Hi all! New to Home Assistant, used Domoticz for a while, but to be honest didn’t do anything with it for last few years. But finally got the “new” Hue bridge (still had the round one) and therefor wanted to give home automation a new boost too.
Next to Hue I also have the Honeywell Evohome system and have a problem with that.

I’m trying to add an “Away” button to my dashboard to set the away state to my evohome system.


type: button
tap_action:
    action: call-service
    service: evohome.set_system_mode
    data:
        mode: Away
        period:
             days: 30
name: Away

When I dit the button I get this message like:

Cannot call service evohome/ SET_SYSTEM_MODE required key not provided @ data[‘mode’]

Any ideas?

To add: I see the temperatures of all rooms and am able to change temps via the home dashboard.

Hi all,

Horrendous noob question but I’m once again banging my head against a brick wall.

I have Evohome installed and running fine on HA, I want to use Node Red automations to trigger mode changes based upon my location/occupancy of the house. Having sorted presence detection and triggering I am now stumped with trying to change the system mode.

I took the code from the service dev tool for ‘set_system_mode’, I am trying to set the system to ‘Away’, I have tried with both no duration and the example code duration of 28 days and 18 hours. When running both I get:

Call-service API error. Error Message: extra keys not allowed @ data[‘service’]

I can choose alternative modes from the dropdown menu in Lovelace and it changes the whole system.

I translated the code to JSON from YAML using an online converter and am using the following:

{
  "service": "evohome.set_system_mode",
  "data": {
    "mode": "Away",
    "period": {
      "days": null
    },
    "duration": {
      "hours": null
    }
  }
}

Any assistance would be greatly appreciated!

Data should be something like:

David,

I edited the code to remove the duration part but still getting an API error:

{
    "service": "evohome.set_system_mode",
    "data": {
        "mode": "Away",
        "period": {
            "days": null
        }
    }
}

Returns the same error:

Call-service API error. Error Message: extra keys not allowed @ data[‘service’]

I am afraid that this:

{
    "service": "evohome.set_system_mode",
    "data": {
        "mode": "Away",
        "period": {
            "days": null
        }
    }
}

is not this:

{
    "mode": "Away",
    "period": {
        "days": null
    }
}

If you read “extra keys not allowed @ data['service']”, and so removed that bit from your JSON, you’d have:

{
    "data": {
        "mode": "Away",
        "period": {
            "days": null
        }
    }
}

… but then you’d still have extra keys not allowed @ data['data']

:man_facepalming: I did give fair warning of ‘noob question’…

This suddenly makes a lot more sense now. Apologies, distinct lack of cognitive brain power last night!

Having changed ‘data’ so that it actually only includes data… I am still getting an error.

Call-service API error. Error Message: value must be one of [‘Auto’, ‘HeatingOff’] for dictionary value @ data[‘mode’]

I altered the code so that it is verbatim as per the HA-Evohome page but still no joy:

- action:
    - service: evohome.set_system_mode
      data:
        mode: Away
        period: {days: 30}

Changed to JSON:

{
    "mode": "Away",
    "period": {
        "days": 30
    }
}

Does your CH/DHW system support Away mode?

It’s the Honeywell Evohome system.

The para from the above titled ‘EVOHOME.SET_SYSTEM_MODE’ confirms the modes.

And took the following from the Services developer tool in HA:

Parameter Description Example
mode One of: Auto, AutoWithEco, Away, DayOff, HeatingOff, or Custom. Away

Using the entity ID ‘climate.home’ (Evohome controller entity).

David,

Confused but a step further ahead.

Instead of using the Evohome stipulated commands I used generic climate commands:

{
    "preset_mode": "Auto"
}

Changing the Domain to ‘climate’ and the Service to ‘set_preset_mode’. This works, changes the mode and is exactly what I wanted but I’d really like to understand why the Evohome route wouldn’t work.

I’ve no doubt the evohome integration can support Away mode - I wrote it :wink:

The question was:

Not all TCC systems support all modes… The evohome integration dynamically builds a schema according to the capabilities of each system:

    temp_modes = [m["systemMode"] for m in modes if m["timingMode"] == "Period"]
    if temp_modes:  # any of: "Away", "Custom", "DayOff", permanent or for 1-99 days
        schema = vol.Schema(
            {
                vol.Required(ATTR_SYSTEM_MODE): vol.In(temp_modes),
                vol.Optional(ATTR_DURATION_DAYS): vol.All(
                    cv.time_period,
                    vol.Range(min=timedelta(days=1), max=timedelta(days=99)),
                ),
            }
        )

Anyway, it it works with the PRESET, then something else is causing the issue.

Apologies, wrong end of the stick again.

I had thought that your question was specific to Evohome, I am not trying to control the boiler directly, I’m trying to control the Evohome controller. I have the Honeywell Evohome Essentials Pack ATP926G3001 with an ATC928G3000 controller. I want to be able to change the zones on the controller, the modes displayed in my controller are: Economy, Away, Day Off, Custom and Off.

1 Like