Honeywell Lyric thermostat with Homekit_controller(Deprecated)

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

Here are some log entries from 0.76.2.

Update for climate.lyric fails
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/homeassistant/helpers/entity.py", line 199, in async_update_ha_state
    yield from self.async_device_update()
  File "/usr/local/lib/python3.6/site-packages/homeassistant/helpers/entity.py", line 322, in async_device_update
    yield from self.hass.async_add_job(self.update)
  File "/usr/local/lib/python3.6/concurrent/futures/thread.py", line 56, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/local/lib/python3.6/site-packages/homeassistant/components/homekit_controller/__init__.py", line 204, in update
    response = self._securecon.get('/accessories')
  File "/usr/local/lib/python3.6/site-packages/homekit/http_impl/secure_http.py", line 66, in get
    return self._handle_request(data)
  File "/usr/local/lib/python3.6/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

Hey guys, I had my thermostat paired and reset it to try this out. I added the custom component but the discovery service isnā€™t finding the thermostat. Was I supposed to delete it from the homeassistant device registry?

If so, how is this done on 0.77.1?

Thanks!

@hdemel not sure if I understand you, If it was already paired and you want to re-connect it with Home Assistant (using Homekit Controller) then you have to reset the homekit code from your thermostat and also remove the file specific to your thermostat located in the folder ā€œ.homeassistant/.homekitā€.
After this then just restart homeassistant and the discovery service should find it again,

Regards.

1 Like

You understood perfectly man; that was what I was after. Thanks so much.

1 Like

I saw 0.77.2 has a fix for charts for climate devices. I upgraded and my cards are now reflecting the current set temp and actual temp!

Thanks for the tip @gohassgo, Iā€™ll do the upgrade and test.

After the upgrade to 0.77.2 itā€™s been working fine for several hours. Thanks!

Back to square 1. Overnight it started having that broken pipe error again :frowning:

Same hereā€¦

The Broken pipe error has to do with bad connection issues most of the time. Now since all are having them its probably the thermostat that is creating the issue.
Iā€™m also getting another error which stops the measured temp from incoming some of the time:

2018-09-02 16:13:44 ERROR (MainThread) [homeassistant.helpers.entity] Update for climate.yt4710wf1003 fails
Traceback (most recent call last):
  File "/mnt/ssd/opt/ha/lib/python3.5/site-packages/homeassistant/helpers/entity.py", line 224, in async_update_ha_state
    yield from self.async_device_update()
  File "/mnt/ssd/opt/ha/lib/python3.5/site-packages/homeassistant/helpers/entity.py", line 353, 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 "/mnt/ssd/opt/ha/lib/python3.5/site-packages/homeassistant/components/homekit_controller/__init__.py", line 204, in update
    response = self._securecon.get('/accessories')
  File "/mnt/ssd/opt/ha/lib/python3.5/site-packages/homekit/http_impl/secure_http.py", line 66, in get
    return self._handle_request(data)
  File "/mnt/ssd/opt/ha/lib/python3.5/site-packages/homekit/http_impl/secure_http.py", line 92, in _handle_request
    return self._read_response()
  File "/mnt/ssd/opt/ha/lib/python3.5/site-packages/homekit/http_impl/secure_http.py", line 158, in _read_response
    response.parse(self.decrypt_block(length, block, tag))
  File "/mnt/ssd/opt/ha/lib/python3.5/site-packages/homekit/http_impl/response.py", line 38, in parse
    self._raw_response += part
TypeError: can't concat bool to bytearray

I will probably drop this thing soon since Iā€™m gonna switch to a qubino zwave thermostat.

Dear Wim,

Do you still have the script available? The link to the file is not working anymore and the info visible in this post is just a part of the entire script I assume.
Thank you

Ty for pointing that out, changed the original post aswell.

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

Has anyone found resolution to the thermostat not changing when calling thermostat set Temp service?

Just curious what the overall support is likek for a T5 in HA - stumbled upon this thread, is this the right place? I would just like to get current temps and maybe be able to adjust?

I decided to give this method of integrating the T5 a go. Succesfully paired using the default homekit_controller (with status unkown on the card) because I didnā€™t read the thread above carefully enough. At that point I was getting the exceptions mentioned in the log. I added the custom script to custom_components and restarted - card remains unchanged but the errors are gone.

This is on rpi3 w/ hassbian 0.77.3. Anything else to try? Someone mentioned debugging flags above - do I just add that section to my config for more output?

Update:
Itā€™s generating errors now:

Update for climate.rcht8612wf2015 fails
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/helpers/entity.py", line 224, in async_update_ha_state
    yield from self.async_device_update()
  File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/helpers/entity.py", line 353, 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)

Does this line mean that itā€™s not loading the custom component?

File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/components/homekit_controller/__init__.py", line 205, in update

I had placed it here:
/home/homeassistant/.homeassistant/custom_components/homekit_controller.py

My configuration.yaml file has this section:

discovery:
  enable:
    - homekit

Just posting back here for anyone that stumbles onto this thread: my Lyric T5 is working really well after updating to 0.80 on this custom homekit_controller component.

Fairly new to Home Assistant so still learning, but I assume to get the Lyric T5 working you actually need to have Appleā€™s HomeKit product and that this isnā€™t some type of emulation?

Thanks

My T6 Pro is working well. Iā€™m now running 0.80.1 and donā€™t see any errors related to this component in the log. I am now able to set temps via hass and have them update on the thermostat, and vice versa.

Nope. Just set up the custom component.

Exactly what changes were needed in this custom component for the T6 to work? Why canā€™t these fixes be merged back upstream to home assistant? This custom component seems very different from what is in current dev or master branches of HA.

2 Likes