Bump python-matter-server to 3.0.0 (#88607)

* Bump python-matter-server to 3.0.0

Include all fixes for the changed api schema of the library

* fix test fixtures

* remove invalid data from fixtures

* fix some of the tests

* fix binary sensor bug

* fix sensor bug

* fix switch test

* fix tests

* adjust bugs and typos
This commit is contained in:
Marcel van der Veldt 2023-02-22 20:24:30 +01:00 committed by GitHub
parent 9c7adfc4b2
commit 881e85d74f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
39 changed files with 3687 additions and 31021 deletions

View file

@ -5,12 +5,8 @@ import asyncio
import async_timeout import async_timeout
from matter_server.client import MatterClient from matter_server.client import MatterClient
from matter_server.client.exceptions import ( from matter_server.client.exceptions import CannotConnect, InvalidServerVersion
CannotConnect, from matter_server.common.errors import MatterError, NodeCommissionFailed
FailedCommand,
InvalidServerVersion,
)
from matter_server.common.models.error import MatterError
import voluptuous as vol import voluptuous as vol
from homeassistant.components.hassio import AddonError, AddonManager, AddonState from homeassistant.components.hassio import AddonError, AddonManager, AddonState
@ -211,31 +207,10 @@ def _async_init_services(hass: HomeAssistant) -> None:
"""Get node id from ha device id.""" """Get node id from ha device id."""
dev_reg = dr.async_get(hass) dev_reg = dr.async_get(hass)
device = dev_reg.async_get(ha_device_id) device = dev_reg.async_get(ha_device_id)
if device is None: if device is None:
return None return None
if node := await get_node_from_device_entry(hass, device):
matter_id = next(
(
identifier
for identifier in device.identifiers
if identifier[0] == DOMAIN
),
None,
)
if not matter_id:
return None
unique_id = matter_id[1]
matter_client = get_matter(hass).matter_client
# This could be more efficient
for node in await matter_client.get_nodes():
if node.unique_id == unique_id:
return node.node_id return node.node_id
return None return None
async def open_commissioning_window(call: ServiceCall) -> None: async def open_commissioning_window(call: ServiceCall) -> None:
@ -251,7 +226,7 @@ def _async_init_services(hass: HomeAssistant) -> None:
try: try:
await matter_client.open_commissioning_window(node_id) await matter_client.open_commissioning_window(node_id)
except FailedCommand as err: except NodeCommissionFailed as err:
raise HomeAssistantError(str(err)) from err raise HomeAssistantError(str(err)) from err
async_register_admin_service( async_register_admin_service(

View file

@ -4,12 +4,11 @@ from __future__ import annotations
from typing import TYPE_CHECKING, cast from typing import TYPE_CHECKING, cast
from chip.clusters import Objects as all_clusters from chip.clusters import Objects as all_clusters
from matter_server.common.models.events import EventType from matter_server.client.models.node_device import (
from matter_server.common.models.node_device import (
AbstractMatterNodeDevice, AbstractMatterNodeDevice,
MatterBridgedNodeDevice, MatterBridgedNodeDevice,
) )
from matter_server.common.models.server_information import ServerInfo from matter_server.common.models import EventType, ServerInfoMessage
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import Platform from homeassistant.const import Platform
@ -23,7 +22,7 @@ from .helpers import get_device_id
if TYPE_CHECKING: if TYPE_CHECKING:
from matter_server.client import MatterClient from matter_server.client import MatterClient
from matter_server.common.models.node import MatterNode from matter_server.client.models.node import MatterNode
class MatterAdapter: class MatterAdapter:
@ -70,15 +69,19 @@ class MatterAdapter:
bridge_unique_id: str | None = None bridge_unique_id: str | None = None
if node.aggregator_device_type_instance is not None and ( if (
node.root_device_type_instance.get_cluster(all_clusters.BasicInformation) node.aggregator_device_type_instance is not None
and node.root_device_type_instance is not None
and node.root_device_type_instance.get_cluster(
all_clusters.BasicInformation
)
): ):
# create virtual (parent) device for bridge node device # create virtual (parent) device for bridge node device
bridge_device = MatterBridgedNodeDevice( bridge_device = MatterBridgedNodeDevice(
node.aggregator_device_type_instance node.aggregator_device_type_instance
) )
self._create_device_registry(bridge_device) self._create_device_registry(bridge_device)
server_info = cast(ServerInfo, self.matter_client.server_info) server_info = cast(ServerInfoMessage, self.matter_client.server_info)
bridge_unique_id = get_device_id(server_info, bridge_device) bridge_unique_id = get_device_id(server_info, bridge_device)
for node_device in node.node_devices: for node_device in node.node_devices:
@ -90,7 +93,7 @@ class MatterAdapter:
bridge_unique_id: str | None = None, bridge_unique_id: str | None = None,
) -> None: ) -> None:
"""Create a device registry entry.""" """Create a device registry entry."""
server_info = cast(ServerInfo, self.matter_client.server_info) server_info = cast(ServerInfoMessage, self.matter_client.server_info)
basic_info = node_device.device_info() basic_info = node_device.device_info()
device_type_instances = node_device.device_type_instances() device_type_instances = node_device.device_type_instances()

View file

@ -5,7 +5,7 @@ from collections.abc import Callable
from functools import wraps from functools import wraps
from typing import Any from typing import Any
from matter_server.client.exceptions import FailedCommand from matter_server.common.errors import MatterError
import voluptuous as vol import voluptuous as vol
from homeassistant.components import websocket_api from homeassistant.components import websocket_api
@ -44,7 +44,7 @@ def async_get_matter_adapter(func: Callable) -> Callable:
def async_handle_failed_command(func: Callable) -> Callable: def async_handle_failed_command(func: Callable) -> Callable:
"""Decorate function to handle FailedCommand and send relevant error.""" """Decorate function to handle MatterError and send relevant error."""
@wraps(func) @wraps(func)
async def async_handle_failed_command_func( async def async_handle_failed_command_func(
@ -54,11 +54,11 @@ def async_handle_failed_command(func: Callable) -> Callable:
*args: Any, *args: Any,
**kwargs: Any, **kwargs: Any,
) -> None: ) -> None:
"""Handle FailedCommand within function and send relevant error.""" """Handle MatterError within function and send relevant error."""
try: try:
await func(hass, connection, msg, *args, **kwargs) await func(hass, connection, msg, *args, **kwargs)
except FailedCommand as err: except MatterError as err:
connection.send_error(msg[ID], err.error_code, err.args[0]) connection.send_error(msg[ID], str(err.error_code), err.args[0])
return async_handle_failed_command_func return async_handle_failed_command_func

View file

@ -5,7 +5,7 @@ from dataclasses import dataclass
from functools import partial from functools import partial
from chip.clusters import Objects as clusters from chip.clusters import Objects as clusters
from matter_server.common.models import device_types from matter_server.client.models import device_types
from homeassistant.components.binary_sensor import ( from homeassistant.components.binary_sensor import (
BinarySensorDeviceClass, BinarySensorDeviceClass,
@ -39,8 +39,10 @@ class MatterBinarySensor(MatterEntity, BinarySensorEntity):
@callback @callback
def _update_from_device(self) -> None: def _update_from_device(self) -> None:
"""Update from device.""" """Update from device."""
cluster = self._device_type_instance.get_cluster(clusters.BooleanState) self._attr_is_on = self.get_matter_attribute_value(
self._attr_is_on = cluster.stateValue if cluster else None # We always subscribe to a single value
self.entity_description.subscribe_attributes[0],
)
class MatterOccupancySensor(MatterBinarySensor): class MatterOccupancySensor(MatterBinarySensor):
@ -51,9 +53,12 @@ class MatterOccupancySensor(MatterBinarySensor):
@callback @callback
def _update_from_device(self) -> None: def _update_from_device(self) -> None:
"""Update from device.""" """Update from device."""
cluster = self._device_type_instance.get_cluster(clusters.OccupancySensing) value = self.get_matter_attribute_value(
# We always subscribe to a single value
self.entity_description.subscribe_attributes[0],
)
# The first bit = if occupied # The first bit = if occupied
self._attr_is_on = cluster.occupancy & 1 == 1 if cluster else None self._attr_is_on = (value & 1 == 1) if value is not None else None
@dataclass @dataclass

View file

@ -11,7 +11,7 @@ from .sensor import DEVICE_ENTITY as SENSOR_DEVICE_ENTITY
from .switch import DEVICE_ENTITY as SWITCH_DEVICE_ENTITY from .switch import DEVICE_ENTITY as SWITCH_DEVICE_ENTITY
if TYPE_CHECKING: if TYPE_CHECKING:
from matter_server.common.models.device_types import DeviceType from matter_server.client.models.device_types import DeviceType
from .entity import MatterEntityDescriptionBaseClass from .entity import MatterEntityDescriptionBaseClass

View file

@ -4,7 +4,8 @@ from __future__ import annotations
from copy import deepcopy from copy import deepcopy
from typing import Any from typing import Any
from matter_server.common.helpers.util import dataclass_to_dict from chip.clusters import Objects
from matter_server.common.helpers.util import dataclass_to_dict, parse_attribute_path
from homeassistant.components.diagnostics import REDACTED from homeassistant.components.diagnostics import REDACTED
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
@ -13,16 +14,20 @@ from homeassistant.helpers import device_registry as dr
from .helpers import get_matter, get_node_from_device_entry from .helpers import get_matter, get_node_from_device_entry
ATTRIBUTES_TO_REDACT = {"chip.clusters.Objects.BasicInformation.Attributes.Location"} ATTRIBUTES_TO_REDACT = {Objects.BasicInformation.Attributes.Location}
def redact_matter_attributes(node_data: dict[str, Any]) -> dict[str, Any]: def redact_matter_attributes(node_data: dict[str, Any]) -> dict[str, Any]:
"""Redact Matter cluster attribute.""" """Redact Matter cluster attribute."""
redacted = deepcopy(node_data) redacted = deepcopy(node_data)
for attribute_to_redact in ATTRIBUTES_TO_REDACT: for attribute_to_redact in ATTRIBUTES_TO_REDACT:
for value in redacted["attributes"].values(): for attribute_path, _value in redacted["attributes"].items():
if value["attribute_type"] == attribute_to_redact: _, cluster_id, attribute_id = parse_attribute_path(attribute_path)
value["value"] = REDACTED if cluster_id != attribute_to_redact.cluster_id:
continue
if attribute_id != attribute_to_redact.attribute_id:
continue
redacted["attributes"][attribute_path] = REDACTED
return redacted return redacted
@ -40,7 +45,7 @@ async def async_get_config_entry_diagnostics(
"""Return diagnostics for a config entry.""" """Return diagnostics for a config entry."""
matter = get_matter(hass) matter = get_matter(hass)
server_diagnostics = await matter.matter_client.get_diagnostics() server_diagnostics = await matter.matter_client.get_diagnostics()
data = remove_serialization_type(dataclass_to_dict(server_diagnostics)) data = dataclass_to_dict(server_diagnostics)
nodes = [redact_matter_attributes(node_data) for node_data in data["nodes"]] nodes = [redact_matter_attributes(node_data) for node_data in data["nodes"]]
data["nodes"] = nodes data["nodes"] = nodes
@ -56,10 +61,8 @@ async def async_get_device_diagnostics(
node = await get_node_from_device_entry(hass, device) node = await get_node_from_device_entry(hass, device)
return { return {
"server_info": remove_serialization_type( "server_info": dataclass_to_dict(server_diagnostics.info),
dataclass_to_dict(server_diagnostics.info)
),
"node": redact_matter_attributes( "node": redact_matter_attributes(
remove_serialization_type(dataclass_to_dict(node) if node else {}) remove_serialization_type(dataclass_to_dict(node.node_data) if node else {})
), ),
} }

View file

@ -7,10 +7,11 @@ from dataclasses import dataclass
import logging import logging
from typing import TYPE_CHECKING, Any, cast from typing import TYPE_CHECKING, Any, cast
from matter_server.common.models.device_type_instance import MatterDeviceTypeInstance from chip.clusters.Objects import ClusterAttributeDescriptor
from matter_server.common.models.events import EventType from matter_server.client.models.device_type_instance import MatterDeviceTypeInstance
from matter_server.common.models.node_device import AbstractMatterNodeDevice from matter_server.client.models.node_device import AbstractMatterNodeDevice
from matter_server.common.models.server_information import ServerInfo from matter_server.common.helpers.util import create_attribute_path
from matter_server.common.models import EventType, ServerInfoMessage
from homeassistant.core import callback from homeassistant.core import callback
from homeassistant.helpers.entity import DeviceInfo, Entity, EntityDescription from homeassistant.helpers.entity import DeviceInfo, Entity, EntityDescription
@ -20,7 +21,6 @@ from .helpers import get_device_id, get_operational_instance_id
if TYPE_CHECKING: if TYPE_CHECKING:
from matter_server.client import MatterClient from matter_server.client import MatterClient
from matter_server.common.models.node import MatterAttribute
LOGGER = logging.getLogger(__name__) LOGGER = logging.getLogger(__name__)
@ -59,19 +59,20 @@ class MatterEntity(Entity):
self.entity_description = entity_description self.entity_description = entity_description
self._unsubscribes: list[Callable] = [] self._unsubscribes: list[Callable] = []
# for fast lookups we create a mapping to the attribute paths # for fast lookups we create a mapping to the attribute paths
# The server info is set when the client connects to the server.
self._attributes_map: dict[type, str] = {} self._attributes_map: dict[type, str] = {}
server_info = cast(ServerInfo, self.matter_client.server_info) # The server info is set when the client connects to the server.
server_info = cast(ServerInfoMessage, self.matter_client.server_info)
# create unique_id based on "Operational Instance Name" and endpoint/device type # create unique_id based on "Operational Instance Name" and endpoint/device type
self._attr_unique_id = ( self._attr_unique_id = (
f"{get_operational_instance_id(server_info, self._node_device.node())}-" f"{get_operational_instance_id(server_info, self._node_device.node())}-"
f"{device_type_instance.endpoint}-" f"{device_type_instance.endpoint.endpoint_id}-"
f"{device_type_instance.device_type.device_type}" f"{device_type_instance.device_type.device_type}"
) )
node_device_id = get_device_id(server_info, node_device) node_device_id = get_device_id(server_info, node_device)
self._attr_device_info = DeviceInfo( self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, f"{ID_TYPE_DEVICE_ID}_{node_device_id}")} identifiers={(DOMAIN, f"{ID_TYPE_DEVICE_ID}_{node_device_id}")}
) )
self._attr_available = self._node_device.node().available
async def async_added_to_hass(self) -> None: async def async_added_to_hass(self) -> None:
"""Handle being added to Home Assistant.""" """Handle being added to Home Assistant."""
@ -79,19 +80,24 @@ class MatterEntity(Entity):
# Subscribe to attribute updates. # Subscribe to attribute updates.
for attr_cls in self.entity_description.subscribe_attributes: for attr_cls in self.entity_description.subscribe_attributes:
if matter_attr := self.get_matter_attribute(attr_cls): attr_path = self.get_matter_attribute_path(attr_cls)
self._attributes_map[attr_cls] = matter_attr.path self._attributes_map[attr_cls] = attr_path
self._unsubscribes.append( self._unsubscribes.append(
self.matter_client.subscribe( self.matter_client.subscribe(
self._on_matter_event, callback=self._on_matter_event,
EventType.ATTRIBUTE_UPDATED, event_filter=EventType.ATTRIBUTE_UPDATED,
self._device_type_instance.node.node_id, node_filter=self._device_type_instance.node.node_id,
matter_attr.path, attr_path_filter=attr_path,
)
)
# subscribe to node (availability changes)
self._unsubscribes.append(
self.matter_client.subscribe(
callback=self._on_matter_event,
event_filter=EventType.NODE_UPDATED,
node_filter=self._device_type_instance.node.node_id,
) )
) )
continue
# not sure if this can happen, but just in case log it.
LOGGER.warning("Attribute not found on device: %s", attr_cls)
# make sure to update the attributes once # make sure to update the attributes once
self._update_from_device() self._update_from_device()
@ -104,6 +110,7 @@ class MatterEntity(Entity):
@callback @callback
def _on_matter_event(self, event: EventType, data: Any = None) -> None: def _on_matter_event(self, event: EventType, data: Any = None) -> None:
"""Call on update.""" """Call on update."""
self._attr_available = self._device_type_instance.node.available
self._update_from_device() self._update_from_device()
self.async_write_ha_state() self.async_write_ha_state()
@ -113,13 +120,18 @@ class MatterEntity(Entity):
"""Update data from Matter device.""" """Update data from Matter device."""
@callback @callback
def get_matter_attribute(self, attribute: type) -> MatterAttribute | None: def get_matter_attribute_value(
"""Lookup MatterAttribute on device by providing the attribute class.""" self, attribute: type[ClusterAttributeDescriptor]
return next( ) -> Any:
( """Get current value for given attribute."""
x return self._device_type_instance.get_attribute_value(None, attribute)
for x in self._device_type_instance.attributes
if x.attribute_type == attribute @callback
), def get_matter_attribute_path(
None, self, attribute: type[ClusterAttributeDescriptor]
) -> str:
"""Return AttributePath by providing the endpoint and Attribute class."""
endpoint = self._device_type_instance.endpoint.endpoint_id
return create_attribute_path(
endpoint, attribute.cluster_id, attribute.attribute_id
) )

View file

@ -11,9 +11,9 @@ from homeassistant.helpers import device_registry as dr
from .const import DOMAIN, ID_TYPE_DEVICE_ID from .const import DOMAIN, ID_TYPE_DEVICE_ID
if TYPE_CHECKING: if TYPE_CHECKING:
from matter_server.common.models.node import MatterNode from matter_server.client.models.node import MatterNode
from matter_server.common.models.node_device import AbstractMatterNodeDevice from matter_server.client.models.node_device import AbstractMatterNodeDevice
from matter_server.common.models.server_information import ServerInfo from matter_server.common.models import ServerInfoMessage
from .adapter import MatterAdapter from .adapter import MatterAdapter
@ -37,7 +37,7 @@ def get_matter(hass: HomeAssistant) -> MatterAdapter:
def get_operational_instance_id( def get_operational_instance_id(
server_info: ServerInfo, server_info: ServerInfoMessage,
node: MatterNode, node: MatterNode,
) -> str: ) -> str:
"""Return `Operational Instance Name` for given MatterNode.""" """Return `Operational Instance Name` for given MatterNode."""
@ -49,7 +49,7 @@ def get_operational_instance_id(
def get_device_id( def get_device_id(
server_info: ServerInfo, server_info: ServerInfoMessage,
node_device: AbstractMatterNodeDevice, node_device: AbstractMatterNodeDevice,
) -> str: ) -> str:
"""Return HA device_id for the given MatterNodeDevice.""" """Return HA device_id for the given MatterNodeDevice."""

View file

@ -7,7 +7,7 @@ from functools import partial
from typing import Any from typing import Any
from chip.clusters import Objects as clusters from chip.clusters import Objects as clusters
from matter_server.common.models import device_types from matter_server.client.models import device_types
from homeassistant.components.light import ( from homeassistant.components.light import (
ATTR_BRIGHTNESS, ATTR_BRIGHTNESS,
@ -85,15 +85,13 @@ class MatterLight(MatterEntity, LightEntity):
def _supports_color_mode(self, color_feature: MatterColorControlFeatures) -> bool: def _supports_color_mode(self, color_feature: MatterColorControlFeatures) -> bool:
"""Return if device supports given color mode.""" """Return if device supports given color mode."""
feature_map = self._device_type_instance.node.get_attribute( feature_map = self.get_matter_attribute_value(
self._device_type_instance.endpoint,
clusters.ColorControl,
clusters.ColorControl.Attributes.FeatureMap, clusters.ColorControl.Attributes.FeatureMap,
) )
assert isinstance(feature_map.value, int) assert isinstance(feature_map, int)
return self._supports_feature(feature_map.value, color_feature) return self._supports_feature(feature_map, color_feature)
def _supports_hs_color(self) -> bool: def _supports_hs_color(self) -> bool:
"""Return if device supports hs color.""" """Return if device supports hs color."""
@ -176,7 +174,7 @@ class MatterLight(MatterEntity, LightEntity):
assert level_control is not None assert level_control is not None
level = round( level = round( # type: ignore[unreachable]
renormalize( renormalize(
brightness, brightness,
(0, 255), (0, 255),
@ -195,13 +193,17 @@ class MatterLight(MatterEntity, LightEntity):
def _get_xy_color(self) -> tuple[float, float]: def _get_xy_color(self) -> tuple[float, float]:
"""Get xy color from matter.""" """Get xy color from matter."""
x_color = self.get_matter_attribute(clusters.ColorControl.Attributes.CurrentX) x_color = self.get_matter_attribute_value(
y_color = self.get_matter_attribute(clusters.ColorControl.Attributes.CurrentY) clusters.ColorControl.Attributes.CurrentX
)
y_color = self.get_matter_attribute_value(
clusters.ColorControl.Attributes.CurrentY
)
assert x_color is not None assert x_color is not None
assert y_color is not None assert y_color is not None
xy_color = convert_to_hass_xy((x_color.value, y_color.value)) xy_color = convert_to_hass_xy((x_color, y_color))
LOGGER.debug( LOGGER.debug(
"Got xy color %s for %s", "Got xy color %s for %s",
xy_color, xy_color,
@ -213,16 +215,18 @@ class MatterLight(MatterEntity, LightEntity):
def _get_hs_color(self) -> tuple[float, float]: def _get_hs_color(self) -> tuple[float, float]:
"""Get hs color from matter.""" """Get hs color from matter."""
hue = self.get_matter_attribute(clusters.ColorControl.Attributes.CurrentHue) hue = self.get_matter_attribute_value(
clusters.ColorControl.Attributes.CurrentHue
)
saturation = self.get_matter_attribute( saturation = self.get_matter_attribute_value(
clusters.ColorControl.Attributes.CurrentSaturation clusters.ColorControl.Attributes.CurrentSaturation
) )
assert hue is not None assert hue is not None
assert saturation is not None assert saturation is not None
hs_color = convert_to_hass_hs((hue.value, saturation.value)) hs_color = convert_to_hass_hs((hue, saturation))
LOGGER.debug( LOGGER.debug(
"Got hs color %s for %s", "Got hs color %s for %s",
@ -235,7 +239,7 @@ class MatterLight(MatterEntity, LightEntity):
def _get_color_temperature(self) -> int: def _get_color_temperature(self) -> int:
"""Get color temperature from matter.""" """Get color temperature from matter."""
color_temp = self.get_matter_attribute( color_temp = self.get_matter_attribute_value(
clusters.ColorControl.Attributes.ColorTemperatureMireds clusters.ColorControl.Attributes.ColorTemperatureMireds
) )
@ -243,11 +247,11 @@ class MatterLight(MatterEntity, LightEntity):
LOGGER.debug( LOGGER.debug(
"Got color temperature %s for %s", "Got color temperature %s for %s",
color_temp.value, color_temp,
self._device_type_instance, self._device_type_instance,
) )
return int(color_temp.value) return int(color_temp)
def _get_brightness(self) -> int: def _get_brightness(self) -> int:
"""Get brightness from matter.""" """Get brightness from matter."""
@ -257,7 +261,7 @@ class MatterLight(MatterEntity, LightEntity):
# We should not get here if brightness is not supported. # We should not get here if brightness is not supported.
assert level_control is not None assert level_control is not None
LOGGER.debug( LOGGER.debug( # type: ignore[unreachable]
"Got brightness %s for %s", "Got brightness %s for %s",
level_control.currentLevel, level_control.currentLevel,
self._device_type_instance, self._device_type_instance,
@ -274,13 +278,13 @@ class MatterLight(MatterEntity, LightEntity):
def _get_color_mode(self) -> ColorMode: def _get_color_mode(self) -> ColorMode:
"""Get color mode from matter.""" """Get color mode from matter."""
color_mode = self.get_matter_attribute( color_mode = self.get_matter_attribute_value(
clusters.ColorControl.Attributes.ColorMode clusters.ColorControl.Attributes.ColorMode
) )
assert color_mode is not None assert color_mode is not None
ha_color_mode = COLOR_MODE_MAP[MatterColorMode(color_mode.value)] ha_color_mode = COLOR_MODE_MAP[MatterColorMode(color_mode)]
LOGGER.debug( LOGGER.debug(
"Got color mode (%s) for %s", ha_color_mode, self._device_type_instance "Got color mode (%s) for %s", ha_color_mode, self._device_type_instance
@ -292,7 +296,7 @@ class MatterLight(MatterEntity, LightEntity):
"""Send device command.""" """Send device command."""
await self.matter_client.send_device_command( await self.matter_client.send_device_command(
node_id=self._device_type_instance.node.node_id, node_id=self._device_type_instance.node.node_id,
endpoint=self._device_type_instance.endpoint, endpoint_id=self._device_type_instance.endpoint_id,
command=command, command=command,
) )
@ -369,8 +373,9 @@ class MatterLight(MatterEntity, LightEntity):
if supports_color_temperature: if supports_color_temperature:
self._attr_color_temp = self._get_color_temperature() self._attr_color_temp = self._get_color_temperature()
if attr := self.get_matter_attribute(clusters.OnOff.Attributes.OnOff): self._attr_is_on = self.get_matter_attribute_value(
self._attr_is_on = attr.value clusters.OnOff.Attributes.OnOff
)
if supports_brightness: if supports_brightness:
self._attr_brightness = self._get_brightness() self._attr_brightness = self._get_brightness()

View file

@ -6,5 +6,5 @@
"dependencies": ["websocket_api"], "dependencies": ["websocket_api"],
"documentation": "https://www.home-assistant.io/integrations/matter", "documentation": "https://www.home-assistant.io/integrations/matter",
"iot_class": "local_push", "iot_class": "local_push",
"requirements": ["python-matter-server==2.1.1"] "requirements": ["python-matter-server==3.0.0"]
} }

View file

@ -4,12 +4,10 @@ from __future__ import annotations
from collections.abc import Callable from collections.abc import Callable
from dataclasses import dataclass from dataclasses import dataclass
from functools import partial from functools import partial
from typing import Any
from chip.clusters import Objects as clusters from chip.clusters import Objects as clusters
from chip.clusters.Types import Nullable, NullValue from chip.clusters.Types import Nullable, NullValue
from matter_server.common.models import device_types from matter_server.client.models import device_types
from matter_server.common.models.device_type_instance import MatterDeviceTypeInstance
from homeassistant.components.sensor import ( from homeassistant.components.sensor import (
SensorDeviceClass, SensorDeviceClass,
@ -53,13 +51,12 @@ class MatterSensor(MatterEntity, SensorEntity):
def _update_from_device(self) -> None: def _update_from_device(self) -> None:
"""Update from device.""" """Update from device."""
measurement: Nullable | float | None measurement: Nullable | float | None
measurement = _get_attribute_value( measurement = self.get_matter_attribute_value(
self._device_type_instance,
# We always subscribe to a single value # We always subscribe to a single value
self.entity_description.subscribe_attributes[0], self.entity_description.subscribe_attributes[0],
) )
if measurement is NullValue or measurement is None: if measurement == NullValue or measurement is None:
measurement = None measurement = None
else: else:
measurement = self.entity_description.measurement_to_ha(measurement) measurement = self.entity_description.measurement_to_ha(measurement)
@ -67,29 +64,6 @@ class MatterSensor(MatterEntity, SensorEntity):
self._attr_native_value = measurement self._attr_native_value = measurement
def _get_attribute_value(
device_type_instance: MatterDeviceTypeInstance,
attribute: clusters.ClusterAttributeDescriptor,
) -> Any:
"""Return the value of an attribute."""
# Find the cluster for this attribute. We don't have a lookup table yet.
cluster_cls: clusters.Cluster = next(
cluster
for cluster in device_type_instance.device_type.clusters
if cluster.id == attribute.cluster_id
)
# Find the attribute descriptor so we know the instance variable to fetch
attribute_descriptor: clusters.ClusterObjectFieldDescriptor = next(
descriptor
for descriptor in cluster_cls.descriptor.Fields
if descriptor.Tag == attribute.attribute_id
)
cluster_data = device_type_instance.get_cluster(cluster_cls)
return getattr(cluster_data, attribute_descriptor.Label)
@dataclass @dataclass
class MatterSensorEntityDescriptionMixin: class MatterSensorEntityDescriptionMixin:
"""Required fields for sensor device mapping.""" """Required fields for sensor device mapping."""

View file

@ -6,7 +6,7 @@ from functools import partial
from typing import Any from typing import Any
from chip.clusters import Objects as clusters from chip.clusters import Objects as clusters
from matter_server.common.models import device_types from matter_server.client.models import device_types
from homeassistant.components.switch import ( from homeassistant.components.switch import (
SwitchDeviceClass, SwitchDeviceClass,
@ -41,7 +41,7 @@ class MatterSwitch(MatterEntity, SwitchEntity):
"""Turn switch on.""" """Turn switch on."""
await self.matter_client.send_device_command( await self.matter_client.send_device_command(
node_id=self._device_type_instance.node.node_id, node_id=self._device_type_instance.node.node_id,
endpoint=self._device_type_instance.endpoint, endpoint_id=self._device_type_instance.endpoint_id,
command=clusters.OnOff.Commands.On(), command=clusters.OnOff.Commands.On(),
) )
@ -49,15 +49,16 @@ class MatterSwitch(MatterEntity, SwitchEntity):
"""Turn switch off.""" """Turn switch off."""
await self.matter_client.send_device_command( await self.matter_client.send_device_command(
node_id=self._device_type_instance.node.node_id, node_id=self._device_type_instance.node.node_id,
endpoint=self._device_type_instance.endpoint, endpoint_id=self._device_type_instance.endpoint_id,
command=clusters.OnOff.Commands.Off(), command=clusters.OnOff.Commands.Off(),
) )
@callback @callback
def _update_from_device(self) -> None: def _update_from_device(self) -> None:
"""Update from device.""" """Update from device."""
cluster = self._device_type_instance.get_cluster(clusters.OnOff) self._attr_is_on = self.get_matter_attribute_value(
self._attr_is_on = cluster.onOff if cluster else None clusters.OnOff.Attributes.OnOff
)
@dataclass @dataclass

View file

@ -2081,7 +2081,7 @@ python-kasa==0.5.1
# python-lirc==1.2.3 # python-lirc==1.2.3
# homeassistant.components.matter # homeassistant.components.matter
python-matter-server==2.1.1 python-matter-server==3.0.0
# homeassistant.components.xiaomi_miio # homeassistant.components.xiaomi_miio
python-miio==0.5.12 python-miio==0.5.12

View file

@ -1480,7 +1480,7 @@ python-juicenet==1.1.0
python-kasa==0.5.1 python-kasa==0.5.1
# homeassistant.components.matter # homeassistant.components.matter
python-matter-server==2.1.1 python-matter-server==3.0.0
# homeassistant.components.xiaomi_miio # homeassistant.components.xiaomi_miio
python-miio==0.5.12 python-miio==0.5.12

View file

@ -6,9 +6,9 @@ import json
from typing import Any from typing import Any
from unittest.mock import MagicMock from unittest.mock import MagicMock
from matter_server.client.models.node import MatterNode
from matter_server.common.helpers.util import dataclass_from_dict from matter_server.common.helpers.util import dataclass_from_dict
from matter_server.common.models.events import EventType from matter_server.common.models import EventType, MatterNodeData
from matter_server.common.models.node import MatterNode
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
@ -33,10 +33,12 @@ async def setup_integration_with_node_fixture(
) -> MatterNode: ) -> MatterNode:
"""Set up Matter integration with fixture as node.""" """Set up Matter integration with fixture as node."""
node_data = load_and_parse_node_fixture(node_fixture) node_data = load_and_parse_node_fixture(node_fixture)
node = dataclass_from_dict( node = MatterNode(
MatterNode, dataclass_from_dict(
MatterNodeData,
node_data, node_data,
) )
)
client.get_nodes.return_value = [node] client.get_nodes.return_value = [node]
client.get_node.return_value = node client.get_node.return_value = node
config_entry = MockConfigEntry( config_entry = MockConfigEntry(
@ -58,8 +60,8 @@ def set_node_attribute(
value: Any, value: Any,
) -> None: ) -> None:
"""Set a node attribute.""" """Set a node attribute."""
attribute = node.attributes[f"{endpoint}/{cluster_id}/{attribute_id}"] attribute_path = f"{endpoint}/{cluster_id}/{attribute_id}"
attribute.value = value node.endpoints[endpoint].set_attribute_value(attribute_path, value)
async def trigger_subscription_callback( async def trigger_subscription_callback(
@ -69,6 +71,6 @@ async def trigger_subscription_callback(
data: Any = None, data: Any = None,
) -> None: ) -> None:
"""Trigger a subscription callback.""" """Trigger a subscription callback."""
callback = client.subscribe.call_args[0][0] callback = client.subscribe.call_args.kwargs["callback"]
callback(event, data) callback(event, data)
await hass.async_block_till_done() await hass.async_block_till_done()

View file

@ -6,7 +6,7 @@ from collections.abc import AsyncGenerator, Generator
from unittest.mock import AsyncMock, MagicMock, patch from unittest.mock import AsyncMock, MagicMock, patch
from matter_server.common.const import SCHEMA_VERSION from matter_server.common.const import SCHEMA_VERSION
from matter_server.common.models.server_information import ServerInfo from matter_server.common.models import ServerInfoMessage
import pytest import pytest
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
@ -39,7 +39,7 @@ async def matter_client_fixture() -> AsyncGenerator[MagicMock, None]:
client.connect = AsyncMock(side_effect=connect) client.connect = AsyncMock(side_effect=connect)
client.start_listening = AsyncMock(side_effect=listen) client.start_listening = AsyncMock(side_effect=listen)
client.server_info = ServerInfo( client.server_info = ServerInfoMessage(
fabric_id=MOCK_FABRIC_ID, fabric_id=MOCK_FABRIC_ID,
compressed_fabric_id=MOCK_COMPR_FABRIC_ID, compressed_fabric_id=MOCK_COMPR_FABRIC_ID,
schema_version=1, schema_version=1,

File diff suppressed because it is too large Load diff

View file

@ -2,655 +2,88 @@
"node_id": 1, "node_id": 1,
"date_commissioned": "2022-11-29T21:23:48.485051", "date_commissioned": "2022-11-29T21:23:48.485051",
"last_interview": "2022-11-29T21:23:48.485057", "last_interview": "2022-11-29T21:23:48.485057",
"interview_version": 1, "interview_version": 2,
"attributes": { "attributes": {
"0/29/0": { "0/29/0": [
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.DeviceTypeList",
"attribute_name": "DeviceTypeList",
"value": [
{ {
"type": 22, "type": 22,
"revision": 1 "revision": 1
} }
] ],
}, "0/29/1": [
"0/29/1": { 4, 29, 31, 40, 42, 43, 44, 48, 49, 50, 51, 52, 53, 54, 55, 59, 60, 62, 63,
"node_id": 1, 64, 65
"endpoint": 0, ],
"cluster_id": 29, "0/29/2": [41],
"cluster_type": "chip.clusters.Objects.Descriptor", "0/29/3": [1],
"cluster_name": "Descriptor", "0/29/65532": 0,
"attribute_id": 1, "0/29/65533": 1,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ServerList", "0/29/65528": [],
"attribute_name": "ServerList", "0/29/65529": [],
"value": [ "0/29/65531": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533],
4, 29, 31, 40, 42, 43, 44, 48, 49, 50, 51, 52, 53, 54, 55, 59, 60, 62, "0/40/0": 1,
63, 64, 65 "0/40/1": "Nabu Casa",
] "0/40/2": 65521,
}, "0/40/3": "Mock ContactSensor",
"0/29/2": { "0/40/4": 32768,
"node_id": 1, "0/40/5": "Mock Contact sensor",
"endpoint": 0, "0/40/6": "XX",
"cluster_id": 29, "0/40/7": 0,
"cluster_type": "chip.clusters.Objects.Descriptor", "0/40/8": "v1.0",
"cluster_name": "Descriptor", "0/40/9": 1,
"attribute_id": 2, "0/40/10": "v1.0",
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClientList", "0/40/11": "20221206",
"attribute_name": "ClientList", "0/40/12": "",
"value": [41] "0/40/13": "",
}, "0/40/14": "",
"0/29/3": { "0/40/15": "TEST_SN",
"node_id": 1, "0/40/16": false,
"endpoint": 0, "0/40/17": true,
"cluster_id": 29, "0/40/18": "mock-contact-sensor",
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.PartsList",
"attribute_name": "PartsList",
"value": [1]
},
"0/29/65532": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"0/29/65533": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"0/29/65528": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"0/29/65529": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"0/29/65531": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533]
},
"0/40/0": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.DataModelRevision",
"attribute_name": "DataModelRevision",
"value": 1
},
"0/40/1": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.VendorName",
"attribute_name": "VendorName",
"value": "Nabu Casa"
},
"0/40/2": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 2,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.VendorID",
"attribute_name": "VendorID",
"value": 65521
},
"0/40/3": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductName",
"attribute_name": "ProductName",
"value": "Mock ContactSensor"
},
"0/40/4": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 4,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductID",
"attribute_name": "ProductID",
"value": 32768
},
"0/40/5": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 5,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.NodeLabel",
"attribute_name": "NodeLabel",
"value": "Mock Contact sensor"
},
"0/40/6": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 6,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.Location",
"attribute_name": "Location",
"value": "XX"
},
"0/40/7": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 7,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.HardwareVersion",
"attribute_name": "HardwareVersion",
"value": 0
},
"0/40/8": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 8,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.HardwareVersionString",
"attribute_name": "HardwareVersionString",
"value": "v1.0"
},
"0/40/9": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 9,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.SoftwareVersion",
"attribute_name": "SoftwareVersion",
"value": 1
},
"0/40/10": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 10,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.SoftwareVersionString",
"attribute_name": "SoftwareVersionString",
"value": "v1.0"
},
"0/40/11": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 11,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ManufacturingDate",
"attribute_name": "ManufacturingDate",
"value": "20221206"
},
"0/40/12": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 12,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.PartNumber",
"attribute_name": "PartNumber",
"value": ""
},
"0/40/13": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 13,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductURL",
"attribute_name": "ProductURL",
"value": ""
},
"0/40/14": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 14,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductLabel",
"attribute_name": "ProductLabel",
"value": ""
},
"0/40/15": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 15,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.SerialNumber",
"attribute_name": "SerialNumber",
"value": "TEST_SN"
},
"0/40/16": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 16,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.LocalConfigDisabled",
"attribute_name": "LocalConfigDisabled",
"value": false
},
"0/40/17": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 17,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.Reachable",
"attribute_name": "Reachable",
"value": true
},
"0/40/18": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 18,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.UniqueID",
"attribute_name": "UniqueID",
"value": "mock-contact-sensor"
},
"0/40/19": { "0/40/19": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 19,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.CapabilityMinima",
"attribute_name": "CapabilityMinima",
"value": {
"caseSessionsPerFabric": 3, "caseSessionsPerFabric": 3,
"subscriptionsPerFabric": 3 "subscriptionsPerFabric": 3
}
}, },
"0/40/65532": { "0/40/65532": 0,
"node_id": 1, "0/40/65533": 1,
"endpoint": 0, "0/40/65528": [],
"cluster_id": 40, "0/40/65529": [],
"cluster_type": "chip.clusters.Objects.BasicInformation", "0/40/65531": [
"cluster_name": "Basic",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"0/40/65533": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"0/40/65528": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"0/40/65529": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"0/40/65531": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
65528, 65529, 65531, 65532, 65533 65528, 65529, 65531, 65532, 65533
] ],
}, "1/3/0": 0,
"1/3/1": 2,
"1/3/0": { "1/3/65532": 0,
"node_id": 1, "1/3/65533": 4,
"endpoint": 1, "1/3/65528": [],
"cluster_id": 3, "1/3/65529": [0, 64],
"cluster_type": "chip.clusters.Objects.Identify", "1/3/65531": [0, 1, 65528, 65529, 65531, 65532, 65533],
"cluster_name": "Identify", "1/29/0": [
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.IdentifyTime",
"attribute_name": "IdentifyTime",
"value": 0
},
"1/3/1": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.IdentifyType",
"attribute_name": "IdentifyType",
"value": 2
},
"1/3/65532": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"1/3/65533": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 4
},
"1/3/65528": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"1/3/65529": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": [0, 64]
},
"1/3/65531": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 65528, 65529, 65531, 65532, 65533]
},
"1/29/0": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.DeviceTypeList",
"attribute_name": "DeviceTypeList",
"value": [
{ {
"type": 21, "type": 21,
"revision": 1 "revision": 1
} }
] ],
}, "1/29/1": [
"1/29/1": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ServerList",
"attribute_name": "ServerList",
"value": [
3, 4, 5, 6, 7, 8, 15, 29, 30, 37, 47, 59, 64, 65, 69, 80, 257, 258, 259, 3, 4, 5, 6, 7, 8, 15, 29, 30, 37, 47, 59, 64, 65, 69, 80, 257, 258, 259,
512, 513, 514, 516, 768, 1024, 1026, 1027, 1028, 1029, 1030, 1283, 1284, 512, 513, 514, 516, 768, 1024, 1026, 1027, 1028, 1029, 1030, 1283, 1284,
1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 2820, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 2820,
4294048773 4294048773
] ],
"1/29/2": [],
"1/29/3": [],
"1/29/65532": 0,
"1/29/65533": 1,
"1/29/65528": [],
"1/29/65529": [],
"1/29/65531": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533],
"1/69/0": true,
"1/69/65532": 0,
"1/69/65533": 1,
"1/69/65528": [],
"1/69/65529": [],
"1/69/65531": [0, 65528, 65529, 65531, 65532, 65533]
}, },
"1/29/2": { "available": true
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 2,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClientList",
"attribute_name": "ClientList",
"value": []
},
"1/29/3": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.PartsList",
"attribute_name": "PartsList",
"value": []
},
"1/29/65532": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"1/29/65533": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"1/29/65528": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"1/29/65529": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"1/29/65531": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533]
},
"1/69/0": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 69,
"cluster_type": "chip.clusters.Objects.BooleanState",
"cluster_name": "BooleanState",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.BooleanState.Attributes.StateValue",
"attribute_name": "StateValue",
"value": true
},
"1/69/65532": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 69,
"cluster_type": "chip.clusters.Objects.BooleanState",
"cluster_name": "BooleanState",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.BooleanState.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"1/69/65533": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 69,
"cluster_type": "chip.clusters.Objects.BooleanState",
"cluster_name": "BooleanState",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.BooleanState.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"1/69/65528": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 69,
"cluster_type": "chip.clusters.Objects.BooleanState",
"cluster_name": "BooleanState",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.BooleanState.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"1/69/65529": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 69,
"cluster_type": "chip.clusters.Objects.BooleanState",
"cluster_name": "BooleanState",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.BooleanState.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"1/69/65531": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 69,
"cluster_type": "chip.clusters.Objects.BooleanState",
"cluster_name": "BooleanState",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.BooleanState.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 65528, 65529, 65531, 65532, 65533]
}
},
"endpoints": [0, 1],
"root_device_type_instance": null,
"aggregator_device_type_instance": null,
"device_type_instances": [null],
"node_devices": [null],
"_type": "matter_server.common.models.node.MatterNode"
} }

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -2,624 +2,81 @@
"node_id": 1, "node_id": 1,
"date_commissioned": "2022-11-29T21:23:48.485051", "date_commissioned": "2022-11-29T21:23:48.485051",
"last_interview": "2022-11-29T21:23:48.485057", "last_interview": "2022-11-29T21:23:48.485057",
"interview_version": 1, "interview_version": 2,
"attributes": { "attributes": {
"0/29/0": { "0/29/0": [
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.DeviceTypeList",
"attribute_name": "DeviceTypeList",
"value": [
{ {
"type": 22, "type": 22,
"revision": 1 "revision": 1
} }
] ],
}, "0/29/1": [
"0/29/1": { 4, 29, 31, 40, 42, 43, 44, 48, 49, 50, 51, 52, 53, 54, 55, 59, 60, 62, 63,
"node_id": 1, 64, 65
"endpoint": 0, ],
"cluster_id": 29, "0/29/2": [41],
"cluster_type": "chip.clusters.Objects.Descriptor", "0/29/3": [1],
"cluster_name": "Descriptor", "0/29/65532": 0,
"attribute_id": 1, "0/29/65533": 1,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ServerList", "0/29/65528": [],
"attribute_name": "ServerList", "0/29/65529": [],
"value": [ "0/29/65531": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533],
4, 29, 31, 40, 42, 43, 44, 48, 49, 50, 51, 52, 53, 54, 55, 59, 60, 62, "0/40/0": 1,
63, 64, 65 "0/40/1": "Nabu Casa",
] "0/40/2": 65521,
}, "0/40/3": "Mock FlowSensor",
"0/29/2": { "0/40/4": 32768,
"node_id": 1, "0/40/5": "Mock Flow Sensor",
"endpoint": 0, "0/40/6": "XX",
"cluster_id": 29, "0/40/7": 0,
"cluster_type": "chip.clusters.Objects.Descriptor", "0/40/8": "v1.0",
"cluster_name": "Descriptor", "0/40/9": 1,
"attribute_id": 2, "0/40/10": "v1.0",
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClientList", "0/40/11": "20221206",
"attribute_name": "ClientList", "0/40/12": "",
"value": [41] "0/40/13": "",
}, "0/40/14": "",
"0/29/3": { "0/40/15": "TEST_SN",
"node_id": 1, "0/40/16": false,
"endpoint": 0, "0/40/17": true,
"cluster_id": 29, "0/40/18": "mock-flow-sensor",
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.PartsList",
"attribute_name": "PartsList",
"value": [1]
},
"0/29/65532": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"0/29/65533": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"0/29/65528": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"0/29/65529": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"0/29/65531": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533]
},
"0/40/0": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.DataModelRevision",
"attribute_name": "DataModelRevision",
"value": 1
},
"0/40/1": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.VendorName",
"attribute_name": "VendorName",
"value": "Nabu Casa"
},
"0/40/2": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 2,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.VendorID",
"attribute_name": "VendorID",
"value": 65521
},
"0/40/3": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductName",
"attribute_name": "ProductName",
"value": "Mock FlowSensor"
},
"0/40/4": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 4,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductID",
"attribute_name": "ProductID",
"value": 32768
},
"0/40/5": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 5,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.NodeLabel",
"attribute_name": "NodeLabel",
"value": "Mock Flow Sensor"
},
"0/40/6": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 6,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.Location",
"attribute_name": "Location",
"value": "XX"
},
"0/40/7": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 7,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.HardwareVersion",
"attribute_name": "HardwareVersion",
"value": 0
},
"0/40/8": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 8,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.HardwareVersionString",
"attribute_name": "HardwareVersionString",
"value": "v1.0"
},
"0/40/9": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 9,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.SoftwareVersion",
"attribute_name": "SoftwareVersion",
"value": 1
},
"0/40/10": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 10,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.SoftwareVersionString",
"attribute_name": "SoftwareVersionString",
"value": "v1.0"
},
"0/40/11": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 11,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ManufacturingDate",
"attribute_name": "ManufacturingDate",
"value": "20221206"
},
"0/40/12": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 12,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.PartNumber",
"attribute_name": "PartNumber",
"value": ""
},
"0/40/13": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 13,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductURL",
"attribute_name": "ProductURL",
"value": ""
},
"0/40/14": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 14,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductLabel",
"attribute_name": "ProductLabel",
"value": ""
},
"0/40/15": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 15,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.SerialNumber",
"attribute_name": "SerialNumber",
"value": "TEST_SN"
},
"0/40/16": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 16,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.LocalConfigDisabled",
"attribute_name": "LocalConfigDisabled",
"value": false
},
"0/40/17": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 17,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.Reachable",
"attribute_name": "Reachable",
"value": true
},
"0/40/18": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 18,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.UniqueID",
"attribute_name": "UniqueID",
"value": "mock-flow-sensor"
},
"0/40/19": { "0/40/19": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 19,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.CapabilityMinima",
"attribute_name": "CapabilityMinima",
"value": {
"caseSessionsPerFabric": 3, "caseSessionsPerFabric": 3,
"subscriptionsPerFabric": 3 "subscriptionsPerFabric": 3
}
}, },
"0/40/65532": { "0/40/65532": 0,
"node_id": 1, "0/40/65533": 1,
"endpoint": 0, "0/40/65528": [],
"cluster_id": 40, "0/40/65529": [],
"cluster_type": "chip.clusters.Objects.BasicInformation", "0/40/65531": [
"cluster_name": "Basic",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"0/40/65533": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"0/40/65528": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"0/40/65529": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"0/40/65531": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
65528, 65529, 65531, 65532, 65533 65528, 65529, 65531, 65532, 65533
] ],
}, "1/3/65529": [0, 64],
"1/3/65531": [0, 1, 65528, 65529, 65531, 65532, 65533],
"1/3/65529": { "1/29/0": [
"node_id": 1,
"endpoint": 1,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": [0, 64]
},
"1/3/65531": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 65528, 65529, 65531, 65532, 65533]
},
"1/29/0": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.DeviceTypeList",
"attribute_name": "DeviceTypeList",
"value": [
{ {
"type": 774, "type": 774,
"revision": 1 "revision": 1
} }
] ],
"1/29/1": [6, 29, 57, 768, 8, 40],
"1/29/2": [],
"1/29/3": [9, 10],
"1/29/65532": null,
"1/29/65533": 1,
"1/29/65528": [],
"1/29/65529": [],
"1/29/65531": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533],
"1/1028/0": 0,
"1/1028/1": 0,
"1/1028/2": 0,
"1/1028/3": 0,
"1/1028/65532": 0,
"1/1028/65533": 3,
"1/1028/65528": [],
"1/1028/65529": [],
"1/1028/65531": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533]
}, },
"1/29/1": { "available": true
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ServerList",
"attribute_name": "ServerList",
"value": [6, 29, 57, 768, 8, 40]
},
"1/29/2": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 2,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClientList",
"attribute_name": "ClientList",
"value": []
},
"1/29/3": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.PartsList",
"attribute_name": "PartsList",
"value": [9, 10]
},
"1/29/65532": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": null
},
"1/29/65533": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"1/29/65528": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"1/29/65529": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"1/29/65531": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533]
},
"1/1028/0": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1028,
"cluster_type": "chip.clusters.Objects.FlowMeasurement",
"cluster_name": "FlowMeasurement",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.FlowMeasurement.Attributes.MeasuredValue",
"attribute_name": "MeasuredValue",
"value": 0
},
"1/1028/1": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1028,
"cluster_type": "chip.clusters.Objects.FlowMeasurement",
"cluster_name": "FlowMeasurement",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.FlowMeasurement.Attributes.MinMeasuredValue",
"attribute_name": "MinMeasuredValue",
"value": 0
},
"1/1028/2": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1028,
"cluster_type": "chip.clusters.Objects.FlowMeasurement",
"cluster_name": "FlowMeasurement",
"attribute_id": 2,
"attribute_type": "chip.clusters.Objects.FlowMeasurement.Attributes.MaxMeasuredValue",
"attribute_name": "MaxMeasuredValue",
"value": 0
},
"1/1028/3": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1028,
"cluster_type": "chip.clusters.Objects.FlowMeasurement",
"cluster_name": "FlowMeasurement",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.FlowMeasurement.Attributes.Tolerance",
"attribute_name": "Tolerance",
"value": 0
},
"1/1028/65532": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1028,
"cluster_type": "chip.clusters.Objects.FlowMeasurement",
"cluster_name": "FlowMeasurement",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.FlowMeasurement.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"1/1028/65533": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1028,
"cluster_type": "chip.clusters.Objects.FlowMeasurement",
"cluster_name": "FlowMeasurement",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.FlowMeasurement.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 3
},
"1/1028/65528": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1028,
"cluster_type": "chip.clusters.Objects.FlowMeasurement",
"cluster_name": "FlowMeasurement",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.FlowMeasurement.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"1/1028/65529": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1028,
"cluster_type": "chip.clusters.Objects.FlowMeasurement",
"cluster_name": "FlowMeasurement",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.FlowMeasurement.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"1/1028/65531": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1028,
"cluster_type": "chip.clusters.Objects.FlowMeasurement",
"cluster_name": "FlowMeasurement",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.FlowMeasurement.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533]
}
},
"endpoints": [0, 1],
"_type": "matter_server.common.models.node.MatterNode"
} }

