From 538a189168b127aee7b1742bbe9ebd4debca71f4 Mon Sep 17 00:00:00 2001 From: jan iversen Date: Fri, 28 May 2021 17:57:14 +0200 Subject: [PATCH] Adjust modbus climate to use address/input_type (#51202) --- homeassistant/components/modbus/__init__.py | 13 +++++++------ homeassistant/components/modbus/climate.py | 12 +----------- tests/components/modbus/test_climate.py | 10 +++++----- 3 files changed, 13 insertions(+), 22 deletions(-) diff --git a/homeassistant/components/modbus/__init__.py b/homeassistant/components/modbus/__init__.py index f60c765d80c..8d00a1ba7c5 100644 --- a/homeassistant/components/modbus/__init__.py +++ b/homeassistant/components/modbus/__init__.py @@ -58,8 +58,6 @@ from .const import ( CONF_BYTESIZE, CONF_CLIMATES, CONF_CLOSE_COMM_ON_ERROR, - CONF_CURRENT_TEMP, - CONF_CURRENT_TEMP_REGISTER_TYPE, CONF_DATA_COUNT, CONF_DATA_TYPE, CONF_FANS, @@ -124,12 +122,15 @@ BASE_COMPONENT_SCHEMA = vol.Schema( CLIMATE_SCHEMA = BASE_COMPONENT_SCHEMA.extend( { - vol.Required(CONF_CURRENT_TEMP): cv.positive_int, + vol.Required(CONF_ADDRESS): cv.positive_int, + vol.Optional(CONF_INPUT_TYPE, default=CALL_TYPE_REGISTER_HOLDING): vol.In( + [ + CALL_TYPE_REGISTER_HOLDING, + CALL_TYPE_REGISTER_INPUT, + ] + ), vol.Required(CONF_TARGET_TEMP): cv.positive_int, vol.Optional(CONF_DATA_COUNT, default=2): cv.positive_int, - vol.Optional( - CONF_CURRENT_TEMP_REGISTER_TYPE, default=CALL_TYPE_REGISTER_HOLDING - ): vol.In([CALL_TYPE_REGISTER_HOLDING, CALL_TYPE_REGISTER_INPUT]), vol.Optional(CONF_DATA_TYPE, default=DATA_TYPE_FLOAT): vol.In( [DATA_TYPE_INT, DATA_TYPE_UINT, DATA_TYPE_FLOAT, DATA_TYPE_CUSTOM] ), diff --git a/homeassistant/components/modbus/climate.py b/homeassistant/components/modbus/climate.py index 4e6a20b1700..15a14b7eca9 100644 --- a/homeassistant/components/modbus/climate.py +++ b/homeassistant/components/modbus/climate.py @@ -11,7 +11,6 @@ from homeassistant.components.climate.const import ( SUPPORT_TARGET_TEMPERATURE, ) from homeassistant.const import ( - CONF_ADDRESS, CONF_NAME, CONF_OFFSET, CONF_STRUCTURE, @@ -29,11 +28,8 @@ from .const import ( CALL_TYPE_REGISTER_HOLDING, CALL_TYPE_WRITE_REGISTERS, CONF_CLIMATES, - CONF_CURRENT_TEMP, - CONF_CURRENT_TEMP_REGISTER_TYPE, CONF_DATA_COUNT, CONF_DATA_TYPE, - CONF_INPUT_TYPE, CONF_MAX_TEMP, CONF_MIN_TEMP, CONF_PRECISION, @@ -108,14 +104,8 @@ class ModbusThermostat(BasePlatform, RestoreEntity, ClimateEntity): config: dict[str, Any], ) -> None: """Initialize the modbus thermostat.""" - config[CONF_ADDRESS] = "0" - config[CONF_INPUT_TYPE] = "" super().__init__(hub, config) self._target_temperature_register = config[CONF_TARGET_TEMP] - self._current_temperature_register = config[CONF_CURRENT_TEMP] - self._current_temperature_register_type = config[ - CONF_CURRENT_TEMP_REGISTER_TYPE - ] self._target_temperature = None self._current_temperature = None self._data_type = config[CONF_DATA_TYPE] @@ -212,7 +202,7 @@ class ModbusThermostat(BasePlatform, RestoreEntity, ClimateEntity): CALL_TYPE_REGISTER_HOLDING, self._target_temperature_register ) self._current_temperature = await self._async_read_register( - self._current_temperature_register_type, self._current_temperature_register + self._input_type, self._address ) self.async_write_ha_state() diff --git a/tests/components/modbus/test_climate.py b/tests/components/modbus/test_climate.py index c73a73e47e8..50ba518bb36 100644 --- a/tests/components/modbus/test_climate.py +++ b/tests/components/modbus/test_climate.py @@ -5,12 +5,12 @@ from homeassistant.components.climate import DOMAIN as CLIMATE_DOMAIN from homeassistant.components.climate.const import HVAC_MODE_AUTO from homeassistant.components.modbus.const import ( CONF_CLIMATES, - CONF_CURRENT_TEMP, CONF_DATA_COUNT, CONF_TARGET_TEMP, ) from homeassistant.const import ( ATTR_TEMPERATURE, + CONF_ADDRESS, CONF_NAME, CONF_SCAN_INTERVAL, CONF_SLAVE, @@ -38,7 +38,7 @@ async def test_config_climate(hass, do_options): device_config = { CONF_NAME: device_name, CONF_TARGET_TEMP: 117, - CONF_CURRENT_TEMP: 117, + CONF_ADDRESS: 117, CONF_SLAVE: 10, **do_options, } @@ -72,7 +72,7 @@ async def test_temperature_climate(hass, regs, expected): CONF_NAME: climate_name, CONF_SLAVE: 1, CONF_TARGET_TEMP: 117, - CONF_CURRENT_TEMP: 117, + CONF_ADDRESS: 117, CONF_DATA_COUNT: 2, }, climate_name, @@ -96,7 +96,7 @@ async def test_service_climate_update(hass, mock_pymodbus): { CONF_NAME: "test", CONF_TARGET_TEMP: 117, - CONF_CURRENT_TEMP: 117, + CONF_ADDRESS: 117, CONF_SLAVE: 10, } ] @@ -123,7 +123,7 @@ async def test_restore_state_climate(hass): config_sensor = { CONF_NAME: climate_name, CONF_TARGET_TEMP: 117, - CONF_CURRENT_TEMP: 117, + CONF_ADDRESS: 117, } mock_restore_cache( hass,