Fix ghost events for Hue remotes (#113047)

* Use report values for events

* adjust tests
This commit is contained in:
Marcel van der Veldt 2024-05-15 15:48:15 +02:00 committed by GitHub
parent 4e600b7b19
commit 5af8041c57
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 28 additions and 9 deletions

View file

@ -95,7 +95,9 @@ class HueButtonEventEntity(HueBaseEntity, EventEntity):
def _handle_event(self, event_type: EventType, resource: Button) -> None:
"""Handle status event for this resource (or it's parent)."""
if event_type == EventType.RESOURCE_UPDATED and resource.id == self.resource.id:
self._trigger_event(resource.button.last_event.value)
if resource.button is None or resource.button.button_report is None:
return
self._trigger_event(resource.button.button_report.event.value)
self.async_write_ha_state()
return
super()._handle_event(event_type, resource)
@ -119,11 +121,16 @@ class HueRotaryEventEntity(HueBaseEntity, EventEntity):
def _handle_event(self, event_type: EventType, resource: RelativeRotary) -> None:
"""Handle status event for this resource (or it's parent)."""
if event_type == EventType.RESOURCE_UPDATED and resource.id == self.resource.id:
event_key = resource.relative_rotary.last_event.rotation.direction.value
if (
resource.relative_rotary is None
or resource.relative_rotary.rotary_report is None
):
return
event_key = resource.relative_rotary.rotary_report.rotation.direction.value
event_data = {
"duration": resource.relative_rotary.last_event.rotation.duration,
"steps": resource.relative_rotary.last_event.rotation.steps,
"action": resource.relative_rotary.last_event.action.value,
"duration": resource.relative_rotary.rotary_report.rotation.duration,
"steps": resource.relative_rotary.rotary_report.rotation.steps,
"action": resource.relative_rotary.rotary_report.action.value,
}
self._trigger_event(event_key, event_data)
self.async_write_ha_state()