View file

@ -2,613 +2,80 @@
"node_id": 1, "node_id": 1,
"date_commissioned": "2022-11-29T21:23:48.485051", "date_commissioned": "2022-11-29T21:23:48.485051",
"last_interview": "2022-11-29T21:23:48.485057", "last_interview": "2022-11-29T21:23:48.485057",
"interview_version": 1, "interview_version": 2,
"attributes": { "attributes": {
"0/29/0": { "0/29/0": [
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.DeviceTypeList",
"attribute_name": "DeviceTypeList",
"value": [
{ {
"type": 22, "type": 22,
"revision": 1 "revision": 1
} }
] ],
}, "0/29/1": [
"0/29/1": { 4, 29, 31, 40, 42, 43, 44, 48, 49, 50, 51, 52, 53, 54, 55, 59, 60, 62, 63,
"node_id": 1, 64, 65
"endpoint": 0, ],
"cluster_id": 29, "0/29/2": [41],
"cluster_type": "chip.clusters.Objects.Descriptor", "0/29/3": [1],
"cluster_name": "Descriptor", "0/29/65532": 0,
"attribute_id": 1, "0/29/65533": 1,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ServerList", "0/29/65528": [],
"attribute_name": "ServerList", "0/29/65529": [],
"value": [ "0/29/65531": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533],
4, 29, 31, 40, 42, 43, 44, 48, 49, 50, 51, 52, 53, 54, 55, 59, 60, 62, "0/40/0": 1,
63, 64, 65 "0/40/1": "Nabu Casa",
] "0/40/2": 65521,
}, "0/40/3": "Mock HumiditySensor",
"0/29/2": { "0/40/4": 32768,
"node_id": 1, "0/40/5": "Mock Humidity Sensor",
"endpoint": 0, "0/40/6": "XX",
"cluster_id": 29, "0/40/7": 0,
"cluster_type": "chip.clusters.Objects.Descriptor", "0/40/8": "v1.0",
"cluster_name": "Descriptor", "0/40/9": 1,
"attribute_id": 2, "0/40/10": "v1.0",
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClientList", "0/40/11": "20221206",
"attribute_name": "ClientList", "0/40/12": "",
"value": [41] "0/40/13": "",
}, "0/40/14": "",
"0/29/3": { "0/40/15": "TEST_SN",
"node_id": 1, "0/40/16": false,
"endpoint": 0, "0/40/17": true,
"cluster_id": 29, "0/40/18": "mock-humidity-sensor",
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.PartsList",
"attribute_name": "PartsList",
"value": [1]
},
"0/29/65532": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"0/29/65533": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"0/29/65528": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"0/29/65529": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"0/29/65531": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533]
},
"0/40/0": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.DataModelRevision",
"attribute_name": "DataModelRevision",
"value": 1
},
"0/40/1": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.VendorName",
"attribute_name": "VendorName",
"value": "Nabu Casa"
},
"0/40/2": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 2,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.VendorID",
"attribute_name": "VendorID",
"value": 65521
},
"0/40/3": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductName",
"attribute_name": "ProductName",
"value": "Mock HumiditySensor"
},
"0/40/4": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 4,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductID",
"attribute_name": "ProductID",
"value": 32768
},
"0/40/5": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 5,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.NodeLabel",
"attribute_name": "NodeLabel",
"value": "Mock Humidity Sensor"
},
"0/40/6": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 6,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.Location",
"attribute_name": "Location",
"value": "XX"
},
"0/40/7": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 7,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.HardwareVersion",
"attribute_name": "HardwareVersion",
"value": 0
},
"0/40/8": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 8,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.HardwareVersionString",
"attribute_name": "HardwareVersionString",
"value": "v1.0"
},
"0/40/9": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 9,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.SoftwareVersion",
"attribute_name": "SoftwareVersion",
"value": 1
},
"0/40/10": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 10,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.SoftwareVersionString",
"attribute_name": "SoftwareVersionString",
"value": "v1.0"
},
"0/40/11": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 11,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ManufacturingDate",
"attribute_name": "ManufacturingDate",
"value": "20221206"
},
"0/40/12": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 12,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.PartNumber",
"attribute_name": "PartNumber",
"value": ""
},
"0/40/13": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 13,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductURL",
"attribute_name": "ProductURL",
"value": ""
},
"0/40/14": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 14,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductLabel",
"attribute_name": "ProductLabel",
"value": ""
},
"0/40/15": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 15,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.SerialNumber",
"attribute_name": "SerialNumber",
"value": "TEST_SN"
},
"0/40/16": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 16,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.LocalConfigDisabled",
"attribute_name": "LocalConfigDisabled",
"value": false
},
"0/40/17": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 17,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.Reachable",
"attribute_name": "Reachable",
"value": true
},
"0/40/18": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 18,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.UniqueID",
"attribute_name": "UniqueID",
"value": "mock-humidity-sensor"
},
"0/40/19": { "0/40/19": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 19,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.CapabilityMinima",
"attribute_name": "CapabilityMinima",
"value": {
"caseSessionsPerFabric": 3, "caseSessionsPerFabric": 3,
"subscriptionsPerFabric": 3 "subscriptionsPerFabric": 3
}
}, },
"0/40/65532": { "0/40/65532": 0,
"node_id": 1, "0/40/65533": 1,
"endpoint": 0, "0/40/65528": [],
"cluster_id": 40, "0/40/65529": [],
"cluster_type": "chip.clusters.Objects.BasicInformation", "0/40/65531": [
"cluster_name": "Basic",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"0/40/65533": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"0/40/65528": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"0/40/65529": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"0/40/65531": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
65528, 65529, 65531, 65532, 65533 65528, 65529, 65531, 65532, 65533
] ],
}, "1/3/65529": [0, 64],
"1/3/65531": [0, 1, 65528, 65529, 65531, 65532, 65533],
"1/3/65529": { "1/29/0": [
"node_id": 1,
"endpoint": 1,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": [0, 64]
},
"1/3/65531": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 65528, 65529, 65531, 65532, 65533]
},
"1/29/0": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.DeviceTypeList",
"attribute_name": "DeviceTypeList",
"value": [
{ {
"type": 775, "type": 775,
"revision": 1 "revision": 1
} }
] ],
"1/29/1": [6, 29, 57, 768, 8, 40],
"1/29/2": [],
"1/29/3": [9, 10],
"1/29/65532": null,
"1/29/65533": 1,
"1/29/65528": [],
"1/29/65529": [],
"1/29/65531": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533],
"1/1029/0": 0,
"1/1029/1": 0,
"1/1029/2": 10000,
"1/1029/65532": 0,
"1/1029/65533": 3,
"1/1029/65528": [],
"1/1029/65529": [],
"1/1029/65531": [0, 1, 2, 65528, 65529, 65531, 65532, 65533]
}, },
"1/29/1": { "available": true
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ServerList",
"attribute_name": "ServerList",
"value": [6, 29, 57, 768, 8, 40]
},
"1/29/2": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 2,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClientList",
"attribute_name": "ClientList",
"value": []
},
"1/29/3": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.PartsList",
"attribute_name": "PartsList",
"value": [9, 10]
},
"1/29/65532": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": null
},
"1/29/65533": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"1/29/65528": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"1/29/65529": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"1/29/65531": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533]
},
"1/1029/0": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1029,
"cluster_type": "chip.clusters.Objects.RelativeHumidityMeasurement",
"cluster_name": "RelativeHumidityMeasurement",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MeasuredValue",
"attribute_name": "MeasuredValue",
"value": 0
},
"1/1029/1": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1029,
"cluster_type": "chip.clusters.Objects.RelativeHumidityMeasurement",
"cluster_name": "RelativeHumidityMeasurement",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MinMeasuredValue",
"attribute_name": "MinMeasuredValue",
"value": 0
},
"1/1029/2": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1029,
"cluster_type": "chip.clusters.Objects.RelativeHumidityMeasurement",
"cluster_name": "RelativeHumidityMeasurement",
"attribute_id": 2,
"attribute_type": "chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MaxMeasuredValue",
"attribute_name": "MaxMeasuredValue",
"value": 10000
},
"1/1029/65532": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1029,
"cluster_type": "chip.clusters.Objects.RelativeHumidityMeasurement",
"cluster_name": "RelativeHumidityMeasurement",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"1/1029/65533": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1029,
"cluster_type": "chip.clusters.Objects.RelativeHumidityMeasurement",
"cluster_name": "RelativeHumidityMeasurement",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 3
},
"1/1029/65528": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1029,
"cluster_type": "chip.clusters.Objects.RelativeHumidityMeasurement",
"cluster_name": "RelativeHumidityMeasurement",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"1/1029/65529": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1029,
"cluster_type": "chip.clusters.Objects.RelativeHumidityMeasurement",
"cluster_name": "RelativeHumidityMeasurement",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"1/1029/65531": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1029,
"cluster_type": "chip.clusters.Objects.RelativeHumidityMeasurement",
"cluster_name": "RelativeHumidityMeasurement",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 2, 65528, 65529, 65531, 65532, 65533]
}
},
"endpoints": [0, 1],
"_type": "matter_server.common.models.node.MatterNode"
} }

