Introducing Node-RED-Matter: Create Virtual Devices with Ease for the Matter Protocol!

Failed to install node-red-matter via manage pallete.
Using node-red 2.1.3 - any ideas?

latest version is 0.2.1, i guess you mean that?

I installed it just fine right now.
only thing i did was deleting the " .node-red/node-red-matter folder and restart before and after installing the newer version.

unfortunately i still can´t add devices to alexa or homeassistant.

What does the logs show?

Yes, upgrade :wink:
but seriously, without logs - difficult to tell. Though I'd put (a small amount of) money on it being too old NodeJS version or something this node uses from Node-RED 3.x line.

@FezVrasta I noted your node does not indicate an "engines" property (for minimum NodeJS supported version) or minimum node-red version. See here: node-red-matter (node) - Node-RED

Additionally, the package does not include a link back to the repository. NPM and the flows library use this info to provide a quick & familiar link to your repository. Would be good if you could include it?

These info are actually in the package.json, I'm not sure why the scorecard is not picking it up...

8 posts were split to a new topic: Update long-term live Node-RED in readiness for testing the new Matter node

Hi everybody! I just published v0.2.3, it includes two new nodes: matter-controller and matter-controller-status

matter-controller allows to create, as the name hints, a Matter controller, you can then pair a single hardware (or not) Matter device to it. The controller will then listen to any status changes to the paired device.

matter-controller-status works like matter-device-status but takes a matter-controller configuration node, and will report the status of the paired device.

I only tested it with two matter-server configuration nodes, one running a on/off device, the other running the controller.

Next step is to test it with a real Matter device, I only have a Philips Hue bridge with the experimental Matter firmware so I will start with that.

I also improved the pairing process so that already commissioned devices will be marked as such, this way you can know why a device isn't pairing with your controller

4 Likes

:clap: :clap: :clap:

Lets get Federico some more devices everyone. Lets show our support.

Can anyone suggest an easy and safe way donate money?

Or does anyone have Matter devices (or hens teeth) lying around for him to borrow/keep?

PS: Happy cake day @FezVrasta

Thanks Steve, I'm currently holding off from buying more Matter devices as I'm waiting for my house to be built, once it's ready I will spend all I have in KNX and Matter stuff :sweat_smile: I think getting Hue to work will be already a good improvement as it acts as a bridge device that exposes many devices into one, so it's already a complicated use-case.

Once that's done, adding support for more device types should be simpler and anyone willing to contribute should be able to add support for new devices through PRs.

On the bridge note, after the controller nodes are more stable I want to add support for virtual bridge devices so that one can scan a single QR code and any device added to Node-RED will automatically show up in the Matter controller.

2 Likes

I've been working on something very similar although held off publishing it until the Matter.js library was a bit more mature.

Basically I've implemented the Matter Bridge functionality in Node-RED, IMO Bridges make more sense for Node-RED than individual devices as you can then expose multiple Matter Devices behind a single aggregate device.

I found some issues with commissioning Devices using different UDP Ports in some of the Matter ecosystems.

Anyway my package is here if anyone wants to give it a try, IMO its still early days for the underlying library and probabbly not yet ready for 'production' use

2 Likes

I'd suggest maybe separating out the Matter Controller package from the Matter Device package as having a Controller and Device running on the same machine can cause issues.

Ideally you would then only install and use one set of nodes on an instance

Hi @sammachin, I didn't experience any issue running a controller and a device on the same machine, I'll keep an eye out for it. The way my plugin works is that each Matter server, controller, or device is associated to a configuration node, so if you don't use a controller node, it won't be initialized on the machine. I don't think separating the nodes in different packages would be helpful in this case.

@everyone, I published 0.2.4 with basic support for the Philips Hue bridge paired to a matter-controller-node, the matter-controller-status-node will listen to any state changes on any of the light bulbs exposed from the Hue bridge and report their name, id and status (on/off).

Here's a short demo of everything in action:

1 Like

Still unable to pair Alexa to a virtual device using 0.2.5

Have you tried enabling the debug logging and see if anything useful shows up?

Just set logging to level to debug but nothing appears when I try to pair

You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------

30 Aug 14:15:11 - [info] Starting flows
30 Aug 14:15:11 - [error] [websocket out:d6f17582926043c6-50da04b3.af25fc] Missing server configuration
30 Aug 14:15:11 - [info] Started flows
30 Aug 14:15:11 - [info] [matter-server:b232e1555ecc0a51] Added commissioning server for 48036ce1017a135e
30 Aug 14:15:11 - [info] [matter-server:b232e1555ecc0a51] Starting matter server
30 Aug 14:15:11 - [info] [matter-server:b232e1555ecc0a51] Connecting all commissioning controllers
30 Aug 14:15:11 - [info] [matter-server:b232e1555ecc0a51] Matter server started
30 Aug 14:15:11 - [info] [mqtt-broker:ad1faea18d26b2bf] Connected to broker: mqtt://mqtt.cheerlights.com:1883
30 Aug 14:15:11 - [info] [mqtt-broker:d495fd71b62733f0] Connected to broker: mqtts://cymplecy.uk:8883

There's a specific environment variable for this plugin.

Sorry - has missed that

When I do this - this is my initial startup log

