@matter/examples 0.11.0-alpha.0-20241005-e3e4e4a7a

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.
Files changed (57) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +274 -0
  3. package/dist/esm/examples/BridgedDevicesNode.js +138 -0
  4. package/dist/esm/examples/BridgedDevicesNode.js.map +6 -0
  5. package/dist/esm/examples/ComposedDeviceNode.js +118 -0
  6. package/dist/esm/examples/ComposedDeviceNode.js.map +6 -0
  7. package/dist/esm/examples/ControllerNode.js +191 -0
  8. package/dist/esm/examples/ControllerNode.js.map +6 -0
  9. package/dist/esm/examples/DeviceNode.js +130 -0
  10. package/dist/esm/examples/DeviceNode.js.map +6 -0
  11. package/dist/esm/examples/DeviceNodeFull.js +259 -0
  12. package/dist/esm/examples/DeviceNodeFull.js.map +6 -0
  13. package/dist/esm/examples/IlluminatedRollerShade.js +56 -0
  14. package/dist/esm/examples/IlluminatedRollerShade.js.map +6 -0
  15. package/dist/esm/examples/LightDevice.js +34 -0
  16. package/dist/esm/examples/LightDevice.js.map +6 -0
  17. package/dist/esm/examples/MultiDeviceNode.js +143 -0
  18. package/dist/esm/examples/MultiDeviceNode.js.map +6 -0
  19. package/dist/esm/examples/SensorDeviceNode.js +170 -0
  20. package/dist/esm/examples/SensorDeviceNode.js.map +6 -0
  21. package/dist/esm/examples/cluster/DummyThreadNetworkCommissioningServer.js +121 -0
  22. package/dist/esm/examples/cluster/DummyThreadNetworkCommissioningServer.js.map +6 -0
  23. package/dist/esm/examples/cluster/DummyWifiNetworkCommissioningServer.js +121 -0
  24. package/dist/esm/examples/cluster/DummyWifiNetworkCommissioningServer.js.map +6 -0
  25. package/dist/esm/examples/cluster/MyFancyOwnFunctionality.js +113 -0
  26. package/dist/esm/examples/cluster/MyFancyOwnFunctionality.js.map +6 -0
  27. package/dist/esm/package.json +3 -0
  28. package/dist/esm/tutorial/example01.js +4 -0
  29. package/dist/esm/tutorial/example01.js.map +6 -0
  30. package/dist/esm/tutorial/example02.js +6 -0
  31. package/dist/esm/tutorial/example02.js.map +6 -0
  32. package/dist/esm/tutorial/example03.js +14 -0
  33. package/dist/esm/tutorial/example03.js.map +6 -0
  34. package/dist/esm/tutorial/example04.js +9 -0
  35. package/dist/esm/tutorial/example04.js.map +6 -0
  36. package/dist/esm/tutorial/example05.js +13 -0
  37. package/dist/esm/tutorial/example05.js.map +6 -0
  38. package/package.json +70 -0
  39. package/src/examples/BridgedDevicesNode.ts +247 -0
  40. package/src/examples/ComposedDeviceNode.ts +185 -0
  41. package/src/examples/ControllerNode.ts +305 -0
  42. package/src/examples/DeviceNode.ts +198 -0
  43. package/src/examples/DeviceNodeFull.ts +440 -0
  44. package/src/examples/IlluminatedRollerShade.ts +89 -0
  45. package/src/examples/LightDevice.ts +58 -0
  46. package/src/examples/MultiDeviceNode.ts +205 -0
  47. package/src/examples/SensorDeviceNode.ts +236 -0
  48. package/src/examples/cluster/DummyThreadNetworkCommissioningServer.ts +162 -0
  49. package/src/examples/cluster/DummyWifiNetworkCommissioningServer.ts +160 -0
  50. package/src/examples/cluster/MyFancyOwnFunctionality.ts +188 -0
  51. package/src/tsconfig.json +13 -0
  52. package/src/tsconfig.tsbuildinfo +1 -0
  53. package/src/tutorial/example01.ts +5 -0
  54. package/src/tutorial/example02.ts +8 -0
  55. package/src/tutorial/example03.ts +18 -0
  56. package/src/tutorial/example04.ts +12 -0
  57. package/src/tutorial/example05.ts +18 -0