View file

@ -2,701 +2,88 @@
"node_id": 1, "node_id": 1,
"date_commissioned": "2022-11-29T21:23:48.485051", "date_commissioned": "2022-11-29T21:23:48.485051",
"last_interview": "2022-11-29T21:23:48.485057", "last_interview": "2022-11-29T21:23:48.485057",
"interview_version": 1, "interview_version": 2,
"attributes": { "attributes": {
"0/29/0": { "0/29/0": [
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.DeviceTypeList",
"attribute_name": "DeviceTypeList",
"value": [
{ {
"type": 22, "type": 22,
"revision": 1 "revision": 1
} }
] ],
}, "0/29/1": [
"0/29/1": { 4, 29, 31, 40, 42, 43, 44, 48, 49, 50, 51, 52, 53, 54, 55, 59, 60, 62, 63,
"node_id": 1, 64, 65
"endpoint": 0, ],
"cluster_id": 29, "0/29/2": [41],
"cluster_type": "chip.clusters.Objects.Descriptor", "0/29/3": [1],
"cluster_name": "Descriptor", "0/29/65532": 0,
"attribute_id": 1, "0/29/65533": 1,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ServerList", "0/29/65528": [],
"attribute_name": "ServerList", "0/29/65529": [],
"value": [ "0/29/65531": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533],
4, 29, 31, 40, 42, 43, 44, 48, 49, 50, 51, 52, 53, 54, 55, 59, 60, 62, "0/40/0": 1,
63, 64, 65 "0/40/1": "Nabu Casa",
] "0/40/2": 65521,
}, "0/40/3": "Mock LightSensor",
"0/29/2": { "0/40/4": 32768,
"node_id": 1, "0/40/5": "Mock Light Sensor",
"endpoint": 0, "0/40/6": "XX",
"cluster_id": 29, "0/40/7": 0,
"cluster_type": "chip.clusters.Objects.Descriptor", "0/40/8": "v1.0",
"cluster_name": "Descriptor", "0/40/9": 1,
"attribute_id": 2, "0/40/10": "v1.0",
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClientList", "0/40/11": "20221206",
"attribute_name": "ClientList", "0/40/12": "",
"value": [41] "0/40/13": "",
}, "0/40/14": "",
"0/29/3": { "0/40/15": "TEST_SN",
"node_id": 1, "0/40/16": false,
"endpoint": 0, "0/40/17": true,
"cluster_id": 29, "0/40/18": "mock-light-sensor",
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.PartsList",
"attribute_name": "PartsList",
"value": [1]
},
"0/29/65532": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"0/29/65533": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"0/29/65528": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"0/29/65529": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"0/29/65531": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533]
},
"0/40/0": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.DataModelRevision",
"attribute_name": "DataModelRevision",
"value": 1
},
"0/40/1": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.VendorName",
"attribute_name": "VendorName",
"value": "Nabu Casa"
},
"0/40/2": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 2,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.VendorID",
"attribute_name": "VendorID",
"value": 65521
},
"0/40/3": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductName",
"attribute_name": "ProductName",
"value": "Mock LightSensor"
},
"0/40/4": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 4,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductID",
"attribute_name": "ProductID",
"value": 32768
},
"0/40/5": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 5,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.NodeLabel",
"attribute_name": "NodeLabel",
"value": "Mock Light Sensor"
},
"0/40/6": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 6,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.Location",
"attribute_name": "Location",
"value": "XX"
},
"0/40/7": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 7,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.HardwareVersion",
"attribute_name": "HardwareVersion",
"value": 0
},
"0/40/8": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 8,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.HardwareVersionString",
"attribute_name": "HardwareVersionString",
"value": "v1.0"
},
"0/40/9": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 9,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.SoftwareVersion",
"attribute_name": "SoftwareVersion",
"value": 1
},
"0/40/10": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 10,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.SoftwareVersionString",
"attribute_name": "SoftwareVersionString",
"value": "v1.0"
},
"0/40/11": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 11,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ManufacturingDate",
"attribute_name": "ManufacturingDate",
"value": "20221206"
},
"0/40/12": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 12,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.PartNumber",
"attribute_name": "PartNumber",
"value": ""
},
"0/40/13": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 13,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductURL",
"attribute_name": "ProductURL",
"value": ""
},
"0/40/14": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 14,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductLabel",
"attribute_name": "ProductLabel",
"value": ""
},
"0/40/15": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 15,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.SerialNumber",
"attribute_name": "SerialNumber",
"value": "TEST_SN"
},
"0/40/16": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 16,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.LocalConfigDisabled",
"attribute_name": "LocalConfigDisabled",
"value": false
},
"0/40/17": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 17,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.Reachable",
"attribute_name": "Reachable",
"value": true
},
"0/40/18": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 18,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.UniqueID",
"attribute_name": "UniqueID",
"value": "mock-light-sensor"
},
"0/40/19": { "0/40/19": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 19,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.CapabilityMinima",
"attribute_name": "CapabilityMinima",
"value": {
"caseSessionsPerFabric": 3, "caseSessionsPerFabric": 3,
"subscriptionsPerFabric": 3 "subscriptionsPerFabric": 3
}
}, },
"0/40/65532": { "0/40/65532": 0,
"node_id": 1, "0/40/65533": 1,
"endpoint": 0, "0/40/65528": [],
"cluster_id": 40, "0/40/65529": [],
"cluster_type": "chip.clusters.Objects.BasicInformation", "0/40/65531": [
"cluster_name": "Basic",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"0/40/65533": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"0/40/65528": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"0/40/65529": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"0/40/65531": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
65528, 65529, 65531, 65532, 65533 65528, 65529, 65531, 65532, 65533
] ],
}, "1/3/65529": [0, 64],
"1/3/65531": [0, 1, 65528, 65529, 65531, 65532, 65533],
"1/3/65529": { "1/29/0": [
"node_id": 1,
"endpoint": 1,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": [0, 64]
},
"1/3/65531": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 65528, 65529, 65531, 65532, 65533]
},
"1/29/0": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.DeviceTypeList",
"attribute_name": "DeviceTypeList",
"value": [
{ {
"type": 262, "type": 262,
"revision": 1 "revision": 1
} }
] ],
"1/29/1": [6, 29, 57, 768, 8, 40],
"1/29/2": [],
"1/29/3": [9, 10],
"1/29/65532": null,
"1/29/65533": 1,
"1/29/65528": [],
"1/29/65529": [],
"1/29/65531": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533],
"1/30/0": [],
"1/30/65532": 0,
"1/30/65533": 1,
"1/30/65528": [],
"1/30/65529": [],
"1/30/65531": [0, 65528, 65529, 65531, 65532, 65533],
"1/1024/0": 1000,
"1/1024/1": 1,
"1/1024/2": 65534,
"1/1024/3": 0,
"1/1024/4": null,
"1/1024/65532": 0,
"1/1024/65533": 3,
"1/1024/65528": [],
"1/1024/65529": [],
"1/1024/65531": [0, 1, 2, 3, 4, 65528, 65529, 65531, 65532, 65533]
}, },
"1/29/1": { "available": true
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ServerList",
"attribute_name": "ServerList",
"value": [6, 29, 57, 768, 8, 40]
},
"1/29/2": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 2,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClientList",
"attribute_name": "ClientList",
"value": []
},
"1/29/3": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.PartsList",
"attribute_name": "PartsList",
"value": [9, 10]
},
"1/29/65532": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": null
},
"1/29/65533": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"1/29/65528": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"1/29/65529": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"1/29/65531": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533]
},
"1/30/0": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 30,
"cluster_type": "chip.clusters.Objects.Binding",
"cluster_name": "Binding",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.Binding.Attributes.Binding",
"attribute_name": "Binding",
"value": []
},
"1/30/65532": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 30,
"cluster_type": "chip.clusters.Objects.Binding",
"cluster_name": "Binding",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.Binding.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"1/30/65533": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 30,
"cluster_type": "chip.clusters.Objects.Binding",
"cluster_name": "Binding",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.Binding.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"1/30/65528": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 30,
"cluster_type": "chip.clusters.Objects.Binding",
"cluster_name": "Binding",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.Binding.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"1/30/65529": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 30,
"cluster_type": "chip.clusters.Objects.Binding",
"cluster_name": "Binding",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Binding.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"1/30/65531": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 30,
"cluster_type": "chip.clusters.Objects.Binding",
"cluster_name": "Binding",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Binding.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 65528, 65529, 65531, 65532, 65533]
},
"1/1024/0": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1024,
"cluster_type": "chip.clusters.Objects.IlluminanceMeasurement",
"cluster_name": "IlluminanceMeasurement",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.IlluminanceMeasurement.Attributes.MeasuredValue",
"attribute_name": "MeasuredValue",
"value": 1000
},
"1/1024/1": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1024,
"cluster_type": "chip.clusters.Objects.IlluminanceMeasurement",
"cluster_name": "IlluminanceMeasurement",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.IlluminanceMeasurement.Attributes.MinMeasuredValue",
"attribute_name": "MinMeasuredValue",
"value": 1
},
"1/1024/2": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1024,
"cluster_type": "chip.clusters.Objects.IlluminanceMeasurement",
"cluster_name": "IlluminanceMeasurement",
"attribute_id": 2,
"attribute_type": "chip.clusters.Objects.IlluminanceMeasurement.Attributes.MaxMeasuredValue",
"attribute_name": "MaxMeasuredValue",
"value": 65534
},
"1/1024/3": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1024,
"cluster_type": "chip.clusters.Objects.IlluminanceMeasurement",
"cluster_name": "IlluminanceMeasurement",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.IlluminanceMeasurement.Attributes.Tolerance",
"attribute_name": "Tolerance",
"value": 0
},
"1/1024/4": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1024,
"cluster_type": "chip.clusters.Objects.IlluminanceMeasurement",
"cluster_name": "IlluminanceMeasurement",
"attribute_id": 4,
"attribute_type": "chip.clusters.Objects.IlluminanceMeasurement.Attributes.LightSensorType",
"attribute_name": "LightSensorType",
"value": null
},
"1/1024/65532": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1024,
"cluster_type": "chip.clusters.Objects.IlluminanceMeasurement",
"cluster_name": "IlluminanceMeasurement",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.IlluminanceMeasurement.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"1/1024/65533": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1024,
"cluster_type": "chip.clusters.Objects.IlluminanceMeasurement",
"cluster_name": "IlluminanceMeasurement",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.IlluminanceMeasurement.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 3
},
"1/1024/65528": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1024,
"cluster_type": "chip.clusters.Objects.IlluminanceMeasurement",
"cluster_name": "IlluminanceMeasurement",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.IlluminanceMeasurement.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"1/1024/65529": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1024,
"cluster_type": "chip.clusters.Objects.IlluminanceMeasurement",
"cluster_name": "IlluminanceMeasurement",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.IlluminanceMeasurement.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"1/1024/65531": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1024,
"cluster_type": "chip.clusters.Objects.IlluminanceMeasurement",
"cluster_name": "IlluminanceMeasurement",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.IlluminanceMeasurement.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 2, 3, 4, 65528, 65529, 65531, 65532, 65533]
}
},
"endpoints": [0, 1],
"_type": "matter_server.common.models.node.MatterNode"
} }

