Honeywell Lyric thermostat with Homekit_controller(Deprecated)

I am also trying to get the Lyric T6 working.

I do get a card in the frontend, but this is on 0.74.0 which had some Homekit fixes, so maybe that was key to getting the card.

However the card is only showing “Unknown” instead of the temperature.

I have been playing with the HomeKit component that is used by Home Assistant (https://github.com/jlusiardi/homekit_python) and with the commands from the readme I am able to get all the info from the Lyric.

1.1: >accessory-information<
  1.2:  () >identify< [pw]
  1.3: Honeywell () >manufacturer< [pr]
  1.4: YT4710WF1003 () >model< [pr]
  1.5: Lyric-036BFF () >name< [pr]
  1.6: 200218B32CA0636B7F () >serial-number< [pr]
  1.7: 2.6.7 () >firmware.revision< [pr]
  1.8: 0 () >accessory-properties< [pr,ev]
1.9: >thermostat<
  1.10: 0 () >heating-cooling.current< [pr,ev]
  1.11: 1 () >heating-cooling.target< [pr,pw,ev]
  1.12: 26.5 () >temperature.current< [pr,ev]
  1.13: 21 () >temperature.target< [pr,pw,ev]
  1.14: 0 () >temperature.units< [pr,pw,ev]
  1.15: Lyric T6 Thermostat () >name< [pr]

So it seems to be something in HA. My guess is that it is related to the fact that in the HA logging it shows “supported_features”: 0, so maybe HA thinks the device does not support Temperature? Or maybe HA is just not polling the device?

Getting more logging or another way to debug would be nice.

Just upgraded, and have the exact same situation as you’re mentioning.
I’ll take a deeper look when I’ve got some time.

Possibly we can report this as an issue in github?

I have been unsuccessful at getting my two T6 Pro(s) to connect to my hass.io setup. Updated and saw the new Climate card saying “unknown” and without much info.

I might end up just adding the thermostats to the Home App and try and integrate them into HA from there.

Initially I was trying to primarily use the Home App and integrate third party devices with HA, but have shifted more towards using HA and then just voice control with Siri. It’s been a long battle lol.

Off topic:

I had gone down the other path: (which is quite unreliable/difficult)

On topic:
Had a little time to test, got some more info, HA is actually detecting it as a thermostat! On first look it seems like the accessory info is getting lost or badly imported.

2018-07-22 13:08:03 DEBUG (Thread-19) [homeassistant.components.homekit_controller] Discovered unique device 02:FC:16:6D:96:FC
2018-07-22 13:08:03 INFO (Thread-19) [homeassistant.components.homekit_controller] Setting up Homekit device YT4710WF1003
2018-07-22 13:08:04 DEBUG (Thread-19) [homeassistant.components.homekit_controller] Found accessory-information
2018-07-22 13:08:04 DEBUG (Thread-19) [homeassistant.components.homekit_controller] Found thermostat
2018-07-22 13:08:04 INFO (MainThread) [homeassistant.components.climate] Setting up climate.homekit_controller

Using the homekit_python script I was able to get/set target temperatures etc with the commands:

python3 -m homekit.put_characteristic -f "hk-02:FC:16:6D:96:FC" -c 1.13 15

(ha) ha@ntpc:~/homeassistant/.homekit$ python3 -m homekit.get_characteristic -f “hk-02:FC:16:6D:96:FC” -c 1.12
{
“characteristics”: [
{
“aid”: 1,
“iid”: 12,
“value”: 25
}
]
}

Follow if you want to help or post more info if you have it :wink:

https://github.com/home-assistant/home-assistant/issues/15622

Update: with some changes to climate/homekit_controller.py tthe T6 is functional!
Check the posted github for more info.

Working in custom_components:
If your Lyric can cool change:

self._valid_modes = [ STATE_OFF, STATE_HEAT ]

to
self._valid_modes = [ STATE_OFF, STATE_HEAT, STATE_COOL ]

https://github.com/idfxken/HASS-Config/blob/2c988936ceb07c9e11ff0902a3c4fb2d6438ac72/custom_components/climate/homekit_controller.py

I’ve tried a number of configs to get this going as a custom_component with no luck. The controller/component docs aren’t helping.

Any pointers?

Thanks

the quick guide :

  1. enable homekit discovery in configuration.yaml:
discovery:
  enable:
    - homekit
  1. copy the above script to ‘yourhomassistantcongifdir’/custom_components/climate/homekit_controller.py

  2. restart HA, after a bit you should get a configuration prompt in the front end
    If you don’t find the pairing code, just type any code, enter and the thermostat should then show the correct code

If you still have issues, reset homekit on the thermostat, maybe try to debug like in the first posts :wink:

4 Likes

That did it. Thanks!

I got this set up and added a lovelace entity card. Everything appears to report properly until I make a change through the card.

The card never updates with the temp I set. The actual lyric does change to the new temp but also sets to "away’. Here, I’ve set the temp via the card to 74, but hass.io doesn’t get it.

image

Just wanted to edit my original post and say that I was able to add my two T6 thermostats via Homekit_Controller. I realized I was missing the “custom_components” directory, so I just made the folders and then made a homekit_controller.py file in Atom (I use macOS).

I restarted HASS.io and the Climate card was updated. I noticed only “off” and “heat” were there, but customized the entity and added “cool.” This fixed it nicely!

Glad to see the progression! The only thing stopping from using the HA app full time (instead of Home app) is that I couldn’t get the HomeKit key to work for (1) eight Leviton HomeKit switches and (2) two Honeywell T6 thermostats.

With these climate and switches/lights working, I can use HA full time (which I wanted specifically due to better radius control of my zones.

@gohassgo I don’t use lovelace. It could have to do with the fact that your t6 can run HVAC and not just heat as i can see on your attributes.
You should change

self._valid_modes = [ STATE_OFF, STATE_HEAT ]

to

self._valid_modes = [ STATE_OFF, STATE_HEAT, STATE_COOL ]

as @danthaman152000 found out appareantly :slight_smile:

@danTHAman152000 The reason its not activated by default, is that in EU the cool component throws an error b/c EU version can’t cool…
I’ll edit the modded script post to reflect that, ty for pointing that out :slight_smile:

Any tips on getting these thermostats to reappear into the Home app? I have my alarm and also garage door showing up in the Home app still, but the thermostats have been gone since I reset them and added them to HA.

When I go to add an accessory in the Home app, nothing appears. I have also tried disabling the Homekit component, which did not help. Any ideas? I would like to retain the functionality of the Home app integration into iOS.

Home kit devices can only be coupled with 1 device… But you can add them through hass with homebridge component i believe

Thanks for that… I added “cool” to the entity in Configuration > Customization > operation_list.

["off","cool","heat"]

The cool mode does appear in the card, but temperatures are not updating and always shows 76. However, the history graph does show temp changes and it looks correct.

image

Any idea why the temps aren’t updating as they should?

Thanks

Let me say thanks again for all the help and effort.

I do use Homebridge for security cameras to show up in Home app. I am not sure if I would need a generic climate plugin or a specific Honeywell to get it to show up.

Homekit component works fine for my garage (cover) and alarm (alarm_control_panel), and should also work for climate. However it simply does not appear when I add it in the Home app.

Hopefully someone can chime in if they figure out how to do it.

Same issue as @gohassgo, is like they stopped reporting updates to Home Assistant or Home Assistant stopped polling them (I have 2 T5s).

After a restart my two T5 disappeared. They are no longer being detected by Home Assistant. Any idea?

In the first post is described how to debug log. Post those logs pls, after you had these issues :wink:

here it is:

    2018-08-29 23:32:47 ERROR (MainThread) [homeassistant.helpers.entity] Update for climate.rcht8610wf2014 fails
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/helpers/entity.py", line 199, in async_update_ha_state
    yield from self.async_device_update()
  File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/helpers/entity.py", line 322, in async_device_update
    yield from self.hass.async_add_job(self.update)
  File "/usr/lib/python3.5/asyncio/futures.py", line 380, in __iter__
    yield self  # This tells Task to wait for completion.
  File "/usr/lib/python3.5/asyncio/tasks.py", line 304, in _wakeup
    future.result()
  File "/usr/lib/python3.5/asyncio/futures.py", line 293, in result
    raise self._exception
  File "/usr/lib/python3.5/concurrent/futures/thread.py", line 55, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/components/homekit_controller/__init__.py", line 205, in update
    data = json.loads(response.read().decode())
  File "/usr/lib/python3.5/json/__init__.py", line 319, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.5/json/decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.5/json/decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
2018-08-29 23:33:48 ERROR (MainThread) [homeassistant.helpers.entity] Update for climate.rcht8610wf2014 fails
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/helpers/entity.py", line 199, in async_update_ha_state
    yield from self.async_device_update()
  File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/helpers/entity.py", line 322, in async_device_update
    yield from self.hass.async_add_job(self.update)
  File "/usr/lib/python3.5/asyncio/futures.py", line 380, in __iter__
    yield self  # This tells Task to wait for completion.
  File "/usr/lib/python3.5/asyncio/tasks.py", line 304, in _wakeup
    future.result()
  File "/usr/lib/python3.5/asyncio/futures.py", line 293, in result
    raise self._exception
  File "/usr/lib/python3.5/concurrent/futures/thread.py", line 55, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/components/homekit_controller/__init__.py", line 204, in update
    response = self._securecon.get('/accessories')
  File "/srv/homeassistant/lib/python3.5/site-packages/homekit/http_impl/secure_http.py", line 66, in get
    return self._handle_request(data)
  File "/srv/homeassistant/lib/python3.5/site-packages/homekit/http_impl/secure_http.py", line 91, in _handle_request
    self.sock.send(len_bytes + ciper_and_mac[0] + ciper_and_mac[1])
BrokenPipeError: [Errno 32] Broken pipe

My version is 0.75.3