1 """Support for tracking the online status of a UPS."""
3 from __future__
import annotations
5 from typing
import Final
9 BinarySensorEntityDescription,
15 from .
import APCUPSdConfigEntry
16 from .coordinator
import APCUPSdCoordinator
22 translation_key=
"online_status",
25 _VALUE_ONLINE_MASK: Final = 0b1000
30 config_entry: APCUPSdConfigEntry,
31 async_add_entities: AddEntitiesCallback,
33 """Set up an APCUPSd Online Status binary sensor."""
34 coordinator = config_entry.runtime_data
38 if _DESCRIPTION.key.upper()
not in coordinator.data:
45 """Representation of a UPS online status."""
47 _attr_has_entity_name =
True
51 coordinator: APCUPSdCoordinator,
52 description: BinarySensorEntityDescription,
54 """Initialize the APCUPSd binary device."""
55 super().
__init__(coordinator, context=description.key.upper())
58 if (serial_no := coordinator.data.serial_no)
is not None:
65 """Returns true if the UPS is online."""
71 flag = self.coordinator.data[key].removesuffix(
" Status Flag")
72 return int(flag, 16) & _VALUE_ONLINE_MASK != 0
None __init__(self, APCUPSdCoordinator coordinator, BinarySensorEntityDescription description)
None async_setup_entry(HomeAssistant hass, APCUPSdConfigEntry config_entry, AddEntitiesCallback async_add_entities)