View file

@ -2,739 +2,96 @@
"node_id": 1, "node_id": 1,
"date_commissioned": "2022-11-29T21:23:48.485051", "date_commissioned": "2022-11-29T21:23:48.485051",
"last_interview": "2022-11-29T21:23:48.485057", "last_interview": "2022-11-29T21:23:48.485057",
"interview_version": 1, "interview_version": 2,
"attributes": { "attributes": {
"0/29/0": { "0/29/0": [
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.DeviceTypeList",
"attribute_name": "DeviceTypeList",
"value": [
{ {
"type": 22, "type": 22,
"revision": 1 "revision": 1
} }
] ],
}, "0/29/1": [
"0/29/1": { 4, 29, 31, 40, 42, 43, 44, 48, 49, 50, 51, 52, 53, 54, 55, 59, 60, 62, 63,
"node_id": 1, 64, 65
"endpoint": 0, ],
"cluster_id": 29, "0/29/2": [41],
"cluster_type": "chip.clusters.Objects.Descriptor", "0/29/3": [1],
"cluster_name": "Descriptor", "0/29/65532": 0,
"attribute_id": 1, "0/29/65533": 1,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ServerList", "0/29/65528": [],
"attribute_name": "ServerList", "0/29/65529": [],
"value": [ "0/29/65531": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533],
4, 29, 31, 40, 42, 43, 44, 48, 49, 50, 51, 52, 53, 54, 55, 59, 60, 62, "0/40/0": 1,
63, 64, 65 "0/40/1": "Nabu Casa",
] "0/40/2": 65521,
}, "0/40/3": "Mock OccupancySensor",
"0/29/2": { "0/40/4": 32768,
"node_id": 1, "0/40/5": "Mock Occupancy Sensor",
"endpoint": 0, "0/40/6": "XX",
"cluster_id": 29, "0/40/7": 0,
"cluster_type": "chip.clusters.Objects.Descriptor", "0/40/8": "v1.0",
"cluster_name": "Descriptor", "0/40/9": 1,
"attribute_id": 2, "0/40/10": "v1.0",
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClientList", "0/40/11": "20221206",
"attribute_name": "ClientList", "0/40/12": "",
"value": [41] "0/40/13": "",
}, "0/40/14": "",
"0/29/3": { "0/40/15": "TEST_SN",
"node_id": 1, "0/40/16": false,
"endpoint": 0, "0/40/17": true,
"cluster_id": 29, "0/40/18": "mock-temperature-sensor",
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.PartsList",
"attribute_name": "PartsList",
"value": [1]
},
"0/29/65532": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"0/29/65533": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"0/29/65528": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"0/29/65529": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"0/29/65531": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533]
},
"0/40/0": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.DataModelRevision",
"attribute_name": "DataModelRevision",
"value": 1
},
"0/40/1": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.VendorName",
"attribute_name": "VendorName",
"value": "Nabu Casa"
},
"0/40/2": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 2,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.VendorID",
"attribute_name": "VendorID",
"value": 65521
},
"0/40/3": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductName",
"attribute_name": "ProductName",
"value": "Mock OccupancySensor"
},
"0/40/4": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 4,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductID",
"attribute_name": "ProductID",
"value": 32768
},
"0/40/5": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 5,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.NodeLabel",
"attribute_name": "NodeLabel",
"value": "Mock Occupancy Sensor"
},
"0/40/6": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 6,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.Location",
"attribute_name": "Location",
"value": "XX"
},
"0/40/7": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 7,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.HardwareVersion",
"attribute_name": "HardwareVersion",
"value": 0
},
"0/40/8": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 8,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.HardwareVersionString",
"attribute_name": "HardwareVersionString",
"value": "v1.0"
},
"0/40/9": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 9,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.SoftwareVersion",
"attribute_name": "SoftwareVersion",
"value": 1
},
"0/40/10": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 10,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.SoftwareVersionString",
"attribute_name": "SoftwareVersionString",
"value": "v1.0"
},
"0/40/11": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 11,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ManufacturingDate",
"attribute_name": "ManufacturingDate",
"value": "20221206"
},
"0/40/12": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 12,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.PartNumber",
"attribute_name": "PartNumber",
"value": ""
},
"0/40/13": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 13,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductURL",
"attribute_name": "ProductURL",
"value": ""
},
"0/40/14": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 14,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductLabel",
"attribute_name": "ProductLabel",
"value": ""
},
"0/40/15": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 15,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.SerialNumber",
"attribute_name": "SerialNumber",
"value": "TEST_SN"
},
"0/40/16": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 16,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.LocalConfigDisabled",
"attribute_name": "LocalConfigDisabled",
"value": false
},
"0/40/17": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 17,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.Reachable",
"attribute_name": "Reachable",
"value": true
},
"0/40/18": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 18,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.UniqueID",
"attribute_name": "UniqueID",
"value": "mock-temperature-sensor"
},
"0/40/19": { "0/40/19": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 19,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.CapabilityMinima",
"attribute_name": "CapabilityMinima",
"value": {
"caseSessionsPerFabric": 3, "caseSessionsPerFabric": 3,
"subscriptionsPerFabric": 3 "subscriptionsPerFabric": 3
}
}, },
"0/40/65532": { "0/40/65532": 0,
"node_id": 1, "0/40/65533": 1,
"endpoint": 0, "0/40/65528": [],
"cluster_id": 40, "0/40/65529": [],
"cluster_type": "chip.clusters.Objects.BasicInformation", "0/40/65531": [
"cluster_name": "Basic",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"0/40/65533": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"0/40/65528": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"0/40/65529": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"0/40/65531": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
65528, 65529, 65531, 65532, 65533 65528, 65529, 65531, 65532, 65533
] ],
}, "1/3/0": 0,
"1/3/1": 2,
"1/3/0": { "1/3/65532": 0,
"node_id": 1, "1/3/65533": 4,
"endpoint": 1, "1/3/65528": [],
"cluster_id": 3, "1/3/65529": [0, 64],
"cluster_type": "chip.clusters.Objects.Identify", "1/3/65531": [0, 1, 65528, 65529, 65531, 65532, 65533],
"cluster_name": "Identify", "1/29/0": [
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.IdentifyTime",
"attribute_name": "IdentifyTime",
"value": 0
},
"1/3/1": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.IdentifyType",
"attribute_name": "IdentifyType",
"value": 2
},
"1/3/65532": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"1/3/65533": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 4
},
"1/3/65528": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"1/3/65529": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": [0, 64]
},
"1/3/65531": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 65528, 65529, 65531, 65532, 65533]
},
"1/29/0": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.DeviceTypeList",
"attribute_name": "DeviceTypeList",
"value": [
{ {
"type": 263, "type": 263,
"revision": 1 "revision": 1
} }
] ],
}, "1/29/1": [
"1/29/1": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ServerList",
"attribute_name": "ServerList",
"value": [
3, 4, 5, 6, 7, 8, 15, 29, 30, 37, 47, 59, 64, 65, 69, 80, 257, 258, 259, 3, 4, 5, 6, 7, 8, 15, 29, 30, 37, 47, 59, 64, 65, 69, 80, 257, 258, 259,
512, 513, 514, 516, 768, 1024, 1026, 1027, 1028, 1029, 1030, 1283, 1284, 512, 513, 514, 516, 768, 1024, 1026, 1027, 1028, 1029, 1030, 1283, 1284,
1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 2820, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 2820,
4294048773 4294048773
] ],
"1/29/2": [],
"1/29/3": [],
"1/29/65532": 0,
"1/29/65533": 1,
"1/29/65528": [],
"1/29/65529": [],
"1/29/65531": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533],
"1/30/0": [],
"1/30/65532": 0,
"1/30/65533": 1,
"1/30/65528": [],
"1/30/65529": [],
"1/30/65531": [0, 65528, 65529, 65531, 65532, 65533],
"1/1030/0": 1,
"1/1030/1": 0,
"1/1030/2": 1,
"1/1030/65532": 0,
"1/1030/65533": 3,
"1/1030/65528": [],
"1/1030/65529": [],
"1/1030/65531": [0, 1, 2, 65528, 65529, 65531, 65532, 65533]
}, },
"1/29/2": { "available": true
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 2,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClientList",
"attribute_name": "ClientList",
"value": []
},
"1/29/3": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.PartsList",
"attribute_name": "PartsList",
"value": []
},
"1/29/65532": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"1/29/65533": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"1/29/65528": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"1/29/65529": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"1/29/65531": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533]
},
"1/30/0": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 30,
"cluster_type": "chip.clusters.Objects.Binding",
"cluster_name": "Binding",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.Binding.Attributes.Binding",
"attribute_name": "Binding",
"value": []
},
"1/30/65532": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 30,
"cluster_type": "chip.clusters.Objects.Binding",
"cluster_name": "Binding",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.Binding.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"1/30/65533": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 30,
"cluster_type": "chip.clusters.Objects.Binding",
"cluster_name": "Binding",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.Binding.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"1/30/65528": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 30,
"cluster_type": "chip.clusters.Objects.Binding",
"cluster_name": "Binding",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.Binding.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"1/30/65529": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 30,
"cluster_type": "chip.clusters.Objects.Binding",
"cluster_name": "Binding",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Binding.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"1/30/65531": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 30,
"cluster_type": "chip.clusters.Objects.Binding",
"cluster_name": "Binding",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Binding.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 65528, 65529, 65531, 65532, 65533]
},
"1/1030/0": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1030,
"cluster_type": "chip.clusters.Objects.OccupancySensing",
"cluster_name": "OccupancySensing",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.OccupancySensing.Attributes.Occupancy",
"attribute_name": "Occupancy",
"value": 1
},
"1/1030/1": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1030,
"cluster_type": "chip.clusters.Objects.OccupancySensing",
"cluster_name": "OccupancySensing",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorType",
"attribute_name": "OccupancySensorType",
"value": 0
},
"1/1030/2": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1030,
"cluster_type": "chip.clusters.Objects.OccupancySensing",
"cluster_name": "OccupancySensing",
"attribute_id": 2,
"attribute_type": "chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorTypeBitmap",
"attribute_name": "OccupancySensorTypeBitmap",
"value": 1
},
"1/1030/65532": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1030,
"cluster_type": "chip.clusters.Objects.OccupancySensing",
"cluster_name": "OccupancySensing",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.OccupancySensing.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"1/1030/65533": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1030,
"cluster_type": "chip.clusters.Objects.OccupancySensing",
"cluster_name": "OccupancySensing",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.OccupancySensing.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 3
},
"1/1030/65528": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1030,
"cluster_type": "chip.clusters.Objects.OccupancySensing",
"cluster_name": "OccupancySensing",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.OccupancySensing.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"1/1030/65529": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1030,
"cluster_type": "chip.clusters.Objects.OccupancySensing",
"cluster_name": "OccupancySensing",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.OccupancySensing.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"1/1030/65531": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1030,
"cluster_type": "chip.clusters.Objects.OccupancySensing",
"cluster_name": "OccupancySensing",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.OccupancySensing.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 2, 65528, 65529, 65531, 65532, 65533]
}
},
"endpoints": [0, 1],
"_type": "matter_server.common.models.node.MatterNode"
} }

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -2,613 +2,80 @@
"node_id": 1, "node_id": 1,
"date_commissioned": "2022-11-29T21:23:48.485051", "date_commissioned": "2022-11-29T21:23:48.485051",
"last_interview": "2022-11-29T21:23:48.485057", "last_interview": "2022-11-29T21:23:48.485057",
"interview_version": 1, "interview_version": 2,
"attributes": { "attributes": {
"0/29/0": { "0/29/0": [
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.DeviceTypeList",
"attribute_name": "DeviceTypeList",
"value": [
{ {
"type": 22, "type": 22,
"revision": 1 "revision": 1
} }
] ],
}, "0/29/1": [
"0/29/1": { 4, 29, 31, 40, 42, 43, 44, 48, 49, 50, 51, 52, 53, 54, 55, 59, 60, 62, 63,
"node_id": 1, 64, 65
"endpoint": 0, ],
"cluster_id": 29, "0/29/2": [41],
"cluster_type": "chip.clusters.Objects.Descriptor", "0/29/3": [1],
"cluster_name": "Descriptor", "0/29/65532": 0,
"attribute_id": 1, "0/29/65533": 1,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ServerList", "0/29/65528": [],
"attribute_name": "ServerList", "0/29/65529": [],
"value": [ "0/29/65531": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533],
4, 29, 31, 40, 42, 43, 44, 48, 49, 50, 51, 52, 53, 54, 55, 59, 60, 62, "0/40/0": 1,
63, 64, 65 "0/40/1": "Nabu Casa",
] "0/40/2": 65521,
}, "0/40/3": "Mock PressureSensor",
"0/29/2": { "0/40/4": 32768,
"node_id": 1, "0/40/5": "Mock Pressure Sensor",
"endpoint": 0, "0/40/6": "XX",
"cluster_id": 29, "0/40/7": 0,
"cluster_type": "chip.clusters.Objects.Descriptor", "0/40/8": "v1.0",
"cluster_name": "Descriptor", "0/40/9": 1,
"attribute_id": 2, "0/40/10": "v1.0",
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClientList", "0/40/11": "20221206",
"attribute_name": "ClientList", "0/40/12": "",
"value": [41] "0/40/13": "",
}, "0/40/14": "",
"0/29/3": { "0/40/15": "TEST_SN",
"node_id": 1, "0/40/16": false,
"endpoint": 0, "0/40/17": true,
"cluster_id": 29, "0/40/18": "mock-pressure-sensor",
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.PartsList",
"attribute_name": "PartsList",
"value": [1]
},
"0/29/65532": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"0/29/65533": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"0/29/65528": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"0/29/65529": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"0/29/65531": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533]
},
"0/40/0": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.DataModelRevision",
"attribute_name": "DataModelRevision",
"value": 1
},
"0/40/1": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.VendorName",
"attribute_name": "VendorName",
"value": "Nabu Casa"
},
"0/40/2": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 2,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.VendorID",
"attribute_name": "VendorID",
"value": 65521
},
"0/40/3": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductName",
"attribute_name": "ProductName",
"value": "Mock PressureSensor"
},
"0/40/4": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 4,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductID",
"attribute_name": "ProductID",
"value": 32768
},
"0/40/5": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 5,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.NodeLabel",
"attribute_name": "NodeLabel",
"value": "Mock Pressure Sensor"
},
"0/40/6": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 6,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.Location",
"attribute_name": "Location",
"value": "XX"
},
"0/40/7": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 7,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.HardwareVersion",
"attribute_name": "HardwareVersion",
"value": 0
},
"0/40/8": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 8,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.HardwareVersionString",
"attribute_name": "HardwareVersionString",
"value": "v1.0"
},
"0/40/9": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 9,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.SoftwareVersion",
"attribute_name": "SoftwareVersion",
"value": 1
},
"0/40/10": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 10,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.SoftwareVersionString",
"attribute_name": "SoftwareVersionString",
"value": "v1.0"
},
"0/40/11": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 11,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ManufacturingDate",
"attribute_name": "ManufacturingDate",
"value": "20221206"
},
"0/40/12": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 12,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.PartNumber",
"attribute_name": "PartNumber",
"value": ""
},
"0/40/13": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 13,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductURL",
"attribute_name": "ProductURL",
"value": ""
},
"0/40/14": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 14,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductLabel",
"attribute_name": "ProductLabel",
"value": ""
},
"0/40/15": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 15,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.SerialNumber",
"attribute_name": "SerialNumber",
"value": "TEST_SN"
},
"0/40/16": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 16,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.LocalConfigDisabled",
"attribute_name": "LocalConfigDisabled",
"value": false
},
"0/40/17": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 17,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.Reachable",
"attribute_name": "Reachable",
"value": true
},
"0/40/18": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 18,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.UniqueID",
"attribute_name": "UniqueID",
"value": "mock-pressure-sensor"
},
"0/40/19": { "0/40/19": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 19,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.CapabilityMinima",
"attribute_name": "CapabilityMinima",
"value": {
"caseSessionsPerFabric": 3, "caseSessionsPerFabric": 3,
"subscriptionsPerFabric": 3 "subscriptionsPerFabric": 3
}
}, },
"0/40/65532": { "0/40/65532": 0,
"node_id": 1, "0/40/65533": 1,
"endpoint": 0, "0/40/65528": [],
"cluster_id": 40, "0/40/65529": [],
"cluster_type": "chip.clusters.Objects.BasicInformation", "0/40/65531": [
"cluster_name": "Basic",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"0/40/65533": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"0/40/65528": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"0/40/65529": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"0/40/65531": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
65528, 65529, 65531, 65532, 65533 65528, 65529, 65531, 65532, 65533
] ],
}, "1/3/65529": [0, 64],
"1/3/65531": [0, 1, 65528, 65529, 65531, 65532, 65533],
"1/3/65529": { "1/29/0": [
"node_id": 1,
"endpoint": 1,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": [0, 64]
},
"1/3/65531": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 65528, 65529, 65531, 65532, 65533]
},
"1/29/0": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.DeviceTypeList",
"attribute_name": "DeviceTypeList",
"value": [
{ {
"type": 773, "type": 773,
"revision": 1 "revision": 1
} }
] ],
"1/29/1": [6, 29, 57, 768, 8, 40],
"1/29/2": [],
"1/29/3": [9, 10],
"1/29/65532": null,
"1/29/65533": 1,
"1/29/65528": [],
"1/29/65529": [],
"1/29/65531": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533],
"1/1027/0": 0,
"1/1027/1": 0,
"1/1027/2": 0,
"1/1027/65532": 0,
"1/1027/65533": 3,
"1/1027/65528": [],
"1/1027/65529": [],
"1/1027/65531": [0, 1, 2, 65528, 65529, 65531, 65532, 65533]
}, },
"1/29/1": { "available": true
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ServerList",
"attribute_name": "ServerList",
"value": [6, 29, 57, 768, 8, 40]
},
"1/29/2": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 2,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClientList",
"attribute_name": "ClientList",
"value": []
},
"1/29/3": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.PartsList",
"attribute_name": "PartsList",
"value": [9, 10]
},
"1/29/65532": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": null
},
"1/29/65533": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"1/29/65528": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"1/29/65529": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"1/29/65531": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533]
},
"1/1027/0": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1027,
"cluster_type": "chip.clusters.Objects.PressureMeasurement",
"cluster_name": "PressureMeasurement",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.PressureMeasurement.Attributes.MeasuredValue",
"attribute_name": "MeasuredValue",
"value": 0
},
"1/1027/1": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1027,
"cluster_type": "chip.clusters.Objects.PressureMeasurement",
"cluster_name": "PressureMeasurement",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.PressureMeasurement.Attributes.MinMeasuredValue",
"attribute_name": "MinMeasuredValue",
"value": 0
},
"1/1027/2": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1027,
"cluster_type": "chip.clusters.Objects.PressureMeasurement",
"cluster_name": "PressureMeasurement",
"attribute_id": 2,
"attribute_type": "chip.clusters.Objects.PressureMeasurement.Attributes.MaxMeasuredValue",
"attribute_name": "MaxMeasuredValue",
"value": 0
},
"1/1027/65532": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1027,
"cluster_type": "chip.clusters.Objects.PressureMeasurement",
"cluster_name": "PressureMeasurement",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.PressureMeasurement.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"1/1027/65533": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1027,
"cluster_type": "chip.clusters.Objects.PressureMeasurement",
"cluster_name": "PressureMeasurement",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.PressureMeasurement.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 3
},
"1/1027/65528": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1027,
"cluster_type": "chip.clusters.Objects.PressureMeasurement",
"cluster_name": "PressureMeasurement",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.PressureMeasurement.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"1/1027/65529": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1027,
"cluster_type": "chip.clusters.Objects.PressureMeasurement",
"cluster_name": "PressureMeasurement",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.PressureMeasurement.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"1/1027/65531": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1027,
"cluster_type": "chip.clusters.Objects.PressureMeasurement",
"cluster_name": "PressureMeasurement",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.PressureMeasurement.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 2, 65528, 65529, 65531, 65532, 65533]
}
},
"endpoints": [0, 1],
"_type": "matter_server.common.models.node.MatterNode"
} }

