@matter/examples 0.12.0-alpha.0-20250101-22e7c1044 → 0.12.0-alpha.0-20250107-af5a068c3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,6 +5,7 @@
5
5
  * SPDX-License-Identifier: Apache-2.0
6
6
  */
7
7
  import {
8
+ Bytes,
8
9
  DeviceTypeId,
9
10
  Endpoint,
10
11
  EndpointServer,
@@ -18,7 +19,7 @@ import {
18
19
  logLevelFromString,
19
20
  singleton
20
21
  } from "@matter/main";
21
- import { NetworkCommissioningServer, OnOffServer } from "@matter/main/behaviors";
22
+ import { OnOffServer } from "@matter/main/behaviors";
22
23
  import { NetworkCommissioning } from "@matter/main/clusters";
23
24
  import { OnOffLightDevice, OnOffPlugInUnitDevice } from "@matter/main/devices";
24
25
  import { RootRequirements } from "@matter/main/endpoints";
@@ -102,6 +103,7 @@ class OnOffShellExecServer extends OnOffServer {
102
103
  class TestGeneralDiagnosticsServer extends RootRequirements.GeneralDiagnosticsServer {
103
104
  initialize() {
104
105
  this.state.testEventTriggersEnabled = true;
106
+ this.state.deviceTestEnableKey = Bytes.fromHex("0102030405060708090a0b0c0d0e0f10");
105
107
  super.initialize();
106
108
  }
107
109
  testEventTrigger({ enableKey, eventTrigger }) {
@@ -120,25 +122,8 @@ class MyFancyOwnFunctionalityServer extends MyFancyOwnFunctionalityBehavior {
120
122
  this.state.myFancyValue = -1;
121
123
  }
122
124
  }
123
- const OnOffDevice = isSocket ? vendorId === 65524 ? OnOffPlugInUnitDevice.with(OnOffShellExecServer, MyFancyOwnFunctionalityServer) : OnOffPlugInUnitDevice.with(OnOffShellExecServer) : vendorId === 65524 ? OnOffLightDevice.with(OnOffShellExecServer, MyFancyOwnFunctionalityServer) : OnOffLightDevice.with(OnOffShellExecServer);
124
- let RootEndpoint = ServerNode.RootEndpoint.with(TestGeneralDiagnosticsServer);
125
- let wifiOrThreadAdded = false;
126
- let threadAdded = false;
127
- if (Ble.enabled) {
128
- if (environment.vars.has("ble.wifi.fake")) {
129
- RootEndpoint = RootEndpoint.with(DummyWifiNetworkCommissioningServer);
130
- wifiOrThreadAdded = true;
131
- } else if (environment.vars.has("ble.thread.fake")) {
132
- RootEndpoint = RootEndpoint.with(DummyThreadNetworkCommissioningServer);
133
- wifiOrThreadAdded = true;
134
- threadAdded = true;
135
- }
136
- } else {
137
- RootEndpoint = RootEndpoint.with(
138
- NetworkCommissioningServer.with(NetworkCommissioning.Feature.EthernetNetworkInterface)
139
- );
140
- }
141
- const networkId = new Uint8Array(32);
125
+ const OnOffDevice = isSocket ? OnOffPlugInUnitDevice.with(OnOffShellExecServer) : OnOffLightDevice.with(OnOffShellExecServer);
126
+ const RootEndpoint = ServerNode.RootEndpoint.with(TestGeneralDiagnosticsServer);
142
127
  const server = await ServerNode.create(RootEndpoint, {
143
128
  id: uniqueId,
144
129
  network: {
@@ -167,26 +152,43 @@ const server = await ServerNode.create(RootEndpoint, {
167
152
  productId,
168
153
  serialNumber: `node-matter-${uniqueId}`,
169
154
  uniqueId
170
- },
171
- // @ts-expect-error ... TS do not see the types because both next clusters was added conditionally
172
- networkCommissioning: {
173
- maxNetworks: 1,
174
- interfaceEnabled: true,
175
- lastConnectErrorValue: 0,
176
- lastNetworkId: wifiOrThreadAdded ? null : networkId,
177
- lastNetworkingStatus: wifiOrThreadAdded ? null : NetworkCommissioning.NetworkCommissioningStatus.Success,
178
- networks: [{ networkId, connected: !wifiOrThreadAdded }],
179
- scanMaxTimeSeconds: wifiOrThreadAdded ? 3 : void 0,
180
- connectMaxTimeSeconds: wifiOrThreadAdded ? 3 : void 0,
181
- supportedWifiBands: wifiOrThreadAdded && !threadAdded ? [NetworkCommissioning.WiFiBand["2G4"]] : void 0,
182
- supportedThreadFeatures: wifiOrThreadAdded && threadAdded ? { isFullThreadDevice: true } : void 0,
183
- threadVersion: wifiOrThreadAdded && threadAdded ? 4 : void 0
184
- // means: Thread 1.3
185
- },
186
- myFancyFunctionality: {
187
- myFancyValue: 0
188
155
  }
189
156
  });
157
+ const networkId = new Uint8Array(32);
158
+ if (Ble.enabled) {
159
+ if (environment.vars.has("ble.wifi.fake")) {
160
+ server.behaviors.require(DummyWifiNetworkCommissioningServer, {
161
+ maxNetworks: 1,
162
+ interfaceEnabled: true,
163
+ lastConnectErrorValue: 0,
164
+ lastNetworkId: networkId,
165
+ lastNetworkingStatus: null,
166
+ networks: [{ networkId, connected: false }],
167
+ scanMaxTimeSeconds: 3,
168
+ connectMaxTimeSeconds: 3,
169
+ supportedWiFiBands: [NetworkCommissioning.WiFiBand["2G4"]]
170
+ });
171
+ } else if (environment.vars.has("ble.thread.fake")) {
172
+ server.behaviors.require(DummyThreadNetworkCommissioningServer, {
173
+ maxNetworks: 1,
174
+ interfaceEnabled: true,
175
+ lastConnectErrorValue: 0,
176
+ lastNetworkId: null,
177
+ lastNetworkingStatus: null,
178
+ networks: [{ networkId, connected: false }],
179
+ scanMaxTimeSeconds: 3,
180
+ connectMaxTimeSeconds: 3,
181
+ supportedThreadFeatures: { isFullThreadDevice: true },
182
+ threadVersion: 4
183
+ // means: Thread 1.3
184
+ });
185
+ }
186
+ }
187
+ if (vendorId === 65524) {
188
+ server.behaviors.require(MyFancyOwnFunctionalityServer, {
189
+ myFancyValue: 0
190
+ });
191
+ }
190
192
  const endpoint = new Endpoint(OnOffDevice, { id: "onoff" });
191
193
  await server.add(endpoint);
192
194
  server.lifecycle.commissioned.on(() => console.log("Server was initially commissioned successfully!"));
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/device-onoff-advanced/DeviceNodeFull.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/examples",
3
- "version": "0.12.0-alpha.0-20250101-22e7c1044",
3
+ "version": "0.12.0-alpha.0-20250107-af5a068c3",
4
4
  "description": "Matter.js examples and reference implementations",
5
5
  "keywords": [
6
6
  "iot",
@@ -52,13 +52,13 @@
52
52
  "matter-controller": "dist/esm/controller/ControllerNode.js"
53
53
  },
54
54
  "dependencies": {
55
- "@matter/main": "0.12.0-alpha.0-20250101-22e7c1044",
56
- "@matter/nodejs": "0.12.0-alpha.0-20250101-22e7c1044",
57
- "@matter/tools": "0.12.0-alpha.0-20250101-22e7c1044",
55
+ "@matter/main": "0.12.0-alpha.0-20250107-af5a068c3",
56
+ "@matter/nodejs": "0.12.0-alpha.0-20250107-af5a068c3",
57
+ "@matter/tools": "0.12.0-alpha.0-20250107-af5a068c3",
58
58
  "esbuild": "^0.24.2"
59
59
  },
60
60
  "optionalDependencies": {
61
- "@matter/nodejs-ble": "0.12.0-alpha.0-20250101-22e7c1044"
61
+ "@matter/nodejs-ble": "0.12.0-alpha.0-20250107-af5a068c3"
62
62
  },
63
63
  "engines": {
64
64
  "node": ">=18.0.0"
@@ -21,6 +21,7 @@
21
21
  */
22
22
 
23
23
  import {
24
+ Bytes,
24
25
  DeviceTypeId,
25
26
  Endpoint,
26
27
  EndpointServer,
@@ -34,7 +35,7 @@ import {
34
35
  logLevelFromString,
35
36
  singleton,
36
37
  } from "@matter/main";
37
- import { NetworkCommissioningServer, OnOffServer } from "@matter/main/behaviors";
38
+ import { OnOffServer } from "@matter/main/behaviors";
38
39
  import { GeneralDiagnostics, NetworkCommissioning } from "@matter/main/clusters";
39
40
  import { OnOffLightDevice, OnOffPlugInUnitDevice } from "@matter/main/devices";
40
41
  import { RootRequirements } from "@matter/main/endpoints";
@@ -164,6 +165,7 @@ class OnOffShellExecServer extends OnOffServer {
164
165
  class TestGeneralDiagnosticsServer extends RootRequirements.GeneralDiagnosticsServer {
165
166
  override initialize() {
166
167
  this.state.testEventTriggersEnabled = true; // set to true if you support test triggers ...
168
+ this.state.deviceTestEnableKey = Bytes.fromHex("0102030405060708090a0b0c0d0e0f10");
167
169
  super.initialize();
168
170
  }
169
171
 
@@ -205,12 +207,8 @@ class MyFancyOwnFunctionalityServer extends MyFancyOwnFunctionalityBehavior {
205
207
  // In this case we are using with() to install our On/Off cluster behavior.
206
208
  // .with("Lighting") not needed because we always have it in by default because we have default implementation
207
209
  const OnOffDevice = isSocket
208
- ? vendorId === 0xfff4
209
- ? OnOffPlugInUnitDevice.with(OnOffShellExecServer, MyFancyOwnFunctionalityServer)
210
- : OnOffPlugInUnitDevice.with(OnOffShellExecServer)
211
- : vendorId === 0xfff4
212
- ? OnOffLightDevice.with(OnOffShellExecServer, MyFancyOwnFunctionalityServer)
213
- : OnOffLightDevice.with(OnOffShellExecServer);
210
+ ? OnOffPlugInUnitDevice.with(OnOffShellExecServer)
211
+ : OnOffLightDevice.with(OnOffShellExecServer);
214
212
 
215
213
  /**
216
214
  * Modify automatically added clusters of the Root endpoint if needed
@@ -222,32 +220,8 @@ const OnOffDevice = isSocket
222
220
  */
223
221
 
224
222
  // We use the Basic Root Endpoint without a NetworkCommissioning cluster
225
- let RootEndpoint = ServerNode.RootEndpoint.with(TestGeneralDiagnosticsServer);
223
+ const RootEndpoint = ServerNode.RootEndpoint.with(TestGeneralDiagnosticsServer);
226
224
 
227
- let wifiOrThreadAdded = false;
228
- let threadAdded = false;
229
- if (Ble.enabled) {
230
- // matter.js will create a Ethernet-only device by default when ut comes to Network Commissioning Features.
231
- // To offer e.g. a "Wi-Fi only device" (or any other combination) we need to override the Network Commissioning
232
- // cluster and implement all the need handling here. This is a "static implementation" for pure demonstration
233
- // purposes and just "simulates" the actions to be done. In a real world implementation this would be done by
234
- // the device implementor based on the relevant networking stack.
235
- // The NetworkCommissioningCluster and all logics are described in Matter Core Specifications section 11.8
236
- if (environment.vars.has("ble.wifi.fake")) {
237
- RootEndpoint = RootEndpoint.with(DummyWifiNetworkCommissioningServer);
238
- wifiOrThreadAdded = true;
239
- } else if (environment.vars.has("ble.thread.fake")) {
240
- RootEndpoint = RootEndpoint.with(DummyThreadNetworkCommissioningServer);
241
- wifiOrThreadAdded = true;
242
- threadAdded = true;
243
- }
244
- } else {
245
- RootEndpoint = RootEndpoint.with(
246
- NetworkCommissioningServer.with(NetworkCommissioning.Feature.EthernetNetworkInterface),
247
- );
248
- }
249
-
250
- const networkId = new Uint8Array(32);
251
225
  // Physical devices appear as "nodes" on a Matter network. As a device implementer you use a NodeServer to bring a
252
226
  // device online.
253
227
  //
@@ -281,28 +255,54 @@ const server = await ServerNode.create(RootEndpoint, {
281
255
  serialNumber: `node-matter-${uniqueId}`,
282
256
  uniqueId,
283
257
  },
258
+ });
284
259
 
285
- // @ts-expect-error ... TS do not see the types because both next clusters was added conditionally
286
- networkCommissioning: {
287
- maxNetworks: 1,
288
- interfaceEnabled: true,
289
- lastConnectErrorValue: 0,
290
- lastNetworkId: wifiOrThreadAdded ? null : networkId,
291
- lastNetworkingStatus: wifiOrThreadAdded ? null : NetworkCommissioning.NetworkCommissioningStatus.Success,
292
- networks: [{ networkId: networkId, connected: !wifiOrThreadAdded }],
293
- scanMaxTimeSeconds: wifiOrThreadAdded ? 3 : undefined,
294
- connectMaxTimeSeconds: wifiOrThreadAdded ? 3 : undefined,
295
- supportedWifiBands: wifiOrThreadAdded && !threadAdded ? [NetworkCommissioning.WiFiBand["2G4"]] : undefined,
296
- supportedThreadFeatures: wifiOrThreadAdded && threadAdded ? { isFullThreadDevice: true } : undefined,
297
- threadVersion: wifiOrThreadAdded && threadAdded ? 4 : undefined, // means: Thread 1.3
298
- },
299
- myFancyFunctionality: {
260
+ const networkId = new Uint8Array(32);
261
+ if (Ble.enabled) {
262
+ // matter.js will create an Ethernet-only device by default when it comes to Network Commissioning Features.
263
+ // To offer e.g. a "Wi-Fi only device" (or any other combination) we need to override the Network Commissioning
264
+ // cluster and implement all the need handling here. This is a "static implementation" for pure demonstration
265
+ // purposes and just "simulates" the actions to be done. In a real world implementation this would be done by
266
+ // the device implementor based on the relevant networking stack.
267
+ // The NetworkCommissioningCluster and all logics are described in Matter Core Specifications section 11.8
268
+ if (environment.vars.has("ble.wifi.fake")) {
269
+ server.behaviors.require(DummyWifiNetworkCommissioningServer, {
270
+ maxNetworks: 1,
271
+ interfaceEnabled: true,
272
+ lastConnectErrorValue: 0,
273
+ lastNetworkId: networkId,
274
+ lastNetworkingStatus: null,
275
+ networks: [{ networkId: networkId, connected: false }],
276
+ scanMaxTimeSeconds: 3,
277
+ connectMaxTimeSeconds: 3,
278
+ supportedWiFiBands: [NetworkCommissioning.WiFiBand["2G4"]],
279
+ });
280
+ } else if (environment.vars.has("ble.thread.fake")) {
281
+ server.behaviors.require(DummyThreadNetworkCommissioningServer, {
282
+ maxNetworks: 1,
283
+ interfaceEnabled: true,
284
+ lastConnectErrorValue: 0,
285
+ lastNetworkId: null,
286
+ lastNetworkingStatus: null,
287
+ networks: [{ networkId: networkId, connected: false }],
288
+ scanMaxTimeSeconds: 3,
289
+ connectMaxTimeSeconds: 3,
290
+ supportedThreadFeatures: { isFullThreadDevice: true },
291
+ threadVersion: 4, // means: Thread 1.3
292
+ });
293
+ }
294
+ }
295
+
296
+ // Also add our Custom behavior when vendor id is 0xfff4 (just to show how it works)
297
+ if (vendorId === 0xfff4) {
298
+ server.behaviors.require(MyFancyOwnFunctionalityServer, {
300
299
  myFancyValue: 0,
301
- },
302
- });
300
+ });
301
+ }
303
302
 
304
303
  // Nodes are a composition of endpoints. Add a single endpoint to the node, our example light device.
305
304
  const endpoint = new Endpoint(OnOffDevice, { id: "onoff" });
305
+
306
306
  await server.add(endpoint);
307
307
 
308
308
  /**
@@ -317,7 +317,7 @@ server.lifecycle.decommissioned.on(() => console.log("Server was fully decommiss
317
317
  /** This event is triggered when the device went online. This means that it is discoverable in the network. */
318
318
  server.lifecycle.online.on(() => console.log("Server is online"));
319
319
 
320
- /** This event is triggered when the device went offline. it is not longer discoverable or connectable in the network. */
320
+ /** This event is triggered when the device went offline. It is no longer discoverable or connectable in the network. */
321
321
  server.lifecycle.offline.on(() => console.log("Server is offline"));
322
322
 
323
323
  /**
@@ -24,21 +24,21 @@ For this to work you first of all need to enable BLE by using `--ble-enable` to
24
24
  Please also make sure you follow the [BLE enablement steps for your operating system](../../../nodejs-ble/README.md#prerequisites-and-limitations).
25
25
 
26
26
  The following parameters are available:
27
- * --ble: enable BLE support (default: false) If this is enabled the device will announce itself _only_ via BLE if not commissioned and also presents a "Wifi only" device for commissioning to show this feature!
28
- * --ble-hci-id: Optionally, HCI ID to use (Linux only, default 0)
27
+ * --ble-enable: enable BLE support (default: false) If this is enabled the device will announce itself _only_ via BLE if not commissioned and also presents a "Wifi only" device for commissioning to show this feature!
28
+ * --ble-hci-id=...: Optionally, HCI ID to use (Linux only, default 0)
29
29
 
30
30
  Additionally, you need to choose if the device should simulate a Thread or a Wifi enabled device. This can be done by adding `--ble-fake-wifi` or `--ble-fake-thread` to the command line. Then a dummy WifiNetworkCommissioning or ThreadNetworkCommissioning cluster is added to the device node.
31
31
 
32
32
  Depending on the method you chose you probably need to also add additional parameters for either Wifi or thread which are returned when the device is asked to scn for available networks.
33
33
 
34
34
  For Wifi the parameters to use are:
35
- * --ble-wifi-scan-ssid: The Wi-Fi SSID returned by the "ScanNetworks" call of the Wifi Network commissioning cluster used when using BLE commissioning (default: "TestSSID"). Ideally use a really existing SSID that also the commissioner (Apple, Alexa, ...) knows to make it easier to commission. Else you could get errors while commissioning.
36
- * --ble-wifi-scan-bssid: The Wi-Fi BSSID returned by the "ScanNetworks" call of the Wifi Network commissioning cluster used when using BLE commissioning (default: "00:00:00:00:00:00").
35
+ * --ble-wifi-scanSsid=...: The Wi-Fi SSID returned by the "ScanNetworks" call of the Wifi Network commissioning cluster used when using BLE commissioning (default: "TestSSID"). Ideally use a really existing SSID that also the commissioner (Apple, Alexa, ...) knows to make it easier to commission. Else you could get errors while commissioning.
36
+ * --ble-wifi-scanBssid=...: The Wi-Fi BSSID returned by the "ScanNetworks" call of the Wifi Network commissioning cluster used when using BLE commissioning (default: "00:00:00:00:00:00").
37
37
 
38
38
  For Thread the parameters to use are:
39
- * --ble.thread.pan-id: The PAN ID to use for the Thread network
40
- * --ble.thread.extended-pan-id: The extended PAN ID to use for the Thread network
41
- * --ble.thread.network-name: The network name to use for the Thread network
42
- * --ble.thread.channel: The channel to use for the Thread network
43
- * --ble.thread.address: The address to use for the Thread network
39
+ * --ble.thread.panId=...: The PAN ID to use for the Thread network
40
+ * --ble.thread.extendedPanId=...: The extended PAN ID to use for the Thread network
41
+ * --ble.thread.networkName=...: The network name to use for the Thread network
42
+ * --ble.thread.channel=...: The channel to use for the Thread network
43
+ * --ble.thread.address=...: The address to use for the Thread network
44
44
  Thread parameters are as of now only needed when commissioning with Amazon because the others are currently not scanning for Thread networks.