Honeywell Evohome thermostat: work started, need advice

So as an Evohome and Domoticz user, that has implemented with cloud free option of the HGI80 the work that the team over at Domoticz has done is flawless.

The protocol was reverse engineering all the way and the results has been amazing. To integrate Evohome with Hass, until someone is going to covert one of the 3 implementation approaches used and proven in Domoticz as native reimplement components there is one solid option

Implement Evohome native with Domoticz and bridge the two systems (Domoticz and Evohome with Home Assistant) using the reliable MQTT protocol.

I am personally pulling out of Evohome due to major challenges with stable communication between the hub and the TRVs and Relays. As there is no repeater or meshed options. My home is simply to large.

I completely re-wrote the thing (there are various reason why that is a good idea). I’m also in the middle of adding functionality (e.g. WindowOpenMode).

One major change from the above version (so far) is that the controller no longer reports a temperature, only a state (e.g. in Eco mode) [yes, I know the controller can be used as the thermometer for a zone, but it is still the zone that has the current_temperature, not the location/controller].

Also, the temps are reports in tenths, instead of halves using a combination of v1 and v2 of the client api.

Things are on pause because another project came up, and (it’s an old story, I know) my dev platform died.

I will make it my mission to upload a working version ASAP & will post here when it is done. In the meantime, you can try it as is, and I’d be grateful for any feedback there (i.e. on github):

For those who don’t know a HGI80 is a USB gateway to the evohome RF network.

Yes: cloud-free, but also approx £100 for a HGI80 (if you can get one). FWIW, there is a project about to use an off-the-shelf device for this:

Curious, after spending so much money on all those expensive TRVs, what are you moving to?

I have successfully sold most of them at a little less than my original cost due to the bulk purchase, thankfully. I will have a few more insitu which will be removed in the next 6-8 weeks after running in parallel with the replacement.

So to answer the question. Eurotronic Spirit TRVs (€37 on amazon.de once a month) and using Heaty AppDaemon as the scheduling engine. Initial tests have been good, and the mesh from Zwave is holding well so far.

More testing needed but so far the only issue I have with openzwave and home assistant is that it the build has no support for v4 thermostat which translates to the valve position sensor not being processed. Not a show stopper, and looking to drop the hass container approach for now to use a python venv with a beta build of openzwave which has the features. (At least to validate)

Evohome is a great solution do not get me wrong, just without the mesh fails to have reliable communication in my home. Which results in lots of problems with heat not demanded when needed or not cancelled when it’s already closed the TRVs valve in the zone.

Damian

@namadori, @eh50, @PItax , @jarrah, @AlexBeumer (who may be interested in this post)

I wonder if any of you may be able to start using/testing the latest version of my evohome component. It is completely new. I have two screenshots, one showing the controller and its state (e.g. Auto, AutoWithEco), and another showing a zone with temp & state (they are very boring because my house is in Away mode).

I know it’s getting warmer, but maybe some lives a little further north than me?

Anyway, my goal is to get it accepted by HA before next EU winter. It has a lot of work required in terms of complying with HA’s style guidelines, and I am sure it has a few bugs to iron out.

36

Although it’s quite warm. If you have some sort of howto for me to implement it I will test gladly.

Okey so we got a Bean recently too… so excuse me. I’m looking at the extensive install instructions now.

Ha! my Bean is now 6.

Just check which version you clone - I just made a very recent commit.

Hi - happy to help, thanks for your effort integrating evohome into HA!

Hit a snag during testing of the config:

Testing configuration at /home/homeassistant/.homeassistant
Failed config
  evohome:
    - Invalid config for [evohome]: required key not provided @ data['platform']. Got None. (See ?, line ?). Please check the docs at https://home-assistant.io/components/evohome/

Evohome has been extracted into custom_components:

