1 """Platform for sensor integration for squeezebox."""
3 from __future__
import annotations
6 from typing
import cast
11 SensorEntityDescription,
19 from .
import SqueezeboxConfigEntry
21 STATUS_SENSOR_INFO_TOTAL_ALBUMS,
22 STATUS_SENSOR_INFO_TOTAL_ARTISTS,
23 STATUS_SENSOR_INFO_TOTAL_DURATION,
24 STATUS_SENSOR_INFO_TOTAL_GENRES,
25 STATUS_SENSOR_INFO_TOTAL_SONGS,
26 STATUS_SENSOR_LASTSCAN,
27 STATUS_SENSOR_OTHER_PLAYER_COUNT,
28 STATUS_SENSOR_PLAYER_COUNT,
30 from .entity
import LMSStatusEntity
32 SENSORS: tuple[SensorEntityDescription, ...] = (
34 key=STATUS_SENSOR_INFO_TOTAL_ALBUMS,
35 state_class=SensorStateClass.TOTAL,
38 key=STATUS_SENSOR_INFO_TOTAL_ARTISTS,
39 state_class=SensorStateClass.TOTAL,
42 key=STATUS_SENSOR_INFO_TOTAL_DURATION,
43 state_class=SensorStateClass.TOTAL,
44 device_class=SensorDeviceClass.DURATION,
45 native_unit_of_measurement=UnitOfTime.SECONDS,
48 key=STATUS_SENSOR_INFO_TOTAL_GENRES,
49 state_class=SensorStateClass.TOTAL,
52 key=STATUS_SENSOR_INFO_TOTAL_SONGS,
53 state_class=SensorStateClass.TOTAL,
56 key=STATUS_SENSOR_LASTSCAN,
57 device_class=SensorDeviceClass.TIMESTAMP,
60 key=STATUS_SENSOR_PLAYER_COUNT,
61 state_class=SensorStateClass.TOTAL,
64 key=STATUS_SENSOR_OTHER_PLAYER_COUNT,
65 state_class=SensorStateClass.TOTAL,
66 entity_registry_visible_default=
False,
70 _LOGGER = logging.getLogger(__name__)
75 entry: SqueezeboxConfigEntry,
76 async_add_entities: AddEntitiesCallback,
78 """Platform setup using common elements."""
82 for description
in SENSORS
87 """LMS Status based sensor from LMS via cooridnatior."""
91 """LMS Status directly from coordinator data."""
92 return cast(StateType, self.coordinator.data[self.
entity_descriptionentity_description.key])
StateType native_value(self)
None async_setup_entry(HomeAssistant hass, SqueezeboxConfigEntry entry, AddEntitiesCallback async_add_entities)