Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion custom_components/matter_experimental/adapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ async def setup_node(self, node: MatterNode) -> None:

bridge_unique_id: str | None = None

if node.bridge_device_type_instance is not None:
if node.aggregator_device_type_instance is not None:
node_info = node.root_device_type_instance.get_cluster(all_clusters.Basic)
self._create_device_registry(
node_info, node_info.nodeLabel or "Hub device", None
Expand Down
12 changes: 6 additions & 6 deletions matter_server/client/model/node.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ class MatterNode:
"""Matter node."""

root_device_type_instance: MatterDeviceTypeInstance[device_types.RootNode]
bridge_device_type_instance: MatterDeviceTypeInstance[
device_types.Bridge
aggregator_device_type_instance: MatterDeviceTypeInstance[
device_types.Aggregator
] | None = None
device_type_instances: list[MatterDeviceTypeInstance]
node_devices: list[AbstractMatterNodeDevice]
Expand All @@ -35,7 +35,7 @@ def __init__(self, matter: Matter, node_info: dict) -> None:

for endpoint_id, endpoint_info in node_info["attributes"].items():
descriptor: all_clusters.Descriptor = endpoint_info["Descriptor"]
for device_info in descriptor.deviceList:
for device_info in descriptor.deviceTypeList:
device_type = device_types.ALL_TYPES.get(device_info.type)

if device_type is None:
Expand All @@ -49,8 +49,8 @@ def __init__(self, matter: Matter, node_info: dict) -> None:
)
if device_type is device_types.RootNode:
self.root_device_type_instance = instance
elif device_type is device_types.Bridge:
self.bridge_device_type_instance = instance
elif device_type is device_types.Aggregator:
self.aggregator_device_type_instance = instance
else:
device_type_instances.append(instance)

Expand All @@ -61,7 +61,7 @@ def __init__(self, matter: Matter, node_info: dict) -> None:

self.node_devices = []

if self.bridge_device_type_instance:
if self.aggregator_device_type_instance:
for instance in device_type_instances:
if instance.device_type == device_types.BridgedDevice:
self.node_devices.append(MatterBridgedNodeDevice(instance))
Expand Down
2 changes: 1 addition & 1 deletion matter_server/client/model/node_device.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ class MatterBridgedNodeDevice(AbstractMatterNodeDevice):
def __init__(
self,
bridged_device_type_instance: MatterDeviceTypeInstance[
device_types.BridgedDevice
device_types.AggregatordDevice
],
) -> None:
self.bridged_device_type_instance = bridged_device_type_instance
Expand Down
33 changes: 27 additions & 6 deletions matter_server/server/matter_stack.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

from chip.ChipDeviceCtrl import ChipDeviceController
from chip.ChipStack import ChipStack
from chip.FabricAdmin import FabricAdmin
import chip.logging
import chip.native

Expand All @@ -14,16 +13,38 @@ class MatterStack:
# To track if wifi credentials set this session.
wifi_cred_set = False
device_controller: ChipDeviceController
certificate_authority_manager = None

def __init__(self, storage_path):
_LOGGER.info("Setup CHIP Controller Server")
chip.native.GetLibraryHandle()
chip.native.Init()
chip.logging.RedirectToPythonLogging()
self.stack = ChipStack(persistentStoragePath=storage_path)
self.fabric_admin = FabricAdmin()
self.device_controller = self.fabric_admin.NewController()
self.stack = ChipStack(
persistentStoragePath=storage_path, enableServerInteractions=True
)
self.certificate_authority_manager = (
chip.CertificateAuthority.CertificateAuthorityManager(
self.stack, self.stack.GetStorageManager()
)
)

self.certificate_authority_manager.LoadAuthoritiesFromStorage()

if len(self.certificate_authority_manager.activeCaList) == 0:
ca = self.certificate_authority_manager.NewCertificateAuthority()
ca.NewFabricAdmin(vendorId=0xFFF1, fabricId=1)
elif len(self.certificate_authority_manager.activeCaList[0].adminList) == 0:
self.certificate_authority_manager.activeCaList[0].NewFabricAdmin(
vendorId=0xFFF1, fabricId=1
)

self.device_controller = (
self.certificate_authority_manager.activeCaList[0]
.adminList[0]
.NewController()
)
_LOGGER.info("CHIP Controller Stack initialized")
self.fabric_id = self.device_controller.GetFabricId()
self.fabric_id = self.device_controller.fabricId
self.compressed_fabric_id = self.device_controller.GetCompressedFabricId()

def shutdown(self):
Expand Down
Loading