Improve modbus generic typing (#84737)

This commit is contained in:
Marc Mueller 2022-12-29 12:37:31 +01:00 committed by GitHub
parent d849dab7ba
commit 77e71cf18b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 10 deletions

View file

@ -3,7 +3,7 @@ from __future__ import annotations
from datetime import datetime
import logging
from typing import Any
from typing import Any, Optional
from homeassistant.components.binary_sensor import BinarySensorEntity
from homeassistant.const import (
@ -59,8 +59,8 @@ class ModbusBinarySensor(BasePlatform, RestoreEntity, BinarySensorEntity):
def __init__(self, hub: ModbusHub, entry: dict[str, Any], slave_count: int) -> None:
"""Initialize the Modbus binary sensor."""
self._count = slave_count + 1
self._coordinator: DataUpdateCoordinator[Any] | None = None
self._result: list = []
self._coordinator: DataUpdateCoordinator[list[int] | None] | None = None
self._result: list[int] = []
super().__init__(hub, entry)
async def async_setup_slaves(
@ -121,11 +121,18 @@ class ModbusBinarySensor(BasePlatform, RestoreEntity, BinarySensorEntity):
self._coordinator.async_set_updated_data(self._result)
class SlaveSensor(CoordinatorEntity, RestoreEntity, BinarySensorEntity):
class SlaveSensor(
CoordinatorEntity[DataUpdateCoordinator[Optional[list[int]]]],
RestoreEntity,
BinarySensorEntity,
):
"""Modbus slave binary sensor."""
def __init__(
self, coordinator: DataUpdateCoordinator[Any], idx: int, entry: dict[str, Any]
self,
coordinator: DataUpdateCoordinator[list[int] | None],
idx: int,
entry: dict[str, Any],
) -> None:
"""Initialize the Modbus binary sensor."""
idx += 1

View file

@ -3,7 +3,7 @@ from __future__ import annotations
from datetime import datetime
import logging
from typing import Any
from typing import Any, Optional
from homeassistant.components.sensor import CONF_STATE_CLASS, SensorEntity
from homeassistant.const import CONF_NAME, CONF_SENSORS, CONF_UNIT_OF_MEASUREMENT
@ -58,7 +58,7 @@ class ModbusRegisterSensor(BaseStructPlatform, RestoreEntity, SensorEntity):
) -> None:
"""Initialize the modbus register sensor."""
super().__init__(hub, entry)
self._coordinator: DataUpdateCoordinator[Any] | None = None
self._coordinator: DataUpdateCoordinator[list[int] | None] | None = None
self._attr_native_unit_of_measurement = entry.get(CONF_UNIT_OF_MEASUREMENT)
self._attr_state_class = entry.get(CONF_STATE_CLASS)
@ -110,7 +110,7 @@ class ModbusRegisterSensor(BaseStructPlatform, RestoreEntity, SensorEntity):
result = self.unpack_structure_result(raw_result.registers)
if self._coordinator:
if result:
result_array = result.split(",")
result_array = list(map(int, result.split(",")))
self._attr_native_value = result_array[0]
self._coordinator.async_set_updated_data(result_array)
else:
@ -126,11 +126,18 @@ class ModbusRegisterSensor(BaseStructPlatform, RestoreEntity, SensorEntity):
self.async_write_ha_state()
class SlaveSensor(CoordinatorEntity, RestoreEntity, SensorEntity):
class SlaveSensor(
CoordinatorEntity[DataUpdateCoordinator[Optional[list[int]]]],
RestoreEntity,
SensorEntity,
):
"""Modbus slave binary sensor."""
def __init__(
self, coordinator: DataUpdateCoordinator[Any], idx: int, entry: dict[str, Any]
self,
coordinator: DataUpdateCoordinator[list[int] | None],
idx: int,
entry: dict[str, Any],
) -> None:
"""Initialize the Modbus binary sensor."""
idx += 1