View file

@ -2,680 +2,86 @@
"node_id": 1, "node_id": 1,
"date_commissioned": "2022-11-29T21:23:48.485051", "date_commissioned": "2022-11-29T21:23:48.485051",
"last_interview": "2022-11-29T21:23:48.485057", "last_interview": "2022-11-29T21:23:48.485057",
"interview_version": 1, "interview_version": 2,
"attributes": { "attributes": {
"0/29/0": { "0/29/0": [
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.DeviceTypeList",
"attribute_name": "DeviceTypeList",
"value": [
{ {
"type": 22, "type": 22,
"revision": 1 "revision": 1
} }
] ],
}, "0/29/1": [
"0/29/1": { 4, 29, 31, 40, 42, 43, 44, 48, 49, 50, 51, 52, 53, 54, 55, 59, 60, 62, 63,
"node_id": 1, 64, 65
"endpoint": 0, ],
"cluster_id": 29, "0/29/2": [41],
"cluster_type": "chip.clusters.Objects.Descriptor", "0/29/3": [1],
"cluster_name": "Descriptor", "0/29/65532": 0,
"attribute_id": 1, "0/29/65533": 1,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ServerList", "0/29/65528": [],
"attribute_name": "ServerList", "0/29/65529": [],
"value": [ "0/29/65531": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533],
4, 29, 31, 40, 42, 43, 44, 48, 49, 50, 51, 52, 53, 54, 55, 59, 60, 62, "0/40/0": 1,
63, 64, 65 "0/40/1": "Nabu Casa",
] "0/40/2": 65521,
}, "0/40/3": "Mock PressureSensor",
"0/29/2": { "0/40/4": 32768,
"node_id": 1, "0/40/5": "Mock Temperature Sensor",
"endpoint": 0, "0/40/6": "XX",
"cluster_id": 29, "0/40/7": 0,
"cluster_type": "chip.clusters.Objects.Descriptor", "0/40/8": "v1.0",
"cluster_name": "Descriptor", "0/40/9": 1,
"attribute_id": 2, "0/40/10": "v1.0",
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClientList", "0/40/11": "20221206",
"attribute_name": "ClientList", "0/40/12": "",
"value": [41] "0/40/13": "",
}, "0/40/14": "",
"0/29/3": { "0/40/15": "TEST_SN",
"node_id": 1, "0/40/16": false,
"endpoint": 0, "0/40/17": true,
"cluster_id": 29, "0/40/18": "mock-temperature-sensor",
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.PartsList",
"attribute_name": "PartsList",
"value": [1]
},
"0/29/65532": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"0/29/65533": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"0/29/65528": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"0/29/65529": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"0/29/65531": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533]
},
"0/40/0": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.DataModelRevision",
"attribute_name": "DataModelRevision",
"value": 1
},
"0/40/1": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.VendorName",
"attribute_name": "VendorName",
"value": "Nabu Casa"
},
"0/40/2": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 2,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.VendorID",
"attribute_name": "VendorID",
"value": 65521
},
"0/40/3": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductName",
"attribute_name": "ProductName",
"value": "Mock PressureSensor"
},
"0/40/4": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 4,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductID",
"attribute_name": "ProductID",
"value": 32768
},
"0/40/5": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 5,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.NodeLabel",
"attribute_name": "NodeLabel",
"value": "Mock Temperature Sensor"
},
"0/40/6": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 6,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.Location",
"attribute_name": "Location",
"value": "XX"
},
"0/40/7": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 7,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.HardwareVersion",
"attribute_name": "HardwareVersion",
"value": 0
},
"0/40/8": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 8,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.HardwareVersionString",
"attribute_name": "HardwareVersionString",
"value": "v1.0"
},
"0/40/9": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 9,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.SoftwareVersion",
"attribute_name": "SoftwareVersion",
"value": 1
},
"0/40/10": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 10,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.SoftwareVersionString",
"attribute_name": "SoftwareVersionString",
"value": "v1.0"
},
"0/40/11": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 11,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ManufacturingDate",
"attribute_name": "ManufacturingDate",
"value": "20221206"
},
"0/40/12": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 12,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.PartNumber",
"attribute_name": "PartNumber",
"value": ""
},
"0/40/13": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 13,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductURL",
"attribute_name": "ProductURL",
"value": ""
},
"0/40/14": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 14,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ProductLabel",
"attribute_name": "ProductLabel",
"value": ""
},
"0/40/15": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 15,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.SerialNumber",
"attribute_name": "SerialNumber",
"value": "TEST_SN"
},
"0/40/16": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 16,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.LocalConfigDisabled",
"attribute_name": "LocalConfigDisabled",
"value": false
},
"0/40/17": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 17,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.Reachable",
"attribute_name": "Reachable",
"value": true
},
"0/40/18": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 18,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.UniqueID",
"attribute_name": "UniqueID",
"value": "mock-temperature-sensor"
},
"0/40/19": { "0/40/19": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 19,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.CapabilityMinima",
"attribute_name": "CapabilityMinima",
"value": {
"caseSessionsPerFabric": 3, "caseSessionsPerFabric": 3,
"subscriptionsPerFabric": 3 "subscriptionsPerFabric": 3
}
}, },
"0/40/65532": { "0/40/65532": 0,
"node_id": 1, "0/40/65533": 1,
"endpoint": 0, "0/40/65528": [],
"cluster_id": 40, "0/40/65529": [],
"cluster_type": "chip.clusters.Objects.BasicInformation", "0/40/65531": [
"cluster_name": "Basic",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"0/40/65533": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"0/40/65528": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"0/40/65529": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"0/40/65531": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 40,
"cluster_type": "chip.clusters.Objects.BasicInformation",
"cluster_name": "Basic",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.BasicInformation.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
65528, 65529, 65531, 65532, 65533 65528, 65529, 65531, 65532, 65533
] ],
}, "0/3/0": 0,
"0/3/1": 2,
"0/3/0": { "0/3/65532": 0,
"node_id": 1, "0/3/65533": 4,
"endpoint": 0, "0/3/65528": [],
"cluster_id": 3, "1/3/65529": [0, 64],
"cluster_type": "chip.clusters.Objects.Identify", "1/3/65531": [0, 1, 65528, 65529, 65531, 65532, 65533],
"cluster_name": "Identify", "1/29/0": [
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.IdentifyTime",
"attribute_name": "IdentifyTime",
"value": 0
},
"0/3/1": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.IdentifyType",
"attribute_name": "IdentifyType",
"value": 2
},
"0/3/65532": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"0/3/65533": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 4
},
"0/3/65528": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"1/3/65529": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": [0, 64]
},
"1/3/65531": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 3,
"cluster_type": "chip.clusters.Objects.Identify",
"cluster_name": "Identify",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Identify.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 65528, 65529, 65531, 65532, 65533]
},
"1/29/0": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.DeviceTypeList",
"attribute_name": "DeviceTypeList",
"value": [
{ {
"type": 770, "type": 770,
"revision": 1 "revision": 1
} }
] ],
"1/29/1": [6, 29, 57, 768, 8, 40],
"1/29/2": [],
"1/29/3": [9, 10],
"1/29/65532": null,
"1/29/65533": 1,
"1/29/65528": [],
"1/29/65529": [],
"1/29/65531": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533],
"1/1026/0": 2100,
"1/1026/1": null,
"1/1026/2": null,
"1/1026/3": 0,
"1/1026/65532": 0,
"1/1026/65533": 4,
"1/1026/65528": [],
"1/1026/65529": [],
"1/1026/65531": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533]
}, },
"1/29/1": { "available": true
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ServerList",
"attribute_name": "ServerList",
"value": [6, 29, 57, 768, 8, 40]
},
"1/29/2": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 2,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClientList",
"attribute_name": "ClientList",
"value": []
},
"1/29/3": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.PartsList",
"attribute_name": "PartsList",
"value": [9, 10]
},
"1/29/65532": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": null
},
"1/29/65533": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 1
},
"1/29/65528": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"1/29/65529": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"1/29/65531": {
"node_id": 1,
"endpoint": 0,
"cluster_id": 29,
"cluster_type": "chip.clusters.Objects.Descriptor",
"cluster_name": "Descriptor",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.Descriptor.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533]
},
"1/1026/0": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1026,
"cluster_type": "chip.clusters.Objects.TemperatureMeasurement",
"cluster_name": "TemperatureMeasurement",
"attribute_id": 0,
"attribute_type": "chip.clusters.Objects.TemperatureMeasurement.Attributes.MeasuredValue",
"attribute_name": "MeasuredValue",
"value": 2100
},
"1/1026/1": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1026,
"cluster_type": "chip.clusters.Objects.TemperatureMeasurement",
"cluster_name": "TemperatureMeasurement",
"attribute_id": 1,
"attribute_type": "chip.clusters.Objects.TemperatureMeasurement.Attributes.MinMeasuredValue",
"attribute_name": "MinMeasuredValue",
"value": null
},
"1/1026/2": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1026,
"cluster_type": "chip.clusters.Objects.TemperatureMeasurement",
"cluster_name": "TemperatureMeasurement",
"attribute_id": 2,
"attribute_type": "chip.clusters.Objects.TemperatureMeasurement.Attributes.MaxMeasuredValue",
"attribute_name": "MaxMeasuredValue",
"value": null
},
"1/1026/3": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1026,
"cluster_type": "chip.clusters.Objects.TemperatureMeasurement",
"cluster_name": "TemperatureMeasurement",
"attribute_id": 3,
"attribute_type": "chip.clusters.Objects.TemperatureMeasurement.Attributes.Tolerance",
"attribute_name": "Tolerance",
"value": 0
},
"1/1026/65532": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1026,
"cluster_type": "chip.clusters.Objects.TemperatureMeasurement",
"cluster_name": "TemperatureMeasurement",
"attribute_id": 65532,
"attribute_type": "chip.clusters.Objects.TemperatureMeasurement.Attributes.FeatureMap",
"attribute_name": "FeatureMap",
"value": 0
},
"1/1026/65533": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1026,
"cluster_type": "chip.clusters.Objects.TemperatureMeasurement",
"cluster_name": "TemperatureMeasurement",
"attribute_id": 65533,
"attribute_type": "chip.clusters.Objects.TemperatureMeasurement.Attributes.ClusterRevision",
"attribute_name": "ClusterRevision",
"value": 4
},
"1/1026/65528": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1026,
"cluster_type": "chip.clusters.Objects.TemperatureMeasurement",
"cluster_name": "TemperatureMeasurement",
"attribute_id": 65528,
"attribute_type": "chip.clusters.Objects.TemperatureMeasurement.Attributes.GeneratedCommandList",
"attribute_name": "GeneratedCommandList",
"value": []
},
"1/1026/65529": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1026,
"cluster_type": "chip.clusters.Objects.TemperatureMeasurement",
"cluster_name": "TemperatureMeasurement",
"attribute_id": 65529,
"attribute_type": "chip.clusters.Objects.TemperatureMeasurement.Attributes.AcceptedCommandList",
"attribute_name": "AcceptedCommandList",
"value": []
},
"1/1026/65531": {
"node_id": 1,
"endpoint": 1,
"cluster_id": 1026,
"cluster_type": "chip.clusters.Objects.TemperatureMeasurement",
"cluster_name": "TemperatureMeasurement",
"attribute_id": 65531,
"attribute_type": "chip.clusters.Objects.TemperatureMeasurement.Attributes.AttributeList",
"attribute_name": "AttributeList",
"value": [0, 1, 2, 3, 65528, 65529, 65531, 65532, 65533]
}
},
"endpoints": [0, 1],
"_type": "matter_server.common.models.node.MatterNode"
} }

