1 """Support for Jellyfin sensors."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
14 from .
import JellyfinConfigEntry, JellyfinDataUpdateCoordinator
15 from .entity
import JellyfinServerEntity
18 @dataclass(frozen=True, kw_only=True)
20 """Describes Jellyfin sensor entity."""
22 value_fn: Callable[[dict[str, dict[str, Any]]], StateType]
26 """Count the number of now playing."""
28 sid
for (sid, session)
in data.items()
if "NowPlayingItem" in session
31 return len(session_ids)
34 SENSOR_TYPES: tuple[JellyfinSensorEntityDescription, ...] = (
37 translation_key=
"watching",
38 value_fn=_count_now_playing,
45 entry: JellyfinConfigEntry,
46 async_add_entities: AddEntitiesCallback,
48 """Set up Jellyfin sensor based on a config entry."""
49 coordinator = entry.runtime_data
57 """Defines a Jellyfin sensor entity."""
59 entity_description: JellyfinSensorEntityDescription
63 coordinator: JellyfinDataUpdateCoordinator,
64 description: JellyfinSensorEntityDescription,
66 """Initialize Jellyfin sensor."""
69 self.
_attr_unique_id_attr_unique_id = f
"{coordinator.server_id}-{description.key}"
73 """Return the state of the sensor."""
None __init__(self, JellyfinDataUpdateCoordinator coordinator, JellyfinSensorEntityDescription description)
StateType native_value(self)
int _count_now_playing(dict[str, dict[str, Any]] data)
None async_setup_entry(HomeAssistant hass, JellyfinConfigEntry entry, AddEntitiesCallback async_add_entities)