Fix control4 light switches on OS 3.3+ (#95196)

This commit is contained in:
Nalin Mahajan 2023-06-26 08:49:44 -05:00 committed by GitHub
parent 5bd5ca8433
commit f08f0fbb8b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -30,7 +30,7 @@ _LOGGER = logging.getLogger(__name__)
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_setup_entry(
"""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,19 @@ class Control4Light(Control4Entity, LightEntity):
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
raise RuntimeError("Dimmer Variable Not Found")
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