View file

@ -3,9 +3,9 @@ from __future__ import annotations
from unittest.mock import MagicMock from unittest.mock import MagicMock
from matter_server.client.models.node import MatterNode
from matter_server.common.helpers.util import dataclass_from_dict from matter_server.common.helpers.util import dataclass_from_dict
from matter_server.common.models.events import EventType from matter_server.common.models import EventType, MatterNodeData
from matter_server.common.models.node import MatterNode
import pytest import pytest
from homeassistant.components.matter.const import DOMAIN from homeassistant.components.matter.const import DOMAIN
@ -124,10 +124,12 @@ async def test_node_added_subscription(
node_added_callback = matter_client.subscribe.call_args[0][0] node_added_callback = matter_client.subscribe.call_args[0][0]
node_data = load_and_parse_node_fixture("onoff-light") node_data = load_and_parse_node_fixture("onoff-light")
node = dataclass_from_dict( node = MatterNode(
MatterNode, dataclass_from_dict(
MatterNodeData,
node_data, node_data,
) )
)
entity_state = hass.states.get("light.mock_onoff_light") entity_state = hass.states.get("light.mock_onoff_light")
assert not entity_state assert not entity_state

View file

@ -3,7 +3,7 @@ from collections.abc import Awaitable, Callable
from unittest.mock import MagicMock, call from unittest.mock import MagicMock, call
from aiohttp import ClientWebSocketResponse from aiohttp import ClientWebSocketResponse
from matter_server.client.exceptions import FailedCommand from matter_server.common.errors import InvalidCommand, NodeCommissionFailed
from homeassistant.components.matter.api import ID, TYPE from homeassistant.components.matter.api import ID, TYPE
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
@ -33,8 +33,8 @@ async def test_commission(
matter_client.commission_with_code.assert_called_once_with("12345678") matter_client.commission_with_code.assert_called_once_with("12345678")
matter_client.commission_with_code.reset_mock() matter_client.commission_with_code.reset_mock()
matter_client.commission_with_code.side_effect = FailedCommand( matter_client.commission_with_code.side_effect = InvalidCommand(
"test_id", "test_code", "Failed to commission" "test_id", "9", "Failed to commission"
) )
await ws_client.send_json( await ws_client.send_json(
@ -47,7 +47,7 @@ async def test_commission(
msg = await ws_client.receive_json() msg = await ws_client.receive_json()
assert not msg["success"] assert not msg["success"]
assert msg["error"]["code"] == "test_code" assert msg["error"]["code"] == "9"
matter_client.commission_with_code.assert_called_once_with("12345678") matter_client.commission_with_code.assert_called_once_with("12345678")
@ -73,8 +73,8 @@ async def test_commission_on_network(
matter_client.commission_on_network.assert_called_once_with(1234) matter_client.commission_on_network.assert_called_once_with(1234)
matter_client.commission_on_network.reset_mock() matter_client.commission_on_network.reset_mock()
matter_client.commission_on_network.side_effect = FailedCommand( matter_client.commission_on_network.side_effect = NodeCommissionFailed(
"test_id", "test_code", "Failed to commission on network" "test_id", "1", "Failed to commission on network"
) )
await ws_client.send_json( await ws_client.send_json(
@ -87,7 +87,7 @@ async def test_commission_on_network(
msg = await ws_client.receive_json() msg = await ws_client.receive_json()
assert not msg["success"] assert not msg["success"]
assert msg["error"]["code"] == "test_code" assert msg["error"]["code"] == "1"
matter_client.commission_on_network.assert_called_once_with(1234) matter_client.commission_on_network.assert_called_once_with(1234)
@ -113,8 +113,8 @@ async def test_set_thread_dataset(
matter_client.set_thread_operational_dataset.assert_called_once_with("test_dataset") matter_client.set_thread_operational_dataset.assert_called_once_with("test_dataset")
matter_client.set_thread_operational_dataset.reset_mock() matter_client.set_thread_operational_dataset.reset_mock()
matter_client.set_thread_operational_dataset.side_effect = FailedCommand( matter_client.set_thread_operational_dataset.side_effect = NodeCommissionFailed(
"test_id", "test_code", "Failed to commission" "test_id", "1", "Failed to commission"
) )
await ws_client.send_json( await ws_client.send_json(
@ -127,7 +127,7 @@ async def test_set_thread_dataset(
msg = await ws_client.receive_json() msg = await ws_client.receive_json()
assert not msg["success"] assert not msg["success"]
assert msg["error"]["code"] == "test_code" assert msg["error"]["code"] == "1"
matter_client.set_thread_operational_dataset.assert_called_once_with("test_dataset") matter_client.set_thread_operational_dataset.assert_called_once_with("test_dataset")
@ -157,8 +157,8 @@ async def test_set_wifi_credentials(
) )
matter_client.set_wifi_credentials.reset_mock() matter_client.set_wifi_credentials.reset_mock()
matter_client.set_wifi_credentials.side_effect = FailedCommand( matter_client.set_wifi_credentials.side_effect = NodeCommissionFailed(
"test_id", "test_code", "Failed to commission on network" "test_id", "1", "Failed to commission on network"
) )
await ws_client.send_json( await ws_client.send_json(
@ -172,7 +172,7 @@ async def test_set_wifi_credentials(
msg = await ws_client.receive_json() msg = await ws_client.receive_json()
assert not msg["success"] assert not msg["success"]
assert msg["error"]["code"] == "test_code" assert msg["error"]["code"] == "1"
assert matter_client.set_wifi_credentials.call_count == 1 assert matter_client.set_wifi_credentials.call_count == 1
assert matter_client.set_wifi_credentials.call_args == call( assert matter_client.set_wifi_credentials.call_args == call(
ssid="test_network", credentials="test_password" ssid="test_network", credentials="test_password"

View file

@ -1,7 +1,7 @@
"""Test Matter binary sensors.""" """Test Matter binary sensors."""
from unittest.mock import MagicMock from unittest.mock import MagicMock
from matter_server.common.models.node import MatterNode from matter_server.client.models.node import MatterNode
import pytest import pytest
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
@ -34,7 +34,9 @@ async def test_contact_sensor(
assert state.state == "on" assert state.state == "on"
set_node_attribute(contact_sensor_node, 1, 69, 0, False) set_node_attribute(contact_sensor_node, 1, 69, 0, False)
await trigger_subscription_callback(hass, matter_client) await trigger_subscription_callback(
hass, matter_client, data=(contact_sensor_node.node_id, "1/69/0", False)
)
state = hass.states.get("binary_sensor.mock_contact_sensor_contact") state = hass.states.get("binary_sensor.mock_contact_sensor_contact")
assert state assert state
@ -62,7 +64,9 @@ async def test_occupancy_sensor(
assert state.state == "on" assert state.state == "on"
set_node_attribute(occupancy_sensor_node, 1, 1030, 0, 0) set_node_attribute(occupancy_sensor_node, 1, 1030, 0, 0)
await trigger_subscription_callback(hass, matter_client) await trigger_subscription_callback(
hass, matter_client, data=(occupancy_sensor_node.node_id, "1/1030/0", 0)
)
state = hass.states.get("binary_sensor.mock_occupancy_sensor_occupancy") state = hass.states.get("binary_sensor.mock_occupancy_sensor_occupancy")
assert state assert state

View file

@ -6,7 +6,7 @@ from typing import Any
from unittest.mock import MagicMock from unittest.mock import MagicMock
from matter_server.common.helpers.util import dataclass_from_dict from matter_server.common.helpers.util import dataclass_from_dict
from matter_server.common.models.server_information import ServerDiagnostics from matter_server.common.models import ServerDiagnostics
import pytest import pytest
from homeassistant.components.matter.const import DOMAIN from homeassistant.components.matter.const import DOMAIN
@ -44,17 +44,15 @@ def device_diagnostics_fixture() -> dict[str, Any]:
async def test_matter_attribute_redact(device_diagnostics: dict[str, Any]) -> None: async def test_matter_attribute_redact(device_diagnostics: dict[str, Any]) -> None:
"""Test the matter attribute redact helper.""" """Test the matter attribute redact helper."""
assert device_diagnostics["attributes"]["0/40/6"]["value"] == "XX" assert device_diagnostics["attributes"]["0/40/6"] == "XX"
redacted_device_diagnostics = redact_matter_attributes(device_diagnostics) redacted_device_diagnostics = redact_matter_attributes(device_diagnostics)
# Check that the correct attribute value is redacted. # Check that the correct attribute value is redacted.
assert ( assert redacted_device_diagnostics["attributes"]["0/40/6"] == "**REDACTED**"
redacted_device_diagnostics["attributes"]["0/40/6"]["value"] == "**REDACTED**"
)
# Check that the other attribute values are not redacted. # Check that the other attribute values are not redacted.
redacted_device_diagnostics["attributes"]["0/40/6"]["value"] = "XX" redacted_device_diagnostics["attributes"]["0/40/6"] = "XX"
assert redacted_device_diagnostics == device_diagnostics assert redacted_device_diagnostics == device_diagnostics
@ -107,5 +105,4 @@ async def test_device_diagnostics(
diagnostics = await get_diagnostics_for_device( diagnostics = await get_diagnostics_for_device(
hass, hass_client, config_entry, device hass, hass_client, config_entry, device
) )
assert diagnostics == device_diagnostics_redacted assert diagnostics == device_diagnostics_redacted

View file

@ -7,9 +7,10 @@ from unittest.mock import AsyncMock, MagicMock, call, patch
from aiohttp import ClientWebSocketResponse from aiohttp import ClientWebSocketResponse
from matter_server.client.exceptions import CannotConnect, InvalidServerVersion from matter_server.client.exceptions import CannotConnect, InvalidServerVersion
from matter_server.client.models.node import MatterNode
from matter_server.common.errors import MatterError
from matter_server.common.helpers.util import dataclass_from_dict from matter_server.common.helpers.util import dataclass_from_dict
from matter_server.common.models.error import MatterError from matter_server.common.models import MatterNodeData
from matter_server.common.models.node import MatterNode
import pytest import pytest
from homeassistant.components.hassio import HassioAPIError from homeassistant.components.hassio import HassioAPIError
@ -51,10 +52,12 @@ async def test_entry_setup_unload(
) -> None: ) -> None:
"""Test the integration set up and unload.""" """Test the integration set up and unload."""
node_data = load_and_parse_node_fixture("onoff-light") node_data = load_and_parse_node_fixture("onoff-light")
node = dataclass_from_dict( node = MatterNode(
MatterNode, dataclass_from_dict(
MatterNodeData,
node_data, node_data,
) )
)
matter_client.get_nodes.return_value = [node] matter_client.get_nodes.return_value = [node]
matter_client.get_node.return_value = node matter_client.get_node.return_value = node
entry = MockConfigEntry(domain="matter", data={"url": "ws://localhost:5580/ws"}) entry = MockConfigEntry(domain="matter", data={"url": "ws://localhost:5580/ws"})

View file

@ -66,7 +66,7 @@ async def test_on_off_light(
assert matter_client.send_device_command.call_count == 1 assert matter_client.send_device_command.call_count == 1
assert matter_client.send_device_command.call_args == call( assert matter_client.send_device_command.call_args == call(
node_id=light_node.node_id, node_id=light_node.node_id,
endpoint=1, endpoint_id=1,
command=clusters.OnOff.Commands.Off(), command=clusters.OnOff.Commands.Off(),
) )
matter_client.send_device_command.reset_mock() matter_client.send_device_command.reset_mock()
@ -84,7 +84,7 @@ async def test_on_off_light(
assert matter_client.send_device_command.call_count == 1 assert matter_client.send_device_command.call_count == 1
assert matter_client.send_device_command.call_args == call( assert matter_client.send_device_command.call_args == call(
node_id=light_node.node_id, node_id=light_node.node_id,
endpoint=1, endpoint_id=1,
command=clusters.OnOff.Commands.On(), command=clusters.OnOff.Commands.On(),
) )
matter_client.send_device_command.reset_mock() matter_client.send_device_command.reset_mock()
@ -135,7 +135,7 @@ async def test_dimmable_light(
assert matter_client.send_device_command.call_count == 1 assert matter_client.send_device_command.call_count == 1
assert matter_client.send_device_command.call_args == call( assert matter_client.send_device_command.call_args == call(
node_id=light_node.node_id, node_id=light_node.node_id,
endpoint=1, endpoint_id=1,
command=clusters.LevelControl.Commands.MoveToLevelWithOnOff( command=clusters.LevelControl.Commands.MoveToLevelWithOnOff(
level=128, level=128,
transitionTime=0, transitionTime=0,
@ -192,7 +192,7 @@ async def test_color_temperature_light(
[ [
call( call(
node_id=light_node.node_id, node_id=light_node.node_id,
endpoint=1, endpoint_id=1,
command=clusters.ColorControl.Commands.MoveToColorTemperature( command=clusters.ColorControl.Commands.MoveToColorTemperature(
colorTemperature=3003, colorTemperature=3003,
transitionTime=0, transitionTime=0,
@ -200,7 +200,7 @@ async def test_color_temperature_light(
), ),
call( call(
node_id=light_node.node_id, node_id=light_node.node_id,
endpoint=1, endpoint_id=1,
command=clusters.OnOff.Commands.On(), command=clusters.OnOff.Commands.On(),
), ),
] ]
@ -268,14 +268,14 @@ async def test_extended_color_light(
[ [
call( call(
node_id=light_node.node_id, node_id=light_node.node_id,
endpoint=1, endpoint_id=1,
command=clusters.ColorControl.Commands.MoveToColor( command=clusters.ColorControl.Commands.MoveToColor(
colorX=0.5 * 65536, colorY=0.5 * 65536, transitionTime=0 colorX=0.5 * 65536, colorY=0.5 * 65536, transitionTime=0
), ),
), ),
call( call(
node_id=light_node.node_id, node_id=light_node.node_id,
endpoint=1, endpoint_id=1,
command=clusters.OnOff.Commands.On(), command=clusters.OnOff.Commands.On(),
), ),
] ]
@ -298,14 +298,14 @@ async def test_extended_color_light(
[ [
call( call(
node_id=light_node.node_id, node_id=light_node.node_id,
endpoint=1, endpoint_id=1,
command=clusters.ColorControl.Commands.MoveToHueAndSaturation( command=clusters.ColorControl.Commands.MoveToHueAndSaturation(
hue=0, saturation=0, transitionTime=0 hue=0, saturation=0, transitionTime=0
), ),
), ),
call( call(
node_id=light_node.node_id, node_id=light_node.node_id,
endpoint=1, endpoint_id=1,
command=clusters.OnOff.Commands.On(), command=clusters.OnOff.Commands.On(),
), ),
] ]

View file

@ -1,7 +1,7 @@
"""Test Matter sensors.""" """Test Matter sensors."""
from unittest.mock import MagicMock from unittest.mock import MagicMock
from matter_server.common.models.node import MatterNode from matter_server.client.models.node import MatterNode
import pytest import pytest
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant

View file

@ -2,7 +2,7 @@
from unittest.mock import MagicMock, call from unittest.mock import MagicMock, call
from chip.clusters import Objects as clusters from chip.clusters import Objects as clusters
from matter_server.common.models.node import MatterNode from matter_server.client.models.node import MatterNode
import pytest import pytest
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
@ -46,7 +46,7 @@ async def test_turn_on(
assert matter_client.send_device_command.call_count == 1 assert matter_client.send_device_command.call_count == 1
assert matter_client.send_device_command.call_args == call( assert matter_client.send_device_command.call_args == call(
node_id=switch_node.node_id, node_id=switch_node.node_id,
endpoint=1, endpoint_id=1,
command=clusters.OnOff.Commands.On(), command=clusters.OnOff.Commands.On(),
) )
@ -80,6 +80,6 @@ async def test_turn_off(
assert matter_client.send_device_command.call_count == 1 assert matter_client.send_device_command.call_count == 1
assert matter_client.send_device_command.call_args == call( assert matter_client.send_device_command.call_args == call(
node_id=switch_node.node_id, node_id=switch_node.node_id,
endpoint=1, endpoint_id=1,
command=clusters.OnOff.Commands.Off(), command=clusters.OnOff.Commands.Off(),
) )