@@ -0,0 +1,170 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @license
4
+ * Copyright 2022-2024 Matter.js Authors
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import { Endpoint, EndpointServer, Environment, ServerNode, StorageService, Time } from "@matter/main";
8
+ import { HumiditySensorDevice } from "@matter/main/devices/humidity-sensor";
9
+ import { TemperatureSensorDevice } from "@matter/main/devices/temperature-sensor";
10
+ import { logEndpoint } from "@matter/main/protocol";
11
+ import { DeviceTypeId, VendorId } from "@matter/main/types";
12
+ import { execSync } from "child_process";
13
+ async function main() {
14
+ const {
15
+ isTemperature,
16
+ interval,
17
+ deviceName,
18
+ vendorName,
19
+ passcode,
20
+ discriminator,
21
+ vendorId,
22
+ productName,
23
+ productId,
24
+ port,
25
+ uniqueId
26
+ } = await getConfiguration();
27
+ const server = await ServerNode.create({
28
+ // Required: Give the Node a unique ID which is used to store the state of this node
29
+ id: uniqueId,
30
+ // Provide Network relevant configuration like the port
31
+ // Optional when operating only one device on a host, Default port is 5540
32
+ network: {
33
+ port
34
+ },
35
+ // Provide Commissioning relevant settings
36
+ // Optional for development/testing purposes
37
+ commissioning: {
38
+ passcode,
39
+ discriminator
40
+ },
41
+ // Provide Node announcement settings
42
+ // Optional: If Ommitted some development defaults are used
43
+ productDescription: {
44
+ name: deviceName,
45
+ deviceType: DeviceTypeId(
46
+ isTemperature ? TemperatureSensorDevice.deviceType : HumiditySensorDevice.deviceType
47
+ )
48
+ },
49
+ // Provide defaults for the BasicInformation cluster on the Root endpoint
50
+ // Optional: If Omitted some development defaults are used
51
+ basicInformation: {
52
+ vendorName,
53
+ vendorId: VendorId(vendorId),
54
+ nodeLabel: productName,
55
+ productName,
56
+ productLabel: productName,
57
+ productId,
58
+ serialNumber: `matterjs-${uniqueId}`,
59
+ uniqueId
60
+ }
61
+ });
62
+ let endpoint;
63
+ if (isTemperature) {
64
+ endpoint = new Endpoint(TemperatureSensorDevice, {
65
+ id: "tempsensor",
66
+ temperatureMeasurement: {
67
+ // Use this to initialize the measuredValue with the most uptodate value.
68
+ // If you do not know the value and also cannot request it, best use "null" (if allowed by the cluster).
69
+ measuredValue: getIntValueFromCommandOrRandom("value")
70
+ }
71
+ });
72
+ } else {
73
+ endpoint = new Endpoint(HumiditySensorDevice, {
74
+ id: "humsensor",
75
+ relativeHumidityMeasurement: {
76
+ // Use this to initialize the measuredValue with the most uptodate value.
77
+ // If you do not know the value and also cannot request it, best use "null" (if allowed by the cluster).
78
+ measuredValue: getIntValueFromCommandOrRandom("value", false)
79
+ }
80
+ });
81
+ }
82
+ await server.add(endpoint);
83
+ logEndpoint(EndpointServer.forEndpoint(server));
84
+ const updateInterval = setInterval(() => {
85
+ let setter;
86
+ if (isTemperature) {
87
+ setter = endpoint.set({
88
+ temperatureMeasurement: {
89
+ measuredValue: getIntValueFromCommandOrRandom("value")
90
+ }
91
+ });
92
+ } else {
93
+ setter = endpoint.set({
94
+ relativeHumidityMeasurement: {
95
+ measuredValue: getIntValueFromCommandOrRandom("value", false)
96
+ }
97
+ });
98
+ }
99
+ setter.catch((error) => console.error("Error updating measured value:", error));
100
+ }, interval * 1e3);
101
+ server.lifecycle.offline.on(() => clearTimeout(updateInterval));
102
+ await server.run();
103
+ }
104
+ main().catch((error) => console.error(error));
105
+ function getIntValueFromCommandOrRandom(scriptParamName, allowNegativeValues = true) {
106
+ const script = Environment.default.vars.string(scriptParamName);
107
+ if (script === void 0) {
108
+ if (!allowNegativeValues) return Math.round(Math.random() * 100);
109
+ return (Math.round(Math.random() * 100) - 50) * 100;
110
+ }
111
+ let result = execSync(script).toString().trim();
112
+ if (result.startsWith("'") && result.endsWith("'") || result.startsWith('"') && result.endsWith('"'))
113
+ result = result.slice(1, -1);
114
+ console.log(`Command result: ${result}`);
115
+ let value = Math.round(parseFloat(result));
116
+ if (!allowNegativeValues && value < 0) value = 0;
117
+ return value;
118
+ }
119
+ async function getConfiguration() {
120
+ const environment = Environment.default;
121
+ const storageService = environment.get(StorageService);
122
+ console.log(`Storage location: ${storageService.location} (Directory)`);
123
+ console.log(
124
+ 'Use the parameter "--storage-path=NAME-OR-PATH" to specify a different storage location in this directory, use --storage-clear to start with an empty storage.'
125
+ );
126
+ const deviceStorage = (await storageService.open("device")).createContext("data");
127
+ const isTemperature = await deviceStorage.get("isTemperature", environment.vars.get("type") !== "humidity");
128
+ if (await deviceStorage.has("isTemperature")) {
129
+ console.log(
130
+ `Device type ${isTemperature ? "temperature" : "humidity"} found in storage. --type parameter is ignored.`
131
+ );
132
+ }
133
+ let interval = environment.vars.number("interval") ?? await deviceStorage.get("interval", 60);
134
+ if (interval < 1) {
135
+ console.log(`Invalid Interval ${interval}, set to 60s`);
136
+ interval = 60;
137
+ }
138
+ const deviceName = "Matter test device";
139
+ const vendorName = "matter-node.js";
140
+ const passcode = environment.vars.number("passcode") ?? await deviceStorage.get("passcode", 20202021);
141
+ const discriminator = environment.vars.number("discriminator") ?? await deviceStorage.get("discriminator", 3840);
142
+ const vendorId = environment.vars.number("vendorid") ?? await deviceStorage.get("vendorid", 65521);
143
+ const productName = `node-matter OnOff ${isTemperature ? "Temperature" : "Humidity"}`;
144
+ const productId = environment.vars.number("productid") ?? await deviceStorage.get("productid", 32768);
145
+ const port = environment.vars.number("port") ?? 5540;
146
+ const uniqueId = environment.vars.string("uniqueid") ?? await deviceStorage.get("uniqueid", Time.nowMs().toString());
147
+ await deviceStorage.set({
148
+ passcode,
149
+ discriminator,
150
+ vendorid: vendorId,
151
+ productid: productId,
152
+ interval,
153
+ isTemperature,
154
+ uniqueid: uniqueId
155
+ });
156
+ return {
157
+ isTemperature,
158
+ interval,
159
+ deviceName,
160
+ vendorName,
161
+ passcode,
162
+ discriminator,
163
+ vendorId,
164
+ productName,
165
+ productId,
166
+ port,
167
+ uniqueId
168
+ };
169
+ }
170
+ //# sourceMappingURL=SensorDeviceNode.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/examples/SensorDeviceNode.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -0,0 +1,121 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Bytes, Logger } from "@matter/main";
7
+ import { GeneralCommissioningBehavior } from "@matter/main/behaviors/general-commissioning";
8
+ import { NetworkCommissioningBehavior } from "@matter/main/behaviors/network-commissioning";
9
+ import { DeviceAdvertiser, DeviceCommissioner } from "@matter/main/protocol";
10
+ import { NetworkCommissioning } from "@matter/types/clusters";
11
+ const firstNetworkId = new Uint8Array(32);
12
+ class DummyThreadNetworkCommissioningServer extends NetworkCommissioningBehavior.with(
13
+ NetworkCommissioning.Feature.ThreadNetworkInterface
14
+ ) {
15
+ scanNetworks({
16
+ breadcrumb
17
+ }) {
18
+ console.log(`---> scanNetworks called on NetworkCommissioning cluster: ${breadcrumb}`);
19
+ if (breadcrumb !== void 0) {
20
+ const generalCommissioningCluster = this.agent.get(GeneralCommissioningBehavior);
21
+ generalCommissioningCluster.state.breadcrumb = breadcrumb;
22
+ }
23
+ const networkingStatus = NetworkCommissioning.NetworkCommissioningStatus.Success;
24
+ this.state.lastNetworkingStatus = networkingStatus;
25
+ const threadScanResults = [
26
+ {
27
+ panId: this.env.vars.number("ble.thread.panId"),
28
+ extendedPanId: BigInt(this.env.vars.string("ble.thread.extendedPanId")),
29
+ networkName: this.env.vars.string("ble.thread.networkName"),
30
+ channel: this.env.vars.number("ble.thread.channel"),
31
+ version: 130,
32
+ extendedAddress: Bytes.fromString(
33
+ (this.env.vars.string("ble.thread.address") ?? "000000000000").toLowerCase()
34
+ ),
35
+ rssi: -50,
36
+ lqi: 50
37
+ }
38
+ ];
39
+ console.log(Logger.toJSON(threadScanResults));
40
+ return {
41
+ networkingStatus,
42
+ threadScanResults
43
+ };
44
+ }
45
+ addOrUpdateThreadNetwork({
46
+ operationalDataset,
47
+ breadcrumb
48
+ }) {
49
+ console.log(
50
+ `---> addOrUpdateThreadNetwork called on NetworkCommissioning cluster: ${Bytes.toHex(operationalDataset)} ${breadcrumb}`
51
+ );
52
+ this.env.get(DeviceCommissioner).assertFailsafeArmed("Failsafe timer needs to be armed to add or update networks.");
53
+ if (breadcrumb !== void 0) {
54
+ const generalCommissioningCluster = this.agent.get(GeneralCommissioningBehavior);
55
+ generalCommissioningCluster.state.breadcrumb = breadcrumb;
56
+ }
57
+ const networkingStatus = NetworkCommissioning.NetworkCommissioningStatus.Success;
58
+ this.state.lastNetworkingStatus = networkingStatus;
59
+ this.state.lastNetworkId = firstNetworkId;
60
+ return {
61
+ networkingStatus,
62
+ networkIndex: 0
63
+ };
64
+ }
65
+ removeNetwork({ networkId, breadcrumb }) {
66
+ console.log(
67
+ `---> removeNetwork called on NetworkCommissioning cluster: ${Bytes.toHex(networkId)} ${breadcrumb}`
68
+ );
69
+ this.env.get(DeviceCommissioner).assertFailsafeArmed("Failsafe timer needs to be armed to add or update networks.");
70
+ if (breadcrumb !== void 0) {
71
+ const generalCommissioningCluster = this.agent.get(GeneralCommissioningBehavior);
72
+ generalCommissioningCluster.state.breadcrumb = breadcrumb;
73
+ }
74
+ const networkingStatus = NetworkCommissioning.NetworkCommissioningStatus.Success;
75
+ this.state.lastNetworkingStatus = networkingStatus;
76
+ this.state.lastNetworkId = firstNetworkId;
77
+ return {
78
+ networkingStatus,
79
+ networkIndex: 0
80
+ };
81
+ }
82
+ async connectNetwork({ networkId, breadcrumb }) {
83
+ console.log(
84
+ `---> connectNetwork called on NetworkCommissioning cluster: ${Bytes.toHex(networkId)} ${breadcrumb}`
85
+ );
86
+ this.env.get(DeviceCommissioner).assertFailsafeArmed("Failsafe timer needs to be armed to add or update networks.");
87
+ if (breadcrumb !== void 0) {
88
+ const generalCommissioningCluster = this.agent.get(GeneralCommissioningBehavior);
89
+ generalCommissioningCluster.state.breadcrumb = breadcrumb;
90
+ }
91
+ this.state.networks[0].connected = true;
92
+ const networkingStatus = NetworkCommissioning.NetworkCommissioningStatus.Success;
93
+ this.state.lastNetworkingStatus = networkingStatus;
94
+ this.state.lastNetworkId = firstNetworkId;
95
+ this.state.lastConnectErrorValue = null;
96
+ await this.env.get(DeviceAdvertiser).startAdvertising();
97
+ return {
98
+ networkingStatus,
99
+ errorValue: null
100
+ };
101
+ }
102
+ reorderNetwork({ networkId, networkIndex, breadcrumb }) {
103
+ console.log(
104
+ `---> reorderNetwork called on NetworkCommissioning cluster: ${Bytes.toHex(networkId)} ${networkIndex} ${breadcrumb}`
105
+ );
106
+ if (breadcrumb !== void 0) {
107
+ const generalCommissioningCluster = this.agent.get(GeneralCommissioningBehavior);
108
+ generalCommissioningCluster.state.breadcrumb = breadcrumb;
109
+ }
110
+ const networkingStatus = NetworkCommissioning.NetworkCommissioningStatus.Success;
111
+ this.state.lastNetworkingStatus = networkingStatus;
112
+ return {
113
+ networkingStatus,
114
+ networkIndex: 0
115
+ };
116
+ }
117
+ }
118
+ export {
119
+ DummyThreadNetworkCommissioningServer
120
+ };
121
+ //# sourceMappingURL=DummyThreadNetworkCommissioningServer.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/examples/cluster/DummyThreadNetworkCommissioningServer.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -0,0 +1,121 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Bytes } from "@matter/main";
7
+ import { GeneralCommissioningBehavior } from "@matter/main/behaviors/general-commissioning";
8
+ import { NetworkCommissioningBehavior } from "@matter/main/behaviors/network-commissioning";
9
+ import { DeviceAdvertiser, DeviceCommissioner } from "@matter/main/protocol";
10
+ import { NetworkCommissioning } from "@matter/types/clusters/network-commissioning";
11
+ const firstNetworkId = new Uint8Array(32);
12
+ class DummyWifiNetworkCommissioningServer extends NetworkCommissioningBehavior.with(
13
+ NetworkCommissioning.Feature.WiFiNetworkInterface
14
+ ) {
15
+ scanNetworks({ ssid, breadcrumb }) {
16
+ console.log(
17
+ `---> scanNetworks called on NetworkCommissioning cluster: ${ssid ? Bytes.toHex(ssid) : void 0} ${breadcrumb}`
18
+ );
19
+ if (breadcrumb !== void 0) {
20
+ const generalCommissioningCluster = this.agent.get(GeneralCommissioningBehavior);
21
+ generalCommissioningCluster.state.breadcrumb = breadcrumb;
22
+ }
23
+ const networkingStatus = NetworkCommissioning.NetworkCommissioningStatus.Success;
24
+ this.state.lastNetworkingStatus = networkingStatus;
25
+ return {
26
+ networkingStatus,
27
+ wiFiScanResults: [
28
+ {
29
+ security: {
30
+ unencrypted: false,
31
+ wep: false,
32
+ wpaPersonal: false,
33
+ wpa2Personal: true,
34
+ wpa3Personal: true
35
+ },
36
+ ssid: ssid || Bytes.fromString(this.env.vars.get("ble.wifi.scanSsid") ?? "TestSSID"),
37
+ // Set a valid existing local Wi-Fi SSID here
38
+ bssid: Bytes.fromString(this.env.vars.get("ble.wifi.scanBssid") ?? "00:00:00:00:00:00"),
39
+ channel: 1
40
+ }
41
+ ]
42
+ };
43
+ }
44
+ addOrUpdateWiFiNetwork({
45
+ ssid,
46
+ credentials,
47
+ breadcrumb
48
+ }) {
49
+ console.log(
50
+ `---> addOrUpdateWiFiNetwork called on NetworkCommissioning cluster: ${Bytes.toHex(ssid)} ${Bytes.toHex(credentials)} ${breadcrumb}`
51
+ );
52
+ this.env.get(DeviceCommissioner).assertFailsafeArmed("Failsafe timer needs to be armed to add or update networks.");
53
+ if (breadcrumb !== void 0) {
54
+ const generalCommissioningCluster = this.agent.get(GeneralCommissioningBehavior);
55
+ generalCommissioningCluster.state.breadcrumb = breadcrumb;
56
+ }
57
+ const networkingStatus = NetworkCommissioning.NetworkCommissioningStatus.Success;
58
+ this.state.lastNetworkingStatus = networkingStatus;
59
+ this.state.lastNetworkId = firstNetworkId;
60
+ return {
61
+ networkingStatus,
62
+ networkIndex: 0
63
+ };
64
+ }
65
+ removeNetwork({ networkId, breadcrumb }) {
66
+ console.log(
67
+ `---> removeNetwork called on NetworkCommissioning cluster: ${Bytes.toHex(networkId)} ${breadcrumb}`
68
+ );
69
+ this.env.get(DeviceCommissioner).assertFailsafeArmed("Failsafe timer needs to be armed to add or update networks.");
70
+ if (breadcrumb !== void 0) {
71
+ const generalCommissioningCluster = this.agent.get(GeneralCommissioningBehavior);
72
+ generalCommissioningCluster.state.breadcrumb = breadcrumb;
73
+ }
74
+ const networkingStatus = NetworkCommissioning.NetworkCommissioningStatus.Success;
75
+ this.state.lastNetworkingStatus = networkingStatus;
76
+ this.state.lastNetworkId = firstNetworkId;
77
+ return {
78
+ networkingStatus,
79
+ networkIndex: 0
80
+ };
81
+ }
82
+ async connectNetwork({ networkId, breadcrumb }) {
83
+ console.log(
84
+ `---> connectNetwork called on NetworkCommissioning cluster: ${Bytes.toHex(networkId)} ${breadcrumb}`
85
+ );
86
+ this.env.get(DeviceCommissioner).assertFailsafeArmed("Failsafe timer needs to be armed to add or update networks.");
87
+ if (breadcrumb !== void 0) {
88
+ const generalCommissioningCluster = this.agent.get(GeneralCommissioningBehavior);
89
+ generalCommissioningCluster.state.breadcrumb = breadcrumb;
90
+ }
91
+ this.state.networks[0].connected = true;
92
+ const networkingStatus = NetworkCommissioning.NetworkCommissioningStatus.Success;
93
+ this.state.lastNetworkingStatus = networkingStatus;
94
+ this.state.lastNetworkId = firstNetworkId;
95
+ this.state.lastConnectErrorValue = null;
96
+ await this.env.get(DeviceAdvertiser).startAdvertising();
97
+ return {
98
+ networkingStatus,
99
+ errorValue: null
100
+ };
101
+ }
102
+ reorderNetwork({ networkId, networkIndex, breadcrumb }) {
103
+ console.log(
104
+ `---> reorderNetwork called on NetworkCommissioning cluster: ${Bytes.toHex(networkId)} ${networkIndex} ${breadcrumb}`
105
+ );
106
+ if (breadcrumb !== void 0) {
107
+ const generalCommissioningCluster = this.agent.get(GeneralCommissioningBehavior);
108
+ generalCommissioningCluster.state.breadcrumb = breadcrumb;
109
+ }
110
+ const networkingStatus = NetworkCommissioning.NetworkCommissioningStatus.Success;
111
+ this.state.lastNetworkingStatus = networkingStatus;
112
+ return {
113
+ networkingStatus,
114
+ networkIndex: 0
115
+ };
116
+ }
117
+ }
118
+ export {
119
+ DummyWifiNetworkCommissioningServer
120
+ };
121
+ //# sourceMappingURL=DummyWifiNetworkCommissioningServer.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/examples/cluster/DummyWifiNetworkCommissioningServer.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -0,0 +1,113 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ClusterBehavior, ClusterId, VendorId } from "@matter/main";
7
+ import {
8
+ AttributeElement,
9
+ ClusterElement,
10
+ ClusterModel,
11
+ CommandElement,
12
+ EventElement,
13
+ FieldElement
14
+ } from "@matter/main/model";
15
+ import {
16
+ Attribute,
17
+ ClusterRegistry,
18
+ Command,
19
+ Event,
20
+ EventPriority,
21
+ MutableCluster,
22
+ TlvField,
23
+ TlvInt16,
24
+ TlvNullable,
25
+ TlvObject,
26
+ TlvString
27
+ } from "@matter/main/types";
28
+ const myFancyClusterId = ClusterId.buildVendorSpecific(VendorId(65524), 64512);
29
+ var MyFancyOwnFunctionality;
30
+ ((MyFancyOwnFunctionality2) => {
31
+ MyFancyOwnFunctionality2.TlvMyFancyCommandRequest = TlvObject({ value: TlvField(0, TlvString) });
32
+ MyFancyOwnFunctionality2.TlvMyFancyCommandResponse = TlvObject({ response: TlvField(0, TlvString) });
33
+ MyFancyOwnFunctionality2.TlvMyFancyEvent = TlvObject({ eventValue: TlvField(0, TlvString) });
34
+ MyFancyOwnFunctionality2.ClusterInstance = MutableCluster({
35
+ id: myFancyClusterId,
36
+ name: "MyFancyOwnFunctionality",
37
+ revision: 1,
38
+ attributes: {
39
+ /** My fancy attribute */
40
+ myFancyValue: Attribute(0, TlvNullable(TlvInt16))
41
+ },
42
+ commands: {
43
+ /** My fancy command */
44
+ myFancyCommand: Command(1, MyFancyOwnFunctionality2.TlvMyFancyCommandRequest, 2, MyFancyOwnFunctionality2.TlvMyFancyCommandResponse)
45
+ },
46
+ events: {
47
+ /** My fancy event */
48
+ myFancyEvent: Event(5, EventPriority.Info, MyFancyOwnFunctionality2.TlvMyFancyEvent)
49
+ }
50
+ });
51
+ MyFancyOwnFunctionality2.Cluster = MyFancyOwnFunctionality2.ClusterInstance;
52
+ MyFancyOwnFunctionality2.Complete = MyFancyOwnFunctionality2.Cluster;
53
+ })(MyFancyOwnFunctionality || (MyFancyOwnFunctionality = {}));
54
+ const MyFancyOwnFunctionalityCluster = MyFancyOwnFunctionality.Cluster;
55
+ ClusterRegistry.register(MyFancyOwnFunctionality.Complete);
56
+ const MyFancySchema = ClusterElement({
57
+ name: "MyFancyOwnFunctionality",
58
+ id: myFancyClusterId,
59
+ classification: "application",
60
+ description: "My Fancy Functionality",
61
+ children: [
62
+ AttributeElement({ name: "ClusterRevision", id: 65533, type: "ClusterRevision", default: 1 }),
63
+ AttributeElement({
64
+ name: "MyFancyValue",
65
+ id: 0,
66
+ type: "int16",
67
+ access: "R V",
68
+ conformance: "M",
69
+ quality: "X"
70
+ }),
71
+ CommandElement({
72
+ name: "MyFancyCommand",
73
+ id: 1,
74
+ access: "O",
75
+ conformance: "M",
76
+ direction: "request",
77
+ response: "MyFancyCommandResponse",
78
+ children: [FieldElement({ name: "value", id: 0, type: "string", conformance: "M" })]
79
+ }),
80
+ CommandElement({
81
+ name: "MyFancyCommandResponse",
82
+ id: 2,
83
+ conformance: "M",
84
+ direction: "request",
85
+ children: [FieldElement({ name: "response", id: 0, type: "string", conformance: "M" })]
86
+ }),
87
+ EventElement({
88
+ name: "MyFancyEvent",
89
+ id: 5,
90
+ access: "V",
91
+ conformance: "O",
92
+ priority: "info",
93
+ children: [
94
+ FieldElement({
95
+ name: "EventValue",
96
+ id: 0,
97
+ type: "string",
98
+ conformance: "M"
99
+ })
100
+ ]
101
+ })
102
+ ]
103
+ });
104
+ const MyFancyOwnFunctionalityBehavior = ClusterBehavior.withInterface().for(
105
+ MyFancyOwnFunctionality.Cluster,
106
+ new ClusterModel(MyFancySchema)
107
+ );
108
+ export {
109
+ MyFancyOwnFunctionality,
110
+ MyFancyOwnFunctionalityBehavior,
111
+ MyFancyOwnFunctionalityCluster
112
+ };
113
+ //# sourceMappingURL=MyFancyOwnFunctionality.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/examples/cluster/MyFancyOwnFunctionality.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,iBAAiB,WAAmC,gBAAgB;AAC7E;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEG;AAGP,MAAM,mBAAmB,UAAU,oBAAoB,SAAS,KAAM,GAAG,KAAM;AAUxE,IAAU;AAAA,CAAV,CAAUA,6BAAV;AAII,EAAMA,yBAAA,2BAA2B,UAAU,EAAE,OAAO,SAAS,GAAG,SAAS,EAAE,CAAC;AAK5E,EAAMA,yBAAA,4BAA4B,UAAU,EAAE,UAAU,SAAS,GAAG,SAAS,EAAE,CAAC;AAKhF,EAAMA,yBAAA,kBAAkB,UAAU,EAAE,YAAY,SAAS,GAAG,SAAS,EAAE,CAAC;AAKxE,EAAMA,yBAAA,kBAAkB,eAAe;AAAA,IAC1C,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IAEV,YAAY;AAAA;AAAA,MAER,cAAc,UAAU,GAAK,YAAY,QAAQ,CAAC;AAAA,IACtD;AAAA,IAEA,UAAU;AAAA;AAAA,MAEN,gBAAgB,QAAQ,GAAKA,yBAAA,0BAA0B,GAAKA,yBAAA,yBAAyB;AAAA,IACzF;AAAA,IAEA,QAAQ;AAAA;AAAA,MAEJ,cAAc,MAAM,GAAK,cAAc,MAAMA,yBAAA,eAAe;AAAA,IAChE;AAAA,EACJ,CAAC;AASM,EAAMA,yBAAA,UAAmBA,yBAAA;AAEzB,EAAMA,yBAAA,WAAWA,yBAAA;AAAA,GAjDX;AAqDV,MAAM,iCAAiC,wBAAwB;AACtE,gBAAgB,SAAS,wBAAwB,QAAQ;AAMzD,MAAM,gBAAgB,eAAe;AAAA,EACjC,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,gBAAgB;AAAA,EAChB,aAAa;AAAA,EAEb,UAAU;AAAA,IACN,iBAAiB,EAAE,MAAM,mBAAmB,IAAI,OAAQ,MAAM,mBAAmB,SAAS,EAAE,CAAC;AAAA,IAE7F,iBAAiB;AAAA,MACb,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,SAAS;AAAA,IACb,CAAC;AAAA,IAED,eAAe;AAAA,MACX,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,WAAW;AAAA,MACX,UAAU;AAAA,MAEV,UAAU,CAAC,aAAa,EAAE,MAAM,SAAS,IAAI,GAAK,MAAM,UAAU,aAAa,IAAI,CAAC,CAAC;AAAA,IACzF,CAAC;AAAA,IACD,eAAe;AAAA,MACX,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,aAAa;AAAA,MACb,WAAW;AAAA,MAEX,UAAU,CAAC,aAAa,EAAE,MAAM,YAAY,IAAI,GAAK,MAAM,UAAU,aAAa,IAAI,CAAC,CAAC;AAAA,IAC5F,CAAC;AAAA,IAED,aAAa;AAAA,MACT,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,UAAU;AAAA,MACV,UAAU;AAAA,QACN,aAAa;AAAA,UACT,MAAM;AAAA,UACN,IAAI;AAAA,UACJ,MAAM;AAAA,UACN,aAAa;AAAA,QACjB,CAAC;AAAA,MACL;AAAA,IACJ,CAAC;AAAA,EACL;AACJ,CAAC;AAuBM,MAAM,kCAAkC,gBAAgB,cAAgD,EAAE;AAAA,EAC7G,wBAAwB;AAAA,EACxB,IAAI,aAAa,aAAa;AAClC;",
5
+ "names": ["MyFancyOwnFunctionality"]
6
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,4 @@
1
+ import { ServerNode } from "@matter/main";
2
+ const node = await ServerNode.create();
3
+ await node.run();
4
+ //# sourceMappingURL=example01.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/tutorial/example01.ts"],
4
+ "mappings": "AAAA,SAAS,kBAAkB;AAE3B,MAAM,OAAO,MAAM,WAAW,OAAO;AAErC,MAAM,KAAK,IAAI;",
5
+ "names": []
6
+ }
@@ -0,0 +1,6 @@
1
+ import { ServerNode } from "@matter/main";
2
+ import { OnOffLightDevice } from "@matter/main/devices/on-off-light";
3
+ const node = await ServerNode.create();
4
+ await node.add(OnOffLightDevice);
5
+ await node.run();
6
+ //# sourceMappingURL=example02.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/tutorial/example02.ts"],
4
+ "mappings": "AAAA,SAAS,kBAAkB;AAC3B,SAAS,wBAAwB;AAEjC,MAAM,OAAO,MAAM,WAAW,OAAO;AAErC,MAAM,KAAK,IAAI,gBAAgB;AAE/B,MAAM,KAAK,IAAI;",
5
+ "names": []
6
+ }
@@ -0,0 +1,14 @@
1
+ import { ServerNode } from "@matter/main";
2
+ import { OnOffLightDevice, OnOffLightRequirements } from "@matter/main/devices/on-off-light";
3
+ class MyOnOffServer extends OnOffLightRequirements.OnOffServer {
4
+ on() {
5
+ console.log("Turning on");
6
+ }
7
+ off() {
8
+ console.log("Turning off");
9
+ }
10
+ }
11
+ const node = await ServerNode.create();
12
+ await node.add(OnOffLightDevice.with(MyOnOffServer));
13
+ await node.run();
14
+ //# sourceMappingURL=example03.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/tutorial/example03.ts"],
4
+ "mappings": "AAAA,SAAS,kBAAkB;AAC3B,SAAS,kBAAkB,8BAA8B;AAEzD,MAAM,sBAAsB,uBAAuB,YAAY;AAAA,EAClD,KAAK;AACV,YAAQ,IAAI,YAAY;AAAA,EAC5B;AAAA,EAES,MAAM;AACX,YAAQ,IAAI,aAAa;AAAA,EAC7B;AACJ;AAEA,MAAM,OAAO,MAAM,WAAW,OAAO;AAErC,MAAM,KAAK,IAAI,iBAAiB,KAAK,aAAa,CAAC;AAEnD,MAAM,KAAK,IAAI;",
5
+ "names": []
6
+ }
@@ -0,0 +1,9 @@
1
+ import { ServerNode } from "@matter/main";
2
+ import { OnOffLightDevice } from "@matter/main/devices/on-off-light";
3
+ const node = await ServerNode.create();
4
+ const light = await node.add(OnOffLightDevice);
5
+ light.events.onOff.onOff$Changed.on((newValue) => {
6
+ console.log(`Light is ${newValue ? "on" : "off"}`);
7
+ });
8
+ await node.run();
9
+ //# sourceMappingURL=example04.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/tutorial/example04.ts"],
4
+ "mappings": "AAAA,SAAS,kBAAkB;AAC3B,SAAS,wBAAwB;AAEjC,MAAM,OAAO,MAAM,WAAW,OAAO;AAErC,MAAM,QAAQ,MAAM,KAAK,IAAI,gBAAgB;AAE7C,MAAM,OAAO,MAAM,cAAc,GAAG,cAAY;AAC5C,UAAQ,IAAI,YAAY,WAAW,OAAO,KAAK,EAAE;AACrD,CAAC;AAED,MAAM,KAAK,IAAI;",
5
+ "names": []
6
+ }
@@ -0,0 +1,13 @@
1
+ import { ServerNode } from "@matter/main";
2
+ import { OnOffLightDevice } from "@matter/main/devices/on-off-light";
3
+ const node = await ServerNode.create();
4
+ const light = await node.add(OnOffLightDevice);
5
+ await node.start();
6
+ await light.act(async (agent) => {
7
+ await agent.onOff.toggle();
8
+ console.log("On/off state after first toggle", agent.onOff.state);
9
+ await agent.onOff.toggle();
10
+ console.log("On/off state after second toggle", agent.onOff.state);
11
+ });
12
+ await node.close();
13
+ //# sourceMappingURL=example05.js.map