diff --git a/zwave_js_server/model/controller/__init__.py b/zwave_js_server/model/controller/__init__.py index 767aed3c2..87d6f5977 100644 --- a/zwave_js_server/model/controller/__init__.py +++ b/zwave_js_server/model/controller/__init__.py @@ -1,15 +1,6 @@ """Provide a model for the Z-Wave JS controller.""" from dataclasses import dataclass -from typing import ( - TYPE_CHECKING, - Any, - Dict, - List, - Literal, - Optional, - Union, - cast, -) +from typing import TYPE_CHECKING, Any, Dict, List, Literal, Optional, Union, cast from ...const import ( MINIMUM_QR_STRING_LENGTH, @@ -22,14 +13,14 @@ from ...event import Event, EventBase from ...util.helpers import convert_base64_to_bytes, convert_bytes_to_base64 from ..association import Association, AssociationGroup -from .statistics import ControllerStatistics from ..node import Node +from .data_model import ControllerDataType from .inclusion_and_provisioning import ( InclusionGrant, ProvisioningEntry, QRProvisioningInformation, ) -from .data_model import ControllerDataType +from .statistics import ControllerStatistics if TYPE_CHECKING: from ...client import Client diff --git a/zwave_js_server/model/controller/inclusion_and_provisioning.py b/zwave_js_server/model/controller/inclusion_and_provisioning.py index d10cd9ad4..fd959c673 100644 --- a/zwave_js_server/model/controller/inclusion_and_provisioning.py +++ b/zwave_js_server/model/controller/inclusion_and_provisioning.py @@ -68,14 +68,6 @@ def from_dict(cls, data: Dict[str, Any]) -> "ProvisioningEntry": ) -@dataclass -class NVMProgress: - """Class to represent an NVM backup/restore progress event.""" - - bytes_read_or_written: int - total_bytes: int - - @dataclass class QRProvisioningInformationMixin: """Mixin class to represent the base fields of a QR provisioning information.""" diff --git a/zwave_js_server/model/node/__init__.py b/zwave_js_server/model/node/__init__.py index 2092e82ca..43e33fa57 100644 --- a/zwave_js_server/model/node/__init__.py +++ b/zwave_js_server/model/node/__init__.py @@ -1,5 +1,5 @@ """Provide a model for the Z-Wave JS node.""" -from typing import TYPE_CHECKING, Any, Dict, List, Optional, TypedDict, Union, cast +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union, cast from ...const import ( INTERVIEW_FAILED, @@ -17,22 +17,15 @@ UnwriteableValue, ) from ..command_class import CommandClassInfo -from ..device_class import DeviceClass, DeviceClassDataType -from ..device_config import DeviceConfig, DeviceConfigDataType -from ..endpoint import Endpoint, EndpointDataType +from ..device_class import DeviceClass +from ..device_config import DeviceConfig +from ..endpoint import Endpoint from ..firmware import ( FirmwareUpdateFinished, FirmwareUpdateFinishedDataType, FirmwareUpdateProgress, FirmwareUpdateProgressDataType, ) -from .health_check import ( - CheckHealthProgress, - LifelineHealthCheckSummary, - RouteHealthCheckSummary, - TestPowerLevelProgress, -) -from .statistics import NodeStatistics, NodeStatisticsDataType from ..notification import ( EntryControlNotification, EntryControlNotificationDataType, @@ -51,56 +44,19 @@ _get_value_id_from_dict, _init_value, ) +from .data_model import NodeDataType +from .health_check import ( + CheckHealthProgress, + LifelineHealthCheckSummary, + RouteHealthCheckSummary, + TestPowerLevelProgress, +) +from .statistics import NodeStatistics if TYPE_CHECKING: from ...client import Client -class NodeDataType(TypedDict, total=False): - """Represent a node data dict type.""" - - nodeId: int # required - index: int # required - deviceClass: DeviceClassDataType # required - installerIcon: int - userIcon: int - name: str - location: str - status: int # 0-4 # required - zwavePlusVersion: int - zwavePlusNodeType: int - zwavePlusRoleType: int - isListening: bool - isFrequentListening: Union[bool, str] - isRouting: bool - maxDataRate: int - supportedDataRates: List[int] - isSecure: bool - supportsBeaming: bool - supportsSecurity: bool - protocolVersion: int - firmwareVersion: str - manufacturerId: int - productId: int - productType: int - deviceConfig: DeviceConfigDataType - deviceDatabaseUrl: str - keepAwake: bool - ready: bool - label: str - endpoints: List[EndpointDataType] - endpointCountIsDynamic: bool - endpointsHaveIdenticalCapabilities: bool - individualEndpointCount: int - aggregatedEndpointCount: int - interviewAttempts: int - interviewStage: Optional[Union[int, str]] - values: List[ValueDataType] - statistics: NodeStatisticsDataType - highestSecurityClass: int - isControllerNode: bool - - class Node(EventBase): """Represent a Z-Wave JS node.""" diff --git a/zwave_js_server/model/node/data_model.py b/zwave_js_server/model/node/data_model.py new file mode 100644 index 000000000..1cbe07e9c --- /dev/null +++ b/zwave_js_server/model/node/data_model.py @@ -0,0 +1,53 @@ +"""Provide a model for the Z-Wave JS controller.""" +from typing import List, Optional, TypedDict, Union + +from ..device_class import DeviceClassDataType +from ..device_config import DeviceConfigDataType +from ..endpoint import EndpointDataType +from ..value import ValueDataType +from .statistics import NodeStatisticsDataType + + +class NodeDataType(TypedDict, total=False): + """Represent a node data dict type.""" + + nodeId: int # required + index: int # required + deviceClass: DeviceClassDataType # required + installerIcon: int + userIcon: int + name: str + location: str + status: int # 0-4 # required + zwavePlusVersion: int + zwavePlusNodeType: int + zwavePlusRoleType: int + isListening: bool + isFrequentListening: Union[bool, str] + isRouting: bool + maxDataRate: int + supportedDataRates: List[int] + isSecure: bool + supportsBeaming: bool + supportsSecurity: bool + protocolVersion: int + firmwareVersion: str + manufacturerId: int + productId: int + productType: int + deviceConfig: DeviceConfigDataType + deviceDatabaseUrl: str + keepAwake: bool + ready: bool + label: str + endpoints: List[EndpointDataType] + endpointCountIsDynamic: bool + endpointsHaveIdenticalCapabilities: bool + individualEndpointCount: int + aggregatedEndpointCount: int + interviewAttempts: int + interviewStage: Optional[Union[int, str]] + values: List[ValueDataType] + statistics: NodeStatisticsDataType + highestSecurityClass: int + isControllerNode: bool