1 """Entity classes for the QNAP QSW integration."""
3 from __future__
import annotations
5 from dataclasses
import dataclass
6 from enum
import StrEnum
9 from aioqsw.const
import (
26 from .const
import MANUFACTURER
27 from .coordinator
import QswDataCoordinator, QswFirmwareCoordinator
31 """QNAP QSW Entity Type."""
33 LACP_PORT = QSD_LACP_PORTS
38 """Define an QNAP QSW entity."""
42 coordinator: QswDataCoordinator,
44 type_id: int |
None =
None,
52 configuration_url=entry.data[CONF_URL],
55 CONNECTION_NETWORK_MAC,
59 manufacturer=MANUFACTURER,
62 sw_version=self.
get_device_valueget_device_value(QSD_FIRMWARE_INFO, QSD_FIRMWARE),
69 qsw_type: QswEntityType |
None =
None,
71 """Return device value by key."""
73 if key
in self.coordinator.data:
74 data = self.coordinator.data[key]
75 if qsw_type
is not None and self.
type_idtype_id
is not None:
78 and self.
type_idtype_id
in data[qsw_type]
79 and subkey
in data[qsw_type][self.
type_idtype_id]
81 value = data[qsw_type][self.
type_idtype_id][subkey]
87 @dataclass(frozen=True)
89 """Mixin to describe a QSW entity."""
94 @dataclass(frozen=True)
96 """Class to describe a QSW entity."""
98 attributes: dict[str, list[str]] |
None =
None
102 """Base class for QSW sensor entities."""
104 entity_description: QswEntityDescription
108 """Update attributes when the coordinator updates."""
114 """Update attributes."""
115 if self.entity_description.attributes:
118 for key, val
in self.entity_description.attributes.items()
123 """Define a QNAP QSW firmware entity."""
125 _attr_has_entity_name =
True
129 coordinator: QswFirmwareCoordinator,
136 configuration_url=entry.data[CONF_URL],
139 CONNECTION_NETWORK_MAC,
143 manufacturer=MANUFACTURER,
146 sw_version=self.
get_device_valueget_device_value(QSD_FIRMWARE_INFO, QSD_FIRMWARE),
150 """Return device value by key."""
152 if self.coordinator.data
is not None and key
in self.coordinator.data:
153 data = self.coordinator.data[key]
None __init__(self, QswDataCoordinator coordinator, ConfigEntry entry, int|None type_id=None)
Any get_device_value(self, str key, str subkey, QswEntityType|None qsw_type=None)
Any get_device_value(self, str key, str subkey)
None __init__(self, QswFirmwareCoordinator coordinator, ConfigEntry entry)
None _handle_coordinator_update(self)
None _async_update_attrs(self)
_attr_extra_state_attributes