30 Aug 14:22:19 - [info] Starting flows
30 Aug 14:22:19 - [error] [websocket out:d6f17582926043c6-50da04b3.af25fc] Missing server configuration
30 Aug 14:22:19 - [info] Started flows
2023-08-30 14:22:19.542 INFO EndpointStructureLogger Endpoint 0 (MA-rootdevice):
2023-08-30 14:22:19.543 INFO EndpointStructureLogger ⎸ Cluster-Servers:
2023-08-30 14:22:19.543 INFO EndpointStructureLogger ⎸   Cluster-Server "Descriptor" (0x1d)
2023-08-30 14:22:19.543 INFO EndpointStructureLogger ⎸     Global-Attributes:
2023-08-30 14:22:19.544 INFO EndpointStructureLogger ⎸       "clusterRevision" (0xfffd): value = 1
2023-08-30 14:22:19.544 INFO EndpointStructureLogger ⎸       "featureMap" (0xfffc): value = {}
2023-08-30 14:22:19.544 INFO EndpointStructureLogger ⎸       "attributeList" (0xfffb): value = [0,1,2,3,65528,65529,65530,65531,65532,65533]
2023-08-30 14:22:19.545 INFO EndpointStructureLogger ⎸       "eventList" (0xfffa): value = []
2023-08-30 14:22:19.545 INFO EndpointStructureLogger ⎸       "acceptedCommandList" (0xfff9): value = []
2023-08-30 14:22:19.545 INFO EndpointStructureLogger ⎸       "generatedCommandList" (0xfff8): value = []
2023-08-30 14:22:19.545 INFO EndpointStructureLogger ⎸     Attributes:
2023-08-30 14:22:19.545 INFO EndpointStructureLogger ⎸       "deviceTypeList" (0x0): value = [{"deviceType":22,"revision":1}]
2023-08-30 14:22:19.545 INFO EndpointStructureLogger ⎸       "serverList" (0x1): value = [29,31,40,48,49,51,62,63]
2023-08-30 14:22:19.545 INFO EndpointStructureLogger ⎸       "clientList" (0x2): value = []
2023-08-30 14:22:19.546 INFO EndpointStructureLogger ⎸       "partsList" (0x3): value = []
2023-08-30 14:22:19.546 INFO EndpointStructureLogger ⎸     Commands:
2023-08-30 14:22:19.546 INFO EndpointStructureLogger ⎸     Events:
2023-08-30 14:22:19.546 INFO EndpointStructureLogger ⎸   Cluster-Server "BasicInformation" (0x28)
2023-08-30 14:22:19.546 INFO EndpointStructureLogger ⎸     Global-Attributes:
2023-08-30 14:22:19.546 INFO EndpointStructureLogger ⎸       "clusterRevision" (0xfffd): value = 2
2023-08-30 14:22:19.546 INFO EndpointStructureLogger ⎸       "featureMap" (0xfffc): value = {}
2023-08-30 14:22:19.546 INFO EndpointStructureLogger ⎸       "attributeList" (0xfffb): value = [0,1,2,3,4,5,6,7,8,9,10,14,15,16,19,65528,65529,65530,65531,65532,65533]
2023-08-30 14:22:19.547 INFO EndpointStructureLogger ⎸       "eventList" (0xfffa): value = [0,1,2]
2023-08-30 14:22:19.547 INFO EndpointStructureLogger ⎸       "acceptedCommandList" (0xfff9): value = []
2023-08-30 14:22:19.547 INFO EndpointStructureLogger ⎸       "generatedCommandList" (0xfff8): value = []
2023-08-30 14:22:19.547 INFO EndpointStructureLogger ⎸     Attributes:
2023-08-30 14:22:19.547 INFO EndpointStructureLogger ⎸       "dataModelRevision" (0x0): value = 1
2023-08-30 14:22:19.547 INFO EndpointStructureLogger ⎸       "vendorName" (0x1): value = Node RED Matter
2023-08-30 14:22:19.547 INFO EndpointStructureLogger ⎸       "vendorId" (0x2): value = 65521
2023-08-30 14:22:19.547 INFO EndpointStructureLogger ⎸       "productName" (0x3): value = OnOffLightDevice
2023-08-30 14:22:19.547 INFO EndpointStructureLogger ⎸       "productId" (0x4): value = 32768
2023-08-30 14:22:19.548 INFO EndpointStructureLogger ⎸       "nodeLabel" (0x5): value = OnOffLightDevice
2023-08-30 14:22:19.548 INFO EndpointStructureLogger ⎸       "location" (0x6): value = XX
2023-08-30 14:22:19.548 INFO EndpointStructureLogger ⎸       "hardwareVersion" (0x7): value = 0
2023-08-30 14:22:19.548 INFO EndpointStructureLogger ⎸       "hardwareVersionString" (0x8): value = 0
2023-08-30 14:22:19.548 INFO EndpointStructureLogger ⎸       "softwareVersion" (0x9): value = 1
2023-08-30 14:22:19.548 INFO EndpointStructureLogger ⎸       "softwareVersionString" (0xa): value = v1
2023-08-30 14:22:19.548 INFO EndpointStructureLogger ⎸       "productLabel" (0xe): value = OnOffLightDevice
2023-08-30 14:22:19.548 INFO EndpointStructureLogger ⎸       "serialNumber" (0xf): value = node-red-matter-48036ce1017a135e
2023-08-30 14:22:19.548 INFO EndpointStructureLogger ⎸       "localConfigDisabled" (0x10): value = false
2023-08-30 14:22:19.548 INFO EndpointStructureLogger ⎸       "capabilityMinima" (0x13): value = {"caseSessionsPerFabric":3,"subscriptionsPerFabric":3}
2023-08-30 14:22:19.548 INFO EndpointStructureLogger ⎸     Commands:
2023-08-30 14:22:19.548 INFO EndpointStructureLogger ⎸     Events:
2023-08-30 14:22:19.549 INFO EndpointStructureLogger ⎸       "startUp" (0x0)
2023-08-30 14:22:19.549 INFO EndpointStructureLogger ⎸       "shutDown" (0x1)
2023-08-30 14:22:19.549 INFO EndpointStructureLogger ⎸       "leave" (0x2)
2023-08-30 14:22:19.549 INFO EndpointStructureLogger ⎸   Cluster-Server "OperationalCredentials" (0x3e)
2023-08-30 14:22:19.549 INFO EndpointStructureLogger ⎸     Global-Attributes:
2023-08-30 14:22:19.549 INFO EndpointStructureLogger ⎸       "clusterRevision" (0xfffd): value = 1
2023-08-30 14:22:19.549 INFO EndpointStructureLogger ⎸       "featureMap" (0xfffc): value = {}
2023-08-30 14:22:19.549 INFO EndpointStructureLogger ⎸       "attributeList" (0xfffb): value = [0,1,2,3,4,5,65528,65529,65530,65531,65532,65533]
2023-08-30 14:22:19.549 INFO EndpointStructureLogger ⎸       "eventList" (0xfffa): value = []
2023-08-30 14:22:19.549 INFO EndpointStructureLogger ⎸       "acceptedCommandList" (0xfff9): value = [0,2,4,6,7,9,10,11]
2023-08-30 14:22:19.549 INFO EndpointStructureLogger ⎸       "generatedCommandList" (0xfff8): value = [1,3,5,8]
2023-08-30 14:22:19.549 INFO EndpointStructureLogger ⎸     Attributes:
2023-08-30 14:22:19.550 INFO EndpointStructureLogger ⎸       "nocs" (0x0): value = []
2023-08-30 14:22:19.550 INFO EndpointStructureLogger ⎸       "fabrics" (0x1): value = []
2023-08-30 14:22:19.550 INFO EndpointStructureLogger ⎸       "supportedFabrics" (0x2): value = 254
2023-08-30 14:22:19.550 INFO EndpointStructureLogger ⎸       "commissionedFabrics" (0x3): value = 0
2023-08-30 14:22:19.550 INFO EndpointStructureLogger ⎸       "trustedRootCertificates" (0x4): value = []
2023-08-30 14:22:19.550 INFO EndpointStructureLogger ⎸       "currentFabricIndex" (0x5): value = 0
2023-08-30 14:22:19.550 INFO EndpointStructureLogger ⎸     Commands:
2023-08-30 14:22:19.550 INFO EndpointStructureLogger ⎸       "attestationRequest" (0x0/1)
2023-08-30 14:22:19.550 INFO EndpointStructureLogger ⎸       "certificateChainRequest" (0x2/3)
2023-08-30 14:22:19.551 INFO EndpointStructureLogger ⎸       "csrRequest" (0x4/5)
2023-08-30 14:22:19.551 INFO EndpointStructureLogger ⎸       "addNoc" (0x6/8)
2023-08-30 14:22:19.551 INFO EndpointStructureLogger ⎸       "updateNoc" (0x7/8)
2023-08-30 14:22:19.551 INFO EndpointStructureLogger ⎸       "updateFabricLabel" (0x9/8)
2023-08-30 14:22:19.551 INFO EndpointStructureLogger ⎸       "removeFabric" (0xa/8)
2023-08-30 14:22:19.551 INFO EndpointStructureLogger ⎸       "addTrustedRootCertificate" (0xb/11)
2023-08-30 14:22:19.551 INFO EndpointStructureLogger ⎸     Events:
2023-08-30 14:22:19.551 INFO EndpointStructureLogger ⎸   Cluster-Server "GeneralCommissioning" (0x30)
2023-08-30 14:22:19.551 INFO EndpointStructureLogger ⎸     Global-Attributes:
2023-08-30 14:22:19.551 INFO EndpointStructureLogger ⎸       "clusterRevision" (0xfffd): value = 1
2023-08-30 14:22:19.551 INFO EndpointStructureLogger ⎸       "featureMap" (0xfffc): value = {}
2023-08-30 14:22:19.552 INFO EndpointStructureLogger ⎸       "attributeList" (0xfffb): value = [0,1,2,3,4,65528,65529,65530,65531,65532,65533]
2023-08-30 14:22:19.552 INFO EndpointStructureLogger ⎸       "eventList" (0xfffa): value = []
2023-08-30 14:22:19.552 INFO EndpointStructureLogger ⎸       "acceptedCommandList" (0xfff9): value = [0,2,4]
2023-08-30 14:22:19.552 INFO EndpointStructureLogger ⎸       "generatedCommandList" (0xfff8): value = [1,3,5]
2023-08-30 14:22:19.552 INFO EndpointStructureLogger ⎸     Attributes:
2023-08-30 14:22:19.552 INFO EndpointStructureLogger ⎸       "breadcrumb" (0x0): value = 0
2023-08-30 14:22:19.552 INFO EndpointStructureLogger ⎸       "basicCommissioningInfo" (0x1): value = {"failSafeExpiryLengthSeconds":60,"maxCumulativeFailsafeSeconds":900}
2023-08-30 14:22:19.552 INFO EndpointStructureLogger ⎸       "regulatoryConfig" (0x2): value = 1
2023-08-30 14:22:19.552 INFO EndpointStructureLogger ⎸       "locationCapability" (0x3): value = 2
2023-08-30 14:22:19.552 INFO EndpointStructureLogger ⎸       "supportsConcurrentConnection" (0x4): value = true
2023-08-30 14:22:19.552 INFO EndpointStructureLogger ⎸     Commands:
2023-08-30 14:22:19.552 INFO EndpointStructureLogger ⎸       "armFailSafe" (0x0/1)
2023-08-30 14:22:19.552 INFO EndpointStructureLogger ⎸       "setRegulatoryConfig" (0x2/3)
2023-08-30 14:22:19.553 INFO EndpointStructureLogger ⎸       "commissioningComplete" (0x4/5)
2023-08-30 14:22:19.553 INFO EndpointStructureLogger ⎸     Events:
2023-08-30 14:22:19.553 INFO EndpointStructureLogger ⎸   Cluster-Server "NetworkCommissioning" (0x31) (Features: ethernetNetworkInterface)
2023-08-30 14:22:19.553 INFO EndpointStructureLogger ⎸     Global-Attributes:
2023-08-30 14:22:19.553 INFO EndpointStructureLogger ⎸       "clusterRevision" (0xfffd): value = 1
2023-08-30 14:22:19.553 INFO EndpointStructureLogger ⎸       "featureMap" (0xfffc): value = {"wiFiNetworkInterface":false,"threadNetworkInterface":false,"ethernetNetworkInterface":true}
2023-08-30 14:22:19.553 INFO EndpointStructureLogger ⎸       "attributeList" (0xfffb): value = [0,1,4,5,6,7,65528,65529,65530,65531,65532,65533]
2023-08-30 14:22:19.553 INFO EndpointStructureLogger ⎸       "eventList" (0xfffa): value = []
2023-08-30 14:22:19.553 INFO EndpointStructureLogger ⎸       "acceptedCommandList" (0xfff9): value = []
2023-08-30 14:22:19.553 INFO EndpointStructureLogger ⎸       "generatedCommandList" (0xfff8): value = []
2023-08-30 14:22:19.553 INFO EndpointStructureLogger ⎸     Attributes:
2023-08-30 14:22:19.554 INFO EndpointStructureLogger ⎸       "maxNetworks" (0x0): value = 1
2023-08-30 14:22:19.554 INFO EndpointStructureLogger ⎸       "networks" (0x1): value = [{"networkId":"0000000000000000000000000000000000000000000000000000000000000000","connected":true}]
2023-08-30 14:22:19.554 INFO EndpointStructureLogger ⎸       "interfaceEnabled" (0x4): value = true
2023-08-30 14:22:19.554 INFO EndpointStructureLogger ⎸       "lastNetworkingStatus" (0x5): value = 0
2023-08-30 14:22:19.554 INFO EndpointStructureLogger ⎸       "lastNetworkId" (0x6): value = "0000000000000000000000000000000000000000000000000000000000000000"
2023-08-30 14:22:19.554 INFO EndpointStructureLogger ⎸       "lastConnectErrorValue" (0x7): value = 0
2023-08-30 14:22:19.554 INFO EndpointStructureLogger ⎸     Commands:
2023-08-30 14:22:19.554 INFO EndpointStructureLogger ⎸     Events:
2023-08-30 14:22:19.554 INFO EndpointStructureLogger ⎸   Cluster-Server "AccessControl" (0x1f)
2023-08-30 14:22:19.556 INFO EndpointStructureLogger ⎸     Global-Attributes:
2023-08-30 14:22:19.557 INFO EndpointStructureLogger ⎸       "clusterRevision" (0xfffd): value = 1
2023-08-30 14:22:19.557 INFO EndpointStructureLogger ⎸       "featureMap" (0xfffc): value = {}
2023-08-30 14:22:19.557 INFO EndpointStructureLogger ⎸       "attributeList" (0xfffb): value = [0,1,2,3,4,65528,65529,65530,65531,65532,65533]
2023-08-30 14:22:19.557 INFO EndpointStructureLogger ⎸       "eventList" (0xfffa): value = [0,1]
2023-08-30 14:22:19.557 INFO EndpointStructureLogger ⎸       "acceptedCommandList" (0xfff9): value = []
2023-08-30 14:22:19.557 INFO EndpointStructureLogger ⎸       "generatedCommandList" (0xfff8): value = []
2023-08-30 14:22:19.557 INFO EndpointStructureLogger ⎸     Attributes:
2023-08-30 14:22:19.557 INFO EndpointStructureLogger ⎸       "acl" (0x0): value = Fabric-Scoped
2023-08-30 14:22:19.557 INFO EndpointStructureLogger ⎸       "extension" (0x1): value = Fabric-Scoped
2023-08-30 14:22:19.557 INFO EndpointStructureLogger ⎸       "subjectsPerAccessControlEntry" (0x2): value = 4
2023-08-30 14:22:19.558 INFO EndpointStructureLogger ⎸       "targetsPerAccessControlEntry" (0x3): value = 4
2023-08-30 14:22:19.558 INFO EndpointStructureLogger ⎸       "accessControlEntriesPerFabric" (0x4): value = 4
2023-08-30 14:22:19.558 INFO EndpointStructureLogger ⎸     Commands:
2023-08-30 14:22:19.558 INFO EndpointStructureLogger ⎸     Events:
2023-08-30 14:22:19.558 INFO EndpointStructureLogger ⎸       "accessControlEntryChanged" (0x0)
2023-08-30 14:22:19.558 INFO EndpointStructureLogger ⎸       "accessControlExtensionChanged" (0x1)
2023-08-30 14:22:19.558 INFO EndpointStructureLogger ⎸   Cluster-Server "GroupKeyManagement" (0x3f)
2023-08-30 14:22:19.558 INFO EndpointStructureLogger ⎸     Global-Attributes:
2023-08-30 14:22:19.558 INFO EndpointStructureLogger ⎸       "clusterRevision" (0xfffd): value = 1
2023-08-30 14:22:19.558 INFO EndpointStructureLogger ⎸       "featureMap" (0xfffc): value = {}
2023-08-30 14:22:19.558 INFO EndpointStructureLogger ⎸       "attributeList" (0xfffb): value = [0,1,2,3,65528,65529,65530,65531,65532,65533]
2023-08-30 14:22:19.558 INFO EndpointStructureLogger ⎸       "eventList" (0xfffa): value = []
2023-08-30 14:22:19.559 INFO EndpointStructureLogger ⎸       "acceptedCommandList" (0xfff9): value = [0,1,3,4]
2023-08-30 14:22:19.559 INFO EndpointStructureLogger ⎸       "generatedCommandList" (0xfff8): value = [2,5]
2023-08-30 14:22:19.559 INFO EndpointStructureLogger ⎸     Attributes:
2023-08-30 14:22:19.559 INFO EndpointStructureLogger ⎸       "groupKeyMap" (0x0): value = Fabric-Scoped
2023-08-30 14:22:19.559 INFO EndpointStructureLogger ⎸       "groupTable" (0x1): value = Fabric-Scoped
2023-08-30 14:22:19.559 INFO EndpointStructureLogger ⎸       "maxGroupsPerFabric" (0x2): value = 254
2023-08-30 14:22:19.559 INFO EndpointStructureLogger ⎸       "maxGroupKeysPerFabric" (0x3): value = 254
2023-08-30 14:22:19.559 INFO EndpointStructureLogger ⎸     Commands:
2023-08-30 14:22:19.559 INFO EndpointStructureLogger ⎸       "keySetWrite" (0x0/0)
2023-08-30 14:22:19.559 INFO EndpointStructureLogger ⎸       "keySetRead" (0x1/2)
2023-08-30 14:22:19.560 INFO EndpointStructureLogger ⎸       "keySetRemove" (0x3/3)
2023-08-30 14:22:19.560 INFO EndpointStructureLogger ⎸       "keySetReadAllIndices" (0x4/5)
2023-08-30 14:22:19.560 INFO EndpointStructureLogger ⎸     Events:
2023-08-30 14:22:19.560 INFO EndpointStructureLogger ⎸   Cluster-Server "GeneralDiagnostics" (0x33)
2023-08-30 14:22:19.560 INFO EndpointStructureLogger ⎸     Global-Attributes:
2023-08-30 14:22:19.560 INFO EndpointStructureLogger ⎸       "clusterRevision" (0xfffd): value = 1
2023-08-30 14:22:19.560 INFO EndpointStructureLogger ⎸       "featureMap" (0xfffc): value = {}
2023-08-30 14:22:19.560 INFO EndpointStructureLogger ⎸       "attributeList" (0xfffb): value = [0,1,2,3,4,5,6,7,8,65528,65529,65530,65531,65532,65533]
2023-08-30 14:22:19.561 INFO EndpointStructureLogger ⎸       "eventList" (0xfffa): value = [3]
2023-08-30 14:22:19.561 INFO EndpointStructureLogger ⎸       "acceptedCommandList" (0xfff9): value = [0]
2023-08-30 14:22:19.561 INFO EndpointStructureLogger ⎸       "generatedCommandList" (0xfff8): value = []
2023-08-30 14:22:19.561 INFO EndpointStructureLogger ⎸     Attributes:
2023-08-30 14:22:19.561 INFO EndpointStructureLogger ⎸       "networkInterfaces" (0x0): value = []
2023-08-30 14:22:19.561 INFO EndpointStructureLogger ⎸       "rebootCount" (0x1): value = 0
2023-08-30 14:22:19.561 INFO EndpointStructureLogger ⎸       "upTime" (0x2): value = 0
2023-08-30 14:22:19.561 INFO EndpointStructureLogger ⎸       "totalOperationalHours" (0x3): value = 0
2023-08-30 14:22:19.561 INFO EndpointStructureLogger ⎸       "bootReason" (0x4): value = 0
2023-08-30 14:22:19.562 INFO EndpointStructureLogger ⎸       "activeHardwareFaults" (0x5): value = []
2023-08-30 14:22:19.562 INFO EndpointStructureLogger ⎸       "activeRadioFaults" (0x6): value = []
2023-08-30 14:22:19.562 INFO EndpointStructureLogger ⎸       "activeNetworkFaults" (0x7): value = []
2023-08-30 14:22:19.562 INFO EndpointStructureLogger ⎸       "testEventTriggersEnabled" (0x8): value = false
2023-08-30 14:22:19.562 INFO EndpointStructureLogger ⎸     Commands:
2023-08-30 14:22:19.562 INFO EndpointStructureLogger ⎸       "testEventTrigger" (0x0/0)
2023-08-30 14:22:19.562 INFO EndpointStructureLogger ⎸     Events:
2023-08-30 14:22:19.562 INFO EndpointStructureLogger ⎸       "bootReason" (0x3)
2023-08-30 14:22:19.562 INFO EndpointStructureLogger ⎸ Cluster-Clients:
2023-08-30 14:22:19.562 INFO EndpointStructureLogger ⎸ Child-Endpoints:
2023-08-30 14:22:19.563 INFO EndpointStructureLogger ⎸   Endpoint undefined (MA-onofflight):
2023-08-30 14:22:19.563 INFO EndpointStructureLogger ⎸     Cluster-Servers:
2023-08-30 14:22:19.563 INFO EndpointStructureLogger ⎸       Cluster-Server "Descriptor" (0x1d)
2023-08-30 14:22:19.563 INFO EndpointStructureLogger ⎸         Global-Attributes:
2023-08-30 14:22:19.563 INFO EndpointStructureLogger ⎸           "clusterRevision" (0xfffd): value = 1
2023-08-30 14:22:19.563 INFO EndpointStructureLogger ⎸           "featureMap" (0xfffc): value = {}
2023-08-30 14:22:19.563 INFO EndpointStructureLogger ⎸           "attributeList" (0xfffb): value = [0,1,2,3,65528,65529,65530,65531,65532,65533]
2023-08-30 14:22:19.563 INFO EndpointStructureLogger ⎸           "eventList" (0xfffa): value = []
2023-08-30 14:22:19.563 INFO EndpointStructureLogger ⎸           "acceptedCommandList" (0xfff9): value = []
2023-08-30 14:22:19.563 INFO EndpointStructureLogger ⎸           "generatedCommandList" (0xfff8): value = []
2023-08-30 14:22:19.563 INFO EndpointStructureLogger ⎸         Attributes:
2023-08-30 14:22:19.564 INFO EndpointStructureLogger ⎸           "deviceTypeList" (0x0): value = [{"deviceType":256,"revision":2}]
2023-08-30 14:22:19.564 INFO EndpointStructureLogger ⎸           "serverList" (0x1): value = [3,4,5,6,29,30]
2023-08-30 14:22:19.564 INFO EndpointStructureLogger ⎸           "clientList" (0x2): value = []
2023-08-30 14:22:19.564 INFO EndpointStructureLogger ⎸           "partsList" (0x3): value = []
2023-08-30 14:22:19.564 INFO EndpointStructureLogger ⎸         Commands:
2023-08-30 14:22:19.564 INFO EndpointStructureLogger ⎸         Events:
2023-08-30 14:22:19.564 INFO EndpointStructureLogger ⎸       Cluster-Server "Binding" (0x1e)
2023-08-30 14:22:19.564 INFO EndpointStructureLogger ⎸         Global-Attributes:
2023-08-30 14:22:19.564 INFO EndpointStructureLogger ⎸           "clusterRevision" (0xfffd): value = 1
2023-08-30 14:22:19.564 INFO EndpointStructureLogger ⎸           "featureMap" (0xfffc): value = {}
2023-08-30 14:22:19.564 INFO EndpointStructureLogger ⎸           "attributeList" (0xfffb): value = [0,65528,65529,65530,65531,65532,65533]
2023-08-30 14:22:19.564 INFO EndpointStructureLogger ⎸           "eventList" (0xfffa): value = []
2023-08-30 14:22:19.565 INFO EndpointStructureLogger ⎸           "acceptedCommandList" (0xfff9): value = []
2023-08-30 14:22:19.565 INFO EndpointStructureLogger ⎸           "generatedCommandList" (0xfff8): value = []
2023-08-30 14:22:19.565 INFO EndpointStructureLogger ⎸         Attributes:
2023-08-30 14:22:19.565 INFO EndpointStructureLogger ⎸           "binding" (0x0): value = Fabric-Scoped

