mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 04:37:06 +00:00
Fix race in MQTT sensor and binary_sensor expire_after (#66040)
This commit is contained in:
parent
39ed628cca
commit
33623c3fe8
@ -134,6 +134,10 @@ class MqttBinarySensor(MqttEntity, BinarySensorEntity, RestoreEntity):
|
|||||||
self._expired = False
|
self._expired = False
|
||||||
self._state = last_state.state
|
self._state = last_state.state
|
||||||
|
|
||||||
|
if self._expiration_trigger:
|
||||||
|
# We might have set up a trigger already after subscribing from
|
||||||
|
# super().async_added_to_hass()
|
||||||
|
self._expiration_trigger()
|
||||||
self._expiration_trigger = async_track_point_in_utc_time(
|
self._expiration_trigger = async_track_point_in_utc_time(
|
||||||
self.hass, self._value_is_expired, expiration_at
|
self.hass, self._value_is_expired, expiration_at
|
||||||
)
|
)
|
||||||
@ -190,7 +194,6 @@ class MqttBinarySensor(MqttEntity, BinarySensorEntity, RestoreEntity):
|
|||||||
# Reset old trigger
|
# Reset old trigger
|
||||||
if self._expiration_trigger:
|
if self._expiration_trigger:
|
||||||
self._expiration_trigger()
|
self._expiration_trigger()
|
||||||
self._expiration_trigger = None
|
|
||||||
|
|
||||||
# Set new trigger
|
# Set new trigger
|
||||||
expiration_at = dt_util.utcnow() + timedelta(seconds=expire_after)
|
expiration_at = dt_util.utcnow() + timedelta(seconds=expire_after)
|
||||||
|
@ -180,6 +180,10 @@ class MqttSensor(MqttEntity, SensorEntity, RestoreEntity):
|
|||||||
self._expired = False
|
self._expired = False
|
||||||
self._state = last_state.state
|
self._state = last_state.state
|
||||||
|
|
||||||
|
if self._expiration_trigger:
|
||||||
|
# We might have set up a trigger already after subscribing from
|
||||||
|
# super().async_added_to_hass()
|
||||||
|
self._expiration_trigger()
|
||||||
self._expiration_trigger = async_track_point_in_utc_time(
|
self._expiration_trigger = async_track_point_in_utc_time(
|
||||||
self.hass, self._value_is_expired, expiration_at
|
self.hass, self._value_is_expired, expiration_at
|
||||||
)
|
)
|
||||||
@ -227,7 +231,6 @@ class MqttSensor(MqttEntity, SensorEntity, RestoreEntity):
|
|||||||
# Reset old trigger
|
# Reset old trigger
|
||||||
if self._expiration_trigger:
|
if self._expiration_trigger:
|
||||||
self._expiration_trigger()
|
self._expiration_trigger()
|
||||||
self._expiration_trigger = None
|
|
||||||
|
|
||||||
# Set new trigger
|
# Set new trigger
|
||||||
expiration_at = dt_util.utcnow() + timedelta(seconds=expire_after)
|
expiration_at = dt_util.utcnow() + timedelta(seconds=expire_after)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user