1 """Philips TV binary sensors."""
3 from __future__
import annotations
5 from dataclasses
import dataclass
7 from haphilipsjs
import PhilipsTV
11 BinarySensorEntityDescription,
16 from .
import PhilipsTVConfigEntry
17 from .coordinator
import PhilipsTVDataUpdateCoordinator
18 from .entity
import PhilipsJsEntity
21 @dataclass(frozen=True, kw_only=True)
23 """A entity description for Philips TV binary sensor."""
30 key=
"recording_ongoing",
31 translation_key=
"recording_ongoing",
32 recording_value=
"RECORDING_ONGOING",
36 translation_key=
"recording_new",
37 recording_value=
"RECORDING_NEW",
44 config_entry: PhilipsTVConfigEntry,
45 async_add_entities: AddEntitiesCallback,
47 """Set up the configuration entry."""
48 coordinator = config_entry.runtime_data
51 coordinator.api.json_feature_supported(
"recordings",
"List")
52 and coordinator.api.api_version == 6
56 for description
in DESCRIPTIONS
61 """Return True if at least one specified value is available within entry of list."""
62 if api.recordings_list
is None:
64 return any(rec.get(entry) == value
for rec
in api.recordings_list[
"recordings"])
68 """A Philips TV binary sensor class, which allows multiple entities given by a BinarySensorEntityDescription."""
70 entity_description: PhilipsTVBinarySensorEntityDescription
74 coordinator: PhilipsTVDataUpdateCoordinator,
75 description: PhilipsTVBinarySensorEntityDescription,
77 """Initialize entity class."""
79 self.
_attr_unique_id_attr_unique_id = f
"{coordinator.unique_id}_{description.key}"
84 description.recording_value,
91 """Handle updated data from the coordinator and set is_on true if one specified value is available within given entry of list."""
None __init__(self, PhilipsTVDataUpdateCoordinator coordinator, PhilipsTVBinarySensorEntityDescription description)
None _handle_coordinator_update(self)
None async_setup_entry(HomeAssistant hass, PhilipsTVConfigEntry config_entry, AddEntitiesCallback async_add_entities)
bool _check_for_recording_entry(PhilipsTV api, str entry, str value)