1 """Sensor platform for Hass.io addons."""
3 from __future__
import annotations
8 SensorEntityDescription,
33 HassioSupervisorEntity,
36 COMMON_ENTITY_DESCRIPTIONS = (
38 entity_registry_enabled_default=
False,
40 translation_key=
"version",
43 entity_registry_enabled_default=
False,
44 key=ATTR_VERSION_LATEST,
45 translation_key=
"version_latest",
49 STATS_ENTITY_DESCRIPTIONS = (
51 entity_registry_enabled_default=
False,
53 translation_key=
"cpu_percent",
54 native_unit_of_measurement=PERCENTAGE,
55 state_class=SensorStateClass.MEASUREMENT,
58 entity_registry_enabled_default=
False,
59 key=ATTR_MEMORY_PERCENT,
60 translation_key=
"memory_percent",
61 native_unit_of_measurement=PERCENTAGE,
62 state_class=SensorStateClass.MEASUREMENT,
66 ADDON_ENTITY_DESCRIPTIONS = COMMON_ENTITY_DESCRIPTIONS + STATS_ENTITY_DESCRIPTIONS
67 CORE_ENTITY_DESCRIPTIONS = STATS_ENTITY_DESCRIPTIONS
68 OS_ENTITY_DESCRIPTIONS = COMMON_ENTITY_DESCRIPTIONS
69 SUPERVISOR_ENTITY_DESCRIPTIONS = STATS_ENTITY_DESCRIPTIONS
71 HOST_ENTITY_DESCRIPTIONS = (
73 entity_registry_enabled_default=
False,
75 translation_key=
"agent_version",
76 entity_category=EntityCategory.DIAGNOSTIC,
79 entity_registry_enabled_default=
False,
80 key=
"apparmor_version",
81 translation_key=
"apparmor_version",
82 entity_category=EntityCategory.DIAGNOSTIC,
85 entity_registry_enabled_default=
False,
87 translation_key=
"disk_total",
88 native_unit_of_measurement=UnitOfInformation.GIGABYTES,
89 device_class=SensorDeviceClass.DATA_SIZE,
90 entity_category=EntityCategory.DIAGNOSTIC,
93 entity_registry_enabled_default=
False,
95 translation_key=
"disk_used",
96 native_unit_of_measurement=UnitOfInformation.GIGABYTES,
97 device_class=SensorDeviceClass.DATA_SIZE,
98 entity_category=EntityCategory.DIAGNOSTIC,
101 entity_registry_enabled_default=
False,
103 translation_key=
"disk_free",
104 native_unit_of_measurement=UnitOfInformation.GIGABYTES,
105 device_class=SensorDeviceClass.DATA_SIZE,
106 entity_category=EntityCategory.DIAGNOSTIC,
113 config_entry: ConfigEntry,
114 async_add_entities: AddEntitiesCallback,
116 """Sensor set up for Hass.io config entry."""
117 coordinator = hass.data[ADDONS_COORDINATOR]
120 HassioOSSensor | HassioAddonSensor | CoreSensor | SupervisorSensor | HostSensor
124 coordinator=coordinator,
125 entity_description=entity_description,
127 for addon
in coordinator.data[DATA_KEY_ADDONS].values()
128 for entity_description
in ADDON_ENTITY_DESCRIPTIONS
133 coordinator=coordinator,
134 entity_description=entity_description,
136 for entity_description
in CORE_ENTITY_DESCRIPTIONS
141 coordinator=coordinator,
142 entity_description=entity_description,
144 for entity_description
in SUPERVISOR_ENTITY_DESCRIPTIONS
149 coordinator=coordinator,
150 entity_description=entity_description,
152 for entity_description
in HOST_ENTITY_DESCRIPTIONS
155 if coordinator.is_hass_os:
158 coordinator=coordinator,
159 entity_description=entity_description,
161 for entity_description
in OS_ENTITY_DESCRIPTIONS
168 """Sensor to track a Hass.io add-on attribute."""
172 """Return native value of entity."""
173 return self.coordinator.data[DATA_KEY_ADDONS][self.
_addon_slug_addon_slug][
179 """Sensor to track a Hass.io add-on attribute."""
183 """Return native value of entity."""
184 return self.coordinator.data[DATA_KEY_OS][self.
entity_descriptionentity_description.key]
188 """Sensor to track a core attribute."""
192 """Return native value of entity."""
193 return self.coordinator.data[DATA_KEY_CORE][self.
entity_descriptionentity_description.key]
197 """Sensor to track a supervisor attribute."""
201 """Return native value of entity."""
202 return self.coordinator.data[DATA_KEY_SUPERVISOR][self.
entity_descriptionentity_description.key]
206 """Sensor to track a host attribute."""
210 """Return native value of entity."""
211 return self.coordinator.data[DATA_KEY_HOST][self.
entity_descriptionentity_description.key]
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)