Add more data_types to modbus (#52423)

* Add more data_types.

* Use new struct when writing temperature.
This commit is contained in:
jan iversen 2021-07-12 07:58:45 +02:00 committed by GitHub
parent 91a2b96da0
commit 2ecfd74fa4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 123 additions and 101 deletions

View file

@ -135,15 +135,6 @@ async def test_config_sensor(hass, mock_modbus):
@pytest.mark.parametrize(
"do_config,error_message",
[
(
{
CONF_ADDRESS: 1234,
CONF_COUNT: 8,
CONF_PRECISION: 2,
CONF_DATA_TYPE: DATA_TYPE_INT,
},
"Unable to detect data type for test_sensor sensor, try a custom type",
),
(
{
CONF_ADDRESS: 1234,
@ -152,7 +143,7 @@ async def test_config_sensor(hass, mock_modbus):
CONF_DATA_TYPE: DATA_TYPE_CUSTOM,
CONF_STRUCTURE: ">no struct",
},
"Error in sensor test_sensor structure: bad char in struct format",
"bad char in struct format",
),
(
{
@ -172,7 +163,7 @@ async def test_config_sensor(hass, mock_modbus):
CONF_SWAP: CONF_SWAP_NONE,
CONF_STRUCTURE: "invalid",
},
"Error in sensor test_sensor structure: bad char in struct format",
"bad char in struct format",
),
(
{
@ -229,7 +220,7 @@ async def test_config_wrong_struct_sensor(
expect_setup_to_fail=True,
)
assert error_message in caplog.text
assert caplog.text.count(error_message)
@pytest.mark.parametrize(
@ -597,46 +588,6 @@ async def test_restore_state_sensor(hass, mock_test_state, mock_modbus):
assert hass.states.get(ENTITY_ID).state == mock_test_state[0].state
@pytest.mark.parametrize(
"swap_type, error_message",
[
(
CONF_SWAP_WORD,
f"Error in sensor {SENSOR_NAME} swap(word) not possible due to the registers count: 1, needed: 2",
),
(
CONF_SWAP_WORD_BYTE,
f"Error in sensor {SENSOR_NAME} swap(word_byte) not possible due to the registers count: 1, needed: 2",
),
],
)
async def test_swap_sensor_wrong_config(
hass, caplog, swap_type, error_message, mock_pymodbus
):
"""Run test for sensor swap."""
config = {
CONF_NAME: SENSOR_NAME,
CONF_ADDRESS: 1234,
CONF_COUNT: 1,
CONF_SWAP: swap_type,
CONF_DATA_TYPE: DATA_TYPE_INT,
}
caplog.set_level(logging.ERROR)
caplog.clear()
await base_config_test(
hass,
config,
SENSOR_NAME,
SENSOR_DOMAIN,
CONF_SENSORS,
None,
method_discovery=True,
expect_setup_to_fail=True,
)
assert error_message in "".join(caplog.messages)
async def test_service_sensor_update(hass, mock_pymodbus):
"""Run test for service homeassistant.update_entity."""
config = {