pi@hassbian:/home/homeassistant/.homeassistant/custom_components $ ls -al
total 64
drwxr-xr-x  5 homeassistant homeassistant  4096 Jun  9 20:12 .
drwxr-xr-x 10 homeassistant homeassistant  4096 May  2 21:26 ..
drwxr-xr-x  2 homeassistant homeassistant  4096 Jun  9 19:57 climate
drwxr-xr-x  3 homeassistant homeassistant  4096 Jun  9 20:05 evohome
-rwxr-xr-x  1 homeassistant homeassistant 32833 Jun  9 19:57 evohome.py
-rwxr-xr-x  1 homeassistant homeassistant  1210 Jun  9 19:57 LICENSE
drwxr-xr-x  2 homeassistant homeassistant  4096 Jun  9 20:05 __pycache__
-rwxr-xr-x  1 homeassistant homeassistant  3612 Jun  9 19:57 README.md

The main configuration.yaml just has these 3 lines as advised:

evohome:
  username: !secret evohome_username
  password: !secret evohome_password

Won’t be able to test anymore this evening but can try any suggestions tomorrow.

Thanks!

Well, I get the exact same error when I click [CHECK CONFIG] in the UI (I never noticed before). However, for me, the component still runs as expected!

I had a quick look and I can’t see where I am going wrong, but as scan_interval isn’t working either, I will have a good look at it over the next few days…

In the meantime: could I suggest you restart HA regardless, and watch the homeassistant log:
systemctl restart hass && journalctl -f -o cat -u hass

…on the basis of current experience, the component will start OK.

The code has a lot of debug.info()s in it, so you should see one Found Controller: ... and one or more Found Zone: ... in it. You can try: cat homeassistant.log | grep Found to confirm it’s working OK.

Seems to be working well! I’ve added the climate entities to one of my groups and can see the following details:
43
(I only have one zone as my intention was to buy the TRVs but decided they would be too expensive!)
When I click on those items I see all the extra details and have the ability to set my heating settings which is nice.

One zone that appears to be missing though is my hot water? Let me know if I can run any tests to help you find and add this.

My code has no provision for HW only because I’ve got a combi boiler! So, if you’re up for it, I’d be grateful if you could help me develop that side of things…

The first thing would be to execute this command: cat home-assistant.log | grep DATA_EVOHOME. If you copy everything after hass.data[DATA_EVOHOME]: (it will be a long line of text), and put it through a YAML pretty-fier, you’ll see it contains the ‘state’ of your evohome installation. If you redact username/name/email/address, and any IDs (locationId, userId, gatewayId, systemId, zoneId), could you send me the rest? pastebin?

[EDIT] I have changed the code to redact much of this information as practical. Please grab the latest code from github: GitHub - zxdavb/ramses_rf: An interface for the RAMSES RF protocol, as used by Honeywell-compatible HVAC & CH/DHW systems.

After that, I will have a fiddle with the code, and might ask you to try it out, OK?

And the OpenWindowMode is a thing I know I have to fix!

Are you missing the mdi:thermostat icon from your Controller (see my screen capture to compare)?

Thanks, that’d require me to switch to zwave first :roll_eyes:

Here we go - looks like the dhw: side of it is available and hopefully easy to implement:

