From d76687d672eb3e0b40be42fe71e28ef632bd6c9f Mon Sep 17 00:00:00 2001 From: jan iversen Date: Sat, 19 Feb 2022 17:17:29 +0100 Subject: [PATCH] Add support for INT8 and UINT8 in Modbus (#66889) --- homeassistant/components/modbus/__init__.py | 2 ++ homeassistant/components/modbus/const.py | 2 ++ homeassistant/components/modbus/validators.py | 2 ++ 3 files changed, 6 insertions(+) diff --git a/homeassistant/components/modbus/__init__.py b/homeassistant/components/modbus/__init__.py index cfe0aa370fe..56edf39311c 100644 --- a/homeassistant/components/modbus/__init__.py +++ b/homeassistant/components/modbus/__init__.py @@ -139,9 +139,11 @@ BASE_STRUCT_SCHEMA = BASE_COMPONENT_SCHEMA.extend( vol.Optional(CONF_COUNT): cv.positive_int, vol.Optional(CONF_DATA_TYPE, default=DataType.INT): vol.In( [ + DataType.INT8, DataType.INT16, DataType.INT32, DataType.INT64, + DataType.UINT8, DataType.UINT16, DataType.UINT32, DataType.UINT64, diff --git a/homeassistant/components/modbus/const.py b/homeassistant/components/modbus/const.py index dccd2eb4990..d4f0fa6d9ea 100644 --- a/homeassistant/components/modbus/const.py +++ b/homeassistant/components/modbus/const.py @@ -81,9 +81,11 @@ class DataType(str, Enum): INT = "int" # deprecated UINT = "uint" # deprecated STRING = "string" + INT8 = "int8" INT16 = "int16" INT32 = "int32" INT64 = "int64" + UINT8 = "uint8" UINT16 = "uint16" UINT32 = "uint32" UINT64 = "uint64" diff --git a/homeassistant/components/modbus/validators.py b/homeassistant/components/modbus/validators.py index ca0f370b562..74cd2a49861 100644 --- a/homeassistant/components/modbus/validators.py +++ b/homeassistant/components/modbus/validators.py @@ -58,9 +58,11 @@ OLD_DATA_TYPES = { } ENTRY = namedtuple("ENTRY", ["struct_id", "register_count"]) DEFAULT_STRUCT_FORMAT = { + DataType.INT8: ENTRY("b", 1), DataType.INT16: ENTRY("h", 1), DataType.INT32: ENTRY("i", 2), DataType.INT64: ENTRY("q", 4), + DataType.UINT8: ENTRY("c", 1), DataType.UINT16: ENTRY("H", 1), DataType.UINT32: ENTRY("I", 2), DataType.UINT64: ENTRY("Q", 4),