mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 19:27:45 +00:00
Log an error if modbus Cover is not initialized correctly (#48829)
This commit is contained in:
parent
a968dea152
commit
05755c27f2
@ -2,6 +2,7 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
import logging
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from pymodbus.exceptions import ConnectionException, ModbusException
|
from pymodbus.exceptions import ConnectionException, ModbusException
|
||||||
@ -35,6 +36,8 @@ from .const import (
|
|||||||
)
|
)
|
||||||
from .modbus import ModbusHub
|
from .modbus import ModbusHub
|
||||||
|
|
||||||
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_platform(
|
async def async_setup_platform(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
@ -44,6 +47,11 @@ async def async_setup_platform(
|
|||||||
):
|
):
|
||||||
"""Read configuration and create Modbus cover."""
|
"""Read configuration and create Modbus cover."""
|
||||||
if discovery_info is None:
|
if discovery_info is None:
|
||||||
|
_LOGGER.warning(
|
||||||
|
"You're trying to init Modbus Cover in an unsupported way."
|
||||||
|
" Check https://www.home-assistant.io/integrations/modbus/#configuring-platform-cover"
|
||||||
|
" and fix your configuration"
|
||||||
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
covers = []
|
covers = []
|
||||||
|
@ -44,6 +44,7 @@ async def base_test(
|
|||||||
check_config_only=False,
|
check_config_only=False,
|
||||||
config_modbus=None,
|
config_modbus=None,
|
||||||
scan_interval=None,
|
scan_interval=None,
|
||||||
|
expect_init_to_fail=False,
|
||||||
):
|
):
|
||||||
"""Run test on device for given config."""
|
"""Run test on device for given config."""
|
||||||
|
|
||||||
@ -107,7 +108,10 @@ async def base_test(
|
|||||||
if config_device is not None:
|
if config_device is not None:
|
||||||
entity_id = f"{entity_domain}.{device_name}"
|
entity_id = f"{entity_domain}.{device_name}"
|
||||||
device = hass.states.get(entity_id)
|
device = hass.states.get(entity_id)
|
||||||
if device is None:
|
|
||||||
|
if expect_init_to_fail:
|
||||||
|
assert device is None
|
||||||
|
elif device is None:
|
||||||
pytest.fail("CONFIG failed, see output")
|
pytest.fail("CONFIG failed, see output")
|
||||||
if check_config_only:
|
if check_config_only:
|
||||||
return
|
return
|
||||||
@ -132,6 +136,7 @@ async def base_config_test(
|
|||||||
array_name_old_config,
|
array_name_old_config,
|
||||||
method_discovery=False,
|
method_discovery=False,
|
||||||
config_modbus=None,
|
config_modbus=None,
|
||||||
|
expect_init_to_fail=False,
|
||||||
):
|
):
|
||||||
"""Check config of device for given config."""
|
"""Check config of device for given config."""
|
||||||
|
|
||||||
@ -147,4 +152,5 @@ async def base_config_test(
|
|||||||
method_discovery=method_discovery,
|
method_discovery=method_discovery,
|
||||||
check_config_only=True,
|
check_config_only=True,
|
||||||
config_modbus=config_modbus,
|
config_modbus=config_modbus,
|
||||||
|
expect_init_to_fail=expect_init_to_fail,
|
||||||
)
|
)
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
"""The tests for the Modbus cover component."""
|
"""The tests for the Modbus cover component."""
|
||||||
|
import logging
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from homeassistant.components.cover import DOMAIN as COVER_DOMAIN
|
from homeassistant.components.cover import DOMAIN as COVER_DOMAIN
|
||||||
@ -117,7 +119,7 @@ async def test_coil_cover(hass, regs, expected):
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_register_COVER(hass, regs, expected):
|
async def test_register_cover(hass, regs, expected):
|
||||||
"""Run test for given config."""
|
"""Run test for given config."""
|
||||||
cover_name = "modbus_test_cover"
|
cover_name = "modbus_test_cover"
|
||||||
state = await base_test(
|
state = await base_test(
|
||||||
@ -137,3 +139,32 @@ async def test_register_COVER(hass, regs, expected):
|
|||||||
scan_interval=5,
|
scan_interval=5,
|
||||||
)
|
)
|
||||||
assert state == expected
|
assert state == expected
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("read_type", [CALL_TYPE_COIL, CONF_REGISTER])
|
||||||
|
async def test_unsupported_config_cover(hass, read_type, caplog):
|
||||||
|
"""
|
||||||
|
Run test for cover.
|
||||||
|
|
||||||
|
Initialize the Cover in the legacy manner via platform.
|
||||||
|
This test expects that the Cover won't be initialized, and that we get a config warning.
|
||||||
|
"""
|
||||||
|
device_name = "test_cover"
|
||||||
|
device_config = {CONF_NAME: device_name, read_type: 1234}
|
||||||
|
|
||||||
|
caplog.set_level(logging.WARNING)
|
||||||
|
caplog.clear()
|
||||||
|
|
||||||
|
await base_config_test(
|
||||||
|
hass,
|
||||||
|
device_config,
|
||||||
|
device_name,
|
||||||
|
COVER_DOMAIN,
|
||||||
|
CONF_COVERS,
|
||||||
|
None,
|
||||||
|
method_discovery=False,
|
||||||
|
expect_init_to_fail=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
assert len(caplog.records) == 1
|
||||||
|
assert caplog.records[0].levelname == "WARNING"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user