mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Fix knx expose feature not correctly falling back to default value (#53046)
This commit is contained in:
parent
519efd2723
commit
6fe38eadf2
@ -100,10 +100,8 @@ class KNXExposeSensor:
|
|||||||
def _init_expose_state(self) -> None:
|
def _init_expose_state(self) -> None:
|
||||||
"""Initialize state of the exposure."""
|
"""Initialize state of the exposure."""
|
||||||
init_state = self.hass.states.get(self.entity_id)
|
init_state = self.hass.states.get(self.entity_id)
|
||||||
init_value = self._get_expose_value(init_state)
|
state_value = self._get_expose_value(init_state)
|
||||||
self.device.sensor_value.value = (
|
self.device.sensor_value.value = state_value
|
||||||
init_value if init_value is not None else self.expose_default
|
|
||||||
)
|
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def shutdown(self) -> None:
|
def shutdown(self) -> None:
|
||||||
@ -116,12 +114,13 @@ class KNXExposeSensor:
|
|||||||
def _get_expose_value(self, state: State | None) -> StateType:
|
def _get_expose_value(self, state: State | None) -> StateType:
|
||||||
"""Extract value from state."""
|
"""Extract value from state."""
|
||||||
if state is None or state.state in (STATE_UNKNOWN, STATE_UNAVAILABLE):
|
if state is None or state.state in (STATE_UNKNOWN, STATE_UNAVAILABLE):
|
||||||
return None
|
value = self.expose_default
|
||||||
value = (
|
else:
|
||||||
state.state
|
value = (
|
||||||
if self.expose_attribute is None
|
state.state
|
||||||
else state.attributes.get(self.expose_attribute)
|
if self.expose_attribute is None
|
||||||
)
|
else state.attributes.get(self.expose_attribute, self.expose_default)
|
||||||
|
)
|
||||||
if self.type == "binary":
|
if self.type == "binary":
|
||||||
if value in (1, STATE_ON, "True"):
|
if value in (1, STATE_ON, "True"):
|
||||||
return True
|
return True
|
||||||
@ -150,9 +149,7 @@ class KNXExposeSensor:
|
|||||||
async def _async_set_knx_value(self, value: StateType) -> None:
|
async def _async_set_knx_value(self, value: StateType) -> None:
|
||||||
"""Set new value on xknx ExposeSensor."""
|
"""Set new value on xknx ExposeSensor."""
|
||||||
if value is None:
|
if value is None:
|
||||||
if self.expose_default is None:
|
return
|
||||||
return
|
|
||||||
value = self.expose_default
|
|
||||||
await self.device.set(value)
|
await self.device.set(value)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user