1 """Binary Sensor for MeteoAlarm.eu."""
3 from __future__
import annotations
5 from datetime
import timedelta
8 from meteoalertapi
import Meteoalert
9 import voluptuous
as vol
12 PLATFORM_SCHEMA
as BINARY_SENSOR_PLATFORM_SCHEMA,
13 BinarySensorDeviceClass,
23 _LOGGER = logging.getLogger(__name__)
25 ATTRIBUTION =
"Information provided by MeteoAlarm"
27 CONF_COUNTRY =
"country"
28 CONF_LANGUAGE =
"language"
29 CONF_PROVINCE =
"province"
31 DEFAULT_NAME =
"meteoalarm"
35 PLATFORM_SCHEMA = BINARY_SENSOR_PLATFORM_SCHEMA.extend(
37 vol.Required(CONF_COUNTRY): cv.string,
38 vol.Required(CONF_PROVINCE): cv.string,
39 vol.Optional(CONF_LANGUAGE, default=
"en"): cv.string,
40 vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
48 add_entities: AddEntitiesCallback,
49 discovery_info: DiscoveryInfoType |
None =
None,
51 """Set up the MeteoAlarm binary sensor platform."""
53 country = config[CONF_COUNTRY]
54 province = config[CONF_PROVINCE]
55 language = config[CONF_LANGUAGE]
56 name = config[CONF_NAME]
59 api = Meteoalert(country, province, language)
61 _LOGGER.error(
"Wrong country digits or province name")
68 """Representation of a MeteoAlert binary sensor."""
70 _attr_attribution = ATTRIBUTION
71 _attr_device_class = BinarySensorDeviceClass.SAFETY
74 """Initialize the MeteoAlert binary sensor."""
79 """Update device state."""
83 if alert := self.
_api_api.get_alert():
84 expiration_date = dt_util.parse_datetime(alert[
"expires"])
86 if expiration_date
is not None and expiration_date > dt_util.utcnow():
_attr_extra_state_attributes
def __init__(self, api, name)
None add_entities(AsusWrtRouter router, AddEntitiesCallback async_add_entities, set[str] tracked)
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)