Deprecate aux heat for mqtt climate (#98666)
This commit is contained in:
parent
d179f8b47d
commit
0f58007e97
3 changed files with 83 additions and 5 deletions
|
@ -45,6 +45,7 @@ from homeassistant.const import (
|
|||
from homeassistant.core import HomeAssistant, callback
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
from homeassistant.helpers.issue_registry import IssueSeverity, async_create_issue
|
||||
from homeassistant.helpers.template import Template
|
||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||
from homeassistant.util.unit_conversion import TemperatureConverter
|
||||
|
@ -77,6 +78,7 @@ from .const import (
|
|||
CONF_TEMP_STATE_TEMPLATE,
|
||||
CONF_TEMP_STATE_TOPIC,
|
||||
DEFAULT_OPTIMISTIC,
|
||||
DOMAIN,
|
||||
PAYLOAD_NONE,
|
||||
)
|
||||
from .debug_info import log_messages
|
||||
|
@ -92,8 +94,13 @@ from .util import get_mqtt_data, valid_publish_topic, valid_subscribe_topic
|
|||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
MQTT_CLIMATE_AUX_DOCS = "https://www.home-assistant.io/integrations/climate.mqtt/"
|
||||
|
||||
DEFAULT_NAME = "MQTT HVAC"
|
||||
|
||||
# Options CONF_AUX_COMMAND_TOPIC, CONF_AUX_STATE_TOPIC
|
||||
# and CONF_AUX_STATE_TEMPLATE were deprecated in HA Core 2023.9
|
||||
# Support will be removed in HA Core 2024.3
|
||||
CONF_AUX_COMMAND_TOPIC = "aux_command_topic"
|
||||
CONF_AUX_STATE_TEMPLATE = "aux_state_template"
|
||||
CONF_AUX_STATE_TOPIC = "aux_state_topic"
|
||||
|
@ -255,6 +262,9 @@ def valid_humidity_state_configuration(config: ConfigType) -> ConfigType:
|
|||
|
||||
_PLATFORM_SCHEMA_BASE = MQTT_BASE_SCHEMA.extend(
|
||||
{
|
||||
# Options CONF_AUX_COMMAND_TOPIC, CONF_AUX_STATE_TOPIC
|
||||
# and CONF_AUX_STATE_TEMPLATE were deprecated in HA Core 2023.9
|
||||
# Support will be removed in HA Core 2024.3
|
||||
vol.Optional(CONF_AUX_COMMAND_TOPIC): valid_publish_topic,
|
||||
vol.Optional(CONF_AUX_STATE_TEMPLATE): cv.template,
|
||||
vol.Optional(CONF_AUX_STATE_TOPIC): valid_subscribe_topic,
|
||||
|
@ -353,6 +363,12 @@ PLATFORM_SCHEMA_MODERN = vol.All(
|
|||
# was removed in HA Core 2023.8
|
||||
cv.removed(CONF_POWER_STATE_TEMPLATE),
|
||||
cv.removed(CONF_POWER_STATE_TOPIC),
|
||||
# Options CONF_AUX_COMMAND_TOPIC, CONF_AUX_STATE_TOPIC
|
||||
# and CONF_AUX_STATE_TEMPLATE were deprecated in HA Core 2023.9
|
||||
# Support will be removed in HA Core 2024.3
|
||||
cv.deprecated(CONF_AUX_COMMAND_TOPIC),
|
||||
cv.deprecated(CONF_AUX_STATE_TEMPLATE),
|
||||
cv.deprecated(CONF_AUX_STATE_TOPIC),
|
||||
_PLATFORM_SCHEMA_BASE,
|
||||
valid_preset_mode_configuration,
|
||||
valid_humidity_range_configuration,
|
||||
|
@ -667,6 +683,9 @@ class MqttClimate(MqttTemperatureControlEntity, ClimateEntity):
|
|||
self._attr_swing_mode = SWING_OFF
|
||||
if self._topic[CONF_MODE_STATE_TOPIC] is None or self._optimistic:
|
||||
self._attr_hvac_mode = HVACMode.OFF
|
||||
# Options CONF_AUX_COMMAND_TOPIC, CONF_AUX_STATE_TOPIC
|
||||
# and CONF_AUX_STATE_TEMPLATE were deprecated in HA Core 2023.9
|
||||
# Support will be removed in HA Core 2024.3
|
||||
if self._topic[CONF_AUX_STATE_TOPIC] is None or self._optimistic:
|
||||
self._attr_is_aux_heat = False
|
||||
self._feature_preset_mode = CONF_PRESET_MODE_COMMAND_TOPIC in config
|
||||
|
@ -738,12 +757,32 @@ class MqttClimate(MqttTemperatureControlEntity, ClimateEntity):
|
|||
if self._feature_preset_mode:
|
||||
support |= ClimateEntityFeature.PRESET_MODE
|
||||
|
||||
# Options CONF_AUX_COMMAND_TOPIC, CONF_AUX_STATE_TOPIC
|
||||
# and CONF_AUX_STATE_TEMPLATE were deprecated in HA Core 2023.9
|
||||
# Support will be removed in HA Core 2024.3
|
||||
if (self._topic[CONF_AUX_STATE_TOPIC] is not None) or (
|
||||
self._topic[CONF_AUX_COMMAND_TOPIC] is not None
|
||||
):
|
||||
support |= ClimateEntityFeature.AUX_HEAT
|
||||
self._attr_supported_features = support
|
||||
|
||||
async def mqtt_async_added_to_hass(self) -> None:
|
||||
"""Handle deprecation issues."""
|
||||
if self._attr_supported_features & ClimateEntityFeature.AUX_HEAT:
|
||||
async_create_issue(
|
||||
self.hass,
|
||||
DOMAIN,
|
||||
"deprecated_climate_aux_property_{self.entity_id}",
|
||||
breaks_in_ha_version="2024.3.0",
|
||||
is_fixable=False,
|
||||
translation_key="deprecated_climate_aux_property",
|
||||
translation_placeholders={
|
||||
"entity_id": self.entity_id,
|
||||
},
|
||||
learn_more_url=MQTT_CLIMATE_AUX_DOCS,
|
||||
severity=IssueSeverity.WARNING,
|
||||
)
|
||||
|
||||
def _prepare_subscribe_topics(self) -> None: # noqa: C901
|
||||
"""(Re)Subscribe to topics."""
|
||||
topics: dict[str, dict[str, Any]] = {}
|
||||
|
@ -876,6 +915,9 @@ class MqttClimate(MqttTemperatureControlEntity, ClimateEntity):
|
|||
|
||||
get_mqtt_data(self.hass).state_write_requests.write_state_request(self)
|
||||
|
||||
# Options CONF_AUX_COMMAND_TOPIC, CONF_AUX_STATE_TOPIC
|
||||
# and CONF_AUX_STATE_TEMPLATE were deprecated in HA Core 2023.9
|
||||
# Support will be removed in HA Core 2024.3
|
||||
@callback
|
||||
@log_messages(self.hass, self.entity_id)
|
||||
def handle_aux_mode_received(msg: ReceiveMessage) -> None:
|
||||
|
@ -986,6 +1028,9 @@ class MqttClimate(MqttTemperatureControlEntity, ClimateEntity):
|
|||
|
||||
return
|
||||
|
||||
# Options CONF_AUX_COMMAND_TOPIC, CONF_AUX_STATE_TOPIC
|
||||
# and CONF_AUX_STATE_TEMPLATE were deprecated in HA Core 2023.9
|
||||
# Support will be removed in HA Core 2024.3
|
||||
async def _set_aux_heat(self, state: bool) -> None:
|
||||
await self._publish(
|
||||
CONF_AUX_COMMAND_TOPIC,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue