diff --git a/homeassistant/components/flexit/climate.py b/homeassistant/components/flexit/climate.py index 450d09edeb8af9..382d488b6e1b5c 100644 --- a/homeassistant/components/flexit/climate.py +++ b/homeassistant/components/flexit/climate.py @@ -11,7 +11,7 @@ SUPPORT_FAN_MODE, SUPPORT_TARGET_TEMPERATURE, ) -from homeassistant.components.modbus.const import CONF_HUB, DEFAULT_HUB, MODBUS_DOMAIN +from homeassistant.components.modbus.const import CONF_HUB, MODBUS_DOMAIN from homeassistant.const import ( ATTR_TEMPERATURE, CONF_NAME, @@ -23,7 +23,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( { - vol.Optional(CONF_HUB, default=DEFAULT_HUB): cv.string, + vol.Required(CONF_HUB): cv.string, vol.Required(CONF_SLAVE): vol.All(int, vol.Range(min=0, max=32)), vol.Optional(CONF_NAME, default=DEVICE_DEFAULT_NAME): cv.string, } diff --git a/homeassistant/components/modbus/__init__.py b/homeassistant/components/modbus/__init__.py index 0a7ea08543ab77..02fc15a365708a 100644 --- a/homeassistant/components/modbus/__init__.py +++ b/homeassistant/components/modbus/__init__.py @@ -28,7 +28,6 @@ CONF_BYTESIZE, CONF_PARITY, CONF_STOPBITS, - DEFAULT_HUB, MODBUS_DOMAIN as DOMAIN, SERVICE_WRITE_COIL, SERVICE_WRITE_REGISTER, @@ -37,7 +36,7 @@ _LOGGER = logging.getLogger(__name__) -BASE_SCHEMA = vol.Schema({vol.Optional(CONF_NAME, default=DEFAULT_HUB): cv.string}) +BASE_SCHEMA = vol.Schema({vol.Required(CONF_NAME): cv.string}) SERIAL_SCHEMA = BASE_SCHEMA.extend( { @@ -69,7 +68,7 @@ SERVICE_WRITE_REGISTER_SCHEMA = vol.Schema( { - vol.Optional(ATTR_HUB, default=DEFAULT_HUB): cv.string, + vol.Required(ATTR_HUB): cv.string, vol.Required(ATTR_UNIT): cv.positive_int, vol.Required(ATTR_ADDRESS): cv.positive_int, vol.Required(ATTR_VALUE): vol.Any( @@ -80,7 +79,7 @@ SERVICE_WRITE_COIL_SCHEMA = vol.Schema( { - vol.Optional(ATTR_HUB, default=DEFAULT_HUB): cv.string, + vol.Required(ATTR_HUB): cv.string, vol.Required(ATTR_UNIT): cv.positive_int, vol.Required(ATTR_ADDRESS): cv.positive_int, vol.Required(ATTR_STATE): cv.boolean, diff --git a/homeassistant/components/modbus/binary_sensor.py b/homeassistant/components/modbus/binary_sensor.py index ce66b7aecdb4bd..19e9cc06b8813b 100644 --- a/homeassistant/components/modbus/binary_sensor.py +++ b/homeassistant/components/modbus/binary_sensor.py @@ -22,7 +22,6 @@ CONF_HUB, CONF_INPUT_TYPE, CONF_INPUTS, - DEFAULT_HUB, MODBUS_DOMAIN, ) @@ -38,9 +37,9 @@ vol.Schema( { vol.Required(CONF_ADDRESS): cv.positive_int, + vol.Required(CONF_HUB): cv.string, vol.Required(CONF_NAME): cv.string, vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA, - vol.Optional(CONF_HUB, default=DEFAULT_HUB): cv.string, vol.Optional(CONF_SLAVE): cv.positive_int, vol.Optional( CONF_INPUT_TYPE, default=CALL_TYPE_COIL diff --git a/homeassistant/components/modbus/climate.py b/homeassistant/components/modbus/climate.py index 5498ed617385cf..46634860fe4d50 100644 --- a/homeassistant/components/modbus/climate.py +++ b/homeassistant/components/modbus/climate.py @@ -40,7 +40,6 @@ DATA_TYPE_FLOAT, DATA_TYPE_INT, DATA_TYPE_UINT, - DEFAULT_HUB, MODBUS_DOMAIN, ) @@ -50,6 +49,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( { vol.Required(CONF_CURRENT_TEMP): cv.positive_int, + vol.Required(CONF_HUB): cv.string, vol.Required(CONF_NAME): cv.string, vol.Required(CONF_SLAVE): cv.positive_int, vol.Required(CONF_TARGET_TEMP): cv.positive_int, @@ -60,7 +60,6 @@ vol.Optional(CONF_DATA_TYPE, default=DATA_TYPE_FLOAT): vol.In( [DATA_TYPE_INT, DATA_TYPE_UINT, DATA_TYPE_FLOAT] ), - vol.Optional(CONF_HUB, default=DEFAULT_HUB): cv.string, vol.Optional(CONF_PRECISION, default=1): cv.positive_int, vol.Optional(CONF_SCALE, default=1): vol.Coerce(float), vol.Optional(CONF_OFFSET, default=0): vol.Coerce(float), diff --git a/homeassistant/components/modbus/const.py b/homeassistant/components/modbus/const.py index c12c50cdc075be..fbaeb1910c8416 100644 --- a/homeassistant/components/modbus/const.py +++ b/homeassistant/components/modbus/const.py @@ -17,7 +17,6 @@ CONF_COILS = "coils" # integration names -DEFAULT_HUB = "default" MODBUS_DOMAIN = "modbus" # data types diff --git a/homeassistant/components/modbus/sensor.py b/homeassistant/components/modbus/sensor.py index 8bf5f6f3115593..43921934afd63c 100644 --- a/homeassistant/components/modbus/sensor.py +++ b/homeassistant/components/modbus/sensor.py @@ -36,7 +36,6 @@ DATA_TYPE_INT, DATA_TYPE_STRING, DATA_TYPE_UINT, - DEFAULT_HUB, MODBUS_DOMAIN, ) @@ -66,6 +65,7 @@ def number(value: Any) -> Union[int, float]: { vol.Required(CONF_REGISTERS): [ { + vol.Required(CONF_HUB): cv.string, vol.Required(CONF_NAME): cv.string, vol.Required(CONF_REGISTER): cv.positive_int, vol.Optional(CONF_COUNT, default=1): cv.positive_int, @@ -79,7 +79,6 @@ def number(value: Any) -> Union[int, float]: ] ), vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA, - vol.Optional(CONF_HUB, default=DEFAULT_HUB): cv.string, vol.Optional(CONF_OFFSET, default=0): number, vol.Optional(CONF_PRECISION, default=0): cv.positive_int, vol.Optional( diff --git a/homeassistant/components/modbus/services.yaml b/homeassistant/components/modbus/services.yaml index ba3113db5e037c..6b309a89893696 100644 --- a/homeassistant/components/modbus/services.yaml +++ b/homeassistant/components/modbus/services.yaml @@ -11,7 +11,7 @@ write_coil: description: Address of the modbus unit. example: 21 hub: - description: Optional Modbus hub name. A hub with the name 'default' is used if not specified. + description: Modbus hub name. example: "hub1" write_register: description: Write to a modbus holding register. @@ -26,5 +26,5 @@ write_register: description: Value (single value or array) to write. example: "0 or [4,0]" hub: - description: Optional Modbus hub name. A hub with the name 'default' is used if not specified. + description: Modbus hub name. example: "hub1" diff --git a/homeassistant/components/modbus/switch.py b/homeassistant/components/modbus/switch.py index 8037d926ef1f1f..55ec629abb733e 100644 --- a/homeassistant/components/modbus/switch.py +++ b/homeassistant/components/modbus/switch.py @@ -31,7 +31,6 @@ CONF_STATE_ON, CONF_VERIFY_REGISTER, CONF_VERIFY_STATE, - DEFAULT_HUB, MODBUS_DOMAIN, ) @@ -42,9 +41,9 @@ { vol.Required(CONF_COMMAND_OFF): cv.positive_int, vol.Required(CONF_COMMAND_ON): cv.positive_int, + vol.Required(CONF_HUB): cv.string, vol.Required(CONF_NAME): cv.string, vol.Required(CONF_REGISTER): cv.positive_int, - vol.Optional(CONF_HUB, default=DEFAULT_HUB): cv.string, vol.Optional(CONF_REGISTER_TYPE, default=CALL_TYPE_REGISTER_HOLDING): vol.In( [CALL_TYPE_REGISTER_HOLDING, CALL_TYPE_REGISTER_INPUT] ), @@ -59,9 +58,9 @@ COILS_SCHEMA = vol.Schema( { vol.Required(CALL_TYPE_COIL): cv.positive_int, + vol.Required(CONF_HUB): cv.string, vol.Required(CONF_NAME): cv.string, vol.Required(CONF_SLAVE): cv.positive_int, - vol.Optional(CONF_HUB, default=DEFAULT_HUB): cv.string, } ) diff --git a/homeassistant/components/stiebel_eltron/__init__.py b/homeassistant/components/stiebel_eltron/__init__.py index 3712b47671f94e..b6490e98e32129 100644 --- a/homeassistant/components/stiebel_eltron/__init__.py +++ b/homeassistant/components/stiebel_eltron/__init__.py @@ -5,7 +5,7 @@ from pystiebeleltron import pystiebeleltron import voluptuous as vol -from homeassistant.components.modbus.const import CONF_HUB, DEFAULT_HUB, MODBUS_DOMAIN +from homeassistant.components.modbus.const import CONF_HUB, MODBUS_DOMAIN from homeassistant.const import CONF_NAME, DEVICE_DEFAULT_NAME from homeassistant.helpers import discovery import homeassistant.helpers.config_validation as cv @@ -17,8 +17,8 @@ { DOMAIN: vol.Schema( { + vol.Required(CONF_HUB): cv.string, vol.Optional(CONF_NAME, default=DEVICE_DEFAULT_NAME): cv.string, - vol.Optional(CONF_HUB, default=DEFAULT_HUB): cv.string, } ) }, diff --git a/tests/components/modbus/conftest.py b/tests/components/modbus/conftest.py index 885aa5fc235a58..6c991c9860a21f 100644 --- a/tests/components/modbus/conftest.py +++ b/tests/components/modbus/conftest.py @@ -10,7 +10,6 @@ CONF_REGISTER, CONF_REGISTER_TYPE, CONF_REGISTERS, - DEFAULT_HUB, MODBUS_DOMAIN as DOMAIN, ) from homeassistant.const import CONF_NAME, CONF_PLATFORM, CONF_SCAN_INTERVAL @@ -19,6 +18,8 @@ from tests.common import MockModule, async_fire_time_changed, mock_integration +HUB_NAME = "hub" + _LOGGER = logging.getLogger(__name__) @@ -27,8 +28,8 @@ def mock_hub(hass): """Mock hub.""" mock_integration(hass, MockModule(DOMAIN)) hub = mock.MagicMock() - hub.name = "hub" - hass.data[DOMAIN] = {DEFAULT_HUB: hub} + hub.name = HUB_NAME + hass.data[DOMAIN] = {HUB_NAME: hub} return hub diff --git a/tests/components/modbus/test_modbus_sensor.py b/tests/components/modbus/test_modbus_sensor.py index ab4d745dc50a0f..2d6c8db4da4cd9 100644 --- a/tests/components/modbus/test_modbus_sensor.py +++ b/tests/components/modbus/test_modbus_sensor.py @@ -6,6 +6,7 @@ CALL_TYPE_REGISTER_INPUT, CONF_COUNT, CONF_DATA_TYPE, + CONF_HUB, CONF_OFFSET, CONF_PRECISION, CONF_REGISTER_TYPE, @@ -18,7 +19,7 @@ ) from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN -from .conftest import run_test +from .conftest import HUB_NAME, run_test _LOGGER = logging.getLogger(__name__) @@ -31,6 +32,7 @@ async def test_simple_word_register(hass, mock_hub): CONF_SCALE: 1, CONF_OFFSET: 0, CONF_PRECISION: 0, + CONF_HUB: HUB_NAME, } await run_test( hass, @@ -44,7 +46,9 @@ async def test_simple_word_register(hass, mock_hub): async def test_optional_conf_keys(hass, mock_hub): """Test handling of optional configuration keys.""" - register_config = {} + register_config = { + CONF_HUB: HUB_NAME, + } await run_test( hass, mock_hub, @@ -63,6 +67,7 @@ async def test_offset(hass, mock_hub): CONF_SCALE: 1, CONF_OFFSET: 13, CONF_PRECISION: 0, + CONF_HUB: HUB_NAME, } await run_test( hass, @@ -82,6 +87,7 @@ async def test_scale_and_offset(hass, mock_hub): CONF_SCALE: 3, CONF_OFFSET: 13, CONF_PRECISION: 0, + CONF_HUB: HUB_NAME, } await run_test( hass, @@ -101,6 +107,7 @@ async def test_ints_can_have_precision(hass, mock_hub): CONF_SCALE: 3, CONF_OFFSET: 13, CONF_PRECISION: 4, + CONF_HUB: HUB_NAME, } await run_test( hass, @@ -120,6 +127,7 @@ async def test_floats_get_rounded_correctly(hass, mock_hub): CONF_SCALE: 1.5, CONF_OFFSET: 0, CONF_PRECISION: 0, + CONF_HUB: HUB_NAME, } await run_test( hass, @@ -139,6 +147,7 @@ async def test_parameters_as_strings(hass, mock_hub): CONF_SCALE: "1.5", CONF_OFFSET: "5", CONF_PRECISION: "1", + CONF_HUB: HUB_NAME, } await run_test( hass, @@ -158,6 +167,7 @@ async def test_floating_point_scale(hass, mock_hub): CONF_SCALE: 2.4, CONF_OFFSET: 0, CONF_PRECISION: 2, + CONF_HUB: HUB_NAME, } await run_test( hass, @@ -177,6 +187,7 @@ async def test_floating_point_offset(hass, mock_hub): CONF_SCALE: 1, CONF_OFFSET: -10.3, CONF_PRECISION: 1, + CONF_HUB: HUB_NAME, } await run_test( hass, @@ -196,6 +207,7 @@ async def test_signed_two_word_register(hass, mock_hub): CONF_SCALE: 1, CONF_OFFSET: 0, CONF_PRECISION: 0, + CONF_HUB: HUB_NAME, } await run_test( hass, @@ -215,6 +227,7 @@ async def test_unsigned_two_word_register(hass, mock_hub): CONF_SCALE: 1, CONF_OFFSET: 0, CONF_PRECISION: 0, + CONF_HUB: HUB_NAME, } await run_test( hass, @@ -232,6 +245,7 @@ async def test_reversed(hass, mock_hub): CONF_COUNT: 2, CONF_DATA_TYPE: DATA_TYPE_UINT, CONF_REVERSE_ORDER: True, + CONF_HUB: HUB_NAME, } await run_test( hass, @@ -251,6 +265,7 @@ async def test_four_word_register(hass, mock_hub): CONF_SCALE: 1, CONF_OFFSET: 0, CONF_PRECISION: 0, + CONF_HUB: HUB_NAME, } await run_test( hass, @@ -270,6 +285,7 @@ async def test_four_word_register_precision_is_intact_with_int_params(hass, mock CONF_SCALE: 2, CONF_OFFSET: 3, CONF_PRECISION: 0, + CONF_HUB: HUB_NAME, } await run_test( hass, @@ -289,6 +305,7 @@ async def test_four_word_register_precision_is_lost_with_float_params(hass, mock CONF_SCALE: 2.0, CONF_OFFSET: 3.0, CONF_PRECISION: 0, + CONF_HUB: HUB_NAME, } await run_test( hass, @@ -309,6 +326,7 @@ async def test_two_word_input_register(hass, mock_hub): CONF_SCALE: 1, CONF_OFFSET: 0, CONF_PRECISION: 0, + CONF_HUB: HUB_NAME, } await run_test( hass, @@ -329,6 +347,7 @@ async def test_two_word_holding_register(hass, mock_hub): CONF_SCALE: 1, CONF_OFFSET: 0, CONF_PRECISION: 0, + CONF_HUB: HUB_NAME, } await run_test( hass, @@ -349,6 +368,7 @@ async def test_float_data_type(hass, mock_hub): CONF_SCALE: 1, CONF_OFFSET: 0, CONF_PRECISION: 5, + CONF_HUB: HUB_NAME, } await run_test( hass, @@ -369,6 +389,7 @@ async def test_string_data_type(hass, mock_hub): CONF_SCALE: 1, CONF_OFFSET: 0, CONF_PRECISION: 0, + CONF_HUB: HUB_NAME, } await run_test( hass,