Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Platform for sensor integration for squeezebox."""
2 
3 from __future__ import annotations
4 
5 import logging
6 from typing import cast
7 
9  SensorDeviceClass,
10  SensorEntity,
11  SensorEntityDescription,
12  SensorStateClass,
13 )
14 from homeassistant.const import UnitOfTime
15 from homeassistant.core import HomeAssistant
16 from homeassistant.helpers.entity_platform import AddEntitiesCallback
17 from homeassistant.helpers.typing import StateType
18 
19 from . import SqueezeboxConfigEntry
20 from .const import (
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,
29 )
30 from .entity import LMSStatusEntity
31 
32 SENSORS: tuple[SensorEntityDescription, ...] = (
34  key=STATUS_SENSOR_INFO_TOTAL_ALBUMS,
35  state_class=SensorStateClass.TOTAL,
36  ),
38  key=STATUS_SENSOR_INFO_TOTAL_ARTISTS,
39  state_class=SensorStateClass.TOTAL,
40  ),
42  key=STATUS_SENSOR_INFO_TOTAL_DURATION,
43  state_class=SensorStateClass.TOTAL,
44  device_class=SensorDeviceClass.DURATION,
45  native_unit_of_measurement=UnitOfTime.SECONDS,
46  ),
48  key=STATUS_SENSOR_INFO_TOTAL_GENRES,
49  state_class=SensorStateClass.TOTAL,
50  ),
52  key=STATUS_SENSOR_INFO_TOTAL_SONGS,
53  state_class=SensorStateClass.TOTAL,
54  ),
56  key=STATUS_SENSOR_LASTSCAN,
57  device_class=SensorDeviceClass.TIMESTAMP,
58  ),
60  key=STATUS_SENSOR_PLAYER_COUNT,
61  state_class=SensorStateClass.TOTAL,
62  ),
64  key=STATUS_SENSOR_OTHER_PLAYER_COUNT,
65  state_class=SensorStateClass.TOTAL,
66  entity_registry_visible_default=False,
67  ),
68 )
69 
70 _LOGGER = logging.getLogger(__name__)
71 
72 
74  hass: HomeAssistant,
75  entry: SqueezeboxConfigEntry,
76  async_add_entities: AddEntitiesCallback,
77 ) -> None:
78  """Platform setup using common elements."""
79 
81  ServerStatusSensor(entry.runtime_data.coordinator, description)
82  for description in SENSORS
83  )
84 
85 
87  """LMS Status based sensor from LMS via cooridnatior."""
88 
89  @property
90  def native_value(self) -> StateType:
91  """LMS Status directly from coordinator data."""
92  return cast(StateType, self.coordinator.data[self.entity_descriptionentity_description.key])
None async_setup_entry(HomeAssistant hass, SqueezeboxConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: sensor.py:77