Fix knx expose feature not correctly falling back to default value (#53046)

This commit is contained in:
da-anda 2021-07-15 14:41:04 +02:00 committed by GitHub
parent 519efd2723
commit 6fe38eadf2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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,11 +114,12 @@ 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 = self.expose_default
else:
value = (
state.state
if self.expose_attribute is None
else state.attributes.get(self.expose_attribute)
else state.attributes.get(self.expose_attribute, self.expose_default)
)
if self.type == "binary":
if value in (1, STATE_ON, "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
await self.device.set(value)