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_ADDRESS: cv.positive_int,
CONF_HVAC_MODE_VALUES: { CONF_HVAC_MODE_VALUES: {
vol.Optional(CONF_HVAC_MODE_OFF): cv.positive_int, vol.Optional(CONF_HVAC_MODE_OFF): vol.Any(
vol.Optional(CONF_HVAC_MODE_HEAT): cv.positive_int, cv.positive_int, [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_HEAT): vol.Any(
vol.Optional(CONF_HVAC_MODE_AUTO): cv.positive_int, cv.positive_int, [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_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, 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), (CONF_HVAC_MODE_FAN_ONLY, HVACMode.FAN_ONLY),
): ):
if hvac_mode_kw in mode_value_config: if hvac_mode_kw in mode_value_config:
self._hvac_mode_mapping.append( values = mode_value_config[hvac_mode_kw]
(mode_value_config[hvac_mode_kw], hvac_mode) 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) self._attr_hvac_modes.append(hvac_mode)
else: else: