1 """Support for OpenUV binary sensors."""
5 BinarySensorEntityDescription,
12 from .const
import DATA_PROTECTION_WINDOW, DOMAIN, LOGGER, TYPE_PROTECTION_WINDOW
13 from .coordinator
import OpenUvCoordinator
14 from .entity
import OpenUvEntity
16 ATTR_PROTECTION_WINDOW_ENDING_TIME =
"end_time"
17 ATTR_PROTECTION_WINDOW_ENDING_UV =
"end_uv"
18 ATTR_PROTECTION_WINDOW_STARTING_TIME =
"start_time"
19 ATTR_PROTECTION_WINDOW_STARTING_UV =
"start_uv"
22 key=TYPE_PROTECTION_WINDOW,
23 translation_key=
"protection_window",
28 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
31 """Set up an OpenUV sensor based on a config entry."""
32 coordinators: dict[str, OpenUvCoordinator] = hass.data[DOMAIN][entry.entry_id]
37 coordinators[DATA_PROTECTION_WINDOW],
38 BINARY_SENSOR_DESCRIPTION_PROTECTION_WINDOW,
45 """Define a binary sensor for OpenUV."""
49 """Update the entity from the latest data."""
50 data = self.coordinator.data
52 for key
in (
"from_time",
"to_time",
"from_uv",
"to_uv"):
54 LOGGER.warning(
"Skipping update due to missing data: %s", key)
61 if not from_dt
or not to_dt:
63 "Unable to parse protection window datetimes: %s, %s",
73 ATTR_PROTECTION_WINDOW_ENDING_TIME:
as_local(to_dt),
74 ATTR_PROTECTION_WINDOW_ENDING_UV: data[
"to_uv"],
75 ATTR_PROTECTION_WINDOW_STARTING_UV: data[
"from_uv"],
76 ATTR_PROTECTION_WINDOW_STARTING_TIME:
as_local(from_dt),
None _handle_coordinator_update(self)
_attr_extra_state_attributes
datetime|None parse_datetime(str|None value)
IssData update(pyiss.ISS iss)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
dt.datetime as_local(dt.datetime dattim)