set common test entity name. (#54697)

This commit is contained in:
jan iversen 2021-08-17 20:43:27 +02:00 committed by GitHub
parent 8bf79d61ee
commit 71b0f6d095
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 226 additions and 198 deletions

View File

@ -7,7 +7,11 @@ from unittest import mock
from pymodbus.exceptions import ModbusException
import pytest
from homeassistant.components.modbus.const import DEFAULT_HUB, MODBUS_DOMAIN as DOMAIN
from homeassistant.components.modbus.const import (
CONF_TCP,
DEFAULT_HUB,
MODBUS_DOMAIN as DOMAIN,
)
from homeassistant.const import (
CONF_HOST,
CONF_NAME,
@ -22,6 +26,11 @@ import homeassistant.util.dt as dt_util
from tests.common import async_fire_time_changed, mock_restore_cache
TEST_MODBUS_NAME = "modbusTest"
TEST_ENTITY_NAME = "test_entity"
TEST_MODBUS_HOST = "modbusHost"
TEST_PORT_TCP = 5501
TEST_PORT_SERIAL = "usb01"
_LOGGER = logging.getLogger(__name__)
@ -62,9 +71,9 @@ async def mock_modbus(hass, caplog, request, do_config):
config = {
DOMAIN: [
{
CONF_TYPE: "tcp",
CONF_HOST: "modbusTestHost",
CONF_PORT: 5501,
CONF_TYPE: CONF_TCP,
CONF_HOST: TEST_MODBUS_HOST,
CONF_PORT: TEST_PORT_TCP,
CONF_NAME: TEST_MODBUS_NAME,
**do_config,
}
@ -122,9 +131,9 @@ async def base_test(
config_modbus = {
DOMAIN: {
CONF_NAME: DEFAULT_HUB,
CONF_TYPE: "tcp",
CONF_HOST: "modbusTest",
CONF_PORT: 5001,
CONF_TYPE: CONF_TCP,
CONF_HOST: TEST_MODBUS_HOST,
CONF_PORT: TEST_PORT_TCP,
},
}

View File

@ -20,10 +20,9 @@ from homeassistant.const import (
)
from homeassistant.core import State
from .conftest import ReadResult, base_test
from .conftest import TEST_ENTITY_NAME, ReadResult, base_test
SENSOR_NAME = "test_binary_sensor"
ENTITY_ID = f"{SENSOR_DOMAIN}.{SENSOR_NAME}"
ENTITY_ID = f"{SENSOR_DOMAIN}.{TEST_ENTITY_NAME}"
@pytest.mark.parametrize(
@ -32,7 +31,7 @@ ENTITY_ID = f"{SENSOR_DOMAIN}.{SENSOR_NAME}"
{
CONF_BINARY_SENSORS: [
{
CONF_NAME: SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 51,
}
]
@ -40,7 +39,7 @@ ENTITY_ID = f"{SENSOR_DOMAIN}.{SENSOR_NAME}"
{
CONF_BINARY_SENSORS: [
{
CONF_NAME: SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 51,
CONF_SLAVE: 10,
CONF_INPUT_TYPE: CALL_TYPE_DISCRETE,
@ -89,8 +88,8 @@ async def test_all_binary_sensor(hass, do_type, regs, expected):
"""Run test for given config."""
state = await base_test(
hass,
{CONF_NAME: SENSOR_NAME, CONF_ADDRESS: 1234, CONF_INPUT_TYPE: do_type},
SENSOR_NAME,
{CONF_NAME: TEST_ENTITY_NAME, CONF_ADDRESS: 1234, CONF_INPUT_TYPE: do_type},
TEST_ENTITY_NAME,
SENSOR_DOMAIN,
CONF_BINARY_SENSORS,
None,
@ -108,7 +107,7 @@ async def test_all_binary_sensor(hass, do_type, regs, expected):
{
CONF_BINARY_SENSORS: [
{
CONF_NAME: SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_INPUT_TYPE: CALL_TYPE_COIL,
}
@ -144,7 +143,7 @@ async def test_service_binary_sensor_update(hass, mock_modbus, mock_ha):
{
CONF_BINARY_SENSORS: [
{
CONF_NAME: SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 51,
CONF_SCAN_INTERVAL: 0,
}

View File

@ -22,10 +22,9 @@ from homeassistant.const import (
)
from homeassistant.core import State
from .conftest import ReadResult, base_test
from .conftest import TEST_ENTITY_NAME, ReadResult, base_test
CLIMATE_NAME = "test_climate"
ENTITY_ID = f"{CLIMATE_DOMAIN}.{CLIMATE_NAME}"
ENTITY_ID = f"{CLIMATE_DOMAIN}.{TEST_ENTITY_NAME}"
@pytest.mark.parametrize(
@ -34,7 +33,7 @@ ENTITY_ID = f"{CLIMATE_DOMAIN}.{CLIMATE_NAME}"
{
CONF_CLIMATES: [
{
CONF_NAME: CLIMATE_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_TARGET_TEMP: 117,
CONF_ADDRESS: 117,
CONF_SLAVE: 10,
@ -44,7 +43,7 @@ ENTITY_ID = f"{CLIMATE_DOMAIN}.{CLIMATE_NAME}"
{
CONF_CLIMATES: [
{
CONF_NAME: CLIMATE_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_TARGET_TEMP: 117,
CONF_ADDRESS: 117,
CONF_SLAVE: 10,
@ -71,18 +70,17 @@ async def test_config_climate(hass, mock_modbus):
)
async def test_temperature_climate(hass, regs, expected):
"""Run test for given config."""
CLIMATE_NAME = "modbus_test_climate"
return
state = await base_test(
hass,
{
CONF_NAME: CLIMATE_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_SLAVE: 1,
CONF_TARGET_TEMP: 117,
CONF_ADDRESS: 117,
CONF_COUNT: 2,
},
CLIMATE_NAME,
TEST_ENTITY_NAME,
CLIMATE_DOMAIN,
CONF_CLIMATES,
None,
@ -100,7 +98,7 @@ async def test_temperature_climate(hass, regs, expected):
{
CONF_CLIMATES: [
{
CONF_NAME: CLIMATE_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_TARGET_TEMP: 117,
CONF_ADDRESS: 117,
CONF_SLAVE: 10,
@ -127,7 +125,7 @@ async def test_service_climate_update(hass, mock_modbus, mock_ha):
{
CONF_CLIMATES: [
{
CONF_NAME: CLIMATE_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_TARGET_TEMP: 117,
CONF_ADDRESS: 117,
CONF_SLAVE: 10,
@ -142,7 +140,7 @@ async def test_service_climate_update(hass, mock_modbus, mock_ha):
{
CONF_CLIMATES: [
{
CONF_NAME: CLIMATE_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_TARGET_TEMP: 117,
CONF_ADDRESS: 117,
CONF_SLAVE: 10,
@ -157,7 +155,7 @@ async def test_service_climate_update(hass, mock_modbus, mock_ha):
{
CONF_CLIMATES: [
{
CONF_NAME: CLIMATE_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_TARGET_TEMP: 117,
CONF_ADDRESS: 117,
CONF_SLAVE: 10,
@ -172,7 +170,7 @@ async def test_service_climate_update(hass, mock_modbus, mock_ha):
{
CONF_CLIMATES: [
{
CONF_NAME: CLIMATE_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_TARGET_TEMP: 117,
CONF_ADDRESS: 117,
CONF_SLAVE: 10,
@ -214,7 +212,7 @@ test_value.attributes = {ATTR_TEMPERATURE: 37}
{
CONF_CLIMATES: [
{
CONF_NAME: CLIMATE_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_TARGET_TEMP: 117,
CONF_ADDRESS: 117,
CONF_SCAN_INTERVAL: 0,

View File

@ -29,10 +29,9 @@ from homeassistant.const import (
)
from homeassistant.core import State
from .conftest import ReadResult, base_test
from .conftest import TEST_ENTITY_NAME, ReadResult, base_test
COVER_NAME = "test_cover"
ENTITY_ID = f"{COVER_DOMAIN}.{COVER_NAME}"
ENTITY_ID = f"{COVER_DOMAIN}.{TEST_ENTITY_NAME}"
@pytest.mark.parametrize(
@ -41,7 +40,7 @@ ENTITY_ID = f"{COVER_DOMAIN}.{COVER_NAME}"
{
CONF_COVERS: [
{
CONF_NAME: COVER_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_INPUT_TYPE: CALL_TYPE_COIL,
}
@ -50,7 +49,7 @@ ENTITY_ID = f"{COVER_DOMAIN}.{COVER_NAME}"
{
CONF_COVERS: [
{
CONF_NAME: COVER_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_INPUT_TYPE: CALL_TYPE_REGISTER_HOLDING,
CONF_SLAVE: 10,
@ -95,12 +94,12 @@ async def test_coil_cover(hass, regs, expected):
state = await base_test(
hass,
{
CONF_NAME: COVER_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_INPUT_TYPE: CALL_TYPE_COIL,
CONF_ADDRESS: 1234,
CONF_SLAVE: 1,
},
COVER_NAME,
TEST_ENTITY_NAME,
COVER_DOMAIN,
CONF_COVERS,
None,
@ -142,11 +141,11 @@ async def test_register_cover(hass, regs, expected):
state = await base_test(
hass,
{
CONF_NAME: COVER_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_SLAVE: 1,
},
COVER_NAME,
TEST_ENTITY_NAME,
COVER_DOMAIN,
CONF_COVERS,
None,
@ -164,7 +163,7 @@ async def test_register_cover(hass, regs, expected):
{
CONF_COVERS: [
{
CONF_NAME: COVER_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_STATUS_REGISTER_TYPE: CALL_TYPE_REGISTER_HOLDING,
}
@ -201,7 +200,7 @@ async def test_service_cover_update(hass, mock_modbus, mock_ha):
{
CONF_COVERS: [
{
CONF_NAME: COVER_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_INPUT_TYPE: CALL_TYPE_COIL,
CONF_ADDRESS: 1234,
CONF_STATE_OPEN: 1,
@ -228,13 +227,13 @@ async def test_restore_state_cover(hass, mock_test_state, mock_modbus):
{
CONF_COVERS: [
{
CONF_NAME: COVER_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_STATUS_REGISTER_TYPE: CALL_TYPE_REGISTER_HOLDING,
CONF_SCAN_INTERVAL: 0,
},
{
CONF_NAME: f"{COVER_NAME}2",
CONF_NAME: f"{TEST_ENTITY_NAME}2",
CONF_INPUT_TYPE: CALL_TYPE_COIL,
CONF_ADDRESS: 1234,
CONF_SCAN_INTERVAL: 0,

View File

@ -12,6 +12,7 @@ from homeassistant.components.modbus.const import (
CONF_INPUT_TYPE,
CONF_STATE_OFF,
CONF_STATE_ON,
CONF_TCP,
CONF_VERIFY,
CONF_WRITE_TYPE,
MODBUS_DOMAIN,
@ -33,10 +34,15 @@ from homeassistant.const import (
from homeassistant.core import State
from homeassistant.setup import async_setup_component
from .conftest import ReadResult, base_test
from .conftest import (
TEST_ENTITY_NAME,
TEST_MODBUS_HOST,
TEST_PORT_TCP,
ReadResult,
base_test,
)
FAN_NAME = "test_fan"
ENTITY_ID = f"{FAN_DOMAIN}.{FAN_NAME}"
ENTITY_ID = f"{FAN_DOMAIN}.{TEST_ENTITY_NAME}"
@pytest.mark.parametrize(
@ -45,7 +51,7 @@ ENTITY_ID = f"{FAN_DOMAIN}.{FAN_NAME}"
{
CONF_FANS: [
{
CONF_NAME: FAN_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
}
]
@ -53,7 +59,7 @@ ENTITY_ID = f"{FAN_DOMAIN}.{FAN_NAME}"
{
CONF_FANS: [
{
CONF_NAME: FAN_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_WRITE_TYPE: CALL_TYPE_COIL,
}
@ -62,7 +68,7 @@ ENTITY_ID = f"{FAN_DOMAIN}.{FAN_NAME}"
{
CONF_FANS: [
{
CONF_NAME: FAN_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_SLAVE: 1,
CONF_COMMAND_OFF: 0x00,
@ -79,7 +85,7 @@ ENTITY_ID = f"{FAN_DOMAIN}.{FAN_NAME}"
{
CONF_FANS: [
{
CONF_NAME: FAN_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_SLAVE: 1,
CONF_COMMAND_OFF: 0x00,
@ -96,7 +102,7 @@ ENTITY_ID = f"{FAN_DOMAIN}.{FAN_NAME}"
{
CONF_FANS: [
{
CONF_NAME: FAN_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_SLAVE: 1,
CONF_COMMAND_OFF: 0x00,
@ -113,7 +119,7 @@ ENTITY_ID = f"{FAN_DOMAIN}.{FAN_NAME}"
{
CONF_FANS: [
{
CONF_NAME: FAN_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_SLAVE: 1,
CONF_COMMAND_OFF: 0x00,
@ -165,13 +171,13 @@ async def test_all_fan(hass, call_type, regs, verify, expected):
state = await base_test(
hass,
{
CONF_NAME: FAN_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_SLAVE: 1,
CONF_WRITE_TYPE: call_type,
**verify,
},
FAN_NAME,
TEST_ENTITY_NAME,
FAN_DOMAIN,
CONF_FANS,
None,
@ -194,7 +200,7 @@ async def test_all_fan(hass, call_type, regs, verify, expected):
{
CONF_FANS: [
{
CONF_NAME: FAN_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_SCAN_INTERVAL: 0,
}
@ -210,21 +216,21 @@ async def test_restore_state_fan(hass, mock_test_state, mock_modbus):
async def test_fan_service_turn(hass, caplog, mock_pymodbus):
"""Run test for service turn_on/turn_off."""
ENTITY_ID2 = f"{FAN_DOMAIN}.{FAN_NAME}2"
ENTITY_ID2 = f"{FAN_DOMAIN}.{TEST_ENTITY_NAME}2"
config = {
MODBUS_DOMAIN: {
CONF_TYPE: "tcp",
CONF_HOST: "modbusTestHost",
CONF_PORT: 5501,
CONF_TYPE: CONF_TCP,
CONF_HOST: TEST_MODBUS_HOST,
CONF_PORT: TEST_PORT_TCP,
CONF_FANS: [
{
CONF_NAME: FAN_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 17,
CONF_WRITE_TYPE: CALL_TYPE_REGISTER_HOLDING,
CONF_SCAN_INTERVAL: 0,
},
{
CONF_NAME: f"{FAN_NAME}2",
CONF_NAME: f"{TEST_ENTITY_NAME}2",
CONF_ADDRESS: 17,
CONF_WRITE_TYPE: CALL_TYPE_REGISTER_HOLDING,
CONF_SCAN_INTERVAL: 0,
@ -283,7 +289,7 @@ async def test_fan_service_turn(hass, caplog, mock_pymodbus):
{
CONF_FANS: [
{
CONF_NAME: FAN_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_WRITE_TYPE: CALL_TYPE_COIL,
CONF_VERIFY: {},

View File

@ -42,10 +42,14 @@ from homeassistant.components.modbus.const import (
CONF_INPUT_TYPE,
CONF_MSG_WAIT,
CONF_PARITY,
CONF_RTUOVERTCP,
CONF_SERIAL,
CONF_STOPBITS,
CONF_SWAP,
CONF_SWAP_BYTE,
CONF_SWAP_WORD,
CONF_TCP,
CONF_UDP,
DATA_TYPE_CUSTOM,
DATA_TYPE_INT,
DATA_TYPE_STRING,
@ -79,15 +83,17 @@ from homeassistant.const import (
from homeassistant.setup import async_setup_component
import homeassistant.util.dt as dt_util
from .conftest import ReadResult
from .conftest import (
TEST_ENTITY_NAME,
TEST_MODBUS_HOST,
TEST_MODBUS_NAME,
TEST_PORT_SERIAL,
TEST_PORT_TCP,
ReadResult,
)
from tests.common import async_fire_time_changed
TEST_SENSOR_NAME = "testSensor"
TEST_ENTITY_ID = f"{SENSOR_DOMAIN}.{TEST_SENSOR_NAME}"
TEST_HOST = "modbusTestHost"
TEST_MODBUS_NAME = "modbusTest"
@pytest.fixture
async def mock_modbus_with_pymodbus(hass, caplog, do_config, mock_pymodbus):
@ -128,17 +134,17 @@ async def test_number_validator():
"do_config",
[
{
CONF_NAME: TEST_SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_COUNT: 2,
CONF_DATA_TYPE: DATA_TYPE_STRING,
},
{
CONF_NAME: TEST_SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_COUNT: 2,
CONF_DATA_TYPE: DATA_TYPE_INT,
},
{
CONF_NAME: TEST_SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_COUNT: 2,
CONF_DATA_TYPE: DATA_TYPE_INT,
CONF_SWAP: CONF_SWAP_BYTE,
@ -157,29 +163,29 @@ async def test_ok_struct_validator(do_config):
"do_config",
[
{
CONF_NAME: TEST_SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_COUNT: 8,
CONF_DATA_TYPE: DATA_TYPE_INT,
},
{
CONF_NAME: TEST_SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_COUNT: 8,
CONF_DATA_TYPE: DATA_TYPE_CUSTOM,
},
{
CONF_NAME: TEST_SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_COUNT: 8,
CONF_DATA_TYPE: DATA_TYPE_CUSTOM,
CONF_STRUCTURE: "no good",
},
{
CONF_NAME: TEST_SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_COUNT: 20,
CONF_DATA_TYPE: DATA_TYPE_CUSTOM,
CONF_STRUCTURE: ">f",
},
{
CONF_NAME: TEST_SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_COUNT: 1,
CONF_DATA_TYPE: DATA_TYPE_CUSTOM,
CONF_STRUCTURE: ">f",
@ -200,60 +206,60 @@ async def test_exception_struct_validator(do_config):
"do_config",
[
{
CONF_TYPE: "tcp",
CONF_HOST: TEST_HOST,
CONF_PORT: 5501,
CONF_TYPE: CONF_TCP,
CONF_HOST: TEST_MODBUS_HOST,
CONF_PORT: TEST_PORT_TCP,
},
{
CONF_TYPE: "tcp",
CONF_HOST: TEST_HOST,
CONF_PORT: 5501,
CONF_TYPE: CONF_TCP,
CONF_HOST: TEST_MODBUS_HOST,
CONF_PORT: TEST_PORT_TCP,
CONF_NAME: TEST_MODBUS_NAME,
CONF_TIMEOUT: 30,
CONF_DELAY: 10,
},
{
CONF_TYPE: "udp",
CONF_HOST: TEST_HOST,
CONF_PORT: 5501,
CONF_TYPE: CONF_UDP,
CONF_HOST: TEST_MODBUS_HOST,
CONF_PORT: TEST_PORT_TCP,
},
{
CONF_TYPE: "udp",
CONF_HOST: TEST_HOST,
CONF_PORT: 5501,
CONF_TYPE: CONF_UDP,
CONF_HOST: TEST_MODBUS_HOST,
CONF_PORT: TEST_PORT_TCP,
CONF_NAME: TEST_MODBUS_NAME,
CONF_TIMEOUT: 30,
CONF_DELAY: 10,
},
{
CONF_TYPE: "rtuovertcp",
CONF_HOST: TEST_HOST,
CONF_PORT: 5501,
CONF_TYPE: CONF_RTUOVERTCP,
CONF_HOST: TEST_MODBUS_HOST,
CONF_PORT: TEST_PORT_TCP,
},
{
CONF_TYPE: "rtuovertcp",
CONF_HOST: TEST_HOST,
CONF_PORT: 5501,
CONF_TYPE: CONF_RTUOVERTCP,
CONF_HOST: TEST_MODBUS_HOST,
CONF_PORT: TEST_PORT_TCP,
CONF_NAME: TEST_MODBUS_NAME,
CONF_TIMEOUT: 30,
CONF_DELAY: 10,
},
{
CONF_TYPE: "serial",
CONF_TYPE: CONF_SERIAL,
CONF_BAUDRATE: 9600,
CONF_BYTESIZE: 8,
CONF_METHOD: "rtu",
CONF_PORT: "usb01",
CONF_PORT: TEST_PORT_SERIAL,
CONF_PARITY: "E",
CONF_STOPBITS: 1,
CONF_MSG_WAIT: 100,
},
{
CONF_TYPE: "serial",
CONF_TYPE: CONF_SERIAL,
CONF_BAUDRATE: 9600,
CONF_BYTESIZE: 8,
CONF_METHOD: "rtu",
CONF_PORT: "usb01",
CONF_PORT: TEST_PORT_SERIAL,
CONF_PARITY: "E",
CONF_STOPBITS: 1,
CONF_NAME: TEST_MODBUS_NAME,
@ -261,43 +267,43 @@ async def test_exception_struct_validator(do_config):
CONF_DELAY: 10,
},
{
CONF_TYPE: "tcp",
CONF_HOST: TEST_HOST,
CONF_PORT: 5501,
CONF_TYPE: CONF_TCP,
CONF_HOST: TEST_MODBUS_HOST,
CONF_PORT: TEST_PORT_TCP,
CONF_DELAY: 5,
},
[
{
CONF_TYPE: "tcp",
CONF_HOST: TEST_HOST,
CONF_PORT: 5501,
CONF_TYPE: CONF_TCP,
CONF_HOST: TEST_MODBUS_HOST,
CONF_PORT: TEST_PORT_TCP,
CONF_NAME: TEST_MODBUS_NAME,
},
{
CONF_TYPE: "tcp",
CONF_HOST: TEST_HOST,
CONF_PORT: 5501,
CONF_NAME: TEST_MODBUS_NAME + "2",
CONF_TYPE: CONF_TCP,
CONF_HOST: TEST_MODBUS_HOST,
CONF_PORT: TEST_PORT_TCP,
CONF_NAME: f"{TEST_MODBUS_NAME}2",
},
{
CONF_TYPE: "serial",
CONF_TYPE: CONF_SERIAL,
CONF_BAUDRATE: 9600,
CONF_BYTESIZE: 8,
CONF_METHOD: "rtu",
CONF_PORT: "usb01",
CONF_PORT: TEST_PORT_SERIAL,
CONF_PARITY: "E",
CONF_STOPBITS: 1,
CONF_NAME: TEST_MODBUS_NAME + "3",
CONF_NAME: f"{TEST_MODBUS_NAME}3",
},
],
{
# Special test for scan_interval validator with scan_interval: 0
CONF_TYPE: "tcp",
CONF_HOST: TEST_HOST,
CONF_PORT: 5501,
CONF_TYPE: CONF_TCP,
CONF_HOST: TEST_MODBUS_HOST,
CONF_PORT: TEST_PORT_TCP,
CONF_SENSORS: [
{
CONF_NAME: TEST_SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 117,
CONF_SCAN_INTERVAL: 0,
}
@ -320,11 +326,11 @@ SERVICE = "service"
[
{
CONF_NAME: TEST_MODBUS_NAME,
CONF_TYPE: "serial",
CONF_TYPE: CONF_SERIAL,
CONF_BAUDRATE: 9600,
CONF_BYTESIZE: 8,
CONF_METHOD: "rtu",
CONF_PORT: "usb01",
CONF_PORT: TEST_PORT_SERIAL,
CONF_PARITY: "E",
CONF_STOPBITS: 1,
},
@ -425,14 +431,14 @@ async def mock_modbus_read_pymodbus(
config = {
DOMAIN: [
{
CONF_TYPE: "tcp",
CONF_HOST: TEST_HOST,
CONF_PORT: 5501,
CONF_TYPE: CONF_TCP,
CONF_HOST: TEST_MODBUS_HOST,
CONF_PORT: TEST_PORT_TCP,
CONF_NAME: TEST_MODBUS_NAME,
do_group: [
{
CONF_INPUT_TYPE: do_type,
CONF_NAME: TEST_SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 51,
CONF_SCAN_INTERVAL: do_scan_interval,
}
@ -482,7 +488,7 @@ async def test_pb_read(
"""Run test for different read."""
# Check state
entity_id = f"{do_domain}.{TEST_SENSOR_NAME}"
entity_id = f"{do_domain}.{TEST_ENTITY_NAME}"
state = hass.states.get(entity_id).state
assert hass.states.get(entity_id).state
@ -499,9 +505,9 @@ async def test_pymodbus_constructor_fail(hass, caplog):
config = {
DOMAIN: [
{
CONF_TYPE: "tcp",
CONF_HOST: TEST_HOST,
CONF_PORT: 5501,
CONF_TYPE: CONF_TCP,
CONF_HOST: TEST_MODBUS_HOST,
CONF_PORT: TEST_PORT_TCP,
}
]
}
@ -522,9 +528,9 @@ async def test_pymodbus_close_fail(hass, caplog, mock_pymodbus):
config = {
DOMAIN: [
{
CONF_TYPE: "tcp",
CONF_HOST: TEST_HOST,
CONF_PORT: 5501,
CONF_TYPE: CONF_TCP,
CONF_HOST: TEST_MODBUS_HOST,
CONF_PORT: TEST_PORT_TCP,
}
]
}
@ -543,19 +549,19 @@ async def test_delay(hass, mock_pymodbus):
# We "hijiack" a binary_sensor to make a proper blackbox test.
test_delay = 15
test_scan_interval = 5
entity_id = f"{BINARY_SENSOR_DOMAIN}.{TEST_SENSOR_NAME}"
entity_id = f"{BINARY_SENSOR_DOMAIN}.{TEST_ENTITY_NAME}"
config = {
DOMAIN: [
{
CONF_TYPE: "tcp",
CONF_HOST: TEST_HOST,
CONF_PORT: 5501,
CONF_TYPE: CONF_TCP,
CONF_HOST: TEST_MODBUS_HOST,
CONF_PORT: TEST_PORT_TCP,
CONF_NAME: TEST_MODBUS_NAME,
CONF_DELAY: test_delay,
CONF_BINARY_SENSORS: [
{
CONF_INPUT_TYPE: CALL_TYPE_COIL,
CONF_NAME: f"{TEST_SENSOR_NAME}",
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 52,
CONF_SCAN_INTERVAL: test_scan_interval,
},

View File

@ -11,6 +11,7 @@ from homeassistant.components.modbus.const import (
CONF_INPUT_TYPE,
CONF_STATE_OFF,
CONF_STATE_ON,
CONF_TCP,
CONF_VERIFY,
CONF_WRITE_TYPE,
MODBUS_DOMAIN,
@ -33,10 +34,15 @@ from homeassistant.const import (
from homeassistant.core import State
from homeassistant.setup import async_setup_component
from .conftest import ReadResult, base_test
from .conftest import (
TEST_ENTITY_NAME,
TEST_MODBUS_HOST,
TEST_PORT_TCP,
ReadResult,
base_test,
)
LIGHT_NAME = "test_light"
ENTITY_ID = f"{LIGHT_DOMAIN}.{LIGHT_NAME}"
ENTITY_ID = f"{LIGHT_DOMAIN}.{TEST_ENTITY_NAME}"
@pytest.mark.parametrize(
@ -45,7 +51,7 @@ ENTITY_ID = f"{LIGHT_DOMAIN}.{LIGHT_NAME}"
{
CONF_LIGHTS: [
{
CONF_NAME: LIGHT_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
}
]
@ -53,7 +59,7 @@ ENTITY_ID = f"{LIGHT_DOMAIN}.{LIGHT_NAME}"
{
CONF_LIGHTS: [
{
CONF_NAME: LIGHT_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_WRITE_TYPE: CALL_TYPE_COIL,
}
@ -62,7 +68,7 @@ ENTITY_ID = f"{LIGHT_DOMAIN}.{LIGHT_NAME}"
{
CONF_LIGHTS: [
{
CONF_NAME: LIGHT_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_SLAVE: 1,
CONF_COMMAND_OFF: 0x00,
@ -79,7 +85,7 @@ ENTITY_ID = f"{LIGHT_DOMAIN}.{LIGHT_NAME}"
{
CONF_LIGHTS: [
{
CONF_NAME: LIGHT_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_SLAVE: 1,
CONF_COMMAND_OFF: 0x00,
@ -96,7 +102,7 @@ ENTITY_ID = f"{LIGHT_DOMAIN}.{LIGHT_NAME}"
{
CONF_LIGHTS: [
{
CONF_NAME: LIGHT_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_SLAVE: 1,
CONF_COMMAND_OFF: 0x00,
@ -113,7 +119,7 @@ ENTITY_ID = f"{LIGHT_DOMAIN}.{LIGHT_NAME}"
{
CONF_LIGHTS: [
{
CONF_NAME: LIGHT_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_SLAVE: 1,
CONF_COMMAND_OFF: 0x00,
@ -165,13 +171,13 @@ async def test_all_light(hass, call_type, regs, verify, expected):
state = await base_test(
hass,
{
CONF_NAME: LIGHT_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_SLAVE: 1,
CONF_WRITE_TYPE: call_type,
**verify,
},
LIGHT_NAME,
TEST_ENTITY_NAME,
LIGHT_DOMAIN,
CONF_LIGHTS,
None,
@ -194,7 +200,7 @@ async def test_all_light(hass, call_type, regs, verify, expected):
{
CONF_LIGHTS: [
{
CONF_NAME: LIGHT_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_SCAN_INTERVAL: 0,
}
@ -213,18 +219,18 @@ async def test_light_service_turn(hass, caplog, mock_pymodbus):
ENTITY_ID2 = f"{ENTITY_ID}2"
config = {
MODBUS_DOMAIN: {
CONF_TYPE: "tcp",
CONF_HOST: "modbusTestHost",
CONF_PORT: 5501,
CONF_TYPE: CONF_TCP,
CONF_HOST: TEST_MODBUS_HOST,
CONF_PORT: TEST_PORT_TCP,
CONF_LIGHTS: [
{
CONF_NAME: LIGHT_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 17,
CONF_WRITE_TYPE: CALL_TYPE_REGISTER_HOLDING,
CONF_SCAN_INTERVAL: 0,
},
{
CONF_NAME: f"{LIGHT_NAME}2",
CONF_NAME: f"{TEST_ENTITY_NAME}2",
CONF_ADDRESS: 17,
CONF_WRITE_TYPE: CALL_TYPE_REGISTER_HOLDING,
CONF_SCAN_INTERVAL: 0,
@ -283,7 +289,7 @@ async def test_light_service_turn(hass, caplog, mock_pymodbus):
{
CONF_LIGHTS: [
{
CONF_NAME: LIGHT_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_WRITE_TYPE: CALL_TYPE_COIL,
CONF_VERIFY: {},

View File

@ -35,10 +35,9 @@ from homeassistant.const import (
)
from homeassistant.core import State
from .conftest import ReadResult, base_test
from .conftest import TEST_ENTITY_NAME, ReadResult, base_test
SENSOR_NAME = "test_sensor"
ENTITY_ID = f"{SENSOR_DOMAIN}.{SENSOR_NAME}"
ENTITY_ID = f"{SENSOR_DOMAIN}.{TEST_ENTITY_NAME}"
@pytest.mark.parametrize(
@ -47,7 +46,7 @@ ENTITY_ID = f"{SENSOR_DOMAIN}.{SENSOR_NAME}"
{
CONF_SENSORS: [
{
CONF_NAME: SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 51,
}
]
@ -55,7 +54,7 @@ ENTITY_ID = f"{SENSOR_DOMAIN}.{SENSOR_NAME}"
{
CONF_SENSORS: [
{
CONF_NAME: SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 51,
CONF_SLAVE: 10,
CONF_COUNT: 1,
@ -71,7 +70,7 @@ ENTITY_ID = f"{SENSOR_DOMAIN}.{SENSOR_NAME}"
{
CONF_SENSORS: [
{
CONF_NAME: SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 51,
CONF_SLAVE: 10,
CONF_COUNT: 1,
@ -87,7 +86,7 @@ ENTITY_ID = f"{SENSOR_DOMAIN}.{SENSOR_NAME}"
{
CONF_SENSORS: [
{
CONF_NAME: SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 51,
CONF_COUNT: 1,
CONF_SWAP: CONF_SWAP_NONE,
@ -97,7 +96,7 @@ ENTITY_ID = f"{SENSOR_DOMAIN}.{SENSOR_NAME}"
{
CONF_SENSORS: [
{
CONF_NAME: SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 51,
CONF_COUNT: 1,
CONF_SWAP: CONF_SWAP_BYTE,
@ -107,7 +106,7 @@ ENTITY_ID = f"{SENSOR_DOMAIN}.{SENSOR_NAME}"
{
CONF_SENSORS: [
{
CONF_NAME: SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 51,
CONF_COUNT: 2,
CONF_SWAP: CONF_SWAP_WORD,
@ -117,7 +116,7 @@ ENTITY_ID = f"{SENSOR_DOMAIN}.{SENSOR_NAME}"
{
CONF_SENSORS: [
{
CONF_NAME: SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 51,
CONF_COUNT: 2,
CONF_SWAP: CONF_SWAP_WORD_BYTE,
@ -139,7 +138,7 @@ async def test_config_sensor(hass, mock_modbus):
{
CONF_SENSORS: [
{
CONF_NAME: SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_COUNT: 8,
CONF_PRECISION: 2,
@ -154,7 +153,7 @@ async def test_config_sensor(hass, mock_modbus):
{
CONF_SENSORS: [
{
CONF_NAME: SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_COUNT: 2,
CONF_PRECISION: 2,
@ -169,7 +168,7 @@ async def test_config_sensor(hass, mock_modbus):
{
CONF_SENSORS: [
{
CONF_NAME: SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_DATA_TYPE: DATA_TYPE_CUSTOM,
CONF_COUNT: 4,
@ -184,7 +183,7 @@ async def test_config_sensor(hass, mock_modbus):
{
CONF_SENSORS: [
{
CONF_NAME: SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_DATA_TYPE: DATA_TYPE_CUSTOM,
CONF_COUNT: 4,
@ -193,13 +192,13 @@ async def test_config_sensor(hass, mock_modbus):
},
]
},
"Error in sensor test_sensor. The `structure` field can not be empty",
f"Error in sensor {TEST_ENTITY_NAME}. The `structure` field can not be empty",
),
(
{
CONF_SENSORS: [
{
CONF_NAME: SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_DATA_TYPE: DATA_TYPE_CUSTOM,
CONF_COUNT: 4,
@ -214,7 +213,7 @@ async def test_config_sensor(hass, mock_modbus):
{
CONF_SENSORS: [
{
CONF_NAME: SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_DATA_TYPE: DATA_TYPE_CUSTOM,
CONF_COUNT: 1,
@ -223,7 +222,7 @@ async def test_config_sensor(hass, mock_modbus):
},
]
},
"Error in sensor test_sensor swap(word) not possible due to the registers count: 1, needed: 2",
f"Error in sensor {TEST_ENTITY_NAME} swap(word) not possible due to the registers count: 1, needed: 2",
),
],
)
@ -508,8 +507,8 @@ async def test_all_sensor(hass, cfg, regs, expected):
state = await base_test(
hass,
{CONF_NAME: SENSOR_NAME, CONF_ADDRESS: 1234, **cfg},
SENSOR_NAME,
{CONF_NAME: TEST_ENTITY_NAME, CONF_ADDRESS: 1234, **cfg},
TEST_ENTITY_NAME,
SENSOR_DOMAIN,
CONF_SENSORS,
CONF_REGISTERS,
@ -562,8 +561,8 @@ async def test_struct_sensor(hass, cfg, regs, expected):
state = await base_test(
hass,
{CONF_NAME: SENSOR_NAME, CONF_ADDRESS: 1234, **cfg},
SENSOR_NAME,
{CONF_NAME: TEST_ENTITY_NAME, CONF_ADDRESS: 1234, **cfg},
TEST_ENTITY_NAME,
SENSOR_DOMAIN,
CONF_SENSORS,
None,
@ -586,7 +585,7 @@ async def test_struct_sensor(hass, cfg, regs, expected):
{
CONF_SENSORS: [
{
CONF_NAME: SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 51,
CONF_SCAN_INTERVAL: 0,
}
@ -605,7 +604,7 @@ async def test_restore_state_sensor(hass, mock_test_state, mock_modbus):
{
CONF_SENSORS: [
{
CONF_NAME: SENSOR_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_INPUT_TYPE: CALL_TYPE_REGISTER_INPUT,
}

View File

@ -13,6 +13,7 @@ from homeassistant.components.modbus.const import (
CONF_INPUT_TYPE,
CONF_STATE_OFF,
CONF_STATE_ON,
CONF_TCP,
CONF_VERIFY,
CONF_WRITE_TYPE,
MODBUS_DOMAIN,
@ -39,12 +40,17 @@ from homeassistant.core import State
from homeassistant.setup import async_setup_component
import homeassistant.util.dt as dt_util
from .conftest import ReadResult, base_test
from .conftest import (
TEST_ENTITY_NAME,
TEST_MODBUS_HOST,
TEST_PORT_TCP,
ReadResult,
base_test,
)
from tests.common import async_fire_time_changed
SWITCH_NAME = "test_switch"
ENTITY_ID = f"{SWITCH_DOMAIN}.{SWITCH_NAME}"
ENTITY_ID = f"{SWITCH_DOMAIN}.{TEST_ENTITY_NAME}"
@pytest.mark.parametrize(
@ -53,7 +59,7 @@ ENTITY_ID = f"{SWITCH_DOMAIN}.{SWITCH_NAME}"
{
CONF_SWITCHES: [
{
CONF_NAME: SWITCH_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
}
]
@ -61,7 +67,7 @@ ENTITY_ID = f"{SWITCH_DOMAIN}.{SWITCH_NAME}"
{
CONF_SWITCHES: [
{
CONF_NAME: SWITCH_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_WRITE_TYPE: CALL_TYPE_COIL,
}
@ -70,7 +76,7 @@ ENTITY_ID = f"{SWITCH_DOMAIN}.{SWITCH_NAME}"
{
CONF_SWITCHES: [
{
CONF_NAME: SWITCH_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_SLAVE: 1,
CONF_COMMAND_OFF: 0x00,
@ -88,7 +94,7 @@ ENTITY_ID = f"{SWITCH_DOMAIN}.{SWITCH_NAME}"
{
CONF_SWITCHES: [
{
CONF_NAME: SWITCH_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_SLAVE: 1,
CONF_COMMAND_OFF: 0x00,
@ -107,7 +113,7 @@ ENTITY_ID = f"{SWITCH_DOMAIN}.{SWITCH_NAME}"
{
CONF_SWITCHES: [
{
CONF_NAME: SWITCH_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_SLAVE: 1,
CONF_COMMAND_OFF: 0x00,
@ -125,7 +131,7 @@ ENTITY_ID = f"{SWITCH_DOMAIN}.{SWITCH_NAME}"
{
CONF_SWITCHES: [
{
CONF_NAME: SWITCH_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_SLAVE: 1,
CONF_COMMAND_OFF: 0x00,
@ -179,13 +185,13 @@ async def test_all_switch(hass, call_type, regs, verify, expected):
state = await base_test(
hass,
{
CONF_NAME: SWITCH_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_SLAVE: 1,
CONF_WRITE_TYPE: call_type,
**verify,
},
SWITCH_NAME,
TEST_ENTITY_NAME,
SWITCH_DOMAIN,
CONF_SWITCHES,
None,
@ -208,7 +214,7 @@ async def test_all_switch(hass, call_type, regs, verify, expected):
{
CONF_SWITCHES: [
{
CONF_NAME: SWITCH_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_SCAN_INTERVAL: 0,
}
@ -224,21 +230,21 @@ async def test_restore_state_switch(hass, mock_test_state, mock_modbus):
async def test_switch_service_turn(hass, caplog, mock_pymodbus):
"""Run test for service turn_on/turn_off."""
ENTITY_ID2 = f"{SWITCH_DOMAIN}.{SWITCH_NAME}2"
ENTITY_ID2 = f"{SWITCH_DOMAIN}.{TEST_ENTITY_NAME}2"
config = {
MODBUS_DOMAIN: {
CONF_TYPE: "tcp",
CONF_HOST: "modbusTestHost",
CONF_PORT: 5501,
CONF_TYPE: CONF_TCP,
CONF_HOST: TEST_MODBUS_HOST,
CONF_PORT: TEST_PORT_TCP,
CONF_SWITCHES: [
{
CONF_NAME: SWITCH_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 17,
CONF_WRITE_TYPE: CALL_TYPE_REGISTER_HOLDING,
CONF_SCAN_INTERVAL: 0,
},
{
CONF_NAME: f"{SWITCH_NAME}2",
CONF_NAME: f"{TEST_ENTITY_NAME}2",
CONF_ADDRESS: 17,
CONF_WRITE_TYPE: CALL_TYPE_REGISTER_HOLDING,
CONF_SCAN_INTERVAL: 0,
@ -297,7 +303,7 @@ async def test_switch_service_turn(hass, caplog, mock_pymodbus):
{
CONF_SWITCHES: [
{
CONF_NAME: SWITCH_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 1234,
CONF_WRITE_TYPE: CALL_TYPE_COIL,
CONF_VERIFY: {},
@ -324,12 +330,12 @@ async def test_delay_switch(hass, mock_pymodbus):
config = {
MODBUS_DOMAIN: [
{
CONF_TYPE: "tcp",
CONF_HOST: "modbusTestHost",
CONF_PORT: 5501,
CONF_TYPE: CONF_TCP,
CONF_HOST: TEST_MODBUS_HOST,
CONF_PORT: TEST_PORT_TCP,
CONF_SWITCHES: [
{
CONF_NAME: SWITCH_NAME,
CONF_NAME: TEST_ENTITY_NAME,
CONF_ADDRESS: 51,
CONF_SCAN_INTERVAL: 0,
CONF_VERIFY: {