mirror of
https://github.com/home-assistant/core.git
synced 2025-07-21 20:27:08 +00:00
Fix modbus hvac mode keys (#81747)
Change the HVAC mode register conf constants
This commit is contained in:
parent
21d96e00a2
commit
92b5721f80
@ -9,7 +9,6 @@ import voluptuous as vol
|
||||
from homeassistant.components.binary_sensor import (
|
||||
DEVICE_CLASSES_SCHEMA as BINARY_SENSOR_DEVICE_CLASSES_SCHEMA,
|
||||
)
|
||||
from homeassistant.components.climate import HVACMode
|
||||
from homeassistant.components.cover import (
|
||||
DEVICE_CLASSES_SCHEMA as COVER_DEVICE_CLASSES_SCHEMA,
|
||||
)
|
||||
@ -66,6 +65,13 @@ from .const import ( # noqa: F401
|
||||
CONF_DATA_TYPE,
|
||||
CONF_FANS,
|
||||
CONF_HUB,
|
||||
CONF_HVAC_MODE_AUTO,
|
||||
CONF_HVAC_MODE_COOL,
|
||||
CONF_HVAC_MODE_DRY,
|
||||
CONF_HVAC_MODE_FAN_ONLY,
|
||||
CONF_HVAC_MODE_HEAT,
|
||||
CONF_HVAC_MODE_HEAT_COOL,
|
||||
CONF_HVAC_MODE_OFF,
|
||||
CONF_HVAC_MODE_REGISTER,
|
||||
CONF_HVAC_MODE_VALUES,
|
||||
CONF_HVAC_ONOFF_REGISTER,
|
||||
@ -227,13 +233,13 @@ CLIMATE_SCHEMA = vol.All(
|
||||
{
|
||||
CONF_ADDRESS: cv.positive_int,
|
||||
CONF_HVAC_MODE_VALUES: {
|
||||
vol.Optional(HVACMode.OFF.value): cv.positive_int,
|
||||
vol.Optional(HVACMode.HEAT.value): cv.positive_int,
|
||||
vol.Optional(HVACMode.COOL.value): cv.positive_int,
|
||||
vol.Optional(HVACMode.HEAT_COOL.value): cv.positive_int,
|
||||
vol.Optional(HVACMode.AUTO.value): cv.positive_int,
|
||||
vol.Optional(HVACMode.DRY.value): cv.positive_int,
|
||||
vol.Optional(HVACMode.FAN_ONLY.value): cv.positive_int,
|
||||
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,
|
||||
},
|
||||
}
|
||||
),
|
||||
|
@ -32,6 +32,13 @@ from .const import (
|
||||
CALL_TYPE_WRITE_REGISTER,
|
||||
CALL_TYPE_WRITE_REGISTERS,
|
||||
CONF_CLIMATES,
|
||||
CONF_HVAC_MODE_AUTO,
|
||||
CONF_HVAC_MODE_COOL,
|
||||
CONF_HVAC_MODE_DRY,
|
||||
CONF_HVAC_MODE_FAN_ONLY,
|
||||
CONF_HVAC_MODE_HEAT,
|
||||
CONF_HVAC_MODE_HEAT_COOL,
|
||||
CONF_HVAC_MODE_OFF,
|
||||
CONF_HVAC_MODE_REGISTER,
|
||||
CONF_HVAC_MODE_VALUES,
|
||||
CONF_HVAC_ONOFF_REGISTER,
|
||||
@ -99,10 +106,19 @@ class ModbusThermostat(BaseStructPlatform, RestoreEntity, ClimateEntity):
|
||||
self._attr_hvac_mode = None
|
||||
self._hvac_mode_mapping: list[tuple[int, HVACMode]] = []
|
||||
mode_value_config = mode_config[CONF_HVAC_MODE_VALUES]
|
||||
for hvac_mode in HVACMode:
|
||||
if hvac_mode.value in mode_value_config:
|
||||
|
||||
for hvac_mode_kw, hvac_mode in (
|
||||
(CONF_HVAC_MODE_OFF, HVACMode.OFF),
|
||||
(CONF_HVAC_MODE_HEAT, HVACMode.HEAT),
|
||||
(CONF_HVAC_MODE_COOL, HVACMode.COOL),
|
||||
(CONF_HVAC_MODE_HEAT_COOL, HVACMode.HEAT_COOL),
|
||||
(CONF_HVAC_MODE_AUTO, HVACMode.AUTO),
|
||||
(CONF_HVAC_MODE_DRY, HVACMode.DRY),
|
||||
(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.value], hvac_mode)
|
||||
(mode_value_config[hvac_mode_kw], hvac_mode)
|
||||
)
|
||||
self._attr_hvac_modes.append(hvac_mode)
|
||||
|
||||
|
@ -56,6 +56,13 @@ CONF_TARGET_TEMP = "target_temp_register"
|
||||
CONF_HVAC_MODE_REGISTER = "hvac_mode_register"
|
||||
CONF_HVAC_MODE_VALUES = "values"
|
||||
CONF_HVAC_ONOFF_REGISTER = "hvac_onoff_register"
|
||||
CONF_HVAC_MODE_OFF = "state_off"
|
||||
CONF_HVAC_MODE_HEAT = "state_heat"
|
||||
CONF_HVAC_MODE_COOL = "state_cool"
|
||||
CONF_HVAC_MODE_HEAT_COOL = "state_heat_cool"
|
||||
CONF_HVAC_MODE_AUTO = "state_auto"
|
||||
CONF_HVAC_MODE_DRY = "state_dry"
|
||||
CONF_HVAC_MODE_FAN_ONLY = "state_fan_only"
|
||||
CONF_VERIFY = "verify"
|
||||
CONF_VERIFY_REGISTER = "verify_register"
|
||||
CONF_VERIFY_STATE = "verify_state"
|
||||
|
@ -10,6 +10,13 @@ from homeassistant.components.climate.const import (
|
||||
from homeassistant.components.modbus.const import (
|
||||
CONF_CLIMATES,
|
||||
CONF_DATA_TYPE,
|
||||
CONF_HVAC_MODE_AUTO,
|
||||
CONF_HVAC_MODE_COOL,
|
||||
CONF_HVAC_MODE_DRY,
|
||||
CONF_HVAC_MODE_FAN_ONLY,
|
||||
CONF_HVAC_MODE_HEAT,
|
||||
CONF_HVAC_MODE_HEAT_COOL,
|
||||
CONF_HVAC_MODE_OFF,
|
||||
CONF_HVAC_MODE_REGISTER,
|
||||
CONF_HVAC_MODE_VALUES,
|
||||
CONF_HVAC_ONOFF_REGISTER,
|
||||
@ -82,13 +89,13 @@ ENTITY_ID = f"{CLIMATE_DOMAIN}.{TEST_ENTITY_NAME}".replace(" ", "_")
|
||||
CONF_HVAC_MODE_REGISTER: {
|
||||
CONF_ADDRESS: 11,
|
||||
CONF_HVAC_MODE_VALUES: {
|
||||
HVACMode.OFF.value: 0,
|
||||
HVACMode.HEAT.value: 1,
|
||||
HVACMode.COOL.value: 2,
|
||||
HVACMode.HEAT_COOL.value: 3,
|
||||
HVACMode.DRY.value: 4,
|
||||
HVACMode.FAN_ONLY.value: 5,
|
||||
HVACMode.AUTO.value: 6,
|
||||
"state_off": 0,
|
||||
"state_heat": 1,
|
||||
"state_cool": 2,
|
||||
"state_heat_cool": 3,
|
||||
"state_dry": 4,
|
||||
"state_fan_only": 5,
|
||||
"state_auto": 6,
|
||||
},
|
||||
},
|
||||
}
|
||||
@ -114,10 +121,12 @@ async def test_config_climate(hass, mock_modbus):
|
||||
CONF_HVAC_MODE_REGISTER: {
|
||||
CONF_ADDRESS: 11,
|
||||
CONF_HVAC_MODE_VALUES: {
|
||||
HVACMode.OFF.value: 0,
|
||||
HVACMode.HEAT.value: 1,
|
||||
HVACMode.COOL.value: 2,
|
||||
HVACMode.HEAT_COOL.value: 3,
|
||||
CONF_HVAC_MODE_OFF: 0,
|
||||
CONF_HVAC_MODE_HEAT: 1,
|
||||
CONF_HVAC_MODE_COOL: 2,
|
||||
CONF_HVAC_MODE_HEAT_COOL: 3,
|
||||
CONF_HVAC_MODE_AUTO: 4,
|
||||
CONF_HVAC_MODE_FAN_ONLY: 5,
|
||||
},
|
||||
},
|
||||
}
|
||||
@ -132,6 +141,8 @@ async def test_config_hvac_mode_register(hass, mock_modbus):
|
||||
assert HVACMode.HEAT in state.attributes[ATTR_HVAC_MODES]
|
||||
assert HVACMode.COOL in state.attributes[ATTR_HVAC_MODES]
|
||||
assert HVACMode.HEAT_COOL in state.attributes[ATTR_HVAC_MODES]
|
||||
assert HVACMode.AUTO in state.attributes[ATTR_HVAC_MODES]
|
||||
assert HVACMode.FAN_ONLY in state.attributes[ATTR_HVAC_MODES]
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
@ -203,9 +214,9 @@ async def test_temperature_climate(hass, expected, mock_do_cycle):
|
||||
CONF_HVAC_MODE_REGISTER: {
|
||||
CONF_ADDRESS: 118,
|
||||
CONF_HVAC_MODE_VALUES: {
|
||||
HVACMode.COOL.value: 0,
|
||||
HVACMode.HEAT.value: 1,
|
||||
HVACMode.DRY.value: 2,
|
||||
CONF_HVAC_MODE_COOL: 0,
|
||||
CONF_HVAC_MODE_HEAT: 1,
|
||||
CONF_HVAC_MODE_DRY: 2,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -227,9 +238,9 @@ async def test_temperature_climate(hass, expected, mock_do_cycle):
|
||||
CONF_HVAC_MODE_REGISTER: {
|
||||
CONF_ADDRESS: 118,
|
||||
CONF_HVAC_MODE_VALUES: {
|
||||
HVACMode.COOL.value: 0,
|
||||
HVACMode.HEAT.value: 1,
|
||||
HVACMode.DRY.value: 2,
|
||||
CONF_HVAC_MODE_COOL: 0,
|
||||
CONF_HVAC_MODE_HEAT: 1,
|
||||
CONF_HVAC_MODE_DRY: 2,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -251,9 +262,9 @@ async def test_temperature_climate(hass, expected, mock_do_cycle):
|
||||
CONF_HVAC_MODE_REGISTER: {
|
||||
CONF_ADDRESS: 118,
|
||||
CONF_HVAC_MODE_VALUES: {
|
||||
HVACMode.COOL.value: 0,
|
||||
HVACMode.HEAT.value: 2,
|
||||
HVACMode.DRY.value: 3,
|
||||
CONF_HVAC_MODE_COOL: 0,
|
||||
CONF_HVAC_MODE_HEAT: 2,
|
||||
CONF_HVAC_MODE_DRY: 3,
|
||||
},
|
||||
},
|
||||
CONF_HVAC_ONOFF_REGISTER: 119,
|
||||
@ -374,8 +385,8 @@ async def test_service_climate_set_temperature(
|
||||
CONF_HVAC_MODE_REGISTER: {
|
||||
CONF_ADDRESS: 118,
|
||||
CONF_HVAC_MODE_VALUES: {
|
||||
HVACMode.COOL.value: 1,
|
||||
HVACMode.HEAT.value: 2,
|
||||
CONF_HVAC_MODE_COOL: 1,
|
||||
CONF_HVAC_MODE_HEAT: 2,
|
||||
},
|
||||
},
|
||||
}
|
||||
@ -395,8 +406,8 @@ async def test_service_climate_set_temperature(
|
||||
CONF_HVAC_MODE_REGISTER: {
|
||||
CONF_ADDRESS: 118,
|
||||
CONF_HVAC_MODE_VALUES: {
|
||||
HVACMode.COOL.value: 1,
|
||||
HVACMode.HEAT.value: 2,
|
||||
CONF_HVAC_MODE_COOL: 1,
|
||||
CONF_HVAC_MODE_HEAT: 2,
|
||||
},
|
||||
},
|
||||
CONF_HVAC_ONOFF_REGISTER: 119,
|
||||
|
Loading…
x
Reference in New Issue
Block a user