Modbus scale parameter cuts decimals (#99758)

This commit is contained in:
jan iversen 2023-09-07 20:56:00 +02:00 committed by GitHub
parent 1c27a0339d
commit 77180a73b7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 0 deletions

View file

@ -160,6 +160,8 @@ class BaseStructPlatform(BasePlatform, RestoreEntity):
self._structure: str = config[CONF_STRUCTURE]
self._precision = config[CONF_PRECISION]
self._scale = config[CONF_SCALE]
if self._scale < 1 and not self._precision:
self._precision = 2
self._offset = config[CONF_OFFSET]
self._slave_count = config.get(CONF_SLAVE_COUNT, 0)
self._slave_size = self._count = config[CONF_COUNT]

View file

@ -596,6 +596,38 @@ async def test_config_wrong_struct_sensor(
False,
"1.23",
),
(
{
CONF_DATA_TYPE: DataType.INT32,
CONF_SCALE: 10,
CONF_OFFSET: 0,
CONF_PRECISION: 0,
},
[0x00AB, 0xCDEF],
False,
"112593750",
),
(
{
CONF_DATA_TYPE: DataType.INT32,
CONF_SCALE: 0.01,
CONF_OFFSET: 0,
CONF_PRECISION: 2,
},
[0x00AB, 0xCDEF],
False,
"112593.75",
),
(
{
CONF_DATA_TYPE: DataType.INT32,
CONF_SCALE: 0.01,
CONF_OFFSET: 0,
},
[0x00AB, 0xCDEF],
False,
"112593.75",
),
],
)
async def test_all_sensor(hass: HomeAssistant, mock_do_cycle, expected) -> None: