Fix handling services with an empty list of chars
bdraco opened this issue · 1 comments
bdraco commented
{
"iid": 1,
"type": "00001801-0000-1000-8000-00805F9B34FB",
"characteristics": []
},
Oct 22 21:24:59 homeassistant homeassistant[477]: 2022-10-22 16:24:59.627 WARNING (MainThread) [aiohomekit.model.services.service] Getting characteristic 00000014-0000-1000-8000-0026BB765291 from service 00001801-0000-1000-8000-00805F9B34FB -- available = {}
Oct 22 21:24:59 homeassistant homeassistant[477]: 2022-10-22 16:24:59.631 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [281473394990656] '00000014-0000-1000-8000-0026BB765291'
Oct 22 21:24:59 homeassistant homeassistant[477]: Traceback (most recent call last):
Oct 22 21:24:59 homeassistant homeassistant[477]: File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 200, in handle_call_service
Oct 22 21:24:59 homeassistant homeassistant[477]: await hass.services.async_call(
Oct 22 21:24:59 homeassistant homeassistant[477]: File "/usr/src/homeassistant/homeassistant/core.py", line 1744, in async_call
Oct 22 21:24:59 homeassistant homeassistant[477]: task.result()
Oct 22 21:24:59 homeassistant homeassistant[477]: File "/usr/src/homeassistant/homeassistant/core.py", line 1781, in _execute_service
Oct 22 21:24:59 homeassistant homeassistant[477]: await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)(
Oct 22 21:24:59 homeassistant homeassistant[477]: File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 208, in handle_service
Oct 22 21:24:59 homeassistant homeassistant[477]: await service.entity_service_call(
Oct 22 21:24:59 homeassistant homeassistant[477]: File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 678, in entity_service_call
Oct 22 21:24:59 homeassistant homeassistant[477]: future.result() # pop exception if have
Oct 22 21:24:59 homeassistant homeassistant[477]: File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 931, in async_request_call
Oct 22 21:24:59 homeassistant homeassistant[477]: await coro
Oct 22 21:24:59 homeassistant homeassistant[477]: File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 715, in _handle_entity_call
Oct 22 21:24:59 homeassistant homeassistant[477]: await result
Oct 22 21:24:59 homeassistant homeassistant[477]: File "/usr/src/homeassistant/homeassistant/components/button/__init__.py", line 116, in _async_press_action
Oct 22 21:24:59 homeassistant homeassistant[477]: await self.async_press()
Oct 22 21:24:59 homeassistant homeassistant[477]: File "/usr/src/homeassistant/homeassistant/components/homekit_controller/button.py", line 124, in async_press
Oct 22 21:24:59 homeassistant homeassistant[477]: await self.async_put_characteristics({key: val})
Oct 22 21:24:59 homeassistant homeassistant[477]: File "/usr/src/homeassistant/homeassistant/components/homekit_controller/entity.py", line 90, in async_put_characteristics
Oct 22 21:24:59 homeassistant homeassistant[477]: payload = self.service.build_update(characteristics)
Oct 22 21:24:59 homeassistant homeassistant[477]: File "/usr/local/lib/python3.10/site-packages/aiohomekit/model/services/service.py", line 135, in build_update
Oct 22 21:24:59 homeassistant homeassistant[477]: char = self[char_type]
Oct 22 21:24:59 homeassistant homeassistant[477]: File "/usr/local/lib/python3.10/site-packages/aiohomekit/model/services/service.py", line 115, in __getitem__
Oct 22 21:24:59 homeassistant homeassistant[477]: return self.characteristics_by_type[key]
Oct 22 21:24:59 homeassistant homeassistant[477]: KeyError: '00000014-0000-1000-8000-0026BB765291'