Add possibility to have multiple values for every modbus hvac mode (#98829)

Co-authored-by: jan iversen <jancasacondor@gmail.com>
This commit is contained in:
escoand 2023-08-29 10:45:37 +02:00 committed by GitHub
parent 7a690d7359
commit 4632a07f3f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 10 deletions

View file

@ -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,
}

View file

@ -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: