1 """Support for Modbus Coil and Discrete Input sensors."""
3 from __future__
import annotations
5 from datetime
import datetime
23 DataUpdateCoordinator,
33 from .entity
import BasePlatform
34 from .modbus
import ModbusHub
36 _LOGGER = logging.getLogger(__name__)
44 async_add_entities: AddEntitiesCallback,
45 discovery_info: DiscoveryInfoType |
None =
None,
47 """Set up the Modbus binary sensors."""
49 if discovery_info
is None:
52 sensors: list[ModbusBinarySensor | SlaveSensor] = []
53 hub =
get_hub(hass, discovery_info[CONF_NAME])
54 for entry
in discovery_info[CONF_BINARY_SENSORS]:
55 slave_count = entry.get(CONF_SLAVE_COUNT,
None)
or entry.get(
60 sensors.extend(await sensor.async_setup_slaves(hass, slave_count, entry))
61 sensors.append(sensor)
66 """Modbus binary sensor."""
72 entry: dict[str, Any],
75 """Initialize the Modbus binary sensor."""
77 self.
_coordinator_coordinator: DataUpdateCoordinator[list[int] |
None] |
None =
None
78 self.
_result_result: list[int] = []
82 self, hass: HomeAssistant, slave_count: int, entry: dict[str, Any]
83 ) -> list[SlaveSensor]:
84 """Add slaves as needed (1 read for multiple sensors)."""
102 """Handle entity which will be added."""
108 """Update the state of the sensor."""
114 result = await self.
_hub_hub.async_pb_call(
123 if self.
_input_type_input_type
in (CALL_TYPE_COIL, CALL_TYPE_DISCRETE):
124 self.
_result_result = result.bits
126 self.
_result_result = result.registers
135 CoordinatorEntity[DataUpdateCoordinator[list[int] |
None]],
139 """Modbus slave binary sensor."""
143 coordinator: DataUpdateCoordinator[list[int] |
None],
145 entry: dict[str, Any],
147 """Initialize the Modbus binary sensor."""
159 """Handle entity which will be added."""
167 """Handle updated data from the coordinator."""
168 result = self.coordinator.data
None async_update(self, datetime|None now=None)
None __init__(self, HomeAssistant hass, ModbusHub hub, dict[str, Any] entry, int slave_count)
list[SlaveSensor] async_setup_slaves(self, HomeAssistant hass, int slave_count, dict[str, Any] entry)
None async_added_to_hass(self)
None _handle_coordinator_update(self)
None __init__(self, DataUpdateCoordinator[list[int]|None] coordinator, int idx, dict[str, Any] entry)
None async_added_to_hass(self)
None async_write_ha_state(self)
State|None async_get_last_state(self)
None async_setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback async_add_entities, DiscoveryInfoType|None discovery_info=None)
ModbusHub get_hub(HomeAssistant hass, str name)