1 """Summary data from Nextcoud."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
7 from datetime
import datetime
8 from typing
import Final
13 SensorEntityDescription,
26 from .
import NextcloudConfigEntry
27 from .entity
import NextcloudEntity
29 UNIT_OF_LOAD: Final[str] =
"load"
32 @dataclass(frozen=True)
34 """Describes Nextcloud sensor entity."""
36 value_fn: Callable[[str | int | float], str | int | float | datetime] = (
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,
49 key=
"activeUsers_last24hours",
50 translation_key=
"nextcloud_activeusers_last24hours",
51 state_class=SensorStateClass.MEASUREMENT,
52 entity_category=EntityCategory.DIAGNOSTIC,
55 key=
"activeUsers_last5minutes",
56 translation_key=
"nextcloud_activeusers_last5minutes",
57 state_class=SensorStateClass.MEASUREMENT,
58 entity_category=EntityCategory.DIAGNOSTIC,
62 translation_key=
"nextcloud_cache_expunges",
63 state_class=SensorStateClass.MEASUREMENT,
64 entity_category=EntityCategory.DIAGNOSTIC,
65 entity_registry_enabled_default=
False,
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,
77 key=
"cache_memory_type",
78 translation_key=
"nextcloud_cache_memory_type",
79 entity_category=EntityCategory.DIAGNOSTIC,
80 entity_registry_enabled_default=
False,
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,
91 translation_key=
"nextcloud_cache_num_hits",
92 state_class=SensorStateClass.MEASUREMENT,
93 entity_category=EntityCategory.DIAGNOSTIC,
94 entity_registry_enabled_default=
False,
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,
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,
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,
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,
127 translation_key=
"nextcloud_cache_ttl",
128 entity_category=EntityCategory.DIAGNOSTIC,
129 entity_registry_enabled_default=
False,
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,
141 translation_key=
"nextcloud_database_type",
142 entity_category=EntityCategory.DIAGNOSTIC,
145 key=
"database_version",
146 translation_key=
"nextcloud_database_version",
147 entity_category=EntityCategory.DIAGNOSTIC,
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,
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,
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,
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,
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,
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,
208 translation_key=
"nextcloud_jit_kind",
209 entity_category=EntityCategory.DIAGNOSTIC,
210 entity_registry_enabled_default=
False,
214 translation_key=
"nextcloud_jit_opt_flags",
215 entity_category=EntityCategory.DIAGNOSTIC,
216 entity_registry_enabled_default=
False,
220 translation_key=
"nextcloud_jit_opt_level",
221 entity_category=EntityCategory.DIAGNOSTIC,
222 entity_registry_enabled_default=
False,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
383 key=
"server_php_version",
384 translation_key=
"nextcloud_server_php_version",
385 entity_category=EntityCategory.DIAGNOSTIC,
388 key=
"server_webserver",
389 translation_key=
"nextcloud_server_webserver",
390 entity_category=EntityCategory.DIAGNOSTIC,
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,
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,
405 key=
"shares_num_shares",
406 translation_key=
"nextcloud_shares_num_shares",
407 state_class=SensorStateClass.MEASUREMENT,
410 key=
"shares_num_shares_groups",
411 translation_key=
"nextcloud_shares_num_shares_groups",
412 state_class=SensorStateClass.MEASUREMENT,
413 entity_category=EntityCategory.DIAGNOSTIC,
416 key=
"shares_num_shares_link",
417 translation_key=
"nextcloud_shares_num_shares_link",
418 state_class=SensorStateClass.MEASUREMENT,
419 entity_category=EntityCategory.DIAGNOSTIC,
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,
428 key=
"shares_num_shares_mail",
429 translation_key=
"nextcloud_shares_num_shares_mail",
430 state_class=SensorStateClass.MEASUREMENT,
431 entity_category=EntityCategory.DIAGNOSTIC,
434 key=
"shares_num_shares_room",
435 translation_key=
"nextcloud_shares_num_shares_room",
436 state_class=SensorStateClass.MEASUREMENT,
437 entity_category=EntityCategory.DIAGNOSTIC,
440 key=
"shares_num_shares_user",
441 translation_key=
"nextcloud_shares_num_shares_user",
442 state_class=SensorStateClass.MEASUREMENT,
443 entity_category=EntityCategory.DIAGNOSTIC,
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,
457 translation_key=
"nextcloud_sma_num_seg",
458 state_class=SensorStateClass.MEASUREMENT,
459 entity_category=EntityCategory.DIAGNOSTIC,
460 entity_registry_enabled_default=
False,
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,
473 key=
"storage_num_files",
474 translation_key=
"nextcloud_storage_num_files",
475 state_class=SensorStateClass.MEASUREMENT,
478 key=
"storage_num_storages",
479 translation_key=
"nextcloud_storage_num_storages",
480 state_class=SensorStateClass.MEASUREMENT,
483 key=
"storage_num_storages_home",
484 translation_key=
"nextcloud_storage_num_storages_home",
485 state_class=SensorStateClass.MEASUREMENT,
486 entity_category=EntityCategory.DIAGNOSTIC,
489 key=
"storage_num_storages_local",
490 translation_key=
"nextcloud_storage_num_storages_local",
491 state_class=SensorStateClass.MEASUREMENT,
492 entity_category=EntityCategory.DIAGNOSTIC,
495 key=
"storage_num_storages_other",
496 translation_key=
"nextcloud_storage_num_storages_other",
497 state_class=SensorStateClass.MEASUREMENT,
498 entity_category=EntityCategory.DIAGNOSTIC,
501 key=
"storage_num_users",
502 translation_key=
"nextcloud_storage_num_users",
503 state_class=SensorStateClass.MEASUREMENT,
506 key=
"system_apps_num_installed",
507 translation_key=
"nextcloud_system_apps_num_installed",
508 state_class=SensorStateClass.MEASUREMENT,
511 key=
"system_apps_num_updates_available",
512 translation_key=
"nextcloud_system_apps_num_updates_available",
513 state_class=SensorStateClass.MEASUREMENT,
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,
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,
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,
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,
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,
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,
558 key=
"system_memcache.distributed",
559 translation_key=
"nextcloud_system_memcache_distributed",
560 entity_category=EntityCategory.DIAGNOSTIC,
561 entity_registry_enabled_default=
False,
564 key=
"system_memcache.local",
565 translation_key=
"nextcloud_system_memcache_local",
566 entity_category=EntityCategory.DIAGNOSTIC,
567 entity_registry_enabled_default=
False,
570 key=
"system_memcache.locking",
571 translation_key=
"nextcloud_system_memcache_locking",
572 entity_category=EntityCategory.DIAGNOSTIC,
573 entity_registry_enabled_default=
False,
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,
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,
593 translation_key=
"nextcloud_system_theme",
596 key=
"system_version",
597 translation_key=
"nextcloud_system_version",
604 entry: NextcloudConfigEntry,
605 async_add_entities: AddEntitiesCallback,
607 """Set up the Nextcloud sensors."""
608 coordinator = entry.runtime_data
611 for sensor
in SENSORS
612 if sensor.key
in coordinator.data
617 """Represents a Nextcloud sensor."""
619 entity_description: NextcloudSensorEntityDescription
623 """Return the state for this sensor."""
str|int|float|datetime native_value(self)
None async_setup_entry(HomeAssistant hass, NextcloudConfigEntry entry, AddEntitiesCallback async_add_entities)