1 """binary sensors for Ukraine Alarm integration."""
3 from __future__
import annotations
6 BinarySensorDeviceClass,
8 BinarySensorEntityDescription,
23 ALERT_TYPE_URBAN_FIGHTS,
28 from .coordinator
import UkraineAlarmDataUpdateCoordinator
30 BINARY_SENSOR_TYPES: tuple[BinarySensorEntityDescription, ...] = (
32 key=ALERT_TYPE_UNKNOWN,
33 translation_key=
"unknown",
34 device_class=BinarySensorDeviceClass.SAFETY,
38 translation_key=
"air",
39 device_class=BinarySensorDeviceClass.SAFETY,
42 key=ALERT_TYPE_URBAN_FIGHTS,
43 translation_key=
"urban_fights",
44 device_class=BinarySensorDeviceClass.SAFETY,
47 key=ALERT_TYPE_ARTILLERY,
48 translation_key=
"artillery",
49 device_class=BinarySensorDeviceClass.SAFETY,
52 key=ALERT_TYPE_CHEMICAL,
53 translation_key=
"chemical",
54 device_class=BinarySensorDeviceClass.SAFETY,
57 key=ALERT_TYPE_NUCLEAR,
58 translation_key=
"nuclear",
59 device_class=BinarySensorDeviceClass.SAFETY,
66 config_entry: ConfigEntry,
67 async_add_entities: AddEntitiesCallback,
69 """Set up Ukraine Alarm binary sensor entities based on a config entry."""
70 name = config_entry.data[CONF_NAME]
71 coordinator = hass.data[DOMAIN][config_entry.entry_id]
76 config_entry.unique_id,
80 for description
in BINARY_SENSOR_TYPES
85 CoordinatorEntity[UkraineAlarmDataUpdateCoordinator], BinarySensorEntity
87 """Class for a Ukraine Alarm binary sensor."""
89 _attr_attribution = ATTRIBUTION
90 _attr_has_entity_name =
True
96 description: BinarySensorEntityDescription,
97 coordinator: UkraineAlarmDataUpdateCoordinator,
99 """Initialize the sensor."""
106 entry_type=DeviceEntryType.SERVICE,
107 identifiers={(DOMAIN, unique_id)},
108 manufacturer=MANUFACTURER,
110 configuration_url=
"https://siren.pp.ua/",
115 """Return true if the binary sensor is on."""
None __init__(self, name, unique_id, BinarySensorEntityDescription description, UkraineAlarmDataUpdateCoordinator coordinator)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)