Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Support for Roku sensors."""
2 
3 from __future__ import annotations
4 
5 from collections.abc import Callable
6 from dataclasses import dataclass
7 
8 from rokuecp.models import Device as RokuDevice
9 
10 from homeassistant.components.sensor import SensorEntity, SensorEntityDescription
11 from homeassistant.config_entries import ConfigEntry
12 from homeassistant.const import EntityCategory
13 from homeassistant.core import HomeAssistant
14 from homeassistant.helpers.entity_platform import AddEntitiesCallback
15 
16 from .const import DOMAIN
17 from .coordinator import RokuDataUpdateCoordinator
18 from .entity import RokuEntity
19 
20 
21 @dataclass(frozen=True, kw_only=True)
23  """Describes Roku sensor entity."""
24 
25  value_fn: Callable[[RokuDevice], str | None]
26 
27 
28 SENSORS: tuple[RokuSensorEntityDescription, ...] = (
30  key="active_app",
31  translation_key="active_app",
32  entity_category=EntityCategory.DIAGNOSTIC,
33  value_fn=lambda device: device.app.name if device.app else None,
34  ),
36  key="active_app_id",
37  translation_key="active_app_id",
38  entity_category=EntityCategory.DIAGNOSTIC,
39  value_fn=lambda device: device.app.app_id if device.app else None,
40  ),
41 )
42 
43 
45  hass: HomeAssistant,
46  entry: ConfigEntry,
47  async_add_entities: AddEntitiesCallback,
48 ) -> None:
49  """Set up Roku sensor based on a config entry."""
50  coordinator: RokuDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
51 
54  coordinator=coordinator,
55  description=description,
56  )
57  for description in SENSORS
58  )
59 
60 
62  """Defines a Roku sensor entity."""
63 
64  entity_description: RokuSensorEntityDescription
65 
66  @property
67  def native_value(self) -> str | None:
68  """Return the state of the sensor."""
69  return self.entity_descriptionentity_description.value_fn(self.coordinator.data)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: sensor.py:48