mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 19:27:45 +00:00
Use attr in mqtt humidifier (#81400)
This commit is contained in:
parent
dd4b843d47
commit
7a930d7e79
@ -211,10 +211,7 @@ class MqttHumidifier(MqttEntity, HumidifierEntity):
|
||||
|
||||
def __init__(self, hass, config, config_entry, discovery_data):
|
||||
"""Initialize the MQTT humidifier."""
|
||||
self._state = None
|
||||
self._target_humidity = None
|
||||
self._mode = None
|
||||
self._supported_features = 0
|
||||
self._attr_mode = None
|
||||
|
||||
self._topic = None
|
||||
self._payload = None
|
||||
@ -265,10 +262,10 @@ class MqttHumidifier(MqttEntity, HumidifierEntity):
|
||||
"MODE_RESET": config[CONF_PAYLOAD_RESET_MODE],
|
||||
}
|
||||
if CONF_MODE_COMMAND_TOPIC in config and CONF_AVAILABLE_MODES_LIST in config:
|
||||
self._available_modes = config[CONF_AVAILABLE_MODES_LIST]
|
||||
self._attr_available_modes = config[CONF_AVAILABLE_MODES_LIST]
|
||||
else:
|
||||
self._available_modes = []
|
||||
if self._available_modes:
|
||||
self._attr_available_modes = []
|
||||
if self._attr_available_modes:
|
||||
self._attr_supported_features = HumidifierEntityFeature.MODES
|
||||
else:
|
||||
self._attr_supported_features = 0
|
||||
@ -304,11 +301,11 @@ class MqttHumidifier(MqttEntity, HumidifierEntity):
|
||||
_LOGGER.debug("Ignoring empty state from '%s'", msg.topic)
|
||||
return
|
||||
if payload == self._payload["STATE_ON"]:
|
||||
self._state = True
|
||||
self._attr_is_on = True
|
||||
elif payload == self._payload["STATE_OFF"]:
|
||||
self._state = False
|
||||
self._attr_is_on = False
|
||||
elif payload == PAYLOAD_NONE:
|
||||
self._state = None
|
||||
self._attr_is_on = None
|
||||
get_mqtt_data(self.hass).state_write_requests.write_state_request(self)
|
||||
|
||||
if self._topic[CONF_STATE_TOPIC] is not None:
|
||||
@ -330,7 +327,7 @@ class MqttHumidifier(MqttEntity, HumidifierEntity):
|
||||
_LOGGER.debug("Ignoring empty target humidity from '%s'", msg.topic)
|
||||
return
|
||||
if rendered_target_humidity_payload == self._payload["HUMIDITY_RESET"]:
|
||||
self._target_humidity = None
|
||||
self._attr_target_humidity = None
|
||||
get_mqtt_data(self.hass).state_write_requests.write_state_request(self)
|
||||
return
|
||||
try:
|
||||
@ -354,7 +351,7 @@ class MqttHumidifier(MqttEntity, HumidifierEntity):
|
||||
rendered_target_humidity_payload,
|
||||
)
|
||||
return
|
||||
self._target_humidity = target_humidity
|
||||
self._attr_target_humidity = target_humidity
|
||||
get_mqtt_data(self.hass).state_write_requests.write_state_request(self)
|
||||
|
||||
if self._topic[CONF_TARGET_HUMIDITY_STATE_TOPIC] is not None:
|
||||
@ -364,7 +361,7 @@ class MqttHumidifier(MqttEntity, HumidifierEntity):
|
||||
"qos": self._config[CONF_QOS],
|
||||
"encoding": self._config[CONF_ENCODING] or None,
|
||||
}
|
||||
self._target_humidity = None
|
||||
self._attr_target_humidity = None
|
||||
|
||||
@callback
|
||||
@log_messages(self.hass, self.entity_id)
|
||||
@ -372,7 +369,7 @@ class MqttHumidifier(MqttEntity, HumidifierEntity):
|
||||
"""Handle new received MQTT message for mode."""
|
||||
mode = self._value_templates[ATTR_MODE](msg.payload)
|
||||
if mode == self._payload["MODE_RESET"]:
|
||||
self._mode = None
|
||||
self._attr_mode = None
|
||||
get_mqtt_data(self.hass).state_write_requests.write_state_request(self)
|
||||
return
|
||||
if not mode:
|
||||
@ -387,7 +384,7 @@ class MqttHumidifier(MqttEntity, HumidifierEntity):
|
||||
)
|
||||
return
|
||||
|
||||
self._mode = mode
|
||||
self._attr_mode = mode
|
||||
get_mqtt_data(self.hass).state_write_requests.write_state_request(self)
|
||||
|
||||
if self._topic[CONF_MODE_STATE_TOPIC] is not None:
|
||||
@ -397,7 +394,7 @@ class MqttHumidifier(MqttEntity, HumidifierEntity):
|
||||
"qos": self._config[CONF_QOS],
|
||||
"encoding": self._config[CONF_ENCODING] or None,
|
||||
}
|
||||
self._mode = None
|
||||
self._attr_mode = None
|
||||
|
||||
self._sub_state = subscription.async_prepare_subscribe_topics(
|
||||
self.hass, self._sub_state, topics
|
||||
@ -412,26 +409,6 @@ class MqttHumidifier(MqttEntity, HumidifierEntity):
|
||||
"""Return true if we do optimistic updates."""
|
||||
return self._optimistic
|
||||
|
||||
@property
|
||||
def available_modes(self) -> list:
|
||||
"""Get the list of available modes."""
|
||||
return self._available_modes
|
||||
|
||||
@property
|
||||
def is_on(self) -> bool | None:
|
||||
"""Return true if device is on."""
|
||||
return self._state
|
||||
|
||||
@property
|
||||
def target_humidity(self):
|
||||
"""Return the current target humidity."""
|
||||
return self._target_humidity
|
||||
|
||||
@property
|
||||
def mode(self):
|
||||
"""Return the current mode."""
|
||||
return self._mode
|
||||
|
||||
async def async_turn_on(self, **kwargs: Any) -> None:
|
||||
"""Turn on the entity.
|
||||
|
||||
@ -446,7 +423,7 @@ class MqttHumidifier(MqttEntity, HumidifierEntity):
|
||||
self._config[CONF_ENCODING],
|
||||
)
|
||||
if self._optimistic:
|
||||
self._state = True
|
||||
self._attr_is_on = True
|
||||
self.async_write_ha_state()
|
||||
|
||||
async def async_turn_off(self, **kwargs: Any) -> None:
|
||||
@ -463,7 +440,7 @@ class MqttHumidifier(MqttEntity, HumidifierEntity):
|
||||
self._config[CONF_ENCODING],
|
||||
)
|
||||
if self._optimistic:
|
||||
self._state = False
|
||||
self._attr_is_on = False
|
||||
self.async_write_ha_state()
|
||||
|
||||
async def async_set_humidity(self, humidity: int) -> None:
|
||||
@ -481,7 +458,7 @@ class MqttHumidifier(MqttEntity, HumidifierEntity):
|
||||
)
|
||||
|
||||
if self._optimistic_target_humidity:
|
||||
self._target_humidity = humidity
|
||||
self._attr_target_humidity = humidity
|
||||
self.async_write_ha_state()
|
||||
|
||||
async def async_set_mode(self, mode: str) -> None:
|
||||
@ -489,7 +466,7 @@ class MqttHumidifier(MqttEntity, HumidifierEntity):
|
||||
|
||||
This method is a coroutine.
|
||||
"""
|
||||
if mode not in self.available_modes:
|
||||
if not self.available_modes or mode not in self.available_modes:
|
||||
_LOGGER.warning("'%s'is not a valid mode", mode)
|
||||
return
|
||||
|
||||
@ -504,5 +481,5 @@ class MqttHumidifier(MqttEntity, HumidifierEntity):
|
||||
)
|
||||
|
||||
if self._optimistic_mode:
|
||||
self._mode = mode
|
||||
self._attr_mode = mode
|
||||
self.async_write_ha_state()
|
||||
|
Loading…
x
Reference in New Issue
Block a user