From 4632a07f3fd97ae04d36ddd85d66cee4a762b063 Mon Sep 17 00:00:00 2001 From: escoand Date: Tue, 29 Aug 2023 10:45:37 +0200 Subject: [PATCH] Add possibility to have multiple values for every modbus hvac mode (#98829) Co-authored-by: jan iversen --- homeassistant/components/modbus/__init__.py | 28 +++++++++++++++------ homeassistant/components/modbus/climate.py | 8 +++--- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/modbus/__init__.py b/homeassistant/components/modbus/__init__.py index 920188603fc..cb36661d711 100644 --- a/homeassistant/components/modbus/__init__.py +++ b/homeassistant/components/modbus/__init__.py @@ -240,13 +240,27 @@ CLIMATE_SCHEMA = vol.All( { CONF_ADDRESS: cv.positive_int, CONF_HVAC_MODE_VALUES: { - vol.Optional(CONF_HVAC_MODE_OFF): cv.positive_int, - vol.Optional(CONF_HVAC_MODE_HEAT): cv.positive_int, - vol.Optional(CONF_HVAC_MODE_COOL): cv.positive_int, - vol.Optional(CONF_HVAC_MODE_HEAT_COOL): cv.positive_int, - vol.Optional(CONF_HVAC_MODE_AUTO): cv.positive_int, - vol.Optional(CONF_HVAC_MODE_DRY): cv.positive_int, - vol.Optional(CONF_HVAC_MODE_FAN_ONLY): cv.positive_int, + vol.Optional(CONF_HVAC_MODE_OFF): vol.Any( + cv.positive_int, [cv.positive_int] + ), + vol.Optional(CONF_HVAC_MODE_HEAT): vol.Any( + cv.positive_int, [cv.positive_int] + ), + vol.Optional(CONF_HVAC_MODE_COOL): vol.Any( + cv.positive_int, [cv.positive_int] + ), + vol.Optional(CONF_HVAC_MODE_HEAT_COOL): vol.Any( + cv.positive_int, [cv.positive_int] + ), + vol.Optional(CONF_HVAC_MODE_AUTO): vol.Any( + cv.positive_int, [cv.positive_int] + ), + vol.Optional(CONF_HVAC_MODE_DRY): vol.Any( + cv.positive_int, [cv.positive_int] + ), + vol.Optional(CONF_HVAC_MODE_FAN_ONLY): vol.Any( + cv.positive_int, [cv.positive_int] + ), }, vol.Optional(CONF_WRITE_REGISTERS, default=False): cv.boolean, } diff --git a/homeassistant/components/modbus/climate.py b/homeassistant/components/modbus/climate.py index 7170716d43e..3acf8d7ac29 100644 --- a/homeassistant/components/modbus/climate.py +++ b/homeassistant/components/modbus/climate.py @@ -124,9 +124,11 @@ class ModbusThermostat(BaseStructPlatform, RestoreEntity, ClimateEntity): (CONF_HVAC_MODE_FAN_ONLY, HVACMode.FAN_ONLY), ): if hvac_mode_kw in mode_value_config: - self._hvac_mode_mapping.append( - (mode_value_config[hvac_mode_kw], hvac_mode) - ) + values = mode_value_config[hvac_mode_kw] + if not isinstance(values, list): + values = [values] + for value in values: + self._hvac_mode_mapping.append((value, hvac_mode)) self._attr_hvac_modes.append(hvac_mode) else: