mirror of
https://github.com/home-assistant/core.git
synced 2025-08-03 20:55:10 +02:00
Merge branch 'dev' into jbouwh-mqtt-device-discovery
This commit is contained in:
@@ -210,10 +210,7 @@ class MqttSensor(MqttEntity, RestoreSensor):
|
||||
).async_render_with_possible_json_value
|
||||
|
||||
@callback
|
||||
def _state_message_received(self, msg: ReceiveMessage) -> None:
|
||||
"""Handle new MQTT state messages."""
|
||||
|
||||
def _update_state(msg: ReceiveMessage) -> None:
|
||||
def _update_state(self, msg: ReceiveMessage) -> None:
|
||||
# auto-expire enabled?
|
||||
if self._expire_after is not None and self._expire_after > 0:
|
||||
# When self._expire_after is set, and we receive a message, assume
|
||||
@@ -261,7 +258,8 @@ class MqttSensor(MqttEntity, RestoreSensor):
|
||||
return
|
||||
self._attr_native_value = payload_datetime
|
||||
|
||||
def _update_last_reset(msg: ReceiveMessage) -> None:
|
||||
@callback
|
||||
def _update_last_reset(self, msg: ReceiveMessage) -> None:
|
||||
payload = self._last_reset_template(msg.payload)
|
||||
|
||||
if not payload:
|
||||
@@ -277,9 +275,12 @@ class MqttSensor(MqttEntity, RestoreSensor):
|
||||
"Invalid last_reset message '%s' from '%s'", msg.payload, msg.topic
|
||||
)
|
||||
|
||||
_update_state(msg)
|
||||
@callback
|
||||
def _state_message_received(self, msg: ReceiveMessage) -> None:
|
||||
"""Handle new MQTT state messages."""
|
||||
self._update_state(msg)
|
||||
if CONF_LAST_RESET_VALUE_TEMPLATE in self._config:
|
||||
_update_last_reset(msg)
|
||||
self._update_last_reset(msg)
|
||||
|
||||
@callback
|
||||
def _prepare_subscribe_topics(self) -> None:
|
||||
|
@@ -90,18 +90,17 @@ class MqttSwitch(MqttEntity, SwitchEntity, RestoreEntity):
|
||||
def _setup_from_config(self, config: ConfigType) -> None:
|
||||
"""(Re)Setup the entity."""
|
||||
self._attr_device_class = config.get(CONF_DEVICE_CLASS)
|
||||
|
||||
state_on: str | None = config.get(CONF_STATE_ON)
|
||||
self._state_on = state_on if state_on else config[CONF_PAYLOAD_ON]
|
||||
|
||||
state_off: str | None = config.get(CONF_STATE_OFF)
|
||||
self._state_off = state_off if state_off else config[CONF_PAYLOAD_OFF]
|
||||
|
||||
self._is_on_map = {
|
||||
state_on if state_on else config[CONF_PAYLOAD_ON]: True,
|
||||
state_off if state_off else config[CONF_PAYLOAD_OFF]: False,
|
||||
PAYLOAD_NONE: None,
|
||||
}
|
||||
self._optimistic = (
|
||||
config[CONF_OPTIMISTIC] or config.get(CONF_STATE_TOPIC) is None
|
||||
)
|
||||
self._attr_assumed_state = bool(self._optimistic)
|
||||
|
||||
self._value_template = MqttValueTemplate(
|
||||
self._config.get(CONF_VALUE_TEMPLATE), entity=self
|
||||
).async_render_with_possible_json_value
|
||||
@@ -109,13 +108,8 @@ class MqttSwitch(MqttEntity, SwitchEntity, RestoreEntity):
|
||||
@callback
|
||||
def _state_message_received(self, msg: ReceiveMessage) -> None:
|
||||
"""Handle new MQTT state messages."""
|
||||
payload = self._value_template(msg.payload)
|
||||
if payload == self._state_on:
|
||||
self._attr_is_on = True
|
||||
elif payload == self._state_off:
|
||||
self._attr_is_on = False
|
||||
elif payload == PAYLOAD_NONE:
|
||||
self._attr_is_on = None
|
||||
if (payload := self._value_template(msg.payload)) in self._is_on_map:
|
||||
self._attr_is_on = self._is_on_map[payload]
|
||||
|
||||
@callback
|
||||
def _prepare_subscribe_topics(self) -> None:
|
||||
|
Reference in New Issue
Block a user