Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Sensor for monitoring the size of a file."""
2 
3 from __future__ import annotations
4 
5 from datetime import datetime
6 import logging
7 
9  SensorDeviceClass,
10  SensorEntity,
11  SensorEntityDescription,
12  SensorStateClass,
13 )
14 from homeassistant.const import EntityCategory, UnitOfInformation
15 from homeassistant.core import HomeAssistant
16 from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
17 from homeassistant.helpers.entity_platform import AddEntitiesCallback
18 from homeassistant.helpers.update_coordinator import CoordinatorEntity
19 
20 from . import FileSizeConfigEntry
21 from .const import DOMAIN
22 from .coordinator import FileSizeCoordinator
23 
24 _LOGGER = logging.getLogger(__name__)
25 
26 SENSOR_TYPES = (
28  key="file",
29  translation_key="size",
30  native_unit_of_measurement=UnitOfInformation.MEGABYTES,
31  device_class=SensorDeviceClass.DATA_SIZE,
32  state_class=SensorStateClass.MEASUREMENT,
33  ),
35  key="bytes",
36  translation_key="size_bytes",
37  entity_registry_enabled_default=False,
38  native_unit_of_measurement=UnitOfInformation.BYTES,
39  device_class=SensorDeviceClass.DATA_SIZE,
40  state_class=SensorStateClass.MEASUREMENT,
41  entity_category=EntityCategory.DIAGNOSTIC,
42  ),
44  key="last_updated",
45  translation_key="last_updated",
46  entity_registry_enabled_default=False,
47  device_class=SensorDeviceClass.TIMESTAMP,
48  entity_category=EntityCategory.DIAGNOSTIC,
49  ),
51  key="created",
52  translation_key="created",
53  entity_registry_enabled_default=False,
54  device_class=SensorDeviceClass.TIMESTAMP,
55  entity_category=EntityCategory.DIAGNOSTIC,
56  ),
57 )
58 
59 
61  hass: HomeAssistant,
62  entry: FileSizeConfigEntry,
63  async_add_entities: AddEntitiesCallback,
64 ) -> None:
65  """Set up the platform from config entry."""
67  FilesizeEntity(description, entry.entry_id, entry.runtime_data)
68  for description in SENSOR_TYPES
69  )
70 
71 
72 class FilesizeEntity(CoordinatorEntity[FileSizeCoordinator], SensorEntity):
73  """Filesize sensor."""
74 
75  _attr_has_entity_name = True
76 
77  def __init__(
78  self,
79  description: SensorEntityDescription,
80  entry_id: str,
81  coordinator: FileSizeCoordinator,
82  ) -> None:
83  """Initialize the Filesize sensor."""
84  super().__init__(coordinator)
85  self._attr_unique_id_attr_unique_id = (
86  entry_id if description.key == "file" else f"{entry_id}-{description.key}"
87  )
88  self.entity_descriptionentity_description = description
89  self._attr_device_info_attr_device_info = DeviceInfo(
90  entry_type=DeviceEntryType.SERVICE,
91  identifiers={(DOMAIN, entry_id)},
92  )
93 
94  @property
95  def native_value(self) -> float | int | datetime:
96  """Return the value of the sensor."""
97  value: float | int | datetime = self.coordinator.data[
98  self.entity_descriptionentity_description.key
99  ]
100  return value
None __init__(self, SensorEntityDescription description, str entry_id, FileSizeCoordinator coordinator)
Definition: sensor.py:82
None async_setup_entry(HomeAssistant hass, FileSizeConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: sensor.py:64