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

Firstly, this integation is amazing! :grinning: thank you @zxdavb for all your hard work.

I have a query in regards to determining the heating/boiler status is either ON/OFF for the main climate entity. The hot water entity provides it however I could not find anything similar with the heating/boiler status. It would be useful to see how often and for how long the boiler is ON.

status:
  state_status:
    state: 'On'

Unfortunately Honeywell does not publish info about when the boiler is running or not via the web API. If I’m not mistaken, we should be able to get this with direct wireless access to the controller, and David is working on a component for that now. You can check that out here.

1 Like

Ever since I bought the Evohome heating system back in 2015, I’ve always wanted to know when it turns my boiler on and off because I noticed it doesn’t stay consistently on till the target temp is reached. It would seem to turn off for a min or so and they turn back on, only to turn off again a short while later.

I finally came up with a solution that uses an Optocoupler to detect when either the heating or hot water wireless receivers turn on. I guess it’s a similar but alternative way to the wireless system that David has been working on, but I didn’t see that method until I had completed this hard wired version. (plus I don’t have any wireless TRVs and only a single temp sensor in the hallway)

Question is, does anyone else notice a similar behaviour with their boilers?

The Optocoupler is linked to an ESP8266 which sends on/off status to Home Assistant, which in turn is linked to Grafana that produces the above graph.

I’ll create a new post explaining how to do the same in case it helps anyone else.

Hi @jarrah, You will very likely get an authoritative answer to your implied question (I’ve always wanted to know why…) here: https://www.automatedhome.co.uk/vbulletin/forumdisplay.php?13-Heating-Control

Certainly, evohome_rf will give you insight into this behavior, but those guys will be the perfect target for discussing this project.

What you’re seeing is TPI in action, TPI (Time Proportional & Integral), the thermostat in this case Evohome learns the thermal behaviour of the load, and rather than running the boiler continuously it modulates (albeit crudely) the heat output by turning the boiler on and off to give a time averaged output, which is equal to the requested output from the Evohome system.

If you want to understand more of the detail take a look at the following from Honeywell.

@GadgetUK The PDF you linked is really useful, thank you!

I guess my only concern is if this constant on/off method is ok for the boiler?

Also thanks for the link David, I’ll have a nosey!

btw, just posted my optocoupler method here: Optocoupler to detect mains electricity on/off

It’s absolutely fine for the boiler, most boilers with have a maximum number of restarts in an hour. This can be configured in the Evohome controller.

Depending on the boiler you’ve got, the next step to give even better control is to move to OpenTherm, where the boiler fully understands the %age load requested from the Evohome controller.

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']