Remove generic data types INT, UINT, FLOAT in modbus (#67268)

This commit is contained in:
jan iversen 2022-02-26 22:27:48 +01:00 committed by GitHub
parent fbfdabe4fc
commit 6ec9c402b1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 6 additions and 34 deletions

View File

@ -136,7 +136,7 @@ BASE_STRUCT_SCHEMA = BASE_COMPONENT_SCHEMA.extend(
]
),
vol.Optional(CONF_COUNT): cv.positive_int,
vol.Optional(CONF_DATA_TYPE, default=DataType.INT): vol.In(
vol.Optional(CONF_DATA_TYPE, default=DataType.INT16): vol.In(
[
DataType.INT8,
DataType.INT16,
@ -150,9 +150,6 @@ BASE_STRUCT_SCHEMA = BASE_COMPONENT_SCHEMA.extend(
DataType.FLOAT32,
DataType.FLOAT64,
DataType.STRING,
DataType.INT,
DataType.UINT,
DataType.FLOAT,
DataType.STRING,
DataType.CUSTOM,
]

View File

@ -76,9 +76,6 @@ class DataType(str, Enum):
"""Data types used by sensor etc."""
CUSTOM = "custom"
FLOAT = "float" # deprecated
INT = "int" # deprecated
UINT = "uint" # deprecated
STRING = "string"
INT8 = "int8"
INT16 = "int16"

View File

@ -39,23 +39,6 @@ from .const import (
_LOGGER = logging.getLogger(__name__)
OLD_DATA_TYPES = {
DataType.INT: {
1: DataType.INT16,
2: DataType.INT32,
4: DataType.INT64,
},
DataType.UINT: {
1: DataType.UINT16,
2: DataType.UINT32,
4: DataType.UINT64,
},
DataType.FLOAT: {
1: DataType.FLOAT16,
2: DataType.FLOAT32,
4: DataType.FLOAT64,
},
}
ENTRY = namedtuple("ENTRY", ["struct_id", "register_count"])
DEFAULT_STRUCT_FORMAT = {
DataType.INT8: ENTRY("b", 1),
@ -81,19 +64,14 @@ def struct_validator(config: dict[str, Any]) -> dict[str, Any]:
name = config[CONF_NAME]
structure = config.get(CONF_STRUCTURE)
swap_type = config.get(CONF_SWAP)
if data_type in (DataType.INT, DataType.UINT, DataType.FLOAT):
error = f"{name} with {data_type} is not valid, trying to convert"
_LOGGER.warning(error)
try:
data_type = OLD_DATA_TYPES[data_type][config.get(CONF_COUNT, 1)]
config[CONF_DATA_TYPE] = data_type
except KeyError as exp:
error = f"{name} cannot convert automatically {data_type}"
raise vol.Invalid(error) from exp
if config[CONF_DATA_TYPE] != DataType.CUSTOM:
if structure:
error = f"{name} structure: cannot be mixed with {data_type}"
raise vol.Invalid(error)
if data_type not in DEFAULT_STRUCT_FORMAT:
error = f"Error in sensor {name}. data_type `{data_type}` not supported"
raise vol.Invalid(error)
structure = f">{DEFAULT_STRUCT_FORMAT[data_type].struct_id}"
if CONF_COUNT not in config:
config[CONF_COUNT] = DEFAULT_STRUCT_FORMAT[data_type].register_count

View File

@ -176,7 +176,7 @@ async def test_ok_struct_validator(do_config):
{
CONF_NAME: TEST_ENTITY_NAME,
CONF_COUNT: 8,
CONF_DATA_TYPE: DataType.INT,
CONF_DATA_TYPE: "int",
},
{
CONF_NAME: TEST_ENTITY_NAME,