hOn/custom_components/hon
Alexander Tihoniuk ca8ed250c2 fix(thread-safety): marshal pyhon MQTT push updates onto the event loop
PR #43 (cherry-picked in the previous commit) only swaps
async_write_ha_state() for schedule_update_ha_state() inside entity
command methods, which run on the event loop anyway. It does NOT address
the actual root cause of mmalolepszy/hon-revived#44.

pyhon-revived delivers MQTT push notifications from the awscrt network
thread: MQTTClient._on_publish_received -> Hon.notify ->
self._notify_function(None), with no loop marshalling. The integration
registered coordinator.async_set_updated_data directly as that
subscriber, so the loop-affine @callback (which fans out to listeners and
arms loop timers via _schedule_refresh) was being invoked from a foreign
thread. HA Core 2026.5.x enforces thread safety and raises on this,
breaking live state updates on 2026.5.4 even with PR #43 applied.

Wrap the subscriber in a @callback that re-dispatches via
hass.loop.call_soon_threadsafe, so the coordinator update always runs on
the event loop. The None payload is preserved (entities read state from
self._device, not coordinator.data, so it is only a listener trigger).

Refs: https://developers.home-assistant.io/docs/asyncio_thread_safety/
Fixes mmalolepszy/hon-revived#44

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 10:54:56 +03:00
..
translations Translation update in Russian and Ukrainian for new strings added in v0.18.0 (#33) 2026-05-17 23:16:52 +02:00
__init__.py fix(thread-safety): marshal pyhon MQTT push updates onto the event loop 2026-06-12 10:54:56 +03:00
binary_sensor.py Added new OV entities and corresponding translations (#31) 2026-03-09 18:53:24 +01:00
button.py Update issue templates and docs to point to right repo and person 2025-12-19 19:25:53 +01:00
climate.py fix(thread-safety): use schedule_update_ha_state in async entity methods 2026-06-12 10:49:47 +03:00
config_flow.py Fix mypy errors 2023-11-20 16:39:33 +01:00
const.py Change poll to push 2024-03-25 02:26:20 +01:00
entity.py Fix automatic updates of entities 2025-06-26 01:02:47 +02:00
fan.py fix(thread-safety): use schedule_update_ha_state in async entity methods 2026-06-12 10:49:47 +03:00
light.py fix(thread-safety): use schedule_update_ha_state in async entity methods 2026-06-12 10:49:47 +03:00
lock.py fix(thread-safety): use schedule_update_ha_state in async entity methods 2026-06-12 10:49:47 +03:00
manifest.json Bump version v0.18.0 2026-03-13 19:19:46 +01:00
number.py Added new OV entities and corresponding translations (#31) 2026-03-09 18:53:24 +01:00
select.py Fix automatic updates of entities 2025-06-26 01:02:47 +02:00
sensor.py Added new OV entities and corresponding translations (#31) 2026-03-09 18:53:24 +01:00
switch.py fix(thread-safety): use schedule_update_ha_state in async entity methods 2026-06-12 10:49:47 +03:00
typedefs.py Fix issues from refactoring 2023-07-24 21:37:48 +02:00
util.py Rebuild to single data coordinator 2024-03-29 01:22:44 +01:00