From 6fe38eadf2c8307cdd17616ea10a163f4b767a9f Mon Sep 17 00:00:00 2001 From: da-anda Date: Thu, 15 Jul 2021 14:41:04 +0200 Subject: [PATCH] Fix knx expose feature not correctly falling back to default value (#53046) --- homeassistant/components/knx/expose.py | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/homeassistant/components/knx/expose.py b/homeassistant/components/knx/expose.py index 5b57e2b0b4c..5b92f9f1f6a 100644 --- a/homeassistant/components/knx/expose.py +++ b/homeassistant/components/knx/expose.py @@ -100,10 +100,8 @@ class KNXExposeSensor: def _init_expose_state(self) -> None: """Initialize state of the exposure.""" init_state = self.hass.states.get(self.entity_id) - init_value = self._get_expose_value(init_state) - self.device.sensor_value.value = ( - init_value if init_value is not None else self.expose_default - ) + state_value = self._get_expose_value(init_state) + self.device.sensor_value.value = state_value @callback def shutdown(self) -> None: @@ -116,12 +114,13 @@ class KNXExposeSensor: def _get_expose_value(self, state: State | None) -> StateType: """Extract value from state.""" if state is None or state.state in (STATE_UNKNOWN, STATE_UNAVAILABLE): - return None - value = ( - state.state - if self.expose_attribute is None - else state.attributes.get(self.expose_attribute) - ) + value = self.expose_default + else: + value = ( + state.state + if self.expose_attribute is None + else state.attributes.get(self.expose_attribute, self.expose_default) + ) if self.type == "binary": if value in (1, STATE_ON, "True"): return True @@ -150,9 +149,7 @@ class KNXExposeSensor: async def _async_set_knx_value(self, value: StateType) -> None: """Set new value on xknx ExposeSensor.""" if value is None: - if self.expose_default is None: - return - value = self.expose_default + return await self.device.set(value)