'2018-06-11 18:28:15 INFO (Thread-3) [custom_components.evohome] hass.data[DATA_EVOHOME]':
  installation:
    gateways:
      -
        gatewayInfo:
          mac: REDACTED
          isWiFi: false
          crc: REDACTED
          gatewayId: REDACTED
        temperatureControlSystems:
          -
            zones:
              -
                name: Hallway
                heatSetpointCapabilities:
                  minHeatSetpoint: 5
                  allowedSetpointModes:
                    - PermanentOverride
                    - FollowSchedule
                    - TemporaryOverride
                  maxDuration: '1.00:00:00'
                  valueResolution: 0.5
                  maxHeatSetpoint: 35
                  timingResolution: '00:10:00'
                scheduleCapabilities:
                  setpointValueResolution: 0.5
                  minSwitchpointsPerDay: 1
                  maxSwitchpointsPerDay: 6
                  timingResolution: '00:10:00'
                zoneId: '123456'
                zoneType: ZoneValves
                modelType: HeatingZone
            allowedSystemModes:
              -
                canBeTemporary: false
                canBePermanent: true
                systemMode: Auto
              -
                canBeTemporary: true
                timingMode: Duration
                maxDuration: '1.00:00:00'
                systemMode: AutoWithEco
                timingResolution: '01:00:00'
                canBePermanent: true
              -
                canBeTemporary: false
                canBePermanent: true
                systemMode: AutoWithReset
              -
                canBeTemporary: true
                timingMode: Period
                maxDuration: '99.00:00:00'
                systemMode: Away
                timingResolution: '1.00:00:00'
                canBePermanent: true
              -
                canBeTemporary: true
                timingMode: Period
                maxDuration: '99.00:00:00'
                systemMode: DayOff
                timingResolution: '1.00:00:00'
                canBePermanent: true
              -
                canBeTemporary: false
                canBePermanent: true
                systemMode: HeatingOff
              -
                canBeTemporary: true
                timingMode: Period
                maxDuration: '99.00:00:00'
                systemMode: Custom
                timingResolution: '1.00:00:00'
                canBePermanent: true
            modelType: EvoTouch
            dhw:
              dhwStateCapabilitiesResponse:
                allowedStates:
                  - On
                  - Off
                maxDuration: '1.00:00:00'
                timingResolution: '00:10:00'
                allowedModes:
                  - FollowSchedule
                  - PermanentOverride
                  - TemporaryOverride
              dhwId: '123465'
              scheduleCapabilitiesResponse:
                minSwitchpointsPerDay: 1
                maxSwitchpointsPerDay: 6
                timingResolution: '00:10:00'
            systemId: '123456'
    locationInfo:
      name: Home
      city: REMOVED
      locationOwner:
        userId: REDACTED
        lastname: REDACTED
        username: REDACTED
        firstname: REDACTED
      streetAddress: REDACTED
      timeZone:
        timeZoneId: GMTStandardTime
        currentOffsetMinutes: 60
        displayName: '(UTC+00:00) Dublin, Edinburgh, Lisbon, London'
        supportsDaylightSaving: true
        offsetMinutes: 0
      country: UnitedKingdom
      locationType: Residential
      postcode: 'REMOVED'
      locationId: REDACTED
      useDaylightSaveSwitching: true
  lastUpdated: '2018-06-11 18:28:12'
  tokenExpires: '2018-06-11 19:26:12'
  status:
    activeFaults: []
    zones:
      -
        name: Hallway
        activeFaults: []
        temperatureStatus:
          temperature: 23.86
          isAvailable: true
        heatSetpointStatus:
          setpointMode: FollowSchedule
          targetTemperature: 5
        zoneId: '123456'
    systemModeStatus:
      isPermanent: true
      mode: HeatingOff
    dhw:
      activeFaults: []
      stateStatus:
        state: On
        mode: FollowSchedule
      dhwId: '123465'
      temperatureStatus:
        temperature: 61
        isAvailable: true
    systemId: '123456'
  evohomeClient: '<evohomeclient2.EvohomeClient object at 0x686a2730>'

Thanks for redacting those items, it certainly makes it easier to copy out. Worth noting that these extra fields also need redacting please:

zoneId
systemId
postcode
city

not sure - is that the circular icon next to _EvoTouch in your screenshot? If so then yes, no icon on mine.

Well, there should be one, mdi:thermostat. You could try taking it out of your group and seeing if it re-appears!

I have decided not to redact these fields. Some of them are required (especially zoneId). I’ll keep post code (so in the future I can match external weather).

When the code is ‘released’, I will remove the logging of this (largish) JSON data structure.

No problems, however postcode and city could do with being redacted if possible please.

I’ll see if I can get the icon to appear.

Thanks for your help!

OK, done is this morning’s commit. You will also be able to cat home-assistant.log | grep Found & see ‘dhw’. Please let me know if that’s not the case.

It will take a while to set up dhw fully, but maybe you could tell me what you expect to see/do with dhw via HA?