Move constants into corresponding platforms in Synology DSM (#69752)
* move sensor related constants * move switch related constants * move binary sensor related constantspull/69754/head
parent
e44d34018e
commit
4853ce208f
|
@ -2,24 +2,72 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from collections.abc import Mapping
|
||||
from dataclasses import dataclass
|
||||
from typing import Any
|
||||
|
||||
from homeassistant.components.binary_sensor import BinarySensorEntity
|
||||
from synology_dsm.api.core.security import SynoCoreSecurity
|
||||
from synology_dsm.api.core.upgrade import SynoCoreUpgrade
|
||||
from synology_dsm.api.storage.storage import SynoStorage
|
||||
|
||||
from homeassistant.components.binary_sensor import (
|
||||
BinarySensorDeviceClass,
|
||||
BinarySensorEntity,
|
||||
BinarySensorEntityDescription,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import CONF_DISKS
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity import EntityCategory
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
|
||||
|
||||
from . import SynoApi, SynologyDSMBaseEntity, SynologyDSMDeviceEntity
|
||||
from .const import (
|
||||
COORDINATOR_CENTRAL,
|
||||
DOMAIN,
|
||||
SECURITY_BINARY_SENSORS,
|
||||
STORAGE_DISK_BINARY_SENSORS,
|
||||
SYNO_API,
|
||||
UPGRADE_BINARY_SENSORS,
|
||||
SynologyDSMBinarySensorEntityDescription,
|
||||
from .const import COORDINATOR_CENTRAL, DOMAIN, SYNO_API, SynologyDSMEntityDescription
|
||||
|
||||
|
||||
@dataclass
|
||||
class SynologyDSMBinarySensorEntityDescription(
|
||||
BinarySensorEntityDescription, SynologyDSMEntityDescription
|
||||
):
|
||||
"""Describes Synology DSM binary sensor entity."""
|
||||
|
||||
|
||||
UPGRADE_BINARY_SENSORS: tuple[SynologyDSMBinarySensorEntityDescription, ...] = (
|
||||
SynologyDSMBinarySensorEntityDescription(
|
||||
# Deprecated, scheduled to be removed in 2022.6 (#68664)
|
||||
api_key=SynoCoreUpgrade.API_KEY,
|
||||
key="update_available",
|
||||
name="Update Available",
|
||||
entity_registry_enabled_default=False,
|
||||
device_class=BinarySensorDeviceClass.UPDATE,
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
)
|
||||
|
||||
SECURITY_BINARY_SENSORS: tuple[SynologyDSMBinarySensorEntityDescription, ...] = (
|
||||
SynologyDSMBinarySensorEntityDescription(
|
||||
api_key=SynoCoreSecurity.API_KEY,
|
||||
key="status",
|
||||
name="Security Status",
|
||||
device_class=BinarySensorDeviceClass.SAFETY,
|
||||
),
|
||||
)
|
||||
|
||||
STORAGE_DISK_BINARY_SENSORS: tuple[SynologyDSMBinarySensorEntityDescription, ...] = (
|
||||
SynologyDSMBinarySensorEntityDescription(
|
||||
api_key=SynoStorage.API_KEY,
|
||||
key="disk_exceed_bad_sector_thr",
|
||||
name="Exceeded Max Bad Sectors",
|
||||
device_class=BinarySensorDeviceClass.SAFETY,
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
SynologyDSMBinarySensorEntityDescription(
|
||||
api_key=SynoStorage.API_KEY,
|
||||
key="disk_below_remain_life_thr",
|
||||
name="Below Min Remaining Life",
|
||||
device_class=BinarySensorDeviceClass.SAFETY,
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -3,33 +3,10 @@ from __future__ import annotations
|
|||
|
||||
from dataclasses import dataclass
|
||||
|
||||
from synology_dsm.api.core.security import SynoCoreSecurity
|
||||
from synology_dsm.api.core.upgrade import SynoCoreUpgrade
|
||||
from synology_dsm.api.core.utilization import SynoCoreUtilization
|
||||
from synology_dsm.api.dsm.information import SynoDSMInformation
|
||||
from synology_dsm.api.storage.storage import SynoStorage
|
||||
from synology_dsm.api.surveillance_station import SynoSurveillanceStation
|
||||
from synology_dsm.api.surveillance_station.const import SNAPSHOT_PROFILE_BALANCED
|
||||
|
||||
from homeassistant.components.binary_sensor import (
|
||||
BinarySensorDeviceClass,
|
||||
BinarySensorEntityDescription,
|
||||
)
|
||||
from homeassistant.components.sensor import (
|
||||
SensorDeviceClass,
|
||||
SensorEntityDescription,
|
||||
SensorStateClass,
|
||||
)
|
||||
from homeassistant.components.switch import SwitchEntityDescription
|
||||
from homeassistant.const import (
|
||||
DATA_MEGABYTES,
|
||||
DATA_RATE_KILOBYTES_PER_SECOND,
|
||||
DATA_TERABYTES,
|
||||
PERCENTAGE,
|
||||
TEMP_CELSIUS,
|
||||
Platform,
|
||||
)
|
||||
from homeassistant.helpers.entity import EntityCategory, EntityDescription
|
||||
from homeassistant.const import Platform
|
||||
from homeassistant.helpers.entity import EntityDescription
|
||||
|
||||
DOMAIN = "synology_dsm"
|
||||
PLATFORMS = [
|
||||
|
@ -87,303 +64,3 @@ class SynologyDSMRequiredKeysMixin:
|
|||
@dataclass
|
||||
class SynologyDSMEntityDescription(EntityDescription, SynologyDSMRequiredKeysMixin):
|
||||
"""Generic Synology DSM entity description."""
|
||||
|
||||
|
||||
@dataclass
|
||||
class SynologyDSMBinarySensorEntityDescription(
|
||||
BinarySensorEntityDescription, SynologyDSMEntityDescription
|
||||
):
|
||||
"""Describes Synology DSM binary sensor entity."""
|
||||
|
||||
|
||||
@dataclass
|
||||
class SynologyDSMSensorEntityDescription(
|
||||
SensorEntityDescription, SynologyDSMEntityDescription
|
||||
):
|
||||
"""Describes Synology DSM sensor entity."""
|
||||
|
||||
|
||||
@dataclass
|
||||
class SynologyDSMSwitchEntityDescription(
|
||||
SwitchEntityDescription, SynologyDSMEntityDescription
|
||||
):
|
||||
"""Describes Synology DSM switch entity."""
|
||||
|
||||
|
||||
# Binary sensors
|
||||
UPGRADE_BINARY_SENSORS: tuple[SynologyDSMBinarySensorEntityDescription, ...] = (
|
||||
SynologyDSMBinarySensorEntityDescription(
|
||||
# Deprecated, scheduled to be removed in 2022.6 (#68664)
|
||||
api_key=SynoCoreUpgrade.API_KEY,
|
||||
key="update_available",
|
||||
name="Update Available",
|
||||
entity_registry_enabled_default=False,
|
||||
device_class=BinarySensorDeviceClass.UPDATE,
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
)
|
||||
|
||||
SECURITY_BINARY_SENSORS: tuple[SynologyDSMBinarySensorEntityDescription, ...] = (
|
||||
SynologyDSMBinarySensorEntityDescription(
|
||||
api_key=SynoCoreSecurity.API_KEY,
|
||||
key="status",
|
||||
name="Security Status",
|
||||
device_class=BinarySensorDeviceClass.SAFETY,
|
||||
),
|
||||
)
|
||||
|
||||
STORAGE_DISK_BINARY_SENSORS: tuple[SynologyDSMBinarySensorEntityDescription, ...] = (
|
||||
SynologyDSMBinarySensorEntityDescription(
|
||||
api_key=SynoStorage.API_KEY,
|
||||
key="disk_exceed_bad_sector_thr",
|
||||
name="Exceeded Max Bad Sectors",
|
||||
device_class=BinarySensorDeviceClass.SAFETY,
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
SynologyDSMBinarySensorEntityDescription(
|
||||
api_key=SynoStorage.API_KEY,
|
||||
key="disk_below_remain_life_thr",
|
||||
name="Below Min Remaining Life",
|
||||
device_class=BinarySensorDeviceClass.SAFETY,
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
)
|
||||
|
||||
# Sensors
|
||||
UTILISATION_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="cpu_other_load",
|
||||
name="CPU Utilization (Other)",
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
icon="mdi:chip",
|
||||
entity_registry_enabled_default=False,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="cpu_user_load",
|
||||
name="CPU Utilization (User)",
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
icon="mdi:chip",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="cpu_system_load",
|
||||
name="CPU Utilization (System)",
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
icon="mdi:chip",
|
||||
entity_registry_enabled_default=False,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="cpu_total_load",
|
||||
name="CPU Utilization (Total)",
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
icon="mdi:chip",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="cpu_1min_load",
|
||||
name="CPU Load Average (1 min)",
|
||||
native_unit_of_measurement=ENTITY_UNIT_LOAD,
|
||||
icon="mdi:chip",
|
||||
entity_registry_enabled_default=False,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="cpu_5min_load",
|
||||
name="CPU Load Average (5 min)",
|
||||
native_unit_of_measurement=ENTITY_UNIT_LOAD,
|
||||
icon="mdi:chip",
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="cpu_15min_load",
|
||||
name="CPU Load Average (15 min)",
|
||||
native_unit_of_measurement=ENTITY_UNIT_LOAD,
|
||||
icon="mdi:chip",
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="memory_real_usage",
|
||||
name="Memory Usage (Real)",
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
icon="mdi:memory",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="memory_size",
|
||||
name="Memory Size",
|
||||
native_unit_of_measurement=DATA_MEGABYTES,
|
||||
icon="mdi:memory",
|
||||
entity_registry_enabled_default=False,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="memory_cached",
|
||||
name="Memory Cached",
|
||||
native_unit_of_measurement=DATA_MEGABYTES,
|
||||
icon="mdi:memory",
|
||||
entity_registry_enabled_default=False,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="memory_available_swap",
|
||||
name="Memory Available (Swap)",
|
||||
native_unit_of_measurement=DATA_MEGABYTES,
|
||||
icon="mdi:memory",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="memory_available_real",
|
||||
name="Memory Available (Real)",
|
||||
native_unit_of_measurement=DATA_MEGABYTES,
|
||||
icon="mdi:memory",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="memory_total_swap",
|
||||
name="Memory Total (Swap)",
|
||||
native_unit_of_measurement=DATA_MEGABYTES,
|
||||
icon="mdi:memory",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="memory_total_real",
|
||||
name="Memory Total (Real)",
|
||||
native_unit_of_measurement=DATA_MEGABYTES,
|
||||
icon="mdi:memory",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="network_up",
|
||||
name="Upload Throughput",
|
||||
native_unit_of_measurement=DATA_RATE_KILOBYTES_PER_SECOND,
|
||||
icon="mdi:upload",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="network_down",
|
||||
name="Download Throughput",
|
||||
native_unit_of_measurement=DATA_RATE_KILOBYTES_PER_SECOND,
|
||||
icon="mdi:download",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
)
|
||||
STORAGE_VOL_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoStorage.API_KEY,
|
||||
key="volume_status",
|
||||
name="Status",
|
||||
icon="mdi:checkbox-marked-circle-outline",
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoStorage.API_KEY,
|
||||
key="volume_size_total",
|
||||
name="Total Size",
|
||||
native_unit_of_measurement=DATA_TERABYTES,
|
||||
icon="mdi:chart-pie",
|
||||
entity_registry_enabled_default=False,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoStorage.API_KEY,
|
||||
key="volume_size_used",
|
||||
name="Used Space",
|
||||
native_unit_of_measurement=DATA_TERABYTES,
|
||||
icon="mdi:chart-pie",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoStorage.API_KEY,
|
||||
key="volume_percentage_used",
|
||||
name="Volume Used",
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
icon="mdi:chart-pie",
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoStorage.API_KEY,
|
||||
key="volume_disk_temp_avg",
|
||||
name="Average Disk Temp",
|
||||
native_unit_of_measurement=TEMP_CELSIUS,
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoStorage.API_KEY,
|
||||
key="volume_disk_temp_max",
|
||||
name="Maximum Disk Temp",
|
||||
native_unit_of_measurement=TEMP_CELSIUS,
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
entity_registry_enabled_default=False,
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
)
|
||||
STORAGE_DISK_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoStorage.API_KEY,
|
||||
key="disk_smart_status",
|
||||
name="Status (Smart)",
|
||||
icon="mdi:checkbox-marked-circle-outline",
|
||||
entity_registry_enabled_default=False,
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoStorage.API_KEY,
|
||||
key="disk_status",
|
||||
name="Status",
|
||||
icon="mdi:checkbox-marked-circle-outline",
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoStorage.API_KEY,
|
||||
key="disk_temp",
|
||||
name="Temperature",
|
||||
native_unit_of_measurement=TEMP_CELSIUS,
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
)
|
||||
|
||||
INFORMATION_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoDSMInformation.API_KEY,
|
||||
key="temperature",
|
||||
name="Temperature",
|
||||
native_unit_of_measurement=TEMP_CELSIUS,
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoDSMInformation.API_KEY,
|
||||
key="uptime",
|
||||
name="Last Boot",
|
||||
device_class=SensorDeviceClass.TIMESTAMP,
|
||||
entity_registry_enabled_default=False,
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
)
|
||||
|
||||
# Switch
|
||||
SURVEILLANCE_SWITCH: tuple[SynologyDSMSwitchEntityDescription, ...] = (
|
||||
SynologyDSMSwitchEntityDescription(
|
||||
api_key=SynoSurveillanceStation.HOME_MODE_API_KEY,
|
||||
key="home_mode",
|
||||
name="Home Mode",
|
||||
icon="mdi:home-account",
|
||||
),
|
||||
)
|
||||
|
|
|
@ -1,18 +1,31 @@
|
|||
"""Support for Synology DSM sensors."""
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
from datetime import datetime, timedelta
|
||||
from typing import Any
|
||||
|
||||
from homeassistant.components.sensor import SensorEntity
|
||||
from synology_dsm.api.core.utilization import SynoCoreUtilization
|
||||
from synology_dsm.api.dsm.information import SynoDSMInformation
|
||||
from synology_dsm.api.storage.storage import SynoStorage
|
||||
|
||||
from homeassistant.components.sensor import (
|
||||
SensorDeviceClass,
|
||||
SensorEntity,
|
||||
SensorEntityDescription,
|
||||
SensorStateClass,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import (
|
||||
CONF_DISKS,
|
||||
DATA_MEGABYTES,
|
||||
DATA_RATE_KILOBYTES_PER_SECOND,
|
||||
DATA_TERABYTES,
|
||||
PERCENTAGE,
|
||||
TEMP_CELSIUS,
|
||||
)
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity import EntityCategory
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
|
||||
from homeassistant.util.dt import utcnow
|
||||
|
@ -23,12 +36,244 @@ from .const import (
|
|||
COORDINATOR_CENTRAL,
|
||||
DOMAIN,
|
||||
ENTITY_UNIT_LOAD,
|
||||
INFORMATION_SENSORS,
|
||||
STORAGE_DISK_SENSORS,
|
||||
STORAGE_VOL_SENSORS,
|
||||
SYNO_API,
|
||||
UTILISATION_SENSORS,
|
||||
SynologyDSMSensorEntityDescription,
|
||||
SynologyDSMEntityDescription,
|
||||
)
|
||||
|
||||
|
||||
@dataclass
|
||||
class SynologyDSMSensorEntityDescription(
|
||||
SensorEntityDescription, SynologyDSMEntityDescription
|
||||
):
|
||||
"""Describes Synology DSM sensor entity."""
|
||||
|
||||
|
||||
UTILISATION_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="cpu_other_load",
|
||||
name="CPU Utilization (Other)",
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
icon="mdi:chip",
|
||||
entity_registry_enabled_default=False,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="cpu_user_load",
|
||||
name="CPU Utilization (User)",
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
icon="mdi:chip",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="cpu_system_load",
|
||||
name="CPU Utilization (System)",
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
icon="mdi:chip",
|
||||
entity_registry_enabled_default=False,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="cpu_total_load",
|
||||
name="CPU Utilization (Total)",
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
icon="mdi:chip",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="cpu_1min_load",
|
||||
name="CPU Load Average (1 min)",
|
||||
native_unit_of_measurement=ENTITY_UNIT_LOAD,
|
||||
icon="mdi:chip",
|
||||
entity_registry_enabled_default=False,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="cpu_5min_load",
|
||||
name="CPU Load Average (5 min)",
|
||||
native_unit_of_measurement=ENTITY_UNIT_LOAD,
|
||||
icon="mdi:chip",
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="cpu_15min_load",
|
||||
name="CPU Load Average (15 min)",
|
||||
native_unit_of_measurement=ENTITY_UNIT_LOAD,
|
||||
icon="mdi:chip",
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="memory_real_usage",
|
||||
name="Memory Usage (Real)",
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
icon="mdi:memory",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="memory_size",
|
||||
name="Memory Size",
|
||||
native_unit_of_measurement=DATA_MEGABYTES,
|
||||
icon="mdi:memory",
|
||||
entity_registry_enabled_default=False,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="memory_cached",
|
||||
name="Memory Cached",
|
||||
native_unit_of_measurement=DATA_MEGABYTES,
|
||||
icon="mdi:memory",
|
||||
entity_registry_enabled_default=False,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="memory_available_swap",
|
||||
name="Memory Available (Swap)",
|
||||
native_unit_of_measurement=DATA_MEGABYTES,
|
||||
icon="mdi:memory",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="memory_available_real",
|
||||
name="Memory Available (Real)",
|
||||
native_unit_of_measurement=DATA_MEGABYTES,
|
||||
icon="mdi:memory",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="memory_total_swap",
|
||||
name="Memory Total (Swap)",
|
||||
native_unit_of_measurement=DATA_MEGABYTES,
|
||||
icon="mdi:memory",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="memory_total_real",
|
||||
name="Memory Total (Real)",
|
||||
native_unit_of_measurement=DATA_MEGABYTES,
|
||||
icon="mdi:memory",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="network_up",
|
||||
name="Upload Throughput",
|
||||
native_unit_of_measurement=DATA_RATE_KILOBYTES_PER_SECOND,
|
||||
icon="mdi:upload",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoCoreUtilization.API_KEY,
|
||||
key="network_down",
|
||||
name="Download Throughput",
|
||||
native_unit_of_measurement=DATA_RATE_KILOBYTES_PER_SECOND,
|
||||
icon="mdi:download",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
)
|
||||
STORAGE_VOL_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoStorage.API_KEY,
|
||||
key="volume_status",
|
||||
name="Status",
|
||||
icon="mdi:checkbox-marked-circle-outline",
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoStorage.API_KEY,
|
||||
key="volume_size_total",
|
||||
name="Total Size",
|
||||
native_unit_of_measurement=DATA_TERABYTES,
|
||||
icon="mdi:chart-pie",
|
||||
entity_registry_enabled_default=False,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoStorage.API_KEY,
|
||||
key="volume_size_used",
|
||||
name="Used Space",
|
||||
native_unit_of_measurement=DATA_TERABYTES,
|
||||
icon="mdi:chart-pie",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoStorage.API_KEY,
|
||||
key="volume_percentage_used",
|
||||
name="Volume Used",
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
icon="mdi:chart-pie",
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoStorage.API_KEY,
|
||||
key="volume_disk_temp_avg",
|
||||
name="Average Disk Temp",
|
||||
native_unit_of_measurement=TEMP_CELSIUS,
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoStorage.API_KEY,
|
||||
key="volume_disk_temp_max",
|
||||
name="Maximum Disk Temp",
|
||||
native_unit_of_measurement=TEMP_CELSIUS,
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
entity_registry_enabled_default=False,
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
)
|
||||
STORAGE_DISK_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoStorage.API_KEY,
|
||||
key="disk_smart_status",
|
||||
name="Status (Smart)",
|
||||
icon="mdi:checkbox-marked-circle-outline",
|
||||
entity_registry_enabled_default=False,
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoStorage.API_KEY,
|
||||
key="disk_status",
|
||||
name="Status",
|
||||
icon="mdi:checkbox-marked-circle-outline",
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoStorage.API_KEY,
|
||||
key="disk_temp",
|
||||
name="Temperature",
|
||||
native_unit_of_measurement=TEMP_CELSIUS,
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
)
|
||||
|
||||
INFORMATION_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoDSMInformation.API_KEY,
|
||||
key="temperature",
|
||||
name="Temperature",
|
||||
native_unit_of_measurement=TEMP_CELSIUS,
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
SynologyDSMSensorEntityDescription(
|
||||
api_key=SynoDSMInformation.API_KEY,
|
||||
key="uptime",
|
||||
name="Last Boot",
|
||||
device_class=SensorDeviceClass.TIMESTAMP,
|
||||
entity_registry_enabled_default=False,
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
"""Support for Synology DSM switch."""
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
import logging
|
||||
from typing import Any
|
||||
|
||||
from synology_dsm.api.surveillance_station import SynoSurveillanceStation
|
||||
|
||||
from homeassistant.components.switch import SwitchEntity
|
||||
from homeassistant.components.switch import SwitchEntity, SwitchEntityDescription
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity import DeviceInfo
|
||||
|
@ -14,17 +15,28 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
|||
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
|
||||
|
||||
from . import SynoApi, SynologyDSMBaseEntity
|
||||
from .const import (
|
||||
COORDINATOR_SWITCHES,
|
||||
DOMAIN,
|
||||
SURVEILLANCE_SWITCH,
|
||||
SYNO_API,
|
||||
SynologyDSMSwitchEntityDescription,
|
||||
)
|
||||
from .const import COORDINATOR_SWITCHES, DOMAIN, SYNO_API, SynologyDSMEntityDescription
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@dataclass
|
||||
class SynologyDSMSwitchEntityDescription(
|
||||
SwitchEntityDescription, SynologyDSMEntityDescription
|
||||
):
|
||||
"""Describes Synology DSM switch entity."""
|
||||
|
||||
|
||||
SURVEILLANCE_SWITCH: tuple[SynologyDSMSwitchEntityDescription, ...] = (
|
||||
SynologyDSMSwitchEntityDescription(
|
||||
api_key=SynoSurveillanceStation.HOME_MODE_API_KEY,
|
||||
key="home_mode",
|
||||
name="Home Mode",
|
||||
icon="mdi:home-account",
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
|
||||
) -> None:
|
||||
|
|
Loading…
Reference in New Issue