From 90cf94bb300a0802c286270b5b0396b4507024f4 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 30 Jul 2021 14:14:58 -0700 Subject: [PATCH] Bump Hue and only fire events for button presses (#53781) * Bump Hue and only fire events for button presses * Fix tests --- homeassistant/components/hue/hue_event.py | 12 +++++++++++- homeassistant/components/hue/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- tests/components/hue/test_sensor_base.py | 3 +++ 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/hue/hue_event.py b/homeassistant/components/hue/hue_event.py index 7c0163f8a16..6bd68b106bb 100644 --- a/homeassistant/components/hue/hue_event.py +++ b/homeassistant/components/hue/hue_event.py @@ -1,7 +1,12 @@ """Representation of a Hue remote firing events for button presses.""" import logging -from aiohue.sensors import TYPE_ZGP_SWITCH, TYPE_ZLL_ROTARY, TYPE_ZLL_SWITCH +from aiohue.sensors import ( + EVENT_BUTTON, + TYPE_ZGP_SWITCH, + TYPE_ZLL_ROTARY, + TYPE_ZLL_SWITCH, +) from homeassistant.const import CONF_EVENT, CONF_ID, CONF_UNIQUE_ID from homeassistant.core import callback @@ -50,6 +55,11 @@ class HueEvent(GenericHueDevice): """Fire the event if reason is that state is updated.""" if ( self.sensor.state == self._last_state + # Filter out non-button events if last event type is available + or ( + self.sensor.last_event is not None + and self.sensor.last_event["type"] != EVENT_BUTTON + ) or # Filter out old states. Can happen when events fire while refreshing dt_util.parse_datetime(self.sensor.state["lastupdated"]) diff --git a/homeassistant/components/hue/manifest.json b/homeassistant/components/hue/manifest.json index 3c8078364ab..05e69948218 100644 --- a/homeassistant/components/hue/manifest.json +++ b/homeassistant/components/hue/manifest.json @@ -3,7 +3,7 @@ "name": "Philips Hue", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/hue", - "requirements": ["aiohue==2.5.1"], + "requirements": ["aiohue==2.6.0"], "ssdp": [ { "manufacturer": "Royal Philips Electronics", diff --git a/requirements_all.txt b/requirements_all.txt index 517e71c9b73..a2a24953b71 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -185,7 +185,7 @@ aiohomekit==0.6.0 aiohttp_cors==0.7.0 # homeassistant.components.hue -aiohue==2.5.1 +aiohue==2.6.0 # homeassistant.components.imap aioimaplib==0.9.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 03412d8e729..4c934e07675 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -122,7 +122,7 @@ aiohomekit==0.6.0 aiohttp_cors==0.7.0 # homeassistant.components.hue -aiohue==2.5.1 +aiohue==2.6.0 # homeassistant.components.apache_kafka aiokafka==0.6.0 diff --git a/tests/components/hue/test_sensor_base.py b/tests/components/hue/test_sensor_base.py index bc11c013555..b8e9c83e47d 100644 --- a/tests/components/hue/test_sensor_base.py +++ b/tests/components/hue/test_sensor_base.py @@ -446,6 +446,9 @@ async def test_hue_events(hass, mock_bridge): assert len(hass.states.async_all()) == 7 assert len(events) == 0 + mock_bridge.api.sensors["7"].last_event = {"type": "button"} + mock_bridge.api.sensors["8"].last_event = {"type": "button"} + new_sensor_response = dict(SENSOR_RESPONSE) new_sensor_response["7"]["state"] = { "buttonevent": 18,