From 11a0e6fc5c1565c660e385d5984ac940dcb5b33e Mon Sep 17 00:00:00 2001 From: nalin29 Date: Sun, 25 Jun 2023 07:53:44 -0500 Subject: [PATCH 1/2] fix light level on OS 3.3+ --- homeassistant/components/control4/light.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/control4/light.py b/homeassistant/components/control4/light.py index fde9b00aba26bb..f710b2a71df549 100644 --- a/homeassistant/components/control4/light.py +++ b/homeassistant/components/control4/light.py @@ -30,7 +30,7 @@ CONTROL4_CATEGORY = "lights" CONTROL4_NON_DIMMER_VAR = "LIGHT_STATE" -CONTROL4_DIMMER_VAR = "LIGHT_LEVEL" +CONTROL4_DIMMER_VARS = ["LIGHT_LEVEL", "Brightness Percent"] async def async_setup_entry( @@ -57,7 +57,7 @@ async def async_update_data_dimmer(): """Fetch data from Control4 director for dimmer lights.""" try: return await update_variables_for_config_entry( - hass, entry, {CONTROL4_DIMMER_VAR} + hass, entry, {*CONTROL4_DIMMER_VARS} ) except C4Exception as err: raise UpdateFailed(f"Error communicating with API: {err}") from err @@ -190,14 +190,18 @@ def _create_api_object(self): def is_on(self): """Return whether this light is on or off.""" if self._is_dimmer: - return self.coordinator.data[self._idx][CONTROL4_DIMMER_VAR] > 0 + for var in CONTROL4_DIMMER_VARS: + if var in self.coordinator.data[self._idx]: + return self.coordinator.data[self._idx][var] > 0 return self.coordinator.data[self._idx][CONTROL4_NON_DIMMER_VAR] > 0 @property def brightness(self): """Return the brightness of this light between 0..255.""" if self._is_dimmer: - return round(self.coordinator.data[self._idx][CONTROL4_DIMMER_VAR] * 2.55) + for var in CONTROL4_DIMMER_VARS: + if var in self.coordinator.data[self._idx]: + return round(self.coordinator.data[self._idx][var] * 2.55) return None @property From e138b677906664ac7f7b28f3b6b51e509e627530 Mon Sep 17 00:00:00 2001 From: "nalinmahajan@outlook.com" Date: Mon, 26 Jun 2023 07:57:34 -0500 Subject: [PATCH 2/2] Add exception for dimmer variable not found --- homeassistant/components/control4/light.py | 1 + 1 file changed, 1 insertion(+) diff --git a/homeassistant/components/control4/light.py b/homeassistant/components/control4/light.py index f710b2a71df549..a2d1308be982ae 100644 --- a/homeassistant/components/control4/light.py +++ b/homeassistant/components/control4/light.py @@ -193,6 +193,7 @@ def is_on(self): for var in CONTROL4_DIMMER_VARS: if var in self.coordinator.data[self._idx]: return self.coordinator.data[self._idx][var] > 0 + raise RuntimeError("Dimmer Variable Not Found") return self.coordinator.data[self._idx][CONTROL4_NON_DIMMER_VAR] > 0 @property