Coverage for custom_components/autoarm/binary_sensor.py: 100%

21 statements  

« prev     ^ index     » next       coverage.py v7.16.2, created at 2026-10-26 20:57 +0000

1"""Binary sensor reporting whether AutoArm initialized without errors.""" 

2 

3from typing import Any 

4 

5from homeassistant.components.binary_sensor import BinarySensorEntity, BinarySensorEntityDescription 

6from homeassistant.const import EntityCategory, Platform 

7from homeassistant.core import HomeAssistant 

8from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback 

9 

10from .autoarming import AlarmArmer, AutoArmConfigEntry 

11from .entity import AutoArmEntity 

12 

13PARALLEL_UPDATES = 0 

14 

15INITIALIZED = BinarySensorEntityDescription( 

16 key="initialized", 

17 translation_key="initialized", 

18 entity_category=EntityCategory.DIAGNOSTIC, 

19) 

20 

21 

22async def async_setup_entry( 

23 hass: HomeAssistant, entry: AutoArmConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback 

24) -> None: 

25 async_add_entities([AutoArmInitializedSensor(entry.runtime_data, entry)]) 

26 

27 

28class AutoArmInitializedSensor(AutoArmEntity, BinarySensorEntity): 

29 def __init__(self, armer: AlarmArmer, entry: AutoArmConfigEntry) -> None: 

30 super().__init__(armer, entry, Platform.BINARY_SENSOR, INITIALIZED) 

31 

32 @property 

33 def is_on(self) -> bool: # type: ignore 

34 tracker = self.armer.app_health_tracker 

35 return tracker.initialized and not tracker.initialization_errors 

36 

37 @property 

38 def extra_state_attributes(self) -> dict[str, Any]: # type: ignore 

39 return dict(self.armer.app_health_tracker.initialization_errors)