@matter/examples 0.11.0-alpha.0-20241005-e3e4e4a7a → 0.11.0-alpha.0-20241006-eccb81ae1
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.
- package/README.md +1 -0
- package/dist/esm/examples/BridgedDevicesNode.js +1 -1
- package/dist/esm/examples/ComposedDeviceNode.js +2 -2
- package/dist/esm/examples/ControllerNode.js +4 -10
- package/dist/esm/examples/ControllerNode.js.map +1 -1
- package/dist/esm/examples/DeviceNode.js +1 -2
- package/dist/esm/examples/DeviceNode.js.map +1 -1
- package/dist/esm/examples/DeviceNodeFull.js +3 -5
- package/dist/esm/examples/DeviceNodeFull.js.map +1 -1
- package/dist/esm/examples/MeasuredSocketDevice.js +110 -0
- package/dist/esm/examples/MeasuredSocketDevice.js.map +6 -0
- package/dist/esm/examples/cluster/DummyThreadNetworkCommissioningServer.js +1 -1
- package/dist/esm/examples/cluster/DummyThreadNetworkCommissioningServer.js.map +1 -1
- package/dist/esm/examples/cluster/DummyWifiNetworkCommissioningServer.js +1 -1
- package/dist/esm/examples/cluster/DummyWifiNetworkCommissioningServer.js.map +1 -1
- package/package.json +9 -3
- package/src/examples/BridgedDevicesNode.ts +1 -1
- package/src/examples/ComposedDeviceNode.ts +2 -2
- package/src/examples/ControllerNode.ts +5 -13
- package/src/examples/DeviceNode.ts +1 -2
- package/src/examples/DeviceNodeFull.ts +3 -5
- package/src/examples/MeasuredSocketDevice.ts +143 -0
- package/src/examples/cluster/DummyThreadNetworkCommissioningServer.ts +1 -1
- package/src/examples/cluster/DummyWifiNetworkCommissioningServer.ts +1 -1
- package/src/tsconfig.json +6 -0
- package/src/tsconfig.tsbuildinfo +0 -1
package/README.md
CHANGED
|
@@ -43,6 +43,7 @@ Additionally, all command line parameters now require to start with two dashes!
|
|
|
43
43
|
Additionally, these two examples are not directly configurable by CLI and mainly show how to implement different combinations of devices:
|
|
44
44
|
* **IlluminatedRollerShade**: This example implements the Window Covering cluster server logic and also overrides a OnOff cluster server to build a composed devices with a window covering nd a light.
|
|
45
45
|
* **LightDevice**: This example shows how to run a Light device which is not configurable via CLI and only logs changes, so it is the most minimalistic example. It shows how to enhance the OnOff cluster server with own logic.
|
|
46
|
+
* **MeasuredSocketDevice**: This example shows how to run a simple socket device that also includes a power and energy measurement. It is not configurable via CLI and only sets random energy and power values when turned on.
|
|
46
47
|
|
|
47
48
|
## Controller example
|
|
48
49
|
* **ControllerNode**: This example shows basically how a controller could be implemented by showing pairing and connections to a paired device. When there is an OnOff Endpoint with ID 1 then this is controlled and toggled.
|
|
@@ -9,7 +9,7 @@ import { BridgedDeviceBasicInformationServer } from "@matter/main/behaviors/brid
|
|
|
9
9
|
import { OnOffLightDevice } from "@matter/main/devices/on-off-light";
|
|
10
10
|
import { OnOffPlugInUnitDevice } from "@matter/main/devices/on-off-plug-in-unit";
|
|
11
11
|
import { AggregatorEndpoint } from "@matter/main/endpoints/aggregator";
|
|
12
|
-
import { logEndpoint } from "@matter/protocol";
|
|
12
|
+
import { logEndpoint } from "@matter/main/protocol";
|
|
13
13
|
import { execSync } from "child_process";
|
|
14
14
|
const { isSocket, deviceName, vendorName, passcode, discriminator, vendorId, productName, productId, port, uniqueId } = await getConfiguration();
|
|
15
15
|
const server = await ServerNode.create({
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
import { Endpoint, EndpointServer, Environment, ServerNode, StorageService, Time } from "@matter/main";
|
|
8
8
|
import { OnOffLightDevice } from "@matter/main/devices/on-off-light";
|
|
9
9
|
import { OnOffPlugInUnitDevice } from "@matter/main/devices/on-off-plug-in-unit";
|
|
10
|
-
import { logEndpoint } from "@matter/protocol";
|
|
11
|
-
import { DeviceTypeId, VendorId } from "@matter/types";
|
|
10
|
+
import { logEndpoint } from "@matter/main/protocol";
|
|
11
|
+
import { DeviceTypeId, VendorId } from "@matter/main/types";
|
|
12
12
|
import { execSync } from "child_process";
|
|
13
13
|
const { isSocket, deviceName, vendorName, passcode, discriminator, vendorId, productName, productId, port, uniqueId } = await getConfiguration();
|
|
14
14
|
const server = await ServerNode.create({
|
|
@@ -5,18 +5,12 @@
|
|
|
5
5
|
* SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
*/
|
|
7
7
|
import { Environment, Logger, singleton, StorageService, Time } from "@matter/main";
|
|
8
|
+
import { BasicInformationCluster, DescriptorCluster, GeneralCommissioning, OnOff } from "@matter/main/clusters";
|
|
9
|
+
import { Ble } from "@matter/main/protocol";
|
|
10
|
+
import { ManualPairingCodeCodec, NodeId } from "@matter/main/types";
|
|
8
11
|
import { NodeJsBle } from "@matter/nodejs-ble";
|
|
9
|
-
import { NodeId } from "@matter/types";
|
|
10
12
|
import { CommissioningController } from "@project-chip/matter.js";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
BasicInformationCluster,
|
|
14
|
-
DescriptorCluster,
|
|
15
|
-
GeneralCommissioning,
|
|
16
|
-
OnOff
|
|
17
|
-
} from "@project-chip/matter.js/cluster";
|
|
18
|
-
import { ManualPairingCodeCodec } from "@project-chip/matter.js/schema";
|
|
19
|
-
import { NodeStateInformation } from "../../../matter.js/dist/esm/device/PairedNode.js";
|
|
13
|
+
import { NodeStateInformation } from "@project-chip/matter.js/device";
|
|
20
14
|
const logger = Logger.get("Controller");
|
|
21
15
|
const environment = Environment.default;
|
|
22
16
|
if (environment.vars.get("ble")) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/examples/ControllerNode.ts"],
|
|
4
|
-
"mappings": ";AACA;AAAA;AAAA;AAAA;AAAA;AAYA,SAAS,aAAa,QAAQ,WAAW,gBAAgB,YAAY;AACrE,SAAS,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["nodeId", "info"]
|
|
6
6
|
}
|
|
@@ -14,8 +14,7 @@ import {
|
|
|
14
14
|
Time,
|
|
15
15
|
VendorId
|
|
16
16
|
} from "@matter/main";
|
|
17
|
-
import { OnOffLightDevice } from "@matter/main/devices
|
|
18
|
-
import { OnOffPlugInUnitDevice } from "@matter/main/devices/on-off-plug-in-unit";
|
|
17
|
+
import { OnOffLightDevice, OnOffPlugInUnitDevice } from "@matter/main/devices";
|
|
19
18
|
import { logEndpoint } from "@matter/main/protocol";
|
|
20
19
|
import { execSync } from "child_process";
|
|
21
20
|
async function main() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/examples/DeviceNode.ts"],
|
|
4
|
-
"mappings": ";AACA;AAAA;AAAA;AAAA;AAAA;AAYA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,SAAS,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -18,12 +18,10 @@ import {
|
|
|
18
18
|
logLevelFromString,
|
|
19
19
|
singleton
|
|
20
20
|
} from "@matter/main";
|
|
21
|
-
import { NetworkCommissioningServer } from "@matter/main/behaviors
|
|
22
|
-
import { OnOffServer } from "@matter/main/behaviors/on-off";
|
|
21
|
+
import { NetworkCommissioningServer, OnOffServer } from "@matter/main/behaviors";
|
|
23
22
|
import { NetworkCommissioning } from "@matter/main/clusters";
|
|
24
|
-
import { OnOffLightDevice } from "@matter/main/devices
|
|
25
|
-
import {
|
|
26
|
-
import { RootRequirements } from "@matter/main/endpoints/root";
|
|
23
|
+
import { OnOffLightDevice, OnOffPlugInUnitDevice } from "@matter/main/devices";
|
|
24
|
+
import { RootRequirements } from "@matter/main/endpoints";
|
|
27
25
|
import { Ble, FabricAction, logEndpoint } from "@matter/main/protocol";
|
|
28
26
|
import { QrCode } from "@matter/main/types";
|
|
29
27
|
import { createFileLogger } from "@matter/nodejs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/examples/DeviceNodeFull.ts"],
|
|
4
|
-
"mappings": ";AACA;AAAA;AAAA;AAAA;AAAA;AAqBA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,SAAS,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -0,0 +1,110 @@
|
|
|
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, ServerNode, Time } from "@matter/main";
|
|
8
|
+
import { ElectricalEnergyMeasurementServer, ElectricalPowerMeasurementServer } from "@matter/main/behaviors";
|
|
9
|
+
import { ElectricalEnergyMeasurement, ElectricalPowerMeasurement } from "@matter/main/clusters";
|
|
10
|
+
import { OnOffPlugInUnitDevice } from "@matter/main/devices";
|
|
11
|
+
import { MeasurementType } from "@matter/main/types";
|
|
12
|
+
const MeasuredSocket = OnOffPlugInUnitDevice.with(
|
|
13
|
+
ElectricalPowerMeasurementServer.with(ElectricalPowerMeasurement.Feature.AlternatingCurrent),
|
|
14
|
+
ElectricalEnergyMeasurementServer.with(
|
|
15
|
+
ElectricalEnergyMeasurement.Feature.ImportedEnergy,
|
|
16
|
+
ElectricalEnergyMeasurement.Feature.CumulativeEnergy
|
|
17
|
+
)
|
|
18
|
+
);
|
|
19
|
+
const fakedAccuracyDetails = {
|
|
20
|
+
measured: true,
|
|
21
|
+
minMeasuredValue: Number.MIN_SAFE_INTEGER,
|
|
22
|
+
maxMeasuredValue: Number.MAX_SAFE_INTEGER,
|
|
23
|
+
accuracyRanges: [
|
|
24
|
+
{
|
|
25
|
+
rangeMin: Number.MIN_SAFE_INTEGER,
|
|
26
|
+
rangeMax: Number.MAX_SAFE_INTEGER,
|
|
27
|
+
fixedMax: 1
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
};
|
|
31
|
+
const measuredSocketEndpoint = new Endpoint(MeasuredSocket, {
|
|
32
|
+
id: "socket",
|
|
33
|
+
electricalPowerMeasurement: {
|
|
34
|
+
powerMode: ElectricalPowerMeasurement.PowerMode.Ac,
|
|
35
|
+
// We simulate that we can measure the following values.
|
|
36
|
+
accuracy: [
|
|
37
|
+
{
|
|
38
|
+
measurementType: MeasurementType.ActivePower,
|
|
39
|
+
// mW
|
|
40
|
+
...fakedAccuracyDetails
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
measurementType: MeasurementType.ActiveCurrent,
|
|
44
|
+
// mA
|
|
45
|
+
...fakedAccuracyDetails
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
measurementType: MeasurementType.Voltage,
|
|
49
|
+
// mV
|
|
50
|
+
...fakedAccuracyDetails
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
measurementType: MeasurementType.Frequency,
|
|
54
|
+
// mHz
|
|
55
|
+
...fakedAccuracyDetails
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
numberOfMeasurementTypes: 4
|
|
59
|
+
},
|
|
60
|
+
electricalEnergyMeasurement: {
|
|
61
|
+
accuracy: {
|
|
62
|
+
measurementType: MeasurementType.ElectricalEnergy,
|
|
63
|
+
// mWh
|
|
64
|
+
...fakedAccuracyDetails
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
const node = await ServerNode.create();
|
|
69
|
+
await node.add(measuredSocketEndpoint);
|
|
70
|
+
measuredSocketEndpoint.events.onOff.onOff$Changed.on((value) => {
|
|
71
|
+
console.log(`Light is now ${value ? "ON" : "OFF"}`);
|
|
72
|
+
});
|
|
73
|
+
const fakeMeasurementTimer = Time.getPeriodicTimer("fakeMeasurement", 1e4, async () => {
|
|
74
|
+
const turnedOn = measuredSocketEndpoint.state.onOff.onOff;
|
|
75
|
+
const power = turnedOn ? Math.round(Math.random() * 1e3) : 0;
|
|
76
|
+
const current = turnedOn ? Math.round(Math.random() * 32) : 0;
|
|
77
|
+
const voltage = turnedOn ? 227 + Math.round(Math.random() * 5) : 0;
|
|
78
|
+
const frequency = turnedOn ? 50 + Math.round(Math.random() * 5) : 0;
|
|
79
|
+
const energy = turnedOn ? Math.round(Math.random() * 1e3) : 0;
|
|
80
|
+
await measuredSocketEndpoint.set({
|
|
81
|
+
electricalPowerMeasurement: {
|
|
82
|
+
activePower: power * 1e3,
|
|
83
|
+
activeCurrent: current * 1e3,
|
|
84
|
+
voltage: voltage * 1e3,
|
|
85
|
+
frequency: frequency * 1e3
|
|
86
|
+
}
|
|
87
|
+
// For Energy Measurement the set could be done this way but this would only update the values as provided.
|
|
88
|
+
// The required events needs to be triggered manually.
|
|
89
|
+
/*
|
|
90
|
+
electricalEnergyMeasurement: {
|
|
91
|
+
cumulativeEnergyImported: {
|
|
92
|
+
energy: energy * 1000,
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
*/
|
|
96
|
+
});
|
|
97
|
+
await measuredSocketEndpoint.act(
|
|
98
|
+
(agent) => agent.get(ElectricalEnergyMeasurementServer).setMeasurement({
|
|
99
|
+
cumulativeEnergy: {
|
|
100
|
+
imported: {
|
|
101
|
+
energy: energy * 1e3
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
})
|
|
105
|
+
);
|
|
106
|
+
});
|
|
107
|
+
fakeMeasurementTimer.start();
|
|
108
|
+
await node.run();
|
|
109
|
+
fakeMeasurementTimer.stop();
|
|
110
|
+
//# sourceMappingURL=MeasuredSocketDevice.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/examples/MeasuredSocketDevice.ts"],
|
|
4
|
+
"mappings": ";AACA;AAAA;AAAA;AAAA;AAAA;AAQA,SAAS,UAAU,YAAY,YAAY;AAC3C,SAAS,mCAAmC,wCAAwC;AACpF,SAAS,6BAA6B,kCAAkC;AACxE,SAAS,6BAA6B;AACtC,SAAS,uBAAuB;AAKhC,MAAM,iBAAiB,sBAAsB;AAAA,EACzC,iCAAiC,KAAK,2BAA2B,QAAQ,kBAAkB;AAAA,EAC3F,kCAAkC;AAAA,IAC9B,4BAA4B,QAAQ;AAAA,IACpC,4BAA4B,QAAQ;AAAA,EACxC;AACJ;AAMA,MAAM,uBAAuB;AAAA,EACzB,UAAU;AAAA,EACV,kBAAkB,OAAO;AAAA,EACzB,kBAAkB,OAAO;AAAA,EACzB,gBAAgB;AAAA,IACZ;AAAA,MACI,UAAU,OAAO;AAAA,MACjB,UAAU,OAAO;AAAA,MACjB,UAAU;AAAA,IACd;AAAA,EACJ;AACJ;AAGA,MAAM,yBAAyB,IAAI,SAAS,gBAAgB;AAAA,EACxD,IAAI;AAAA,EACJ,4BAA4B;AAAA,IACxB,WAAW,2BAA2B,UAAU;AAAA;AAAA,IAEhD,UAAU;AAAA,MACN;AAAA,QACI,iBAAiB,gBAAgB;AAAA;AAAA,QACjC,GAAG;AAAA,MACP;AAAA,MACA;AAAA,QACI,iBAAiB,gBAAgB;AAAA;AAAA,QACjC,GAAG;AAAA,MACP;AAAA,MACA;AAAA,QACI,iBAAiB,gBAAgB;AAAA;AAAA,QACjC,GAAG;AAAA,MACP;AAAA,MACA;AAAA,QACI,iBAAiB,gBAAgB;AAAA;AAAA,QACjC,GAAG;AAAA,MACP;AAAA,IACJ;AAAA,IACA,0BAA0B;AAAA,EAC9B;AAAA,EACA,6BAA6B;AAAA,IACzB,UAAU;AAAA,MACN,iBAAiB,gBAAgB;AAAA;AAAA,MACjC,GAAG;AAAA,IACP;AAAA,EACJ;AACJ,CAAC;AAOD,MAAM,OAAO,MAAM,WAAW,OAAO;AAGrC,MAAM,KAAK,IAAI,sBAAsB;AAGrC,uBAAuB,OAAO,MAAM,cAAc,GAAG,WAAS;AAC1D,UAAQ,IAAI,gBAAgB,QAAQ,OAAO,KAAK,EAAE;AACtD,CAAC;AAKD,MAAM,uBAAuB,KAAK,iBAAiB,mBAAmB,KAAQ,YAAY;AACtF,QAAM,WAAW,uBAAuB,MAAM,MAAM;AACpD,QAAM,QAAQ,WAAW,KAAK,MAAM,KAAK,OAAO,IAAI,GAAI,IAAI;AAC5D,QAAM,UAAU,WAAW,KAAK,MAAM,KAAK,OAAO,IAAI,EAAE,IAAI;AAC5D,QAAM,UAAU,WAAW,MAAM,KAAK,MAAM,KAAK,OAAO,IAAI,CAAC,IAAI;AACjE,QAAM,YAAY,WAAW,KAAK,KAAK,MAAM,KAAK,OAAO,IAAI,CAAC,IAAI;AAClE,QAAM,SAAS,WAAW,KAAK,MAAM,KAAK,OAAO,IAAI,GAAI,IAAI;AAE7D,QAAM,uBAAuB,IAAI;AAAA,IAC7B,4BAA4B;AAAA,MACxB,aAAa,QAAQ;AAAA,MACrB,eAAe,UAAU;AAAA,MACzB,SAAS,UAAU;AAAA,MACnB,WAAW,YAAY;AAAA,IAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUJ,CAAC;AAGD,QAAM,uBAAuB;AAAA,IAAI,WAC7B,MAAM,IAAI,iCAAiC,EAAE,eAAe;AAAA,MACxD,kBAAkB;AAAA,QACd,UAAU;AAAA,UACN,QAAQ,SAAS;AAAA,QACrB;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AACJ,CAAC;AAED,qBAAqB,MAAM;AAM3B,MAAM,KAAK,IAAI;AAGf,qBAAqB,KAAK;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
import { Bytes, Logger } from "@matter/main";
|
|
7
7
|
import { GeneralCommissioningBehavior } from "@matter/main/behaviors/general-commissioning";
|
|
8
8
|
import { NetworkCommissioningBehavior } from "@matter/main/behaviors/network-commissioning";
|
|
9
|
+
import { NetworkCommissioning } from "@matter/main/clusters";
|
|
9
10
|
import { DeviceAdvertiser, DeviceCommissioner } from "@matter/main/protocol";
|
|
10
|
-
import { NetworkCommissioning } from "@matter/types/clusters";
|
|
11
11
|
const firstNetworkId = new Uint8Array(32);
|
|
12
12
|
class DummyThreadNetworkCommissioningServer extends NetworkCommissioningBehavior.with(
|
|
13
13
|
NetworkCommissioning.Feature.ThreadNetworkInterface
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/examples/cluster/DummyThreadNetworkCommissioningServer.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,OAAO,cAAc;AAC9B,SAAS,oCAAoC;AAC7C,SAAS,oCAAoC;AAC7C,SAAS,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
import { Bytes } from "@matter/main";
|
|
7
7
|
import { GeneralCommissioningBehavior } from "@matter/main/behaviors/general-commissioning";
|
|
8
8
|
import { NetworkCommissioningBehavior } from "@matter/main/behaviors/network-commissioning";
|
|
9
|
+
import { NetworkCommissioning } from "@matter/main/clusters/network-commissioning";
|
|
9
10
|
import { DeviceAdvertiser, DeviceCommissioner } from "@matter/main/protocol";
|
|
10
|
-
import { NetworkCommissioning } from "@matter/types/clusters/network-commissioning";
|
|
11
11
|
const firstNetworkId = new Uint8Array(32);
|
|
12
12
|
class DummyWifiNetworkCommissioningServer extends NetworkCommissioningBehavior.with(
|
|
13
13
|
NetworkCommissioning.Feature.WiFiNetworkInterface
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/examples/cluster/DummyWifiNetworkCommissioningServer.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,aAAa;AACtB,SAAS,oCAAoC;AAC7C,SAAS,oCAAoC;AAC7C,SAAS,
|
|
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.11.0-alpha.0-
|
|
3
|
+
"version": "0.11.0-alpha.0-20241006-eccb81ae1",
|
|
4
4
|
"description": "Matter.js examples and reference implementations",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"build": "matter-build",
|
|
30
30
|
"build-clean": "matter-build --clean",
|
|
31
31
|
"matter-light": "matter-run src/examples/LightDevice.ts",
|
|
32
|
+
"matter-measuredsocket": "matter-run src/examples/MeasuredSocketDevice.ts",
|
|
32
33
|
"matter-sensor": "matter-run src/examples/SensorDeviceNode.ts",
|
|
33
34
|
"matter-excelsior1000": "matter-run src/examples/IlluminatedRollerShade.ts",
|
|
34
35
|
"matter-device": "matter-run src/examples/DeviceNode.ts",
|
|
@@ -41,6 +42,7 @@
|
|
|
41
42
|
},
|
|
42
43
|
"bin": {
|
|
43
44
|
"matter-light": "dist/esm/examples/LightDevice.ts",
|
|
45
|
+
"matter-measuredsocket": "dist/esm/examples/MeasuredSocketDevice.ts",
|
|
44
46
|
"matter-excelsior1000": "dist/esm/examples/IlluminatedRollerShade.ts",
|
|
45
47
|
"matter-sensor": "dist/esm/examples/SensorDeviceNode.js",
|
|
46
48
|
"matter-device": "dist/esm/examples/DeviceNode.js",
|
|
@@ -50,10 +52,14 @@
|
|
|
50
52
|
"matter-controller": "dist/esm/examples/ControllerNode.js"
|
|
51
53
|
},
|
|
52
54
|
"dependencies": {
|
|
53
|
-
"@matter/main": "0.11.0-alpha.0-
|
|
54
|
-
"@matter/
|
|
55
|
+
"@matter/main": "0.11.0-alpha.0-20241006-eccb81ae1",
|
|
56
|
+
"@matter/nodejs": "0.11.0-alpha.0-20241006-eccb81ae1",
|
|
57
|
+
"@matter/tools": "0.11.0-alpha.0-20241006-eccb81ae1",
|
|
55
58
|
"esbuild": "^0.24.0"
|
|
56
59
|
},
|
|
60
|
+
"optionalDependencies": {
|
|
61
|
+
"@matter/nodejs-ble": "0.11.0-alpha.0-20241006-eccb81ae1"
|
|
62
|
+
},
|
|
57
63
|
"engines": {
|
|
58
64
|
"node": ">=18.0.0"
|
|
59
65
|
},
|
|
@@ -17,7 +17,7 @@ import { BridgedDeviceBasicInformationServer } from "@matter/main/behaviors/brid
|
|
|
17
17
|
import { OnOffLightDevice } from "@matter/main/devices/on-off-light";
|
|
18
18
|
import { OnOffPlugInUnitDevice } from "@matter/main/devices/on-off-plug-in-unit";
|
|
19
19
|
import { AggregatorEndpoint } from "@matter/main/endpoints/aggregator";
|
|
20
|
-
import { logEndpoint } from "@matter/protocol";
|
|
20
|
+
import { logEndpoint } from "@matter/main/protocol";
|
|
21
21
|
import { execSync } from "child_process";
|
|
22
22
|
|
|
23
23
|
/** Initialize configuration values */
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
import { Endpoint, EndpointServer, Environment, ServerNode, StorageService, Time } from "@matter/main";
|
|
16
16
|
import { OnOffLightDevice } from "@matter/main/devices/on-off-light";
|
|
17
17
|
import { OnOffPlugInUnitDevice } from "@matter/main/devices/on-off-plug-in-unit";
|
|
18
|
-
import { logEndpoint } from "@matter/protocol";
|
|
19
|
-
import { DeviceTypeId, VendorId } from "@matter/types";
|
|
18
|
+
import { logEndpoint } from "@matter/main/protocol";
|
|
19
|
+
import { DeviceTypeId, VendorId } from "@matter/main/types";
|
|
20
20
|
import { execSync } from "child_process";
|
|
21
21
|
|
|
22
22
|
/** Initialize configuration values */
|
|
@@ -12,20 +12,12 @@
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
import { Environment, Logger, singleton, StorageService, Time } from "@matter/main";
|
|
15
|
+
import { BasicInformationCluster, DescriptorCluster, GeneralCommissioning, OnOff } from "@matter/main/clusters";
|
|
16
|
+
import { Ble, ClusterClientObj, ControllingCommissioningFlowOptions } from "@matter/main/protocol";
|
|
17
|
+
import { ManualPairingCodeCodec, NodeId } from "@matter/main/types";
|
|
15
18
|
import { NodeJsBle } from "@matter/nodejs-ble";
|
|
16
|
-
import { NodeId } from "@matter/types";
|
|
17
19
|
import { CommissioningController, NodeCommissioningOptions } from "@project-chip/matter.js";
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
BasicInformationCluster,
|
|
21
|
-
ClusterClientObj,
|
|
22
|
-
DescriptorCluster,
|
|
23
|
-
GeneralCommissioning,
|
|
24
|
-
OnOff,
|
|
25
|
-
} from "@project-chip/matter.js/cluster";
|
|
26
|
-
import { CommissioningOptions } from "@project-chip/matter.js/protocol";
|
|
27
|
-
import { ManualPairingCodeCodec } from "@project-chip/matter.js/schema";
|
|
28
|
-
import { NodeStateInformation } from "../../../matter.js/dist/esm/device/PairedNode.js";
|
|
20
|
+
import { NodeStateInformation } from "@project-chip/matter.js/device";
|
|
29
21
|
|
|
30
22
|
const logger = Logger.get("Controller");
|
|
31
23
|
|
|
@@ -97,7 +89,7 @@ class ControllerNode {
|
|
|
97
89
|
}
|
|
98
90
|
|
|
99
91
|
// Collect commissioning options from commandline parameters
|
|
100
|
-
const commissioningOptions:
|
|
92
|
+
const commissioningOptions: ControllingCommissioningFlowOptions = {
|
|
101
93
|
regulatoryLocation: GeneralCommissioning.RegulatoryLocationType.IndoorOutdoor,
|
|
102
94
|
regulatoryCountryCode: "XX",
|
|
103
95
|
};
|
|
@@ -21,8 +21,7 @@ import {
|
|
|
21
21
|
Time,
|
|
22
22
|
VendorId,
|
|
23
23
|
} from "@matter/main";
|
|
24
|
-
import { OnOffLightDevice } from "@matter/main/devices
|
|
25
|
-
import { OnOffPlugInUnitDevice } from "@matter/main/devices/on-off-plug-in-unit";
|
|
24
|
+
import { OnOffLightDevice, OnOffPlugInUnitDevice } from "@matter/main/devices";
|
|
26
25
|
import { logEndpoint } from "@matter/main/protocol";
|
|
27
26
|
import { execSync } from "child_process";
|
|
28
27
|
|
|
@@ -34,12 +34,10 @@ import {
|
|
|
34
34
|
logLevelFromString,
|
|
35
35
|
singleton,
|
|
36
36
|
} from "@matter/main";
|
|
37
|
-
import { NetworkCommissioningServer } from "@matter/main/behaviors
|
|
38
|
-
import { OnOffServer } from "@matter/main/behaviors/on-off";
|
|
37
|
+
import { NetworkCommissioningServer, OnOffServer } from "@matter/main/behaviors";
|
|
39
38
|
import { GeneralDiagnostics, NetworkCommissioning } from "@matter/main/clusters";
|
|
40
|
-
import { OnOffLightDevice } from "@matter/main/devices
|
|
41
|
-
import {
|
|
42
|
-
import { RootRequirements } from "@matter/main/endpoints/root";
|
|
39
|
+
import { OnOffLightDevice, OnOffPlugInUnitDevice } from "@matter/main/devices";
|
|
40
|
+
import { RootRequirements } from "@matter/main/endpoints";
|
|
43
41
|
import { Ble, FabricAction, logEndpoint } from "@matter/main/protocol";
|
|
44
42
|
import { QrCode } from "@matter/main/types";
|
|
45
43
|
import { createFileLogger } from "@matter/nodejs";
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
5
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// This demonstrates bringing a "socket" device with electrical power and energy measurement online with matter.js.
|
|
9
|
+
|
|
10
|
+
import { Endpoint, ServerNode, Time } from "@matter/main";
|
|
11
|
+
import { ElectricalEnergyMeasurementServer, ElectricalPowerMeasurementServer } from "@matter/main/behaviors";
|
|
12
|
+
import { ElectricalEnergyMeasurement, ElectricalPowerMeasurement } from "@matter/main/clusters";
|
|
13
|
+
import { OnOffPlugInUnitDevice } from "@matter/main/devices";
|
|
14
|
+
import { MeasurementType } from "@matter/main/types";
|
|
15
|
+
|
|
16
|
+
// Devices are compositions of behaviors like OnOffServer above. To extend an existing device you use builder methods.
|
|
17
|
+
//
|
|
18
|
+
// In this case we are using with() to install our On/Off cluster behavior.
|
|
19
|
+
const MeasuredSocket = OnOffPlugInUnitDevice.with(
|
|
20
|
+
ElectricalPowerMeasurementServer.with(ElectricalPowerMeasurement.Feature.AlternatingCurrent),
|
|
21
|
+
ElectricalEnergyMeasurementServer.with(
|
|
22
|
+
ElectricalEnergyMeasurement.Feature.ImportedEnergy,
|
|
23
|
+
ElectricalEnergyMeasurement.Feature.CumulativeEnergy,
|
|
24
|
+
),
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
// Accuracy details for the measured values. Here we fake some values to demonstrate the structure.
|
|
28
|
+
// If you know the details of your device you should provide the correct values.
|
|
29
|
+
// These values tell that the device can measure from Number.MIN_SAFE_INTEGER to Number.MAX_SAFE_INTEGER with an accuracy of 1 unit.
|
|
30
|
+
// Unit is depending on the value e.g. mA, mV, mW, mWh and such.
|
|
31
|
+
const fakedAccuracyDetails = {
|
|
32
|
+
measured: true,
|
|
33
|
+
minMeasuredValue: Number.MIN_SAFE_INTEGER,
|
|
34
|
+
maxMeasuredValue: Number.MAX_SAFE_INTEGER,
|
|
35
|
+
accuracyRanges: [
|
|
36
|
+
{
|
|
37
|
+
rangeMin: Number.MIN_SAFE_INTEGER,
|
|
38
|
+
rangeMax: Number.MAX_SAFE_INTEGER,
|
|
39
|
+
fixedMax: 1,
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
// Define the endpoint for the device. This is the "thing/device" that will appear on the network.
|
|
45
|
+
const measuredSocketEndpoint = new Endpoint(MeasuredSocket, {
|
|
46
|
+
id: "socket",
|
|
47
|
+
electricalPowerMeasurement: {
|
|
48
|
+
powerMode: ElectricalPowerMeasurement.PowerMode.Ac,
|
|
49
|
+
// We simulate that we can measure the following values.
|
|
50
|
+
accuracy: [
|
|
51
|
+
{
|
|
52
|
+
measurementType: MeasurementType.ActivePower, // mW
|
|
53
|
+
...fakedAccuracyDetails,
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
measurementType: MeasurementType.ActiveCurrent, // mA
|
|
57
|
+
...fakedAccuracyDetails,
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
measurementType: MeasurementType.Voltage, // mV
|
|
61
|
+
...fakedAccuracyDetails,
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
measurementType: MeasurementType.Frequency, // mHz
|
|
65
|
+
...fakedAccuracyDetails,
|
|
66
|
+
},
|
|
67
|
+
],
|
|
68
|
+
numberOfMeasurementTypes: 4,
|
|
69
|
+
},
|
|
70
|
+
electricalEnergyMeasurement: {
|
|
71
|
+
accuracy: {
|
|
72
|
+
measurementType: MeasurementType.ElectricalEnergy, // mWh
|
|
73
|
+
...fakedAccuracyDetails,
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
// Physical devices appear as "nodes" on a Matter network. As a device implementer you use a NodeServer to bring a
|
|
79
|
+
// device online.
|
|
80
|
+
//
|
|
81
|
+
// Note there are a large number of options to NodeServer that we are allowing to take default values here. See
|
|
82
|
+
// IlluminatedRollerShade.ts for a more detailed example.
|
|
83
|
+
const node = await ServerNode.create();
|
|
84
|
+
|
|
85
|
+
// Nodes are a composition of endpoints. Add a single endpoint to the node, our example socket device.
|
|
86
|
+
await node.add(measuredSocketEndpoint);
|
|
87
|
+
|
|
88
|
+
// We can now interact with the device. For example, we can listen for changes to the on/off state.
|
|
89
|
+
measuredSocketEndpoint.events.onOff.onOff$Changed.on(value => {
|
|
90
|
+
console.log(`Light is now ${value ? "ON" : "OFF"}`);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
// We will simulate the device sending measurements every 10 seconds.
|
|
94
|
+
// When the device is turned off, the measurements will be zero, otherwise they will be random values.
|
|
95
|
+
// Note: This is just example code. In a real device, you would set the data to 0 once the device is turned off.
|
|
96
|
+
const fakeMeasurementTimer = Time.getPeriodicTimer("fakeMeasurement", 10_000, async () => {
|
|
97
|
+
const turnedOn = measuredSocketEndpoint.state.onOff.onOff;
|
|
98
|
+
const power = turnedOn ? Math.round(Math.random() * 1000) : 0; // W
|
|
99
|
+
const current = turnedOn ? Math.round(Math.random() * 32) : 0; // A
|
|
100
|
+
const voltage = turnedOn ? 227 + Math.round(Math.random() * 5) : 0; // V
|
|
101
|
+
const frequency = turnedOn ? 50 + Math.round(Math.random() * 5) : 0; // Hz
|
|
102
|
+
const energy = turnedOn ? Math.round(Math.random() * 1000) : 0; // Wh
|
|
103
|
+
|
|
104
|
+
await measuredSocketEndpoint.set({
|
|
105
|
+
electricalPowerMeasurement: {
|
|
106
|
+
activePower: power * 1000,
|
|
107
|
+
activeCurrent: current * 1000,
|
|
108
|
+
voltage: voltage * 1000,
|
|
109
|
+
frequency: frequency * 1000,
|
|
110
|
+
},
|
|
111
|
+
// For Energy Measurement the set could be done this way but this would only update the values as provided.
|
|
112
|
+
// The required events needs to be triggered manually.
|
|
113
|
+
/*
|
|
114
|
+
electricalEnergyMeasurement: {
|
|
115
|
+
cumulativeEnergyImported: {
|
|
116
|
+
energy: energy * 1000,
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
*/
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
// Or do this way then also events are sent
|
|
123
|
+
await measuredSocketEndpoint.act(agent =>
|
|
124
|
+
agent.get(ElectricalEnergyMeasurementServer).setMeasurement({
|
|
125
|
+
cumulativeEnergy: {
|
|
126
|
+
imported: {
|
|
127
|
+
energy: energy * 1000,
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
}),
|
|
131
|
+
);
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
fakeMeasurementTimer.start();
|
|
135
|
+
|
|
136
|
+
// Our device is now built, so we can bring the node online.
|
|
137
|
+
//
|
|
138
|
+
// Note that you may serve multiple nodes from a single process. We only have one, however, so we can use the run()
|
|
139
|
+
// method of the node.
|
|
140
|
+
await node.run();
|
|
141
|
+
|
|
142
|
+
// We went offline, so we can stop the timer.
|
|
143
|
+
fakeMeasurementTimer.stop();
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
import { Bytes, Logger } from "@matter/main";
|
|
8
8
|
import { GeneralCommissioningBehavior } from "@matter/main/behaviors/general-commissioning";
|
|
9
9
|
import { NetworkCommissioningBehavior } from "@matter/main/behaviors/network-commissioning";
|
|
10
|
+
import { NetworkCommissioning } from "@matter/main/clusters";
|
|
10
11
|
import { DeviceAdvertiser, DeviceCommissioner } from "@matter/main/protocol";
|
|
11
|
-
import { NetworkCommissioning } from "@matter/types/clusters";
|
|
12
12
|
|
|
13
13
|
const firstNetworkId = new Uint8Array(32);
|
|
14
14
|
|