cont

2023-08-30 14:22:19.565 INFO EndpointStructureLogger ⎸         Events:
2023-08-30 14:22:19.565 INFO EndpointStructureLogger ⎸       Cluster-Server "Identify" (0x3)
2023-08-30 14:22:19.565 INFO EndpointStructureLogger ⎸         Global-Attributes:
2023-08-30 14:22:19.565 INFO EndpointStructureLogger ⎸           "clusterRevision" (0xfffd): value = 4
2023-08-30 14:22:19.565 INFO EndpointStructureLogger ⎸           "featureMap" (0xfffc): value = {}
2023-08-30 14:22:19.565 INFO EndpointStructureLogger ⎸           "attributeList" (0xfffb): value = [0,1,65528,65529,65530,65531,65532,65533]
2023-08-30 14:22:19.566 INFO EndpointStructureLogger ⎸           "eventList" (0xfffa): value = []
2023-08-30 14:22:19.566 INFO EndpointStructureLogger ⎸           "acceptedCommandList" (0xfff9): value = [0]
2023-08-30 14:22:19.566 INFO EndpointStructureLogger ⎸           "generatedCommandList" (0xfff8): value = []
2023-08-30 14:22:19.566 INFO EndpointStructureLogger ⎸         Attributes:
2023-08-30 14:22:19.566 INFO EndpointStructureLogger ⎸           "identifyTime" (0x0): value = 0
2023-08-30 14:22:19.566 INFO EndpointStructureLogger ⎸           "identifyType" (0x1): value = 0
2023-08-30 14:22:19.566 INFO EndpointStructureLogger ⎸         Commands:
2023-08-30 14:22:19.566 INFO EndpointStructureLogger ⎸           "identify" (0x0/0)
2023-08-30 14:22:19.566 INFO EndpointStructureLogger ⎸         Events:
2023-08-30 14:22:19.566 INFO EndpointStructureLogger ⎸       Cluster-Server "Groups" (0x4) (Features: groupNames)
2023-08-30 14:22:19.566 INFO EndpointStructureLogger ⎸         Global-Attributes:
2023-08-30 14:22:19.566 INFO EndpointStructureLogger ⎸           "clusterRevision" (0xfffd): value = 4
2023-08-30 14:22:19.567 INFO EndpointStructureLogger ⎸           "featureMap" (0xfffc): value = {"groupNames":true}
2023-08-30 14:22:19.567 INFO EndpointStructureLogger ⎸           "attributeList" (0xfffb): value = [0,65528,65529,65530,65531,65532,65533]
2023-08-30 14:22:19.567 INFO EndpointStructureLogger ⎸           "eventList" (0xfffa): value = []
2023-08-30 14:22:19.567 INFO EndpointStructureLogger ⎸           "acceptedCommandList" (0xfff9): value = [0,1,2,3,4,5]
2023-08-30 14:22:19.567 INFO EndpointStructureLogger ⎸           "generatedCommandList" (0xfff8): value = [0,1,2,3]
2023-08-30 14:22:19.567 INFO EndpointStructureLogger ⎸         Attributes:
2023-08-30 14:22:19.567 INFO EndpointStructureLogger ⎸           "nameSupport" (0x0): value = {"nameSupport":true}
2023-08-30 14:22:19.567 INFO EndpointStructureLogger ⎸         Commands:
2023-08-30 14:22:19.567 INFO EndpointStructureLogger ⎸           "addGroup" (0x0/0)
2023-08-30 14:22:19.567 INFO EndpointStructureLogger ⎸           "viewGroup" (0x1/1)
2023-08-30 14:22:19.567 INFO EndpointStructureLogger ⎸           "getGroupMembership" (0x2/2)
2023-08-30 14:22:19.567 INFO EndpointStructureLogger ⎸           "removeGroup" (0x3/3)
2023-08-30 14:22:19.567 INFO EndpointStructureLogger ⎸           "removeAllGroups" (0x4/4)
2023-08-30 14:22:19.568 INFO EndpointStructureLogger ⎸           "addGroupIfIdentifying" (0x5/5)
2023-08-30 14:22:19.568 INFO EndpointStructureLogger ⎸         Events:
2023-08-30 14:22:19.568 INFO EndpointStructureLogger ⎸       Cluster-Server "Scenes" (0x5) (Features: sceneNames)
2023-08-30 14:22:19.568 INFO EndpointStructureLogger ⎸         Global-Attributes:
2023-08-30 14:22:19.568 INFO EndpointStructureLogger ⎸           "clusterRevision" (0xfffd): value = 4
2023-08-30 14:22:19.568 INFO EndpointStructureLogger ⎸           "featureMap" (0xfffc): value = {"sceneNames":true}
2023-08-30 14:22:19.568 INFO EndpointStructureLogger ⎸           "attributeList" (0xfffb): value = [0,1,2,3,4,5,65528,65529,65530,65531,65532,65533]
2023-08-30 14:22:19.568 INFO EndpointStructureLogger ⎸           "eventList" (0xfffa): value = []
2023-08-30 14:22:19.568 INFO EndpointStructureLogger ⎸           "acceptedCommandList" (0xfff9): value = [0,1,2,3,4,5,6,64,65,66]
2023-08-30 14:22:19.568 INFO EndpointStructureLogger ⎸           "generatedCommandList" (0xfff8): value = [0,1,2,3,4,6,64,65,66]
2023-08-30 14:22:19.568 INFO EndpointStructureLogger ⎸         Attributes:
2023-08-30 14:22:19.569 INFO EndpointStructureLogger ⎸           "sceneCount" (0x0): value = Error: getSceneCount: session or endpoint undefined
2023-08-30 14:22:19.569 INFO EndpointStructureLogger ⎸           "currentScene" (0x1): value = 0
2023-08-30 14:22:19.569 INFO EndpointStructureLogger ⎸           "currentGroup" (0x2): value = 0
2023-08-30 14:22:19.569 INFO EndpointStructureLogger ⎸           "sceneValid" (0x3): value = false
2023-08-30 14:22:19.569 INFO EndpointStructureLogger ⎸           "nameSupport" (0x4): value = {"nameSupport":true}
2023-08-30 14:22:19.569 INFO EndpointStructureLogger ⎸           "lastConfiguredBy" (0x5): value = null
2023-08-30 14:22:19.571 INFO EndpointStructureLogger ⎸         Commands:
2023-08-30 14:22:19.571 INFO EndpointStructureLogger ⎸           "addScene" (0x0/0)
2023-08-30 14:22:19.571 INFO EndpointStructureLogger ⎸           "viewScene" (0x1/1)
2023-08-30 14:22:19.571 INFO EndpointStructureLogger ⎸           "removeScene" (0x2/2)
2023-08-30 14:22:19.572 INFO EndpointStructureLogger ⎸           "removeAllScenes" (0x3/3)
2023-08-30 14:22:19.572 INFO EndpointStructureLogger ⎸           "storeScene" (0x4/4)
2023-08-30 14:22:19.572 INFO EndpointStructureLogger ⎸           "recallScene" (0x5/5)
2023-08-30 14:22:19.572 INFO EndpointStructureLogger ⎸           "getSceneMembership" (0x6/6)
2023-08-30 14:22:19.572 INFO EndpointStructureLogger ⎸           "enhancedAddScene" (0x40/64)
2023-08-30 14:22:19.572 INFO EndpointStructureLogger ⎸           "enhancedViewScene" (0x41/65)
2023-08-30 14:22:19.572 INFO EndpointStructureLogger ⎸           "copyScene" (0x42/66)
2023-08-30 14:22:19.572 INFO EndpointStructureLogger ⎸         Events:
2023-08-30 14:22:19.572 INFO EndpointStructureLogger ⎸       Cluster-Server "OnOff" (0x6)
2023-08-30 14:22:19.572 INFO EndpointStructureLogger ⎸         Global-Attributes:
2023-08-30 14:22:19.572 INFO EndpointStructureLogger ⎸           "clusterRevision" (0xfffd): value = 4
2023-08-30 14:22:19.572 INFO EndpointStructureLogger ⎸           "featureMap" (0xfffc): value = {}
2023-08-30 14:22:19.573 INFO EndpointStructureLogger ⎸           "attributeList" (0xfffb): value = [0,65528,65529,65530,65531,65532,65533]
2023-08-30 14:22:19.573 INFO EndpointStructureLogger ⎸           "eventList" (0xfffa): value = []
2023-08-30 14:22:19.573 INFO EndpointStructureLogger ⎸           "acceptedCommandList" (0xfff9): value = [0,1,2]
2023-08-30 14:22:19.573 INFO EndpointStructureLogger ⎸           "generatedCommandList" (0xfff8): value = []
2023-08-30 14:22:19.573 INFO EndpointStructureLogger ⎸         Attributes:
2023-08-30 14:22:19.573 INFO EndpointStructureLogger ⎸           "onOff" (0x0): value = false
2023-08-30 14:22:19.573 INFO EndpointStructureLogger ⎸         Commands:
2023-08-30 14:22:19.573 INFO EndpointStructureLogger ⎸           "off" (0x0/0)
2023-08-30 14:22:19.573 INFO EndpointStructureLogger ⎸           "on" (0x1/1)
2023-08-30 14:22:19.573 INFO EndpointStructureLogger ⎸           "toggle" (0x2/2)
2023-08-30 14:22:19.573 INFO EndpointStructureLogger ⎸         Events:
2023-08-30 14:22:19.573 INFO EndpointStructureLogger ⎸     Cluster-Clients:
2023-08-30 14:22:19.574 INFO EndpointStructureLogger ⎸     Child-Endpoints:
2023-08-30 14:22:19.574 DEBUG MatterServer Mdns instances not yet created, delaying node preparation
30 Aug 14:22:19 - [info] [matter-server:b232e1555ecc0a51] Added commissioning server for 48036ce1017a135e
30 Aug 14:22:19 - [info] [matter-server:b232e1555ecc0a51] Starting matter server
2023-08-30 14:22:19.576 DEBUG UdpChannelNode Socket created and bound  remoteAddress: undefined:5353 localAddress: 0.0.0.0:5353
2023-08-30 14:22:19.576 DEBUG UdpChannelNode Socket created and bound  remoteAddress: undefined:5353 localAddress: :::5353
2023-08-30 14:22:19.577 DEBUG UdpChannelNode Socket created and bound  remoteAddress: undefined:5353 localAddress: 0.0.0.0:5353
2023-08-30 14:22:19.577 DEBUG UdpChannelNode Socket created and bound  remoteAddress: undefined:5353 localAddress: :::5353
2023-08-30 14:22:19.587 DEBUG EventHandler Set/Restore last event number: 18
2023-08-30 14:22:19.587 DEBUG CommissioningServer No unique id found for endpoint on index 0 / device MA-onofflight - using index as unique identifier!
2023-08-30 14:22:19.588 DEBUG CommissioningServer Restored endpoint id 1 for endpoint with serial_node-red-matter-48036ce1017a135e-index_0 / device MA-onofflight from storage
2023-08-30 14:22:19.596 DEBUG ClusterServer Restore cluster data version 570832925 in cluster Descriptor (29)
2023-08-30 14:22:19.602 DEBUG ClusterServer Restore cluster data version 2783174555 in cluster BasicInformation (40)
2023-08-30 14:22:19.608 DEBUG ClusterServer Restore cluster data version 3473670841 in cluster OperationalCredentials (62)
2023-08-30 14:22:19.614 DEBUG ClusterServer Restore cluster data version 4101921478 in cluster GeneralCommissioning (48)
2023-08-30 14:22:19.620 DEBUG ClusterServer Restore cluster data version 291903307 in cluster NetworkCommissioning (49)
2023-08-30 14:22:19.629 DEBUG ClusterServer Restore cluster data version 1951022653 in cluster AccessControl (31)
2023-08-30 14:22:19.635 DEBUG ClusterServer Restore cluster data version 3509019982 in cluster GroupKeyManagement (63)
2023-08-30 14:22:19.641 DEBUG ClusterServer Restore cluster data version 616499147 in cluster GeneralDiagnostics (51)
2023-08-30 14:22:19.647 DEBUG ClusterServer Restore cluster data version 3240916363 in cluster AdministratorCommissioning (60)
2023-08-30 14:22:19.654 DEBUG ClusterServer Restore cluster data version 1760252582 in cluster Descriptor (29)
2023-08-30 14:22:19.660 DEBUG ClusterServer Restore cluster data version 1690476391 in cluster Binding (30)
2023-08-30 14:22:19.666 DEBUG ClusterServer Restore cluster data version 4193064137 in cluster Identify (3)
2023-08-30 14:22:19.672 DEBUG ClusterServer Restore cluster data version 1508020735 in cluster Groups (4)
2023-08-30 14:22:19.678 DEBUG ClusterServer Restore cluster data version 1170000446 in cluster Scenes (5)
2023-08-30 14:22:19.684 DEBUG ClusterServer Restore cluster data version 3777371011 in cluster OnOff (6)
2023-08-30 14:22:19.690 DEBUG ClusterServer Restoring attribute onOff (0) in cluster OnOff (6)
2023-08-30 14:22:19.691 DEBUG UdpChannelNode Socket created and bound  remoteAddress: undefined:5418 localAddress: :::5418
2023-08-30 14:22:19.692 DEBUG UdpChannelNode Socket created and bound  remoteAddress: undefined:5418 localAddress: 0.0.0.0:5418
2023-08-30 14:22:19.692 DEBUG CommissioningServer Ble not enabled
2023-08-30 14:22:19.693 DEBUG MdnsBroadcaster announce commissioning mode 1 Matter test device 256 65521 32768 2428
2023-08-30 14:22:19.702 DEBUG MdnsBroadcaster Announcement: Commission mode  mode: 1 qname: 299CFE3550ADF403._matterc._udp.local port: 5418 interface: Ethernet
2023-08-30 14:22:19.713 DEBUG MdnsBroadcaster Announcement: Commission mode  mode: 1 qname: 299CFE3550ADF403._matterc._udp.local port: 5418 interface: VirtualBox Host-Only Network
2023-08-30 14:22:19.718 DEBUG EventHandler Received event: {"eventNumber":19,"eventId":0,"clusterId":40,"endpointId":0,"epochTimestamp":1693401739718,"priority":0,"data":{"softwareVersion":1}}
2023-08-30 14:22:19.724 DEBUG EventHandler Received event: {"eventNumber":20,"eventId":3,"clusterId":51,"endpointId":0,"epochTimestamp":1693401739724,"priority":0,"data":{"bootReason":0}}
30 Aug 14:22:19 - [info] [matter-server:b232e1555ecc0a51] Connecting all commissioning controllers
30 Aug 14:22:19 - [info] [matter-server:b232e1555ecc0a51] Matter server started
2023-08-30 14:22:19.732 DEBUG UdpChannelNode Socket created and bound  remoteAddress: undefined:5353 localAddress: :::5353
2023-08-30 14:22:19.732 DEBUG UdpChannelNode Socket created and bound  remoteAddress: undefined:5353 localAddress: 0.0.0.0:5353
2023-08-30 14:22:19.732 DEBUG UdpChannelNode Socket created and bound  remoteAddress: undefined:5353 localAddress: :::5353
2023-08-30 14:22:19.733 DEBUG UdpChannelNode Socket created and bound  remoteAddress: undefined:5353 localAddress: 0.0.0.0:5353
2023-08-30 14:22:19.733 DEBUG UdpChannelNode Initialize multicast address: ::%Ethernet:5353 interface: Ethernet type: udp6
2023-08-30 14:22:19.737 DEBUG UdpChannelNode Initialize multicast address: 192.168.0.23:5353 interface: Ethernet type: udp4
2023-08-30 14:22:19.737 DEBUG UdpChannelNode Initialize multicast address: ::%VirtualBox Host-Only Network:5353 interface: VirtualBox Host-Only Network type: udp6
2023-08-30 14:22:19.741 DEBUG UdpChannelNode Initialize multicast address: 192.168.56.1:5353 interface: VirtualBox Host-Only Network type: udp4
30 Aug 14:22:19 - [info] [mqtt-broker:ad1faea18d26b2bf] Connected to broker: mqtt://mqtt.cheerlights.com:1883
30 Aug 14:22:19 - [info] [mqtt-broker:d495fd71b62733f0] Connected to broker: mqtts://cymplecy.uk:8883

