Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Summary data from Nextcoud."""
2 
3 from __future__ import annotations
4 
5 from collections.abc import Callable
6 from dataclasses import dataclass
7 from datetime import datetime
8 from typing import Final
9 
11  SensorDeviceClass,
12  SensorEntity,
13  SensorEntityDescription,
14  SensorStateClass,
15 )
16 from homeassistant.const import (
17  PERCENTAGE,
18  EntityCategory,
19  UnitOfInformation,
20  UnitOfTime,
21 )
22 from homeassistant.core import HomeAssistant
23 from homeassistant.helpers.entity_platform import AddEntitiesCallback
24 from homeassistant.util.dt import utc_from_timestamp
25 
26 from . import NextcloudConfigEntry
27 from .entity import NextcloudEntity
28 
29 UNIT_OF_LOAD: Final[str] = "load"
30 
31 
32 @dataclass(frozen=True)
34  """Describes Nextcloud sensor entity."""
35 
36  value_fn: Callable[[str | int | float], str | int | float | datetime] = (
37  lambda value: value
38  )
39 
40 
41 SENSORS: Final[list[NextcloudSensorEntityDescription]] = [
43  key="activeUsers_last1hour",
44  translation_key="nextcloud_activeusers_last1hour",
45  state_class=SensorStateClass.MEASUREMENT,
46  entity_category=EntityCategory.DIAGNOSTIC,
47  ),
49  key="activeUsers_last24hours",
50  translation_key="nextcloud_activeusers_last24hours",
51  state_class=SensorStateClass.MEASUREMENT,
52  entity_category=EntityCategory.DIAGNOSTIC,
53  ),
55  key="activeUsers_last5minutes",
56  translation_key="nextcloud_activeusers_last5minutes",
57  state_class=SensorStateClass.MEASUREMENT,
58  entity_category=EntityCategory.DIAGNOSTIC,
59  ),
61  key="cache_expunges",
62  translation_key="nextcloud_cache_expunges",
63  state_class=SensorStateClass.MEASUREMENT,
64  entity_category=EntityCategory.DIAGNOSTIC,
65  entity_registry_enabled_default=False,
66  ),
68  key="cache_mem_size",
69  translation_key="nextcloud_cache_mem_size",
70  device_class=SensorDeviceClass.DATA_SIZE,
71  entity_category=EntityCategory.DIAGNOSTIC,
72  native_unit_of_measurement=UnitOfInformation.BYTES,
73  suggested_display_precision=1,
74  suggested_unit_of_measurement=UnitOfInformation.MEGABYTES,
75  ),
77  key="cache_memory_type",
78  translation_key="nextcloud_cache_memory_type",
79  entity_category=EntityCategory.DIAGNOSTIC,
80  entity_registry_enabled_default=False,
81  ),
83  key="cache_num_entries",
84  translation_key="nextcloud_cache_num_entries",
85  state_class=SensorStateClass.MEASUREMENT,
86  entity_category=EntityCategory.DIAGNOSTIC,
87  entity_registry_enabled_default=False,
88  ),
90  key="cache_num_hits",
91  translation_key="nextcloud_cache_num_hits",
92  state_class=SensorStateClass.MEASUREMENT,
93  entity_category=EntityCategory.DIAGNOSTIC,
94  entity_registry_enabled_default=False,
95  ),
97  key="cache_num_inserts",
98  translation_key="nextcloud_cache_num_inserts",
99  state_class=SensorStateClass.MEASUREMENT,
100  entity_category=EntityCategory.DIAGNOSTIC,
101  entity_registry_enabled_default=False,
102  ),
104  key="cache_num_misses",
105  translation_key="nextcloud_cache_num_misses",
106  state_class=SensorStateClass.MEASUREMENT,
107  entity_category=EntityCategory.DIAGNOSTIC,
108  entity_registry_enabled_default=False,
109  ),
111  key="cache_num_slots",
112  translation_key="nextcloud_cache_num_slots",
113  state_class=SensorStateClass.MEASUREMENT,
114  entity_category=EntityCategory.DIAGNOSTIC,
115  entity_registry_enabled_default=False,
116  ),
118  key="cache_start_time",
119  translation_key="nextcloud_cache_start_time",
120  device_class=SensorDeviceClass.TIMESTAMP,
121  entity_category=EntityCategory.DIAGNOSTIC,
122  entity_registry_enabled_default=False,
123  value_fn=lambda val: utc_from_timestamp(float(val)),
124  ),
126  key="cache_ttl",
127  translation_key="nextcloud_cache_ttl",
128  entity_category=EntityCategory.DIAGNOSTIC,
129  entity_registry_enabled_default=False,
130  ),
132  key="database_size",
133  translation_key="nextcloud_database_size",
134  device_class=SensorDeviceClass.DATA_SIZE,
135  native_unit_of_measurement=UnitOfInformation.BYTES,
136  suggested_display_precision=1,
137  suggested_unit_of_measurement=UnitOfInformation.MEGABYTES,
138  ),
140  key="database_type",
141  translation_key="nextcloud_database_type",
142  entity_category=EntityCategory.DIAGNOSTIC,
143  ),
145  key="database_version",
146  translation_key="nextcloud_database_version",
147  entity_category=EntityCategory.DIAGNOSTIC,
148  ),
150  key="interned_strings_usage_buffer_size",
151  translation_key="nextcloud_interned_strings_usage_buffer_size",
152  device_class=SensorDeviceClass.DATA_SIZE,
153  entity_category=EntityCategory.DIAGNOSTIC,
154  entity_registry_enabled_default=False,
155  native_unit_of_measurement=UnitOfInformation.BYTES,
156  suggested_display_precision=1,
157  suggested_unit_of_measurement=UnitOfInformation.MEGABYTES,
158  ),
160  key="interned_strings_usage_free_memory",
161  translation_key="nextcloud_interned_strings_usage_free_memory",
162  device_class=SensorDeviceClass.DATA_SIZE,
163  entity_category=EntityCategory.DIAGNOSTIC,
164  entity_registry_enabled_default=False,
165  native_unit_of_measurement=UnitOfInformation.BYTES,
166  suggested_display_precision=1,
167  suggested_unit_of_measurement=UnitOfInformation.MEGABYTES,
168  ),
170  key="interned_strings_usage_number_of_strings",
171  translation_key="nextcloud_interned_strings_usage_number_of_strings",
172  state_class=SensorStateClass.MEASUREMENT,
173  entity_category=EntityCategory.DIAGNOSTIC,
174  entity_registry_enabled_default=False,
175  ),
177  key="interned_strings_usage_used_memory",
178  translation_key="nextcloud_interned_strings_usage_used_memory",
179  device_class=SensorDeviceClass.DATA_SIZE,
180  entity_category=EntityCategory.DIAGNOSTIC,
181  entity_registry_enabled_default=False,
182  native_unit_of_measurement=UnitOfInformation.BYTES,
183  suggested_display_precision=1,
184  suggested_unit_of_measurement=UnitOfInformation.MEGABYTES,
185  ),
187  key="jit_buffer_free",
188  translation_key="nextcloud_jit_buffer_free",
189  device_class=SensorDeviceClass.DATA_SIZE,
190  entity_category=EntityCategory.DIAGNOSTIC,
191  entity_registry_enabled_default=False,
192  native_unit_of_measurement=UnitOfInformation.BYTES,
193  suggested_display_precision=1,
194  suggested_unit_of_measurement=UnitOfInformation.MEGABYTES,
195  ),
197  key="jit_buffer_size",
198  translation_key="nextcloud_jit_buffer_size",
199  device_class=SensorDeviceClass.DATA_SIZE,
200  entity_category=EntityCategory.DIAGNOSTIC,
201  entity_registry_enabled_default=False,
202  native_unit_of_measurement=UnitOfInformation.BYTES,
203  suggested_display_precision=1,
204  suggested_unit_of_measurement=UnitOfInformation.MEGABYTES,
205  ),
207  key="jit_kind",
208  translation_key="nextcloud_jit_kind",
209  entity_category=EntityCategory.DIAGNOSTIC,
210  entity_registry_enabled_default=False,
211  ),
213  key="jit_opt_flags",
214  translation_key="nextcloud_jit_opt_flags",
215  entity_category=EntityCategory.DIAGNOSTIC,
216  entity_registry_enabled_default=False,
217  ),
219  key="jit_opt_level",
220  translation_key="nextcloud_jit_opt_level",
221  entity_category=EntityCategory.DIAGNOSTIC,
222  entity_registry_enabled_default=False,
223  ),
225  key="opcache_statistics_blacklist_miss_ratio",
226  translation_key="nextcloud_opcache_statistics_blacklist_miss_ratio",
227  state_class=SensorStateClass.MEASUREMENT,
228  entity_category=EntityCategory.DIAGNOSTIC,
229  entity_registry_enabled_default=False,
230  native_unit_of_measurement=PERCENTAGE,
231  ),
233  key="opcache_statistics_blacklist_misses",
234  translation_key="nextcloud_opcache_statistics_blacklist_misses",
235  state_class=SensorStateClass.MEASUREMENT,
236  entity_category=EntityCategory.DIAGNOSTIC,
237  entity_registry_enabled_default=False,
238  ),
240  key="opcache_statistics_hash_restarts",
241  translation_key="nextcloud_opcache_statistics_hash_restarts",
242  state_class=SensorStateClass.MEASUREMENT,
243  entity_category=EntityCategory.DIAGNOSTIC,
244  entity_registry_enabled_default=False,
245  ),
247  key="opcache_statistics_hits",
248  translation_key="nextcloud_opcache_statistics_hits",
249  state_class=SensorStateClass.MEASUREMENT,
250  entity_category=EntityCategory.DIAGNOSTIC,
251  entity_registry_enabled_default=False,
252  ),
254  key="opcache_statistics_last_restart_time",
255  translation_key="nextcloud_opcache_statistics_last_restart_time",
256  device_class=SensorDeviceClass.TIMESTAMP,
257  entity_category=EntityCategory.DIAGNOSTIC,
258  entity_registry_enabled_default=False,
259  value_fn=lambda val: utc_from_timestamp(float(val)),
260  ),
262  key="opcache_statistics_manual_restarts",
263  translation_key="nextcloud_opcache_statistics_manual_restarts",
264  state_class=SensorStateClass.MEASUREMENT,
265  entity_category=EntityCategory.DIAGNOSTIC,
266  entity_registry_enabled_default=False,
267  ),
269  key="opcache_statistics_max_cached_keys",
270  translation_key="nextcloud_opcache_statistics_max_cached_keys",
271  state_class=SensorStateClass.MEASUREMENT,
272  entity_category=EntityCategory.DIAGNOSTIC,
273  entity_registry_enabled_default=False,
274  ),
276  key="opcache_statistics_misses",
277  translation_key="nextcloud_opcache_statistics_misses",
278  state_class=SensorStateClass.MEASUREMENT,
279  entity_category=EntityCategory.DIAGNOSTIC,
280  entity_registry_enabled_default=False,
281  ),
283  key="opcache_statistics_num_cached_keys",
284  translation_key="nextcloud_opcache_statistics_num_cached_keys",
285  state_class=SensorStateClass.MEASUREMENT,
286  entity_category=EntityCategory.DIAGNOSTIC,
287  entity_registry_enabled_default=False,
288  ),
290  key="opcache_statistics_num_cached_scripts",
291  translation_key="nextcloud_opcache_statistics_num_cached_scripts",
292  state_class=SensorStateClass.MEASUREMENT,
293  entity_category=EntityCategory.DIAGNOSTIC,
294  entity_registry_enabled_default=False,
295  ),
297  key="opcache_statistics_oom_restarts",
298  translation_key="nextcloud_opcache_statistics_oom_restarts",
299  state_class=SensorStateClass.MEASUREMENT,
300  entity_category=EntityCategory.DIAGNOSTIC,
301  entity_registry_enabled_default=False,
302  ),
304  key="opcache_statistics_opcache_hit_rate",
305  translation_key="nextcloud_opcache_statistics_opcache_hit_rate",
306  entity_category=EntityCategory.DIAGNOSTIC,
307  entity_registry_enabled_default=False,
308  native_unit_of_measurement=PERCENTAGE,
309  suggested_display_precision=1,
310  ),
312  key="opcache_statistics_start_time",
313  translation_key="nextcloud_opcache_statistics_start_time",
314  device_class=SensorDeviceClass.TIMESTAMP,
315  entity_category=EntityCategory.DIAGNOSTIC,
316  entity_registry_enabled_default=False,
317  value_fn=lambda val: utc_from_timestamp(float(val)),
318  ),
320  key="server_php_opcache_memory_usage_current_wasted_percentage",
321  translation_key="nextcloud_server_php_opcache_memory_usage_current_wasted_percentage",
322  entity_category=EntityCategory.DIAGNOSTIC,
323  entity_registry_enabled_default=False,
324  native_unit_of_measurement=PERCENTAGE,
325  suggested_display_precision=1,
326  ),
328  key="server_php_opcache_memory_usage_free_memory",
329  translation_key="nextcloud_server_php_opcache_memory_usage_free_memory",
330  device_class=SensorDeviceClass.DATA_SIZE,
331  entity_category=EntityCategory.DIAGNOSTIC,
332  entity_registry_enabled_default=False,
333  native_unit_of_measurement=UnitOfInformation.BYTES,
334  suggested_display_precision=1,
335  suggested_unit_of_measurement=UnitOfInformation.MEGABYTES,
336  ),
338  key="server_php_opcache_memory_usage_used_memory",
339  translation_key="nextcloud_server_php_opcache_memory_usage_used_memory",
340  device_class=SensorDeviceClass.DATA_SIZE,
341  entity_category=EntityCategory.DIAGNOSTIC,
342  entity_registry_enabled_default=False,
343  native_unit_of_measurement=UnitOfInformation.BYTES,
344  suggested_display_precision=1,
345  suggested_unit_of_measurement=UnitOfInformation.MEGABYTES,
346  ),
348  key="server_php_opcache_memory_usage_wasted_memory",
349  translation_key="nextcloud_server_php_opcache_memory_usage_wasted_memory",
350  device_class=SensorDeviceClass.DATA_SIZE,
351  entity_category=EntityCategory.DIAGNOSTIC,
352  entity_registry_enabled_default=False,
353  native_unit_of_measurement=UnitOfInformation.BYTES,
354  suggested_display_precision=1,
355  suggested_unit_of_measurement=UnitOfInformation.MEGABYTES,
356  ),
358  key="server_php_max_execution_time",
359  translation_key="nextcloud_server_php_max_execution_time",
360  device_class=SensorDeviceClass.DURATION,
361  entity_category=EntityCategory.DIAGNOSTIC,
362  native_unit_of_measurement=UnitOfTime.SECONDS,
363  ),
365  key="server_php_memory_limit",
366  translation_key="nextcloud_server_php_memory_limit",
367  device_class=SensorDeviceClass.DATA_SIZE,
368  entity_category=EntityCategory.DIAGNOSTIC,
369  native_unit_of_measurement=UnitOfInformation.BYTES,
370  suggested_display_precision=1,
371  suggested_unit_of_measurement=UnitOfInformation.MEGABYTES,
372  ),
374  key="server_php_upload_max_filesize",
375  translation_key="nextcloud_server_php_upload_max_filesize",
376  device_class=SensorDeviceClass.DATA_SIZE,
377  entity_category=EntityCategory.DIAGNOSTIC,
378  native_unit_of_measurement=UnitOfInformation.BYTES,
379  suggested_display_precision=1,
380  suggested_unit_of_measurement=UnitOfInformation.MEGABYTES,
381  ),
383  key="server_php_version",
384  translation_key="nextcloud_server_php_version",
385  entity_category=EntityCategory.DIAGNOSTIC,
386  ),
388  key="server_webserver",
389  translation_key="nextcloud_server_webserver",
390  entity_category=EntityCategory.DIAGNOSTIC,
391  ),
393  key="shares_num_fed_shares_sent",
394  translation_key="nextcloud_shares_num_fed_shares_sent",
395  state_class=SensorStateClass.MEASUREMENT,
396  entity_category=EntityCategory.DIAGNOSTIC,
397  ),
399  key="shares_num_fed_shares_received",
400  translation_key="nextcloud_shares_num_fed_shares_received",
401  state_class=SensorStateClass.MEASUREMENT,
402  entity_category=EntityCategory.DIAGNOSTIC,
403  ),
405  key="shares_num_shares",
406  translation_key="nextcloud_shares_num_shares",
407  state_class=SensorStateClass.MEASUREMENT,
408  ),
410  key="shares_num_shares_groups",
411  translation_key="nextcloud_shares_num_shares_groups",
412  state_class=SensorStateClass.MEASUREMENT,
413  entity_category=EntityCategory.DIAGNOSTIC,
414  ),
416  key="shares_num_shares_link",
417  translation_key="nextcloud_shares_num_shares_link",
418  state_class=SensorStateClass.MEASUREMENT,
419  entity_category=EntityCategory.DIAGNOSTIC,
420  ),
422  key="shares_num_shares_link_no_password",
423  translation_key="nextcloud_shares_num_shares_link_no_password",
424  state_class=SensorStateClass.MEASUREMENT,
425  entity_category=EntityCategory.DIAGNOSTIC,
426  ),
428  key="shares_num_shares_mail",
429  translation_key="nextcloud_shares_num_shares_mail",
430  state_class=SensorStateClass.MEASUREMENT,
431  entity_category=EntityCategory.DIAGNOSTIC,
432  ),
434  key="shares_num_shares_room",
435  translation_key="nextcloud_shares_num_shares_room",
436  state_class=SensorStateClass.MEASUREMENT,
437  entity_category=EntityCategory.DIAGNOSTIC,
438  ),
440  key="shares_num_shares_user",
441  translation_key="nextcloud_shares_num_shares_user",
442  state_class=SensorStateClass.MEASUREMENT,
443  entity_category=EntityCategory.DIAGNOSTIC,
444  ),
446  key="sma_avail_mem",
447  translation_key="nextcloud_sma_avail_mem",
448  device_class=SensorDeviceClass.DATA_SIZE,
449  entity_category=EntityCategory.DIAGNOSTIC,
450  entity_registry_enabled_default=False,
451  native_unit_of_measurement=UnitOfInformation.BYTES,
452  suggested_display_precision=1,
453  suggested_unit_of_measurement=UnitOfInformation.MEGABYTES,
454  ),
456  key="sma_num_seg",
457  translation_key="nextcloud_sma_num_seg",
458  state_class=SensorStateClass.MEASUREMENT,
459  entity_category=EntityCategory.DIAGNOSTIC,
460  entity_registry_enabled_default=False,
461  ),
463  key="sma_seg_size",
464  translation_key="nextcloud_sma_seg_size",
465  device_class=SensorDeviceClass.DATA_SIZE,
466  entity_category=EntityCategory.DIAGNOSTIC,
467  entity_registry_enabled_default=False,
468  native_unit_of_measurement=UnitOfInformation.BYTES,
469  suggested_display_precision=1,
470  suggested_unit_of_measurement=UnitOfInformation.MEGABYTES,
471  ),
473  key="storage_num_files",
474  translation_key="nextcloud_storage_num_files",
475  state_class=SensorStateClass.MEASUREMENT,
476  ),
478  key="storage_num_storages",
479  translation_key="nextcloud_storage_num_storages",
480  state_class=SensorStateClass.MEASUREMENT,
481  ),
483  key="storage_num_storages_home",
484  translation_key="nextcloud_storage_num_storages_home",
485  state_class=SensorStateClass.MEASUREMENT,
486  entity_category=EntityCategory.DIAGNOSTIC,
487  ),
489  key="storage_num_storages_local",
490  translation_key="nextcloud_storage_num_storages_local",
491  state_class=SensorStateClass.MEASUREMENT,
492  entity_category=EntityCategory.DIAGNOSTIC,
493  ),
495  key="storage_num_storages_other",
496  translation_key="nextcloud_storage_num_storages_other",
497  state_class=SensorStateClass.MEASUREMENT,
498  entity_category=EntityCategory.DIAGNOSTIC,
499  ),
501  key="storage_num_users",
502  translation_key="nextcloud_storage_num_users",
503  state_class=SensorStateClass.MEASUREMENT,
504  ),
506  key="system_apps_num_installed",
507  translation_key="nextcloud_system_apps_num_installed",
508  state_class=SensorStateClass.MEASUREMENT,
509  ),
511  key="system_apps_num_updates_available",
512  translation_key="nextcloud_system_apps_num_updates_available",
513  state_class=SensorStateClass.MEASUREMENT,
514  ),
516  key="system_cpuload_1",
517  translation_key="nextcloud_system_cpuload_1",
518  native_unit_of_measurement=UNIT_OF_LOAD,
519  suggested_display_precision=2,
520  ),
522  key="system_cpuload_5",
523  translation_key="nextcloud_system_cpuload_5",
524  native_unit_of_measurement=UNIT_OF_LOAD,
525  suggested_display_precision=2,
526  ),
528  key="system_cpuload_15",
529  translation_key="nextcloud_system_cpuload_15",
530  native_unit_of_measurement=UNIT_OF_LOAD,
531  suggested_display_precision=2,
532  ),
534  key="system_freespace",
535  translation_key="nextcloud_system_freespace",
536  device_class=SensorDeviceClass.DATA_SIZE,
537  native_unit_of_measurement=UnitOfInformation.BYTES,
538  suggested_display_precision=2,
539  suggested_unit_of_measurement=UnitOfInformation.GIGABYTES,
540  ),
542  key="system_mem_free",
543  translation_key="nextcloud_system_mem_free",
544  device_class=SensorDeviceClass.DATA_SIZE,
545  native_unit_of_measurement=UnitOfInformation.KILOBYTES,
546  suggested_display_precision=2,
547  suggested_unit_of_measurement=UnitOfInformation.GIGABYTES,
548  ),
550  key="system_mem_total",
551  translation_key="nextcloud_system_mem_total",
552  device_class=SensorDeviceClass.DATA_SIZE,
553  native_unit_of_measurement=UnitOfInformation.KILOBYTES,
554  suggested_display_precision=2,
555  suggested_unit_of_measurement=UnitOfInformation.GIGABYTES,
556  ),
558  key="system_memcache.distributed",
559  translation_key="nextcloud_system_memcache_distributed",
560  entity_category=EntityCategory.DIAGNOSTIC,
561  entity_registry_enabled_default=False,
562  ),
564  key="system_memcache.local",
565  translation_key="nextcloud_system_memcache_local",
566  entity_category=EntityCategory.DIAGNOSTIC,
567  entity_registry_enabled_default=False,
568  ),
570  key="system_memcache.locking",
571  translation_key="nextcloud_system_memcache_locking",
572  entity_category=EntityCategory.DIAGNOSTIC,
573  entity_registry_enabled_default=False,
574  ),
576  key="system_swap_total",
577  translation_key="nextcloud_system_swap_total",
578  device_class=SensorDeviceClass.DATA_SIZE,
579  native_unit_of_measurement=UnitOfInformation.KILOBYTES,
580  suggested_display_precision=2,
581  suggested_unit_of_measurement=UnitOfInformation.GIGABYTES,
582  ),
584  key="system_swap_free",
585  translation_key="nextcloud_system_swap_free",
586  device_class=SensorDeviceClass.DATA_SIZE,
587  native_unit_of_measurement=UnitOfInformation.KILOBYTES,
588  suggested_display_precision=2,
589  suggested_unit_of_measurement=UnitOfInformation.GIGABYTES,
590  ),
592  key="system_theme",
593  translation_key="nextcloud_system_theme",
594  ),
596  key="system_version",
597  translation_key="nextcloud_system_version",
598  ),
599 ]
600 
601 
603  hass: HomeAssistant,
604  entry: NextcloudConfigEntry,
605  async_add_entities: AddEntitiesCallback,
606 ) -> None:
607  """Set up the Nextcloud sensors."""
608  coordinator = entry.runtime_data
610  NextcloudSensor(coordinator, entry, sensor)
611  for sensor in SENSORS
612  if sensor.key in coordinator.data
613  )
614 
615 
617  """Represents a Nextcloud sensor."""
618 
619  entity_description: NextcloudSensorEntityDescription
620 
621  @property
622  def native_value(self) -> str | int | float | datetime:
623  """Return the state for this sensor."""
624  val = self.coordinator.data.get(self.entity_descriptionentity_description.key)
625  return self.entity_descriptionentity_description.value_fn(val) # type: ignore[arg-type]
None async_setup_entry(HomeAssistant hass, NextcloudConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: sensor.py:606