and then only this was logged after I tried to pair

2023-08-30 14:23:19.696 DEBUG MdnsBroadcaster announce commissioning mode 1 Matter test device 256 65521 32768 2428
2023-08-30 14:23:19.704 DEBUG MdnsBroadcaster Announcement: Commission mode  mode: 1 qname: C38BB65BA77028F9._matterc._udp.local port: 5418 interface: Ethernet
2023-08-30 14:23:19.713 DEBUG MdnsBroadcaster Announcement: Commission mode  mode: 1 qname: C38BB65BA77028F9._matterc._udp.local port: 5418 interface: VirtualBox Host-Only Network
2023-08-30 14:24:19.695 DEBUG MdnsBroadcaster announce commissioning mode 1 Matter test device 256 65521 32768 2428
2023-08-30 14:24:19.704 DEBUG MdnsBroadcaster Announcement: Commission mode  mode: 1 qname: DCA3C1C5C413B06B._matterc._udp.local port: 5418 interface: Ethernet
2023-08-30 14:24:19.713 DEBUG MdnsBroadcaster Announcement: Commission mode  mode: 1 qname: DCA3C1C5C413B06B._matterc._udp.local port: 5418 interface: VirtualBox Host-Only Network
2023-08-30 14:25:19.696 DEBUG MdnsBroadcaster announce commissioning mode 1 Matter test device 256 65521 32768 2428
2023-08-30 14:25:19.704 DEBUG MdnsBroadcaster Announcement: Commission mode  mode: 1 qname: 5007BEEDDA2AF5C6._matterc._udp.local port: 5418 interface: Ethernet
2023-08-30 14:25:19.713 DEBUG MdnsBroadcaster Announcement: Commission mode  mode: 1 qname: 5007BEEDDA2AF5C6._matterc._udp.local port: 5418 interface: VirtualBox Host-Only Network
2023-08-30 14:26:19.696 DEBUG MdnsBroadcaster announce commissioning mode 1 Matter test device 256 65521 32768 2428
2023-08-30 14:26:19.704 DEBUG MdnsBroadcaster Announcement: Commission mode  mode: 1 qname: E715633032894887._matterc._udp.local port: 5418 interface: Ethernet
2023-08-30 14:26:19.713 DEBUG MdnsBroadcaster Announcement: Commission mode  mode: 1 qname: E715633032894887._matterc._udp.local port: 5418 interface: VirtualBox Host-Only Network

I see you are running on a virtual machine, I read people had problems making it work this way, probably something with networking. Are you running in bridge mode?

It would be very useful if you could test this on a host machine just to verify everything is working on a plain setup.