matterbridge 2.2.4 → 2.2.5-dev.3
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/CHANGELOG.md +24 -0
- package/dist/cli.js +2 -37
- package/dist/cluster/export.js +0 -2
- package/dist/defaultConfigSchema.js +0 -23
- package/dist/deviceManager.js +1 -94
- package/dist/frontend.js +70 -334
- package/dist/index.js +1 -28
- package/dist/logger/export.js +0 -1
- package/dist/matter/behaviors.js +0 -2
- package/dist/matter/clusters.js +0 -2
- package/dist/matter/devices.js +0 -2
- package/dist/matter/endpoints.js +0 -2
- package/dist/matter/export.js +0 -2
- package/dist/matter/types.js +0 -2
- package/dist/matterbridge.js +46 -743
- package/dist/matterbridgeAccessoryPlatform.js +0 -33
- package/dist/matterbridgeBehaviors.js +1 -32
- package/dist/matterbridgeDeviceTypes.js +11 -112
- package/dist/matterbridgeDynamicPlatform.js +0 -33
- package/dist/matterbridgeEndpoint.js +6 -690
- package/dist/matterbridgeEndpointHelpers.js +9 -118
- package/dist/matterbridgePlatform.js +13 -185
- package/dist/matterbridgeTypes.js +0 -24
- package/dist/pluginManager.js +7 -230
- package/dist/shelly.js +6 -121
- package/dist/storage/export.js +0 -1
- package/dist/update.js +0 -45
- package/dist/utils/colorUtils.js +2 -205
- package/dist/utils/copyDirectory.js +1 -37
- package/dist/utils/createZip.js +2 -42
- package/dist/utils/deepCopy.js +0 -40
- package/dist/utils/deepEqual.js +1 -65
- package/dist/utils/export.js +0 -1
- package/dist/utils/isvalid.js +0 -86
- package/dist/utils/network.js +5 -77
- package/dist/utils/parameter.js +0 -41
- package/dist/utils/wait.js +5 -48
- package/frontend/build/asset-manifest.json +80 -64
- package/frontend/build/index.html +1 -1
- package/frontend/build/static/css/main.ea7910e9.css +2 -0
- package/frontend/build/static/css/main.ea7910e9.css.map +1 -0
- package/frontend/build/static/js/453.d855a71b.chunk.js +2 -0
- package/frontend/build/static/js/{453.abd36b29.chunk.js.map → 453.d855a71b.chunk.js.map} +1 -1
- package/frontend/build/static/js/main.b42b0a2a.js +115 -0
- package/frontend/build/static/js/{main.4a12038d.js.LICENSE.txt → main.b42b0a2a.js.LICENSE.txt} +12 -27
- package/frontend/build/static/js/{main.4a12038d.js.map → main.b42b0a2a.js.map} +1 -1
- package/frontend/build/static/media/roboto-cyrillic-300-normal.44340549d94d10899346.woff +0 -0
- package/frontend/build/static/media/roboto-cyrillic-300-normal.89d0351bce4bc857dba6.woff2 +0 -0
- package/frontend/build/static/media/roboto-cyrillic-400-normal.86d5c52f4588f9f221d7.woff2 +0 -0
- package/frontend/build/static/media/roboto-cyrillic-400-normal.d67ac585bb6a05dbf71c.woff +0 -0
- package/frontend/build/static/media/roboto-cyrillic-500-normal.1fb2c6d685bfb888cfa3.woff2 +0 -0
- package/frontend/build/static/media/roboto-cyrillic-500-normal.36f79cc7e73a69da4438.woff +0 -0
- package/frontend/build/static/media/roboto-cyrillic-700-normal.e00802373a2c2db6b30d.woff +0 -0
- package/frontend/build/static/media/roboto-cyrillic-700-normal.fd3dfdd6cb1a9175b63d.woff2 +0 -0
- package/frontend/build/static/media/roboto-cyrillic-ext-300-normal.a80c0d0719b1acb8f731.woff +0 -0
- package/frontend/build/static/media/roboto-cyrillic-ext-300-normal.b9d87b04a9119d8d2fdf.woff2 +0 -0
- package/frontend/build/static/media/roboto-cyrillic-ext-400-normal.31476620b88eec076438.woff2 +0 -0
- package/frontend/build/static/media/roboto-cyrillic-ext-400-normal.5e3f232f89080810567d.woff +0 -0
- package/frontend/build/static/media/roboto-cyrillic-ext-500-normal.634ee2238bf30f362d52.woff2 +0 -0
- package/frontend/build/static/media/roboto-cyrillic-ext-500-normal.d6c661248da2fde17768.woff +0 -0
- package/frontend/build/static/media/roboto-cyrillic-ext-700-normal.361cdfd3a3f9c4bb09ca.woff2 +0 -0
- package/frontend/build/static/media/roboto-cyrillic-ext-700-normal.6b08bc756cd72f5af9e8.woff +0 -0
- package/frontend/build/static/media/roboto-greek-300-normal.8300b541aa89b8301a6f.woff +0 -0
- package/frontend/build/static/media/roboto-greek-300-normal.fdd1f928a606aa116a44.woff2 +0 -0
- package/frontend/build/static/media/roboto-greek-400-normal.98a717d5a38e77c0f657.woff2 +0 -0
- package/frontend/build/static/media/roboto-greek-400-normal.ecd8572d631f20ff5bd5.woff +0 -0
- package/frontend/build/static/media/roboto-greek-500-normal.4fe733bc436afc295c24.woff +0 -0
- package/frontend/build/static/media/roboto-greek-500-normal.5c8100481d4e784afbf2.woff2 +0 -0
- package/frontend/build/static/media/roboto-greek-700-normal.d23e03cf87ba44e5af6f.woff +0 -0
- package/frontend/build/static/media/roboto-greek-700-normal.d7dfd0b02cd8311e2a97.woff2 +0 -0
- package/frontend/build/static/media/roboto-greek-ext-300-normal.60729cafbded24073dfb.woff +0 -0
- package/frontend/build/static/media/roboto-greek-ext-300-normal.a88b77bb10633a8045e3.woff2 +0 -0
- package/frontend/build/static/media/roboto-greek-ext-400-normal.2d5875b032a1cca91eb2.woff2 +0 -0
- package/frontend/build/static/media/roboto-greek-ext-400-normal.a0baf7d6726d8f751a27.woff +0 -0
- package/frontend/build/static/media/roboto-greek-ext-500-normal.1964239c2800b6bd7e39.woff +0 -0
- package/frontend/build/static/media/roboto-greek-ext-500-normal.bef9c15c7164d6435aad.woff2 +0 -0
- package/frontend/build/static/media/roboto-greek-ext-700-normal.1aff9f4cd71608489b9a.woff +0 -0
- package/frontend/build/static/media/roboto-greek-ext-700-normal.eb28a447335ba6d54fcb.woff2 +0 -0
- package/frontend/build/static/media/roboto-latin-300-normal.cb14f8e80cc69ddbac34.woff +0 -0
- package/frontend/build/static/media/roboto-latin-300-normal.db56943a88e4852343ae.woff2 +0 -0
- package/frontend/build/static/media/roboto-latin-400-normal.50a0a61e29c19a2f05cb.woff +0 -0
- package/frontend/build/static/media/roboto-latin-400-normal.df1be0be92f6f19b8115.woff2 +0 -0
- package/frontend/build/static/media/roboto-latin-500-normal.599f66a60bdf974e578e.woff2 +0 -0
- package/frontend/build/static/media/roboto-latin-500-normal.c320def131b39bceabd8.woff +0 -0
- package/frontend/build/static/media/roboto-latin-700-normal.bcfbe8accc968a375a8e.woff +0 -0
- package/frontend/build/static/media/roboto-latin-700-normal.c4d6cab43bec89049809.woff2 +0 -0
- package/frontend/build/static/media/roboto-latin-ext-300-normal.6ddd1cfdbc5e74bcdab8.woff +0 -0
- package/frontend/build/static/media/roboto-latin-ext-300-normal.948c05192b1e64d931b1.woff2 +0 -0
- package/frontend/build/static/media/roboto-latin-ext-400-normal.0f86a30ca7e981fcfc99.woff2 +0 -0
- package/frontend/build/static/media/roboto-latin-ext-400-normal.2bfbba2d51a85c8702dd.woff +0 -0
- package/frontend/build/static/media/roboto-latin-ext-500-normal.8f02573e78730021ef49.woff2 +0 -0
- package/frontend/build/static/media/roboto-latin-ext-500-normal.aecaab4c4da2bf91377a.woff +0 -0
- package/frontend/build/static/media/roboto-latin-ext-700-normal.2d3c3ba6fe2d9c1026a5.woff +0 -0
- package/frontend/build/static/media/roboto-latin-ext-700-normal.8e656eff240311c6050a.woff2 +0 -0
- package/frontend/build/static/media/roboto-math-300-normal.90364ecfad5101ceb1a0.woff +0 -0
- package/frontend/build/static/media/roboto-math-300-normal.acc9c7c1d1fe3a1c7d44.woff2 +0 -0
- package/frontend/build/static/media/roboto-math-400-normal.3d3a272e5233c5fb1969.woff +0 -0
- package/frontend/build/static/media/roboto-math-400-normal.b60d9fba1e21da7497e6.woff2 +0 -0
- package/frontend/build/static/media/roboto-math-500-normal.41db483cb764343fca71.woff2 +0 -0
- package/frontend/build/static/media/roboto-math-500-normal.c3014a611cd9d8fa6252.woff +0 -0
- package/frontend/build/static/media/roboto-math-700-normal.a6fde3ddcb1629fd58b7.woff +0 -0
- package/frontend/build/static/media/roboto-math-700-normal.f6f4b54add6ab9d60a0f.woff2 +0 -0
- package/frontend/build/static/media/roboto-symbols-300-normal.52cdf8344b378f0c4580.woff +0 -0
- package/frontend/build/static/media/roboto-symbols-300-normal.616638ec44336b3da884.woff2 +0 -0
- package/frontend/build/static/media/roboto-symbols-400-normal.bb5b5d1459beb07bd3d5.woff2 +0 -0
- package/frontend/build/static/media/roboto-symbols-400-normal.f4f7e3bd8264f1a640cb.woff +0 -0
- package/frontend/build/static/media/roboto-symbols-500-normal.09b674875029289fd9a7.woff +0 -0
- package/frontend/build/static/media/roboto-symbols-500-normal.a5457b0ec984fd4cc8da.woff2 +0 -0
- package/frontend/build/static/media/roboto-symbols-700-normal.017e476ef02f62144169.woff +0 -0
- package/frontend/build/static/media/roboto-symbols-700-normal.634070e045ac99822c21.woff2 +0 -0
- package/frontend/build/static/media/roboto-vietnamese-300-normal.53f399e4522b647bafa7.woff +0 -0
- package/frontend/build/static/media/roboto-vietnamese-300-normal.6f0bf63e956c09377ef8.woff2 +0 -0
- package/frontend/build/static/media/roboto-vietnamese-400-normal.1cffe58e71a9109191a2.woff +0 -0
- package/frontend/build/static/media/roboto-vietnamese-400-normal.b1b8baa94fbcaa57d098.woff2 +0 -0
- package/frontend/build/static/media/roboto-vietnamese-500-normal.148734d63bd96c6e964f.woff2 +0 -0
- package/frontend/build/static/media/roboto-vietnamese-500-normal.72dbf2a25dd55b80b137.woff +0 -0
- package/frontend/build/static/media/roboto-vietnamese-700-normal.44a103f706f3ffe6a041.woff2 +0 -0
- package/frontend/build/static/media/roboto-vietnamese-700-normal.fa58a041a3336692af1e.woff +0 -0
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -2
- package/dist/cli.d.ts +0 -29
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/cluster/export.d.ts +0 -2
- package/dist/cluster/export.d.ts.map +0 -1
- package/dist/cluster/export.js.map +0 -1
- package/dist/defaultConfigSchema.d.ts +0 -27
- package/dist/defaultConfigSchema.d.ts.map +0 -1
- package/dist/defaultConfigSchema.js.map +0 -1
- package/dist/deviceManager.d.ts +0 -114
- package/dist/deviceManager.d.ts.map +0 -1
- package/dist/deviceManager.js.map +0 -1
- package/dist/frontend.d.ts +0 -221
- package/dist/frontend.d.ts.map +0 -1
- package/dist/frontend.js.map +0 -1
- package/dist/index.d.ts +0 -35
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/logger/export.d.ts +0 -2
- package/dist/logger/export.d.ts.map +0 -1
- package/dist/logger/export.js.map +0 -1
- package/dist/matter/behaviors.d.ts +0 -2
- package/dist/matter/behaviors.d.ts.map +0 -1
- package/dist/matter/behaviors.js.map +0 -1
- package/dist/matter/clusters.d.ts +0 -2
- package/dist/matter/clusters.d.ts.map +0 -1
- package/dist/matter/clusters.js.map +0 -1
- package/dist/matter/devices.d.ts +0 -2
- package/dist/matter/devices.d.ts.map +0 -1
- package/dist/matter/devices.js.map +0 -1
- package/dist/matter/endpoints.d.ts +0 -2
- package/dist/matter/endpoints.d.ts.map +0 -1
- package/dist/matter/endpoints.js.map +0 -1
- package/dist/matter/export.d.ts +0 -5
- package/dist/matter/export.d.ts.map +0 -1
- package/dist/matter/export.js.map +0 -1
- package/dist/matter/types.d.ts +0 -3
- package/dist/matter/types.d.ts.map +0 -1
- package/dist/matter/types.js.map +0 -1
- package/dist/matterbridge.d.ts +0 -422
- package/dist/matterbridge.d.ts.map +0 -1
- package/dist/matterbridge.js.map +0 -1
- package/dist/matterbridgeAccessoryPlatform.d.ts +0 -39
- package/dist/matterbridgeAccessoryPlatform.d.ts.map +0 -1
- package/dist/matterbridgeAccessoryPlatform.js.map +0 -1
- package/dist/matterbridgeBehaviors.d.ts +0 -1056
- package/dist/matterbridgeBehaviors.d.ts.map +0 -1
- package/dist/matterbridgeBehaviors.js.map +0 -1
- package/dist/matterbridgeDeviceTypes.d.ts +0 -177
- package/dist/matterbridgeDeviceTypes.d.ts.map +0 -1
- package/dist/matterbridgeDeviceTypes.js.map +0 -1
- package/dist/matterbridgeDynamicPlatform.d.ts +0 -39
- package/dist/matterbridgeDynamicPlatform.d.ts.map +0 -1
- package/dist/matterbridgeDynamicPlatform.js.map +0 -1
- package/dist/matterbridgeEndpoint.d.ts +0 -835
- package/dist/matterbridgeEndpoint.d.ts.map +0 -1
- package/dist/matterbridgeEndpoint.js.map +0 -1
- package/dist/matterbridgeEndpointHelpers.d.ts +0 -2275
- package/dist/matterbridgeEndpointHelpers.d.ts.map +0 -1
- package/dist/matterbridgeEndpointHelpers.js.map +0 -1
- package/dist/matterbridgePlatform.d.ts +0 -251
- package/dist/matterbridgePlatform.d.ts.map +0 -1
- package/dist/matterbridgePlatform.js.map +0 -1
- package/dist/matterbridgeTypes.d.ts +0 -178
- package/dist/matterbridgeTypes.d.ts.map +0 -1
- package/dist/matterbridgeTypes.js.map +0 -1
- package/dist/pluginManager.d.ts +0 -236
- package/dist/pluginManager.d.ts.map +0 -1
- package/dist/pluginManager.js.map +0 -1
- package/dist/shelly.d.ts +0 -77
- package/dist/shelly.d.ts.map +0 -1
- package/dist/shelly.js.map +0 -1
- package/dist/storage/export.d.ts +0 -2
- package/dist/storage/export.d.ts.map +0 -1
- package/dist/storage/export.js.map +0 -1
- package/dist/update.d.ts +0 -32
- package/dist/update.d.ts.map +0 -1
- package/dist/update.js.map +0 -1
- package/dist/utils/colorUtils.d.ts +0 -61
- package/dist/utils/colorUtils.d.ts.map +0 -1
- package/dist/utils/colorUtils.js.map +0 -1
- package/dist/utils/copyDirectory.d.ts +0 -32
- package/dist/utils/copyDirectory.d.ts.map +0 -1
- package/dist/utils/copyDirectory.js.map +0 -1
- package/dist/utils/createZip.d.ts +0 -38
- package/dist/utils/createZip.d.ts.map +0 -1
- package/dist/utils/createZip.js.map +0 -1
- package/dist/utils/deepCopy.d.ts +0 -31
- package/dist/utils/deepCopy.d.ts.map +0 -1
- package/dist/utils/deepCopy.js.map +0 -1
- package/dist/utils/deepEqual.d.ts +0 -53
- package/dist/utils/deepEqual.d.ts.map +0 -1
- package/dist/utils/deepEqual.js.map +0 -1
- package/dist/utils/export.d.ts +0 -10
- package/dist/utils/export.d.ts.map +0 -1
- package/dist/utils/export.js.map +0 -1
- package/dist/utils/isvalid.d.ts +0 -87
- package/dist/utils/isvalid.d.ts.map +0 -1
- package/dist/utils/isvalid.js.map +0 -1
- package/dist/utils/network.d.ts +0 -70
- package/dist/utils/network.d.ts.map +0 -1
- package/dist/utils/network.js.map +0 -1
- package/dist/utils/parameter.d.ts +0 -44
- package/dist/utils/parameter.d.ts.map +0 -1
- package/dist/utils/parameter.js.map +0 -1
- package/dist/utils/wait.d.ts +0 -43
- package/dist/utils/wait.d.ts.map +0 -1
- package/dist/utils/wait.js.map +0 -1
- package/frontend/build/static/css/main.e52977d6.css +0 -2
- package/frontend/build/static/css/main.e52977d6.css.map +0 -1
- package/frontend/build/static/js/453.abd36b29.chunk.js +0 -2
- package/frontend/build/static/js/main.4a12038d.js +0 -115
- package/frontend/build/static/media/roboto-cyrillic-300-normal.1b79538ccd585c259996.woff2 +0 -0
- package/frontend/build/static/media/roboto-cyrillic-300-normal.5f077fd7b977d1715acf.woff +0 -0
- package/frontend/build/static/media/roboto-cyrillic-400-normal.5d2930082227d172f62c.woff +0 -0
- package/frontend/build/static/media/roboto-cyrillic-400-normal.a9e19870cf6c4b973427.woff2 +0 -0
- package/frontend/build/static/media/roboto-cyrillic-500-normal.0ae2428323939af5e1ad.woff2 +0 -0
- package/frontend/build/static/media/roboto-cyrillic-500-normal.dd7bc8a52c6c70c5a3f5.woff +0 -0
- package/frontend/build/static/media/roboto-cyrillic-700-normal.3f6e1548bd5175a8c342.woff +0 -0
- package/frontend/build/static/media/roboto-cyrillic-700-normal.4fdfc29a10e7d4b7c527.woff2 +0 -0
- package/frontend/build/static/media/roboto-cyrillic-ext-300-normal.795dbc8140e3fef82983.woff +0 -0
- package/frontend/build/static/media/roboto-cyrillic-ext-300-normal.80947a31d23c70204b47.woff2 +0 -0
- package/frontend/build/static/media/roboto-cyrillic-ext-400-normal.135d076fa32aa0b4d105.woff +0 -0
- package/frontend/build/static/media/roboto-cyrillic-ext-400-normal.5cec61a21cc20180fbe1.woff2 +0 -0
- package/frontend/build/static/media/roboto-cyrillic-ext-500-normal.6de16332fda843a3dc3d.woff2 +0 -0
- package/frontend/build/static/media/roboto-cyrillic-ext-500-normal.c0a0638f90b31d6454ba.woff +0 -0
- package/frontend/build/static/media/roboto-cyrillic-ext-700-normal.4750292c47fa2bc6ac1a.woff2 +0 -0
- package/frontend/build/static/media/roboto-cyrillic-ext-700-normal.ca247189fc12d00de361.woff +0 -0
- package/frontend/build/static/media/roboto-greek-300-normal.285f3e6261d8eb20417d.woff2 +0 -0
- package/frontend/build/static/media/roboto-greek-300-normal.889beddda1c9bd9f97df.woff +0 -0
- package/frontend/build/static/media/roboto-greek-400-normal.160a791a8e4f46bca3cc.woff +0 -0
- package/frontend/build/static/media/roboto-greek-400-normal.2c32b1315be61477013a.woff2 +0 -0
- package/frontend/build/static/media/roboto-greek-500-normal.60810e07c7b0273013aa.woff +0 -0
- package/frontend/build/static/media/roboto-greek-500-normal.f95e757c5483310f9c11.woff2 +0 -0
- package/frontend/build/static/media/roboto-greek-700-normal.77dd370f2001e184ba0d.woff2 +0 -0
- package/frontend/build/static/media/roboto-greek-700-normal.df87b053fae3d7ad5f7a.woff +0 -0
- package/frontend/build/static/media/roboto-greek-ext-300-normal.b590dbe5c639944366d1.woff +0 -0
- package/frontend/build/static/media/roboto-greek-ext-300-normal.d6049cb54aa6fbe14c42.woff2 +0 -0
- package/frontend/build/static/media/roboto-greek-ext-400-normal.16eb83b4a3b1ea994243.woff +0 -0
- package/frontend/build/static/media/roboto-greek-ext-400-normal.1df4abad55796d11a0c8.woff2 +0 -0
- package/frontend/build/static/media/roboto-greek-ext-500-normal.4a96ba31abcce0f5d52b.woff2 +0 -0
- package/frontend/build/static/media/roboto-greek-ext-500-normal.fd28d9c008bf3af1bed7.woff +0 -0
- package/frontend/build/static/media/roboto-greek-ext-700-normal.2dd6febad11502dec6a6.woff2 +0 -0
- package/frontend/build/static/media/roboto-greek-ext-700-normal.4abdc9fff4507f17d726.woff +0 -0
- package/frontend/build/static/media/roboto-latin-300-normal.b850f1ff581ea232fac9.woff2 +0 -0
- package/frontend/build/static/media/roboto-latin-300-normal.c4bc0593c9954d79cb3a.woff +0 -0
- package/frontend/build/static/media/roboto-latin-400-normal.047a7839f69b209db815.woff +0 -0
- package/frontend/build/static/media/roboto-latin-400-normal.297d48e1b5a10c0831a9.woff2 +0 -0
- package/frontend/build/static/media/roboto-latin-500-normal.68d40d6d01c6f85d24ba.woff +0 -0
- package/frontend/build/static/media/roboto-latin-500-normal.7077203b1982951ecf76.woff2 +0 -0
- package/frontend/build/static/media/roboto-latin-700-normal.4535474e1cf8598695ad.woff2 +0 -0
- package/frontend/build/static/media/roboto-latin-700-normal.9f6a16a7770c87b2042b.woff +0 -0
- package/frontend/build/static/media/roboto-latin-ext-300-normal.14982a9e4857a93b6dce.woff +0 -0
- package/frontend/build/static/media/roboto-latin-ext-300-normal.97cbc447d4a8d41a9543.woff2 +0 -0
- package/frontend/build/static/media/roboto-latin-ext-400-normal.27da5b36b6d3a16f53f4.woff +0 -0
- package/frontend/build/static/media/roboto-latin-ext-400-normal.2eeae187764baf05867d.woff2 +0 -0
- package/frontend/build/static/media/roboto-latin-ext-500-normal.06c30711d588145a4541.woff +0 -0
- package/frontend/build/static/media/roboto-latin-ext-500-normal.9a18d7bb9ff7a6af7b32.woff2 +0 -0
- package/frontend/build/static/media/roboto-latin-ext-700-normal.18841836e391d39e83a8.woff2 +0 -0
- package/frontend/build/static/media/roboto-latin-ext-700-normal.3c5bcdd0e69c4c3ffafe.woff +0 -0
- package/frontend/build/static/media/roboto-vietnamese-300-normal.c96b16e5c05c7b7c3e89.woff2 +0 -0
- package/frontend/build/static/media/roboto-vietnamese-300-normal.f5e7cea32756dfe7af40.woff +0 -0
- package/frontend/build/static/media/roboto-vietnamese-400-normal.0dc97c66f9b542d6fa17.woff +0 -0
- package/frontend/build/static/media/roboto-vietnamese-400-normal.d3f8e26d6c27de8102b6.woff2 +0 -0
- package/frontend/build/static/media/roboto-vietnamese-500-normal.090fabef926bdc0e9b9f.woff2 +0 -0
- package/frontend/build/static/media/roboto-vietnamese-500-normal.23b7b8a2524d2d4b637b.woff +0 -0
- package/frontend/build/static/media/roboto-vietnamese-700-normal.0a79a9fabfc32e33f360.woff2 +0 -0
- package/frontend/build/static/media/roboto-vietnamese-700-normal.35ed0597568ff6f19c16.woff +0 -0
|
@@ -1,36 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file contains the class MatterbridgeEndpoint that extends the Endpoint class from the Matter.js library.
|
|
3
|
-
*
|
|
4
|
-
* @file matterbridgeEndpoint.ts
|
|
5
|
-
* @author Luca Liguori
|
|
6
|
-
* @date 2024-10-01
|
|
7
|
-
* @version 2.0.0
|
|
8
|
-
*
|
|
9
|
-
* Copyright 2024, 2025, 2026 Luca Liguori.
|
|
10
|
-
*
|
|
11
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
-
* you may not use this file except in compliance with the License.
|
|
13
|
-
* You may obtain a copy of the License at
|
|
14
|
-
*
|
|
15
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
-
*
|
|
17
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
-
* See the License for the specific language governing permissions and
|
|
21
|
-
* limitations under the License. *
|
|
22
|
-
*/
|
|
23
|
-
// AnsiLogger module
|
|
24
1
|
import { AnsiLogger, BLUE, CYAN, YELLOW, db, debugStringify, er, hk, or, zb } from './logger/export.js';
|
|
25
|
-
// Matterbridge
|
|
26
2
|
import { bridgedNode } from './matterbridgeDeviceTypes.js';
|
|
27
3
|
import { isValidNumber, isValidObject } from './utils/export.js';
|
|
28
4
|
import { MatterbridgeBehavior, MatterbridgeBehaviorDevice, MatterbridgeIdentifyServer, MatterbridgeOnOffServer, MatterbridgeLevelControlServer, MatterbridgeColorControlServer, MatterbridgeWindowCoveringServer, MatterbridgeThermostatServer, MatterbridgeFanControlServer, MatterbridgeDoorLockServer, MatterbridgeModeSelectServer, MatterbridgeValveConfigurationAndControlServer, MatterbridgeSmokeCoAlarmServer, MatterbridgeBooleanStateConfigurationServer, MatterbridgeSwitchServer, } from './matterbridgeBehaviors.js';
|
|
29
5
|
import { addClusterServers, addFixedLabel, addOptionalClusterServers, addRequiredClusterServers, addUserLabel, capitalizeFirstLetter, createUniqueId, getBehavior, getBehaviourTypesFromClusterClientIds, getBehaviourTypesFromClusterServerIds, getDefaultFlowMeasurementClusterServer, getDefaultIlluminanceMeasurementClusterServer, getDefaultPressureMeasurementClusterServer, getDefaultRelativeHumidityMeasurementClusterServer, getDefaultTemperatureMeasurementClusterServer, getDefaultOccupancySensingClusterServer, lowercaseFirstLetter, updateAttribute, getClusterId, getAttributeId, setAttribute, getAttribute, checkNotLatinCharacters, generateUniqueId, subscribeAttribute, } from './matterbridgeEndpointHelpers.js';
|
|
30
|
-
// @matter
|
|
31
6
|
import { Endpoint, Lifecycle, MutableEndpoint, NamedHandler, SupportedBehaviors, VendorId } from '@matter/main';
|
|
32
7
|
import { getClusterNameById, MeasurementType } from '@matter/main/types';
|
|
33
|
-
// @matter clusters
|
|
34
8
|
import { Descriptor } from '@matter/main/clusters/descriptor';
|
|
35
9
|
import { PowerSource } from '@matter/main/clusters/power-source';
|
|
36
10
|
import { BridgedDeviceBasicInformation } from '@matter/main/clusters/bridged-device-basic-information';
|
|
@@ -52,7 +26,6 @@ import { ElectricalPowerMeasurement } from '@matter/main/clusters/electrical-pow
|
|
|
52
26
|
import { ElectricalEnergyMeasurement } from '@matter/main/clusters/electrical-energy-measurement';
|
|
53
27
|
import { AirQuality } from '@matter/main/clusters/air-quality';
|
|
54
28
|
import { ConcentrationMeasurement } from '@matter/main/clusters/concentration-measurement';
|
|
55
|
-
// @matter behaviors
|
|
56
29
|
import { DescriptorServer } from '@matter/main/behaviors/descriptor';
|
|
57
30
|
import { PowerSourceServer } from '@matter/main/behaviors/power-source';
|
|
58
31
|
import { BridgedDeviceBasicInformationServer } from '@matter/main/behaviors/bridged-device-basic-information';
|
|
@@ -83,7 +56,7 @@ import { RadonConcentrationMeasurementServer } from '@matter/main/behaviors/rado
|
|
|
83
56
|
import { TotalVolatileOrganicCompoundsConcentrationMeasurementServer } from '@matter/main/behaviors/total-volatile-organic-compounds-concentration-measurement';
|
|
84
57
|
export class MatterbridgeEndpoint extends Endpoint {
|
|
85
58
|
static bridgeMode = '';
|
|
86
|
-
static logLevel = "info"
|
|
59
|
+
static logLevel = "info";
|
|
87
60
|
log;
|
|
88
61
|
plugin = undefined;
|
|
89
62
|
configUrl = undefined;
|
|
@@ -99,25 +72,14 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
99
72
|
hardwareVersion = undefined;
|
|
100
73
|
hardwareVersionString = undefined;
|
|
101
74
|
productUrl = 'https://www.npmjs.com/package/matterbridge';
|
|
102
|
-
// The first device type of the endpoint
|
|
103
75
|
name = undefined;
|
|
104
76
|
deviceType;
|
|
105
77
|
uniqueStorageKey = undefined;
|
|
106
78
|
tagList = undefined;
|
|
107
|
-
// Maps matter deviceTypes
|
|
108
79
|
deviceTypes = new Map();
|
|
109
|
-
// Command handler
|
|
110
80
|
commandHandler = new NamedHandler();
|
|
111
|
-
/**
|
|
112
|
-
* Represents a MatterbridgeEndpoint.
|
|
113
|
-
* @constructor
|
|
114
|
-
* @param {DeviceTypeDefinition | AtLeastOne<DeviceTypeDefinition>} definition - The DeviceTypeDefinition(s) of the endpoint.
|
|
115
|
-
* @param {MatterbridgeEndpointOptions} [options={}] - The options for the device.
|
|
116
|
-
* @param {boolean} [debug=false] - Debug flag.
|
|
117
|
-
*/
|
|
118
81
|
constructor(definition, options = {}, debug = false) {
|
|
119
82
|
let deviceTypeList = [];
|
|
120
|
-
// Get the first DeviceTypeDefinition
|
|
121
83
|
let firstDefinition;
|
|
122
84
|
if (Array.isArray(definition)) {
|
|
123
85
|
firstDefinition = definition[0];
|
|
@@ -130,7 +92,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
130
92
|
firstDefinition = definition;
|
|
131
93
|
deviceTypeList = [{ deviceType: firstDefinition.code, revision: firstDefinition.revision }];
|
|
132
94
|
}
|
|
133
|
-
// Convert the first DeviceTypeDefinition to an EndpointType.Options
|
|
134
95
|
const deviceTypeDefinitionV8 = {
|
|
135
96
|
name: firstDefinition.name.replace('-', '_'),
|
|
136
97
|
deviceType: firstDefinition.code,
|
|
@@ -149,11 +110,9 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
149
110
|
behaviors: options.tagList ? SupportedBehaviors(DescriptorServer.with(Descriptor.Feature.TagList)) : {},
|
|
150
111
|
};
|
|
151
112
|
const endpointV8 = MutableEndpoint(deviceTypeDefinitionV8);
|
|
152
|
-
// Check if the uniqueStorageKey is valid
|
|
153
113
|
if (options.uniqueStorageKey && checkNotLatinCharacters(options.uniqueStorageKey)) {
|
|
154
114
|
options.uniqueStorageKey = generateUniqueId(options.uniqueStorageKey);
|
|
155
115
|
}
|
|
156
|
-
// Convert the options to an Endpoint.Options
|
|
157
116
|
const optionsV8 = {
|
|
158
117
|
id: options.uniqueStorageKey?.replace(/[ .]/g, ''),
|
|
159
118
|
number: options.endpointId,
|
|
@@ -171,41 +130,17 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
171
130
|
}
|
|
172
131
|
else
|
|
173
132
|
this.deviceTypes.set(firstDefinition.code, firstDefinition);
|
|
174
|
-
|
|
175
|
-
// console.log('MatterbridgeEndpoint.endpointV8', endpointV8);
|
|
176
|
-
// console.log('MatterbridgeEndpoint.optionsV8', optionsV8);
|
|
177
|
-
// Create the logger
|
|
178
|
-
this.log = new AnsiLogger({ logName: options.uniqueStorageKey ?? 'MatterbridgeEndpoint', logTimestampFormat: 4 /* TimestampFormat.TIME_MILLIS */, logLevel: debug === true ? "debug" /* LogLevel.DEBUG */ : MatterbridgeEndpoint.logLevel });
|
|
133
|
+
this.log = new AnsiLogger({ logName: options.uniqueStorageKey ?? 'MatterbridgeEndpoint', logTimestampFormat: 4, logLevel: debug === true ? "debug" : MatterbridgeEndpoint.logLevel });
|
|
179
134
|
this.log.debug(`${YELLOW}new${db} MatterbridgeEndpoint: ${zb}${'0x' + firstDefinition.code.toString(16).padStart(4, '0')}${db}-${zb}${firstDefinition.name}${db} ` +
|
|
180
135
|
`id: ${CYAN}${options.uniqueStorageKey}${db} number: ${CYAN}${options.endpointId}${db} taglist: ${CYAN}${options.tagList ? debugStringify(options.tagList) : 'undefined'}${db}`);
|
|
181
|
-
// Add MatterbridgeBehavior with MatterbridgeBehaviorDevice
|
|
182
136
|
this.behaviors.require(MatterbridgeBehavior, { deviceCommand: new MatterbridgeBehaviorDevice(this.log, this.commandHandler, undefined) });
|
|
183
137
|
}
|
|
184
|
-
/**
|
|
185
|
-
* Loads an instance of the MatterbridgeEndpoint class.
|
|
186
|
-
*
|
|
187
|
-
* @param {DeviceTypeDefinition | AtLeastOne<DeviceTypeDefinition>} definition - The DeviceTypeDefinition(s) of the device.
|
|
188
|
-
* @param {MatterbridgeEndpointOptions} [options={}] - The options for the device.
|
|
189
|
-
* @param {boolean} [debug=false] - Debug flag.
|
|
190
|
-
* @returns {Promise<MatterbridgeEndpoint>} MatterbridgeEndpoint instance.
|
|
191
|
-
*/
|
|
192
138
|
static async loadInstance(definition, options = {}, debug = false) {
|
|
193
139
|
return new MatterbridgeEndpoint(definition, options, debug);
|
|
194
140
|
}
|
|
195
|
-
/**
|
|
196
|
-
* Get all the device types of this endpoint.
|
|
197
|
-
*
|
|
198
|
-
* @returns {DeviceTypeDefinition[]} The device types of this endpoint.
|
|
199
|
-
*/
|
|
200
141
|
getDeviceTypes() {
|
|
201
142
|
return Array.from(this.deviceTypes.values());
|
|
202
143
|
}
|
|
203
|
-
/**
|
|
204
|
-
* Checks if the provided cluster server is supported by this endpoint.
|
|
205
|
-
*
|
|
206
|
-
* @param {Behavior.Type | ClusterType | ClusterId | string} cluster - The cluster to check.
|
|
207
|
-
* @returns {boolean} True if the cluster server is supported, false otherwise.
|
|
208
|
-
*/
|
|
209
144
|
hasClusterServer(cluster) {
|
|
210
145
|
const behavior = getBehavior(this, cluster);
|
|
211
146
|
if (behavior)
|
|
@@ -213,13 +148,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
213
148
|
else
|
|
214
149
|
return false;
|
|
215
150
|
}
|
|
216
|
-
/**
|
|
217
|
-
* Checks if the provided attribute server is supported for a given cluster of this endpoint.
|
|
218
|
-
*
|
|
219
|
-
* @param {Behavior.Type | ClusterType | ClusterId | string} cluster - The cluster to check.
|
|
220
|
-
* @param {string} attribute - The attribute name to check.
|
|
221
|
-
* @returns {boolean} True if the attribute server is supported, false otherwise.
|
|
222
|
-
*/
|
|
223
151
|
hasAttributeServer(cluster, attribute) {
|
|
224
152
|
const behavior = getBehavior(this, cluster);
|
|
225
153
|
if (!behavior || !this.behaviors.supported[behavior.id])
|
|
@@ -228,186 +156,72 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
228
156
|
const defaults = this.behaviors.defaultsFor(behavior);
|
|
229
157
|
return lowercaseFirstLetter(attribute) in options || lowercaseFirstLetter(attribute) in defaults;
|
|
230
158
|
}
|
|
231
|
-
/**
|
|
232
|
-
* Retrieves the initial options for the provided cluster server.
|
|
233
|
-
*
|
|
234
|
-
* @param {Behavior.Type | ClusterType | ClusterId | string} cluster - The cluster to get options for.
|
|
235
|
-
* @returns {Record<string, boolean | number | bigint | string | object | null> | undefined} The options for the provided cluster server, or undefined if the cluster is not supported.
|
|
236
|
-
*/
|
|
237
159
|
getClusterServerOptions(cluster) {
|
|
238
160
|
const behavior = getBehavior(this, cluster);
|
|
239
161
|
if (!behavior)
|
|
240
162
|
return undefined;
|
|
241
163
|
return this.behaviors.optionsFor(behavior);
|
|
242
164
|
}
|
|
243
|
-
/**
|
|
244
|
-
* Retrieves the value of the provided attribute from the given cluster.
|
|
245
|
-
*
|
|
246
|
-
* @param {Behavior.Type | ClusterType | ClusterId | string} cluster - The cluster to retrieve the attribute from.
|
|
247
|
-
* @param {string} attribute - The name of the attribute to retrieve.
|
|
248
|
-
* @param {AnsiLogger} [log] - Optional logger for error and info messages.
|
|
249
|
-
* @returns {any} The value of the attribute, or undefined if the attribute is not found.
|
|
250
|
-
*/
|
|
251
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
252
165
|
getAttribute(cluster, attribute, log) {
|
|
253
166
|
return getAttribute(this, cluster, attribute, log);
|
|
254
167
|
}
|
|
255
|
-
/**
|
|
256
|
-
* Sets the value of an attribute on a cluster server.
|
|
257
|
-
*
|
|
258
|
-
* @param {Behavior.Type | ClusterType | ClusterId | string} clusterId - The ID of the cluster.
|
|
259
|
-
* @param {string} attribute - The name of the attribute.
|
|
260
|
-
* @param {boolean | number | bigint | string | object | null} value - The value to set for the attribute.
|
|
261
|
-
* @param {AnsiLogger} [log] - (Optional) The logger to use for logging errors and information.
|
|
262
|
-
* @returns {Promise<boolean>} - A promise that resolves to a boolean indicating whether the attribute was successfully set.
|
|
263
|
-
*/
|
|
264
168
|
async setAttribute(clusterId, attribute, value, log) {
|
|
265
169
|
return await setAttribute(this, clusterId, attribute, value, log);
|
|
266
170
|
}
|
|
267
|
-
/**
|
|
268
|
-
* Update the value of an attribute on a cluster server only if the value is different.
|
|
269
|
-
*
|
|
270
|
-
* @param {Behavior.Type | ClusterType | ClusterId | string} cluster - The cluster to set the attribute on.
|
|
271
|
-
* @param {string} attribute - The name of the attribute.
|
|
272
|
-
* @param {boolean | number | bigint | string | object | null} value - The value to set for the attribute.
|
|
273
|
-
* @param {AnsiLogger} [log] - (Optional) The logger to use for logging the update. Errors are logged to the endpoint logger.
|
|
274
|
-
* @returns {Promise<boolean>} - A promise that resolves to a boolean indicating whether the attribute was successfully set.
|
|
275
|
-
*/
|
|
276
171
|
async updateAttribute(cluster, attribute, value, log) {
|
|
277
172
|
return await updateAttribute(this, cluster, attribute, value, log);
|
|
278
173
|
}
|
|
279
|
-
/**
|
|
280
|
-
* Subscribes to the provided attribute on a cluster.
|
|
281
|
-
*
|
|
282
|
-
* @param {Behavior.Type | ClusterType | ClusterId | string} cluster - The cluster to subscribe the attribute to.
|
|
283
|
-
* @param {string} attribute - The name of the attribute to subscribe to.
|
|
284
|
-
* @param {(newValue: any, oldValue: any) => void} listener - A callback function that will be called when the attribute value changes.
|
|
285
|
-
* @param {AnsiLogger} [log] - Optional logger for logging errors and information.
|
|
286
|
-
* @returns {Promise<boolean>} - A boolean indicating whether the subscription was successful.
|
|
287
|
-
*/
|
|
288
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
289
174
|
async subscribeAttribute(cluster, attribute, listener, log) {
|
|
290
175
|
return await subscribeAttribute(this, cluster, attribute, listener, log);
|
|
291
176
|
}
|
|
292
|
-
/**
|
|
293
|
-
* Triggers an event on the specified cluster.
|
|
294
|
-
*
|
|
295
|
-
* @param {ClusterId} clusterId - The ID of the cluster.
|
|
296
|
-
* @param {string} event - The name of the event to trigger.
|
|
297
|
-
* @param {Record<string, boolean | number | bigint | string | object | undefined | null>} payload - The payload to pass to the event.
|
|
298
|
-
* @param {AnsiLogger} [log] - Optional logger for logging information.
|
|
299
|
-
* @returns {Promise<boolean>} - A promise that resolves to a boolean indicating whether the event was successfully triggered.
|
|
300
|
-
*/
|
|
301
177
|
async triggerEvent(clusterId, event, payload, log) {
|
|
302
178
|
const clusterName = lowercaseFirstLetter(getClusterNameById(clusterId));
|
|
303
179
|
if (this.construction.status !== Lifecycle.Status.Active) {
|
|
304
180
|
this.log.error(`triggerEvent ${hk}${clusterName}.${event}${er} error: Endpoint ${or}${this.maybeId}${er}:${or}${this.maybeNumber}${er} is in the ${BLUE}${this.construction.status}${er} state`);
|
|
305
181
|
return false;
|
|
306
182
|
}
|
|
307
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
308
183
|
const events = this.events;
|
|
309
184
|
if (!(clusterName in events) || !(event in events[clusterName])) {
|
|
310
185
|
this.log.error(`triggerEvent ${hk}${event}${er} error: Cluster ${'0x' + clusterId.toString(16).padStart(4, '0')}:${clusterName} not found on endpoint ${or}${this.id}${er}:${or}${this.number}${er}`);
|
|
311
186
|
return false;
|
|
312
187
|
}
|
|
313
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
314
|
-
// @ts-ignore
|
|
315
188
|
await this.act((agent) => agent[clusterName].events[event].emit(payload, agent.context));
|
|
316
189
|
log?.info(`${db}Trigger event ${hk}${capitalizeFirstLetter(clusterName)}${db}.${hk}${event}${db} with ${debugStringify(payload)}${db} on endpoint ${or}${this.id}${db}:${or}${this.number}${db} `);
|
|
317
190
|
return true;
|
|
318
191
|
}
|
|
319
|
-
/**
|
|
320
|
-
* Adds cluster servers from the provided server list.
|
|
321
|
-
*
|
|
322
|
-
* @param {ClusterId[]} serverList - The list of cluster IDs to add.
|
|
323
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
324
|
-
*/
|
|
325
192
|
addClusterServers(serverList) {
|
|
326
193
|
addClusterServers(this, serverList);
|
|
327
194
|
return this;
|
|
328
195
|
}
|
|
329
|
-
/**
|
|
330
|
-
* Adds a fixed label to the FixedLabel cluster. If the cluster server is not present, it will be added.
|
|
331
|
-
*
|
|
332
|
-
* @param {string} label - The label to add.
|
|
333
|
-
* @param {string} value - The value of the label.
|
|
334
|
-
* @returns {Promise<this>} The current MatterbridgeEndpoint instance for chaining.
|
|
335
|
-
*/
|
|
336
196
|
async addFixedLabel(label, value) {
|
|
337
197
|
await addFixedLabel(this, label, value);
|
|
338
198
|
return this;
|
|
339
199
|
}
|
|
340
|
-
/**
|
|
341
|
-
* Adds a user label to the UserLabel cluster. If the cluster server is not present, it will be added.
|
|
342
|
-
*
|
|
343
|
-
* @param {string} label - The label to add.
|
|
344
|
-
* @param {string} value - The value of the label.
|
|
345
|
-
* @returns {Promise<this>} The current MatterbridgeEndpoint instance for chaining.
|
|
346
|
-
*/
|
|
347
200
|
async addUserLabel(label, value) {
|
|
348
201
|
await addUserLabel(this, label, value);
|
|
349
202
|
return this;
|
|
350
203
|
}
|
|
351
|
-
/**
|
|
352
|
-
* Adds a command handler for the specified command.
|
|
353
|
-
*
|
|
354
|
-
* @param {keyof MatterbridgeEndpointCommands} command - The command to add the handler for.
|
|
355
|
-
* @param {HandlerFunction} handler - The handler function to execute when the command is received.
|
|
356
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
357
|
-
*/
|
|
358
204
|
addCommandHandler(command, handler) {
|
|
359
205
|
this.commandHandler.addHandler(command, handler);
|
|
360
206
|
return this;
|
|
361
207
|
}
|
|
362
|
-
/**
|
|
363
|
-
* Execute the command handler for the specified command. Mainly used in Jest tests.
|
|
364
|
-
*
|
|
365
|
-
* @param {keyof MatterbridgeEndpointCommands} command - The command to execute.
|
|
366
|
-
* @param {Record<string, boolean | number | bigint | string | object | null>} request - The optional request to pass to the handler function.
|
|
367
|
-
* @returns {Promise<void>} A promise that resolves when the command handler has been executed
|
|
368
|
-
*/
|
|
369
208
|
async executeCommandHandler(command, request) {
|
|
370
209
|
await this.commandHandler.executeHandler(command, { request });
|
|
371
210
|
}
|
|
372
|
-
/**
|
|
373
|
-
* Adds the required cluster servers (only if they are not present) for the device types of the specified endpoint.
|
|
374
|
-
*
|
|
375
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
376
|
-
*/
|
|
377
211
|
addRequiredClusterServers() {
|
|
378
212
|
addRequiredClusterServers(this);
|
|
379
213
|
return this;
|
|
380
214
|
}
|
|
381
|
-
/**
|
|
382
|
-
* Adds the optional cluster servers (only if they are not present) for the device types of the specified endpoint.
|
|
383
|
-
*
|
|
384
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
385
|
-
*/
|
|
386
215
|
addOptionalClusterServers() {
|
|
387
216
|
addOptionalClusterServers(this);
|
|
388
217
|
return this;
|
|
389
218
|
}
|
|
390
|
-
/**
|
|
391
|
-
* Retrieves all cluster servers.
|
|
392
|
-
*
|
|
393
|
-
* @returns {Behavior.Type[]} An array of all cluster servers.
|
|
394
|
-
*/
|
|
395
219
|
getAllClusterServers() {
|
|
396
220
|
return Object.values(this.behaviors.supported);
|
|
397
221
|
}
|
|
398
|
-
/**
|
|
399
|
-
* Retrieves the names of all cluster servers.
|
|
400
|
-
*
|
|
401
|
-
* @returns {string[]} An array of all cluster server names.
|
|
402
|
-
*/
|
|
403
222
|
getAllClusterServerNames() {
|
|
404
223
|
return Object.keys(this.behaviors.supported);
|
|
405
224
|
}
|
|
406
|
-
/**
|
|
407
|
-
* Iterates over each attribute of each cluster server of the device state and calls the provided callback function.
|
|
408
|
-
*
|
|
409
|
-
* @param {Function} callback - The callback function to call with the cluster name, cluster id, attribute name, attribute id and attribute value.
|
|
410
|
-
*/
|
|
411
225
|
forEachAttribute(callback) {
|
|
412
226
|
if (!this.lifecycle.isReady || this.construction.status !== Lifecycle.Status.Active)
|
|
413
227
|
return;
|
|
@@ -415,34 +229,16 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
415
229
|
for (const [attributeName, attributeValue] of Object.entries(clusterAttributes)) {
|
|
416
230
|
const clusterId = getClusterId(this, clusterName);
|
|
417
231
|
if (clusterId === undefined) {
|
|
418
|
-
// this.log.error(`forEachAttribute error: cluster ${clusterName} not found`);
|
|
419
232
|
continue;
|
|
420
233
|
}
|
|
421
234
|
const attributeId = getAttributeId(this, clusterName, attributeName);
|
|
422
235
|
if (attributeId === undefined) {
|
|
423
|
-
// this.log.error(`forEachAttribute error: attribute ${clusterName}.${attributeName} not found`);
|
|
424
236
|
continue;
|
|
425
237
|
}
|
|
426
238
|
callback(clusterName, clusterId, attributeName, attributeId, attributeValue);
|
|
427
239
|
}
|
|
428
240
|
}
|
|
429
241
|
}
|
|
430
|
-
/**
|
|
431
|
-
* Adds a child endpoint with the specified device types and options.
|
|
432
|
-
* If the child endpoint is not already present, it will be created and added.
|
|
433
|
-
* If the child endpoint is already present, the existing child endpoint will be returned.
|
|
434
|
-
*
|
|
435
|
-
* @param {string} endpointName - The name of the new endpoint to add.
|
|
436
|
-
* @param {DeviceTypeDefinition | AtLeastOne<DeviceTypeDefinition>} definition - The device types to add.
|
|
437
|
-
* @param {MatterbridgeEndpointOptions} [options={}] - The options for the endpoint.
|
|
438
|
-
* @param {boolean} [debug=false] - Whether to enable debug logging.
|
|
439
|
-
* @returns {MatterbridgeEndpoint} - The child endpoint that was found or added.
|
|
440
|
-
*
|
|
441
|
-
* @example
|
|
442
|
-
* ```typescript
|
|
443
|
-
* const endpoint = device.addChildDeviceType('Temperature', [temperatureSensor], { tagList: [{ mfgCode: null, namespaceId: LocationTag.Indoor.namespaceId, tag: LocationTag.Indoor.tag, label: null }] }, true);
|
|
444
|
-
* ```
|
|
445
|
-
*/
|
|
446
242
|
addChildDeviceType(endpointName, definition, options = {}, debug = false) {
|
|
447
243
|
this.log.debug(`addChildDeviceType: ${CYAN}${endpointName}${db}`);
|
|
448
244
|
let alreadyAdded = false;
|
|
@@ -482,23 +278,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
482
278
|
}
|
|
483
279
|
return child;
|
|
484
280
|
}
|
|
485
|
-
/**
|
|
486
|
-
* Adds a child endpoint with one or more device types with the required cluster servers and the specified cluster servers.
|
|
487
|
-
* If the child endpoint is not already present in the childEndpoints, it will be added.
|
|
488
|
-
* If the child endpoint is already present in the childEndpoints, the device types and cluster servers will be added to the existing child endpoint.
|
|
489
|
-
*
|
|
490
|
-
* @param {string} endpointName - The name of the new enpoint to add.
|
|
491
|
-
* @param {DeviceTypeDefinition | AtLeastOne<DeviceTypeDefinition>} definition - The device types to add.
|
|
492
|
-
* @param {ClusterId[]} [serverList=[]] - The list of cluster IDs to include.
|
|
493
|
-
* @param {MatterbridgeEndpointOptions} [options={}] - The options for the device.
|
|
494
|
-
* @param {boolean} [debug=false] - Whether to enable debug logging.
|
|
495
|
-
* @returns {MatterbridgeEndpoint} - The child endpoint that was found or added.
|
|
496
|
-
*
|
|
497
|
-
* @example
|
|
498
|
-
* ```typescript
|
|
499
|
-
* const endpoint = device.addChildDeviceTypeWithClusterServer('Temperature', [temperatureSensor], [], { tagList: [{ mfgCode: null, namespaceId: LocationTag.Indoor.namespaceId, tag: LocationTag.Indoor.tag, label: null }] }, true);
|
|
500
|
-
* ```
|
|
501
|
-
*/
|
|
502
281
|
addChildDeviceTypeWithClusterServer(endpointName, definition, serverList = [], options = {}, debug = false) {
|
|
503
282
|
this.log.debug(`addChildDeviceTypeWithClusterServer: ${CYAN}${endpointName}${db}`);
|
|
504
283
|
let alreadyAdded = false;
|
|
@@ -561,38 +340,15 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
561
340
|
}
|
|
562
341
|
return child;
|
|
563
342
|
}
|
|
564
|
-
/**
|
|
565
|
-
* Retrieves a child endpoint by its name.
|
|
566
|
-
*
|
|
567
|
-
* @param {string} endpointName - The name of the endpoint to retrieve.
|
|
568
|
-
* @returns {Endpoint | undefined} The child endpoint with the specified name, or undefined if not found.
|
|
569
|
-
*/
|
|
570
343
|
getChildEndpointByName(endpointName) {
|
|
571
344
|
return this.parts.find((part) => part.id === endpointName);
|
|
572
345
|
}
|
|
573
|
-
/**
|
|
574
|
-
* Retrieves a child endpoint by its EndpointNumber.
|
|
575
|
-
*
|
|
576
|
-
* @param {EndpointNumber} endpointNumber - The EndpointNumber of the endpoint to retrieve.
|
|
577
|
-
* @returns {MatterbridgeEndpoint | undefined} The child endpoint with the specified EndpointNumber, or undefined if not found.
|
|
578
|
-
*/
|
|
579
346
|
getChildEndpoint(endpointNumber) {
|
|
580
347
|
return this.parts.find((part) => part.number === endpointNumber);
|
|
581
348
|
}
|
|
582
|
-
/**
|
|
583
|
-
* Get all the child endpoints of this endpoint.
|
|
584
|
-
*
|
|
585
|
-
* @returns {MatterbridgeEndpoint[]} The child endpoints.
|
|
586
|
-
*/
|
|
587
349
|
getChildEndpoints() {
|
|
588
350
|
return Array.from(this.parts);
|
|
589
351
|
}
|
|
590
|
-
/**
|
|
591
|
-
* Serializes the Matterbridge device into a serialized object.
|
|
592
|
-
*
|
|
593
|
-
* @param pluginName - The name of the plugin.
|
|
594
|
-
* @returns The serialized Matterbridge device object.
|
|
595
|
-
*/
|
|
596
352
|
static serialize(device) {
|
|
597
353
|
if (!device.serialNumber || !device.deviceName || !device.uniqueId)
|
|
598
354
|
return;
|
|
@@ -615,15 +371,9 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
615
371
|
serialized.clusterServersId.push(BridgedDeviceBasicInformation.Cluster.id);
|
|
616
372
|
if (behaviorName === 'powerSource')
|
|
617
373
|
serialized.clusterServersId.push(PowerSource.Cluster.id);
|
|
618
|
-
// serialized.clusterServersId.push(this.behaviors.supported[behaviorName]cluster.id);
|
|
619
374
|
});
|
|
620
375
|
return serialized;
|
|
621
376
|
}
|
|
622
|
-
/**
|
|
623
|
-
* Deserializes the device into a serialized object.
|
|
624
|
-
*
|
|
625
|
-
* @returns The deserialized MatterbridgeDevice.
|
|
626
|
-
*/
|
|
627
377
|
static deserialize(serializedDevice) {
|
|
628
378
|
const device = new MatterbridgeEndpoint(serializedDevice.deviceTypes, { uniqueStorageKey: serializedDevice.endpointName, endpointId: serializedDevice.endpoint }, false);
|
|
629
379
|
device.plugin = serializedDevice.pluginName;
|
|
@@ -639,16 +389,9 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
639
389
|
device.createDefaultBridgedDeviceBasicInformationClusterServer(serializedDevice.deviceName, serializedDevice.serialNumber, serializedDevice.vendorId ?? 0xfff1, serializedDevice.vendorName ?? 'Matterbridge', serializedDevice.productName ?? 'Matterbridge device');
|
|
640
390
|
else if (clusterId === PowerSource.Cluster.id)
|
|
641
391
|
device.createDefaultPowerSourceWiredClusterServer();
|
|
642
|
-
// else addClusterServerFromList(device, [clusterId]);
|
|
643
392
|
}
|
|
644
393
|
return device;
|
|
645
394
|
}
|
|
646
|
-
/**
|
|
647
|
-
* Creates a default power source wired cluster server.
|
|
648
|
-
*
|
|
649
|
-
* @param wiredCurrentType - The type of wired current (default: PowerSource.WiredCurrentType.Ac)
|
|
650
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
651
|
-
*/
|
|
652
395
|
createDefaultPowerSourceWiredClusterServer(wiredCurrentType = PowerSource.WiredCurrentType.Ac) {
|
|
653
396
|
this.behaviors.require(PowerSourceServer.with(PowerSource.Feature.Wired), {
|
|
654
397
|
wiredCurrentType,
|
|
@@ -659,16 +402,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
659
402
|
});
|
|
660
403
|
return this;
|
|
661
404
|
}
|
|
662
|
-
/**
|
|
663
|
-
* Creates a default power source replaceable battery cluster server.
|
|
664
|
-
*
|
|
665
|
-
* @param batPercentRemaining - The remaining battery percentage (default: 100).
|
|
666
|
-
* @param batChargeLevel - The battery charge level (default: PowerSource.BatChargeLevel.Ok).
|
|
667
|
-
* @param batVoltage - The battery voltage (default: 1500).
|
|
668
|
-
* @param batReplacementDescription - The battery replacement description (default: 'Battery type').
|
|
669
|
-
* @param batQuantity - The battery quantity (default: 1).
|
|
670
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
671
|
-
*/
|
|
672
405
|
createDefaultPowerSourceReplaceableBatteryClusterServer(batPercentRemaining = 100, batChargeLevel = PowerSource.BatChargeLevel.Ok, batVoltage = 1500, batReplacementDescription = 'Battery type', batQuantity = 1) {
|
|
673
406
|
this.behaviors.require(PowerSourceServer.with(PowerSource.Feature.Battery, PowerSource.Feature.Replaceable), {
|
|
674
407
|
status: PowerSource.PowerSourceStatus.Active,
|
|
@@ -686,14 +419,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
686
419
|
});
|
|
687
420
|
return this;
|
|
688
421
|
}
|
|
689
|
-
/**
|
|
690
|
-
* Creates a default power source rechargeable battery cluster server.
|
|
691
|
-
*
|
|
692
|
-
* @param batPercentRemaining - The remaining battery percentage (default: 100).
|
|
693
|
-
* @param batChargeLevel - The battery charge level (default: PowerSource.BatChargeLevel.Ok).
|
|
694
|
-
* @param batVoltage - The battery voltage (default: 1500).
|
|
695
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
696
|
-
*/
|
|
697
422
|
createDefaultPowerSourceRechargeableBatteryClusterServer(batPercentRemaining = 100, batChargeLevel = PowerSource.BatChargeLevel.Ok, batVoltage = 1500) {
|
|
698
423
|
this.behaviors.require(PowerSourceServer.with(PowerSource.Feature.Battery, PowerSource.Feature.Rechargeable), {
|
|
699
424
|
status: PowerSource.PowerSourceStatus.Active,
|
|
@@ -712,21 +437,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
712
437
|
});
|
|
713
438
|
return this;
|
|
714
439
|
}
|
|
715
|
-
/**
|
|
716
|
-
* Creates a default Basic Information Cluster Server for the server node.
|
|
717
|
-
*
|
|
718
|
-
* @param deviceName - The name of the device.
|
|
719
|
-
* @param serialNumber - The serial number of the device.
|
|
720
|
-
* @param vendorId - The vendor ID of the device.
|
|
721
|
-
* @param vendorName - The vendor name of the device.
|
|
722
|
-
* @param productId - The product ID of the device.
|
|
723
|
-
* @param productName - The product name of the device.
|
|
724
|
-
* @param softwareVersion - The software version of the device. Default is 1.
|
|
725
|
-
* @param softwareVersionString - The software version string of the device. Default is 'v.1.0.0'.
|
|
726
|
-
* @param hardwareVersion - The hardware version of the device. Default is 1.
|
|
727
|
-
* @param hardwareVersionString - The hardware version string of the device. Default is 'v.1.0.0'.
|
|
728
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
729
|
-
*/
|
|
730
440
|
createDefaultBasicInformationClusterServer(deviceName, serialNumber, vendorId, vendorName, productId, productName, softwareVersion = 1, softwareVersionString = '1.0.0', hardwareVersion = 1, hardwareVersionString = '1.0.0') {
|
|
731
441
|
this.log.logName = deviceName;
|
|
732
442
|
this.deviceName = deviceName;
|
|
@@ -750,20 +460,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
750
460
|
}
|
|
751
461
|
return this;
|
|
752
462
|
}
|
|
753
|
-
/**
|
|
754
|
-
* Creates a default BridgedDeviceBasicInformationClusterServer for the aggregator endpoints.
|
|
755
|
-
*
|
|
756
|
-
* @param deviceName - The name of the device.
|
|
757
|
-
* @param serialNumber - The serial number of the device.
|
|
758
|
-
* @param vendorId - The vendor ID of the device.
|
|
759
|
-
* @param vendorName - The name of the vendor.
|
|
760
|
-
* @param productName - The name of the product.
|
|
761
|
-
* @param softwareVersion - The software version of the device. Default is 1.
|
|
762
|
-
* @param softwareVersionString - The software version string of the device. Default is 'v.1.0.0'.
|
|
763
|
-
* @param hardwareVersion - The hardware version of the device. Default is 1.
|
|
764
|
-
* @param hardwareVersionString - The hardware version string of the device. Default is 'v.1.0.0'.
|
|
765
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
766
|
-
*/
|
|
767
463
|
createDefaultBridgedDeviceBasicInformationClusterServer(deviceName, serialNumber, vendorId, vendorName, productName, softwareVersion = 1, softwareVersionString = '1.0.0', hardwareVersion = 1, hardwareVersionString = '1.0.0') {
|
|
768
464
|
this.log.logName = deviceName;
|
|
769
465
|
this.deviceName = deviceName;
|
|
@@ -780,7 +476,7 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
780
476
|
this.behaviors.require(BridgedDeviceBasicInformationServer.enable({
|
|
781
477
|
events: { leave: true, reachableChanged: true },
|
|
782
478
|
}), {
|
|
783
|
-
vendorId: vendorId !== undefined ? VendorId(vendorId) : undefined,
|
|
479
|
+
vendorId: vendorId !== undefined ? VendorId(vendorId) : undefined,
|
|
784
480
|
vendorName: vendorName.slice(0, 32),
|
|
785
481
|
productName: productName.slice(0, 32),
|
|
786
482
|
productUrl: this.productUrl,
|
|
@@ -796,13 +492,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
796
492
|
});
|
|
797
493
|
return this;
|
|
798
494
|
}
|
|
799
|
-
/**
|
|
800
|
-
* Creates a default identify cluster server with the specified identify time and type.
|
|
801
|
-
*
|
|
802
|
-
* @param {number} [identifyTime=0] - The time to identify the server. Defaults to 0.
|
|
803
|
-
* @param {Identify.IdentifyType} [identifyType=Identify.IdentifyType.None] - The type of identification. Defaults to Identify.IdentifyType.None.
|
|
804
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
805
|
-
*/
|
|
806
495
|
createDefaultIdentifyClusterServer(identifyTime = 0, identifyType = Identify.IdentifyType.None) {
|
|
807
496
|
this.behaviors.require(MatterbridgeIdentifyServer, {
|
|
808
497
|
identifyTime,
|
|
@@ -810,32 +499,14 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
810
499
|
});
|
|
811
500
|
return this;
|
|
812
501
|
}
|
|
813
|
-
/**
|
|
814
|
-
* Creates a default groups cluster server.
|
|
815
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
816
|
-
*/
|
|
817
502
|
createDefaultGroupsClusterServer() {
|
|
818
503
|
this.behaviors.require(GroupsServer);
|
|
819
504
|
return this;
|
|
820
505
|
}
|
|
821
|
-
/**
|
|
822
|
-
* Creates a default scenes management cluster server.
|
|
823
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
824
|
-
*/
|
|
825
506
|
createDefaultScenesClusterServer() {
|
|
826
507
|
this.behaviors.require(ScenesManagementServer);
|
|
827
508
|
return this;
|
|
828
509
|
}
|
|
829
|
-
/**
|
|
830
|
-
* Creates a default OnOff cluster server for light devices.
|
|
831
|
-
*
|
|
832
|
-
* @param {boolean} [onOff=false] - The initial state of the OnOff cluster.
|
|
833
|
-
* @param {boolean} [globalSceneControl=false] - The global scene control state.
|
|
834
|
-
* @param {number} [onTime=0] - The on time value.
|
|
835
|
-
* @param {number} [offWaitTime=0] - The off wait time value.
|
|
836
|
-
* @param {OnOff.StartUpOnOff | null} [startUpOnOff=null] - The start-up OnOff state. Null means previous state.
|
|
837
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
838
|
-
*/
|
|
839
510
|
createDefaultOnOffClusterServer(onOff = false, globalSceneControl = false, onTime = 0, offWaitTime = 0, startUpOnOff = null) {
|
|
840
511
|
this.behaviors.require(MatterbridgeOnOffServer.with(OnOff.Feature.Lighting), {
|
|
841
512
|
onOff,
|
|
@@ -846,40 +517,18 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
846
517
|
});
|
|
847
518
|
return this;
|
|
848
519
|
}
|
|
849
|
-
/**
|
|
850
|
-
* Creates an OnOff cluster server without features.
|
|
851
|
-
*
|
|
852
|
-
* @param {boolean} [onOff=false] - The initial state of the OnOff cluster.
|
|
853
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
854
|
-
*/
|
|
855
520
|
createOnOffClusterServer(onOff = false) {
|
|
856
521
|
this.behaviors.require(MatterbridgeOnOffServer, {
|
|
857
522
|
onOff,
|
|
858
523
|
});
|
|
859
524
|
return this;
|
|
860
525
|
}
|
|
861
|
-
/**
|
|
862
|
-
* Creates a DeadFront OnOff cluster server.
|
|
863
|
-
*
|
|
864
|
-
* @param {boolean} [onOff=false] - The initial state of the OnOff cluster.
|
|
865
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
866
|
-
*/
|
|
867
526
|
createDeadFrontOnOffClusterServer(onOff = false) {
|
|
868
527
|
this.behaviors.require(MatterbridgeOnOffServer.with(OnOff.Feature.DeadFrontBehavior), {
|
|
869
528
|
onOff,
|
|
870
529
|
});
|
|
871
530
|
return this;
|
|
872
531
|
}
|
|
873
|
-
/**
|
|
874
|
-
* Creates a default level control cluster server for light devices.
|
|
875
|
-
*
|
|
876
|
-
* @param {number} [currentLevel=254] - The current level (default: 254).
|
|
877
|
-
* @param {number} [minLevel=1] - The minimum level (default: 1).
|
|
878
|
-
* @param {number} [maxLevel=254] - The maximum level (default: 254).
|
|
879
|
-
* @param {number | null} [onLevel=null] - The on level (default: null).
|
|
880
|
-
* @param {number | null} [startUpCurrentLevel=null] - The startUp on level (default: null).
|
|
881
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
882
|
-
*/
|
|
883
532
|
createDefaultLevelControlClusterServer(currentLevel = 254, minLevel = 1, maxLevel = 254, onLevel = null, startUpCurrentLevel = null) {
|
|
884
533
|
this.behaviors.require(MatterbridgeLevelControlServer.with(LevelControl.Feature.OnOff, LevelControl.Feature.Lighting), {
|
|
885
534
|
currentLevel,
|
|
@@ -895,18 +544,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
895
544
|
});
|
|
896
545
|
return this;
|
|
897
546
|
}
|
|
898
|
-
/**
|
|
899
|
-
* Creates a default color control cluster server with Xy, HueSaturation and ColorTemperature.
|
|
900
|
-
*
|
|
901
|
-
* @param currentX - The current X value.
|
|
902
|
-
* @param currentY - The current Y value.
|
|
903
|
-
* @param currentHue - The current hue value.
|
|
904
|
-
* @param currentSaturation - The current saturation value.
|
|
905
|
-
* @param colorTemperatureMireds - The color temperature in mireds.
|
|
906
|
-
* @param colorTempPhysicalMinMireds - The physical minimum color temperature in mireds.
|
|
907
|
-
* @param colorTempPhysicalMaxMireds - The physical maximum color temperature in mireds.
|
|
908
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
909
|
-
*/
|
|
910
547
|
createDefaultColorControlClusterServer(currentX = 0, currentY = 0, currentHue = 0, currentSaturation = 0, colorTemperatureMireds = 500, colorTempPhysicalMinMireds = 147, colorTempPhysicalMaxMireds = 500) {
|
|
911
548
|
this.behaviors.require(MatterbridgeColorControlServer.with(ColorControl.Feature.Xy, ColorControl.Feature.HueSaturation, ColorControl.Feature.ColorTemperature), {
|
|
912
549
|
colorMode: ColorControl.ColorMode.CurrentHueAndCurrentSaturation,
|
|
@@ -929,19 +566,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
929
566
|
});
|
|
930
567
|
return this;
|
|
931
568
|
}
|
|
932
|
-
/**
|
|
933
|
-
* Creates a Xy color control cluster server with Xy and ColorTemperature.
|
|
934
|
-
*
|
|
935
|
-
* @param currentX - The current X value.
|
|
936
|
-
* @param currentY - The current Y value.
|
|
937
|
-
* @param colorTemperatureMireds - The color temperature in mireds.
|
|
938
|
-
* @param colorTempPhysicalMinMireds - The physical minimum color temperature in mireds.
|
|
939
|
-
* @param colorTempPhysicalMaxMireds - The physical maximum color temperature in mireds.
|
|
940
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
941
|
-
*
|
|
942
|
-
* @remarks
|
|
943
|
-
* From zigbee to matter = Math.max(Math.min(Math.round(x * 65536), 65279), 0)
|
|
944
|
-
*/
|
|
945
569
|
createXyColorControlClusterServer(currentX = 0, currentY = 0, colorTemperatureMireds = 500, colorTempPhysicalMinMireds = 147, colorTempPhysicalMaxMireds = 500) {
|
|
946
570
|
this.behaviors.require(MatterbridgeColorControlServer.with(ColorControl.Feature.Xy, ColorControl.Feature.ColorTemperature), {
|
|
947
571
|
colorMode: ColorControl.ColorMode.CurrentXAndCurrentY,
|
|
@@ -962,16 +586,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
962
586
|
});
|
|
963
587
|
return this;
|
|
964
588
|
}
|
|
965
|
-
/**
|
|
966
|
-
* Creates a default hue and saturation control cluster server with HueSaturation and ColorTemperature.
|
|
967
|
-
*
|
|
968
|
-
* @param currentHue - The current hue value.
|
|
969
|
-
* @param currentSaturation - The current saturation value.
|
|
970
|
-
* @param colorTemperatureMireds - The color temperature in mireds.
|
|
971
|
-
* @param colorTempPhysicalMinMireds - The physical minimum color temperature in mireds.
|
|
972
|
-
* @param colorTempPhysicalMaxMireds - The physical maximum color temperature in mireds.
|
|
973
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
974
|
-
*/
|
|
975
589
|
createHsColorControlClusterServer(currentHue = 0, currentSaturation = 0, colorTemperatureMireds = 500, colorTempPhysicalMinMireds = 147, colorTempPhysicalMaxMireds = 500) {
|
|
976
590
|
this.behaviors.require(MatterbridgeColorControlServer.with(ColorControl.Feature.HueSaturation, ColorControl.Feature.ColorTemperature), {
|
|
977
591
|
colorMode: ColorControl.ColorMode.CurrentHueAndCurrentSaturation,
|
|
@@ -992,14 +606,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
992
606
|
});
|
|
993
607
|
return this;
|
|
994
608
|
}
|
|
995
|
-
/**
|
|
996
|
-
* Creates a color temperature color control cluster server.
|
|
997
|
-
*
|
|
998
|
-
* @param colorTemperatureMireds - The color temperature in mireds.
|
|
999
|
-
* @param colorTempPhysicalMinMireds - The physical minimum color temperature in mireds.
|
|
1000
|
-
* @param colorTempPhysicalMaxMireds - The physical maximum color temperature in mireds.
|
|
1001
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1002
|
-
*/
|
|
1003
609
|
createCtColorControlClusterServer(colorTemperatureMireds = 500, colorTempPhysicalMinMireds = 147, colorTempPhysicalMaxMireds = 500) {
|
|
1004
610
|
this.behaviors.require(MatterbridgeColorControlServer.with(ColorControl.Feature.ColorTemperature), {
|
|
1005
611
|
colorMode: ColorControl.ColorMode.ColorTemperatureMireds,
|
|
@@ -1018,23 +624,12 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1018
624
|
});
|
|
1019
625
|
return this;
|
|
1020
626
|
}
|
|
1021
|
-
/**
|
|
1022
|
-
* Configures the color control mode for the device.
|
|
1023
|
-
*
|
|
1024
|
-
* @param {ColorControl.ColorMode} colorMode - The color mode to set.
|
|
1025
|
-
*/
|
|
1026
627
|
async configureColorControlMode(colorMode) {
|
|
1027
628
|
if (isValidNumber(colorMode, ColorControl.ColorMode.CurrentHueAndCurrentSaturation, ColorControl.ColorMode.ColorTemperatureMireds)) {
|
|
1028
629
|
await this.setAttribute(ColorControl.Cluster.id, 'colorMode', colorMode, this.log);
|
|
1029
630
|
await this.setAttribute(ColorControl.Cluster.id, 'enhancedColorMode', colorMode, this.log);
|
|
1030
631
|
}
|
|
1031
632
|
}
|
|
1032
|
-
/**
|
|
1033
|
-
* Creates a default window covering cluster server (Lift and PositionAwareLift).
|
|
1034
|
-
*
|
|
1035
|
-
* @param positionPercent100ths - The position percentage in 100ths (0-10000). Defaults to 0. Matter uses 10000 = fully closed 0 = fully opened.
|
|
1036
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1037
|
-
*/
|
|
1038
633
|
createDefaultWindowCoveringClusterServer(positionPercent100ths) {
|
|
1039
634
|
this.behaviors.require(MatterbridgeWindowCoveringServer.with(WindowCovering.Feature.Lift, WindowCovering.Feature.PositionAwareLift), {
|
|
1040
635
|
type: WindowCovering.WindowCoveringType.Rollershade,
|
|
@@ -1050,15 +645,11 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1050
645
|
operationalStatus: { global: WindowCovering.MovementStatus.Stopped, lift: WindowCovering.MovementStatus.Stopped, tilt: WindowCovering.MovementStatus.Stopped },
|
|
1051
646
|
endProductType: WindowCovering.EndProductType.RollerShade,
|
|
1052
647
|
mode: { motorDirectionReversed: false, calibrationMode: false, maintenanceMode: false, ledFeedback: false },
|
|
1053
|
-
targetPositionLiftPercent100ths: positionPercent100ths ?? 0,
|
|
1054
|
-
currentPositionLiftPercent100ths: positionPercent100ths ?? 0,
|
|
648
|
+
targetPositionLiftPercent100ths: positionPercent100ths ?? 0,
|
|
649
|
+
currentPositionLiftPercent100ths: positionPercent100ths ?? 0,
|
|
1055
650
|
});
|
|
1056
651
|
return this;
|
|
1057
652
|
}
|
|
1058
|
-
/**
|
|
1059
|
-
* Sets the window covering target position as the current position and stops the movement.
|
|
1060
|
-
*
|
|
1061
|
-
*/
|
|
1062
653
|
async setWindowCoveringTargetAsCurrentAndStopped() {
|
|
1063
654
|
const position = this.getAttribute(WindowCovering.Cluster.id, 'currentPositionLiftPercent100ths', this.log);
|
|
1064
655
|
if (isValidNumber(position, 0, 10000)) {
|
|
@@ -1071,12 +662,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1071
662
|
}
|
|
1072
663
|
this.log.debug(`Set WindowCovering currentPositionLiftPercent100ths and targetPositionLiftPercent100ths to ${position} and operationalStatus to Stopped.`);
|
|
1073
664
|
}
|
|
1074
|
-
/**
|
|
1075
|
-
* Sets the current and target status of a window covering.
|
|
1076
|
-
* @param {number} current - The current position of the window covering.
|
|
1077
|
-
* @param {number} target - The target position of the window covering.
|
|
1078
|
-
* @param {WindowCovering.MovementStatus} status - The movement status of the window covering.
|
|
1079
|
-
*/
|
|
1080
665
|
async setWindowCoveringCurrentTargetStatus(current, target, status) {
|
|
1081
666
|
await this.setAttribute(WindowCovering.Cluster.id, 'currentPositionLiftPercent100ths', current, this.log);
|
|
1082
667
|
await this.setAttribute(WindowCovering.Cluster.id, 'targetPositionLiftPercent100ths', target, this.log);
|
|
@@ -1087,10 +672,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1087
672
|
}, this.log);
|
|
1088
673
|
this.log.debug(`Set WindowCovering currentPositionLiftPercent100ths: ${current}, targetPositionLiftPercent100ths: ${target} and operationalStatus: ${status}.`);
|
|
1089
674
|
}
|
|
1090
|
-
/**
|
|
1091
|
-
* Sets the status of the window covering.
|
|
1092
|
-
* @param {WindowCovering.MovementStatus} status - The movement status to set.
|
|
1093
|
-
*/
|
|
1094
675
|
async setWindowCoveringStatus(status) {
|
|
1095
676
|
await this.setAttribute(WindowCovering.Cluster.id, 'operationalStatus', {
|
|
1096
677
|
global: status,
|
|
@@ -1099,11 +680,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1099
680
|
}, this.log);
|
|
1100
681
|
this.log.debug(`Set WindowCovering operationalStatus: ${status}`);
|
|
1101
682
|
}
|
|
1102
|
-
/**
|
|
1103
|
-
* Retrieves the status of the window covering.
|
|
1104
|
-
*
|
|
1105
|
-
* @returns The global operational status of the window covering or undefined.
|
|
1106
|
-
*/
|
|
1107
683
|
getWindowCoveringStatus() {
|
|
1108
684
|
const status = this.getAttribute(WindowCovering.Cluster.id, 'operationalStatus', this.log);
|
|
1109
685
|
if (isValidObject(status, 3) && 'global' in status && typeof status.global === 'number') {
|
|
@@ -1111,66 +687,36 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1111
687
|
return status.global;
|
|
1112
688
|
}
|
|
1113
689
|
}
|
|
1114
|
-
/**
|
|
1115
|
-
* Sets the target and current position of the window covering.
|
|
1116
|
-
*
|
|
1117
|
-
* @param position - The position to set, specified as a number.
|
|
1118
|
-
*/
|
|
1119
690
|
async setWindowCoveringTargetAndCurrentPosition(position) {
|
|
1120
691
|
await this.setAttribute(WindowCovering.Cluster.id, 'currentPositionLiftPercent100ths', position, this.log);
|
|
1121
692
|
await this.setAttribute(WindowCovering.Cluster.id, 'targetPositionLiftPercent100ths', position, this.log);
|
|
1122
693
|
this.log.debug(`Set WindowCovering currentPositionLiftPercent100ths: ${position} and targetPositionLiftPercent100ths: ${position}.`);
|
|
1123
694
|
}
|
|
1124
|
-
/**
|
|
1125
|
-
* Creates a default thermostat cluster server with Thermostat.Feature.Heating, Thermostat.Feature.Cooling, Thermostat.Feature.AutoMode.
|
|
1126
|
-
*
|
|
1127
|
-
* @param {number} [localTemperature=23] - The local temperature value in degrees Celsius. Defaults to 23°.
|
|
1128
|
-
* @param {number} [occupiedHeatingSetpoint=21] - The occupied heating setpoint value in degrees Celsius. Defaults to 21°.
|
|
1129
|
-
* @param {number} [occupiedCoolingSetpoint=25] - The occupied cooling setpoint value in degrees Celsius. Defaults to 25°.
|
|
1130
|
-
* @param {number} [minSetpointDeadBand=1] - The minimum setpoint dead band value. Defaults to 1°.
|
|
1131
|
-
* @param {number} [minHeatSetpointLimit=0] - The minimum heat setpoint limit value. Defaults to 0°.
|
|
1132
|
-
* @param {number} [maxHeatSetpointLimit=50] - The maximum heat setpoint limit value. Defaults to 50°.
|
|
1133
|
-
* @param {number} [minCoolSetpointLimit=0] - The minimum cool setpoint limit value. Defaults to 0°.
|
|
1134
|
-
* @param {number} [maxCoolSetpointLimit=50] - The maximum cool setpoint limit value. Defaults to 50°.
|
|
1135
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1136
|
-
*/
|
|
1137
695
|
createDefaultThermostatClusterServer(localTemperature = 23, occupiedHeatingSetpoint = 21, occupiedCoolingSetpoint = 25, minSetpointDeadBand = 1, minHeatSetpointLimit = 0, maxHeatSetpointLimit = 50, minCoolSetpointLimit = 0, maxCoolSetpointLimit = 50) {
|
|
1138
696
|
this.behaviors.require(MatterbridgeThermostatServer.with(Thermostat.Feature.Heating, Thermostat.Feature.Cooling, Thermostat.Feature.AutoMode), {
|
|
1139
697
|
localTemperature: localTemperature * 100,
|
|
1140
698
|
systemMode: Thermostat.SystemMode.Auto,
|
|
1141
699
|
controlSequenceOfOperation: Thermostat.ControlSequenceOfOperation.CoolingAndHeating,
|
|
1142
|
-
// Thermostat.Feature.Heating
|
|
1143
700
|
occupiedHeatingSetpoint: occupiedHeatingSetpoint * 100,
|
|
1144
701
|
minHeatSetpointLimit: minHeatSetpointLimit * 100,
|
|
1145
702
|
maxHeatSetpointLimit: maxHeatSetpointLimit * 100,
|
|
1146
703
|
absMinHeatSetpointLimit: minHeatSetpointLimit * 100,
|
|
1147
704
|
absMaxHeatSetpointLimit: maxHeatSetpointLimit * 100,
|
|
1148
|
-
// Thermostat.Feature.Cooling
|
|
1149
705
|
occupiedCoolingSetpoint: occupiedCoolingSetpoint * 100,
|
|
1150
706
|
minCoolSetpointLimit: minCoolSetpointLimit * 100,
|
|
1151
707
|
maxCoolSetpointLimit: maxCoolSetpointLimit * 100,
|
|
1152
708
|
absMinCoolSetpointLimit: minCoolSetpointLimit * 100,
|
|
1153
709
|
absMaxCoolSetpointLimit: maxCoolSetpointLimit * 100,
|
|
1154
|
-
// Thermostat.Feature.AutoMode
|
|
1155
710
|
minSetpointDeadBand: minSetpointDeadBand * 100,
|
|
1156
711
|
thermostatRunningMode: Thermostat.ThermostatRunningMode.Off,
|
|
1157
712
|
});
|
|
1158
713
|
return this;
|
|
1159
714
|
}
|
|
1160
|
-
/**
|
|
1161
|
-
* Creates a default heating thermostat cluster server with Thermostat.Feature.Heating.
|
|
1162
|
-
* @param {number} [localTemperature] - The local temperature value in degrees Celsius. Defaults to 23°.
|
|
1163
|
-
* @param {number} [occupiedHeatingSetpoint] - The occupied heating setpoint value in degrees Celsius. Defaults to 21°.
|
|
1164
|
-
* @param {number} [minHeatSetpointLimit] - The minimum heat setpoint limit value. Defaults to 0°.
|
|
1165
|
-
* @param {number} [maxHeatSetpointLimit] - The maximum heat setpoint limit value. Defaults to 50°.
|
|
1166
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1167
|
-
*/
|
|
1168
715
|
createDefaultHeatingThermostatClusterServer(localTemperature = 23, occupiedHeatingSetpoint = 21, minHeatSetpointLimit = 0, maxHeatSetpointLimit = 50) {
|
|
1169
716
|
this.behaviors.require(MatterbridgeThermostatServer.with(Thermostat.Feature.Heating), {
|
|
1170
717
|
localTemperature: localTemperature * 100,
|
|
1171
718
|
systemMode: Thermostat.SystemMode.Heat,
|
|
1172
719
|
controlSequenceOfOperation: Thermostat.ControlSequenceOfOperation.HeatingOnly,
|
|
1173
|
-
// Thermostat.Feature.Heating
|
|
1174
720
|
occupiedHeatingSetpoint: occupiedHeatingSetpoint * 100,
|
|
1175
721
|
minHeatSetpointLimit: minHeatSetpointLimit * 100,
|
|
1176
722
|
maxHeatSetpointLimit: maxHeatSetpointLimit * 100,
|
|
@@ -1179,20 +725,11 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1179
725
|
});
|
|
1180
726
|
return this;
|
|
1181
727
|
}
|
|
1182
|
-
/**
|
|
1183
|
-
* Creates a default cooling thermostat cluster server with Thermostat.Feature.Cooling.
|
|
1184
|
-
* @param {number} [localTemperature] - The local temperature value in degrees Celsius. Defaults to 23°.
|
|
1185
|
-
* @param {number} [occupiedCoolingSetpoint] - The occupied cooling setpoint value in degrees Celsius. Defaults to 25°.
|
|
1186
|
-
* @param {number} [minCoolSetpointLimit] - The minimum cool setpoint limit value. Defaults to 0°.
|
|
1187
|
-
* @param {number} [maxCoolSetpointLimit] - The maximum cool setpoint limit value. Defaults to 50°.
|
|
1188
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1189
|
-
*/
|
|
1190
728
|
createDefaultCoolingThermostatClusterServer(localTemperature = 23, occupiedCoolingSetpoint = 25, minCoolSetpointLimit = 0, maxCoolSetpointLimit = 50) {
|
|
1191
729
|
this.behaviors.require(MatterbridgeThermostatServer.with(Thermostat.Feature.Cooling), {
|
|
1192
730
|
localTemperature: localTemperature * 100,
|
|
1193
731
|
systemMode: Thermostat.SystemMode.Cool,
|
|
1194
732
|
controlSequenceOfOperation: Thermostat.ControlSequenceOfOperation.CoolingOnly,
|
|
1195
|
-
// Thermostat.Feature.Cooling
|
|
1196
733
|
occupiedCoolingSetpoint: occupiedCoolingSetpoint * 100,
|
|
1197
734
|
minCoolSetpointLimit: minCoolSetpointLimit * 100,
|
|
1198
735
|
maxCoolSetpointLimit: maxCoolSetpointLimit * 100,
|
|
@@ -1201,12 +738,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1201
738
|
});
|
|
1202
739
|
return this;
|
|
1203
740
|
}
|
|
1204
|
-
/**
|
|
1205
|
-
* Creates a default fan control cluster server.
|
|
1206
|
-
*
|
|
1207
|
-
* @param fanMode The fan mode to set. Defaults to `FanControl.FanMode.Off`.
|
|
1208
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1209
|
-
*/
|
|
1210
741
|
createDefaultFanControlClusterServer(fanMode = FanControl.FanMode.Off) {
|
|
1211
742
|
this.behaviors.require(MatterbridgeFanControlServer.with(FanControl.Feature.MultiSpeed, FanControl.Feature.Auto, FanControl.Feature.Step), {
|
|
1212
743
|
fanMode,
|
|
@@ -1219,13 +750,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1219
750
|
});
|
|
1220
751
|
return this;
|
|
1221
752
|
}
|
|
1222
|
-
/**
|
|
1223
|
-
* Creates a default door lock cluster server.
|
|
1224
|
-
*
|
|
1225
|
-
* @param {DoorLock.LockState} [lockState=DoorLock.LockState.Locked] - The initial state of the lock (default: Locked).
|
|
1226
|
-
* @param {DoorLock.LockType} [lockType=DoorLock.LockType.DeadBolt] - The type of the lock (default: DeadBolt).
|
|
1227
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1228
|
-
*/
|
|
1229
753
|
createDefaultDoorLockClusterServer(lockState = DoorLock.LockState.Locked, lockType = DoorLock.LockType.DeadBolt) {
|
|
1230
754
|
this.behaviors.require(MatterbridgeDoorLockServer.enable({ events: { doorLockAlarm: true, lockOperation: true, lockOperationError: true } }), {
|
|
1231
755
|
operatingMode: DoorLock.OperatingMode.Normal,
|
|
@@ -1236,18 +760,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1236
760
|
});
|
|
1237
761
|
return this;
|
|
1238
762
|
}
|
|
1239
|
-
/**
|
|
1240
|
-
* Creates a default Mode Select cluster server.
|
|
1241
|
-
*
|
|
1242
|
-
* @param {string} description - The description of the mode select cluster.
|
|
1243
|
-
* @param {ModeSelect.ModeOption[]} supportedModes - The list of supported modes.
|
|
1244
|
-
* @param {number} [currentMode=0] - The current mode (default: 0).
|
|
1245
|
-
* @param {number} [startUpMode=0] - The startup mode (default: 0).
|
|
1246
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1247
|
-
*
|
|
1248
|
-
* @remarks
|
|
1249
|
-
* endpoint.createDefaultModeSelectClusterServer('Night mode', [{ label: 'Led ON', mode: 0, semanticTags: [] }, { label: 'Led OFF', mode: 1, semanticTags: [] }], 0, 0);
|
|
1250
|
-
*/
|
|
1251
763
|
createDefaultModeSelectClusterServer(description, supportedModes, currentMode = 0, startUpMode = 0) {
|
|
1252
764
|
this.behaviors.require(MatterbridgeModeSelectServer, {
|
|
1253
765
|
description: description,
|
|
@@ -1258,13 +770,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1258
770
|
});
|
|
1259
771
|
return this;
|
|
1260
772
|
}
|
|
1261
|
-
/**
|
|
1262
|
-
* Creates the default Valve Configuration And Control cluster server.
|
|
1263
|
-
*
|
|
1264
|
-
* @param {ValveConfigurationAndControl.ValveState} [valveState=ValveConfigurationAndControl.ValveState.Closed] - The valve state to set. Defaults to `ValveConfigurationAndControl.ValveState.Closed`.
|
|
1265
|
-
* @param {number} [valveLevel=0] - The valve level to set. Defaults to 0.
|
|
1266
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1267
|
-
*/
|
|
1268
773
|
createDefaultValveConfigurationAndControlClusterServer(valveState = ValveConfigurationAndControl.ValveState.Closed, valveLevel = 0) {
|
|
1269
774
|
this.behaviors.require(MatterbridgeValveConfigurationAndControlServer.with(ValveConfigurationAndControl.Feature.Level), {
|
|
1270
775
|
currentState: valveState,
|
|
@@ -1277,12 +782,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1277
782
|
});
|
|
1278
783
|
return this;
|
|
1279
784
|
}
|
|
1280
|
-
/**
|
|
1281
|
-
* Creates the default PumpConfigurationAndControl cluster server.
|
|
1282
|
-
*
|
|
1283
|
-
* @param {PumpConfigurationAndControl.OperationMode} [pumpMode=PumpConfigurationAndControl.OperationMode.Normal] - The pump mode to set. Defaults to `PumpConfigurationAndControl.OperationMode.Normal`.
|
|
1284
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1285
|
-
*/
|
|
1286
785
|
createDefaultPumpConfigurationAndControlClusterServer(pumpMode = PumpConfigurationAndControl.OperationMode.Normal) {
|
|
1287
786
|
this.behaviors.require(PumpConfigurationAndControlServer.with(PumpConfigurationAndControl.Feature.ConstantSpeed), {
|
|
1288
787
|
minConstSpeed: null,
|
|
@@ -1297,13 +796,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1297
796
|
});
|
|
1298
797
|
return this;
|
|
1299
798
|
}
|
|
1300
|
-
/**
|
|
1301
|
-
* Creates the default SmokeCOAlarm Cluster Server.
|
|
1302
|
-
*
|
|
1303
|
-
* @param {SmokeCoAlarm.AlarmState} smokeState - The state of the smoke alarm. Defaults to SmokeCoAlarm.AlarmState.Normal.
|
|
1304
|
-
* @param {SmokeCoAlarm.AlarmState} coState - The state of the CO alarm. Defaults to SmokeCoAlarm.AlarmState.Normal.
|
|
1305
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1306
|
-
*/
|
|
1307
799
|
createDefaultSmokeCOAlarmClusterServer(smokeState = SmokeCoAlarm.AlarmState.Normal, coState = SmokeCoAlarm.AlarmState.Normal) {
|
|
1308
800
|
this.behaviors.require(MatterbridgeSmokeCoAlarmServer.with(SmokeCoAlarm.Feature.SmokeAlarm, SmokeCoAlarm.Feature.CoAlarm).enable({
|
|
1309
801
|
events: { smokeAlarm: true, interconnectSmokeAlarm: true, coAlarm: true, interconnectCoAlarm: true, lowBattery: true, hardwareFault: true, endOfService: true, selfTestComplete: true, alarmMuted: true, muteEnded: true, allClear: true },
|
|
@@ -1321,13 +813,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1321
813
|
});
|
|
1322
814
|
return this;
|
|
1323
815
|
}
|
|
1324
|
-
/**
|
|
1325
|
-
* Creates a default momentary switch cluster server.
|
|
1326
|
-
*
|
|
1327
|
-
* @remarks
|
|
1328
|
-
* This method adds a cluster server with default momentary switch features and configuration suitable for (AppleHome) Single Double Long automations.
|
|
1329
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1330
|
-
*/
|
|
1331
816
|
createDefaultSwitchClusterServer() {
|
|
1332
817
|
this.behaviors.require(MatterbridgeSwitchServer.with(Switch.Feature.MomentarySwitch, Switch.Feature.MomentarySwitchRelease, Switch.Feature.MomentarySwitchLongPress, Switch.Feature.MomentarySwitchMultiPress).enable({
|
|
1333
818
|
events: { initialPress: true, longPress: true, shortRelease: true, longRelease: true, multiPressOngoing: true, multiPressComplete: true },
|
|
@@ -1338,13 +823,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1338
823
|
});
|
|
1339
824
|
return this;
|
|
1340
825
|
}
|
|
1341
|
-
/**
|
|
1342
|
-
* Creates a default latching switch cluster server.
|
|
1343
|
-
*
|
|
1344
|
-
* @remarks
|
|
1345
|
-
* This method adds a cluster server with default latching switch features and configuration suitable for a latching switch with 2 positions.
|
|
1346
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1347
|
-
*/
|
|
1348
826
|
createDefaultLatchingSwitchClusterServer() {
|
|
1349
827
|
this.behaviors.require(SwitchServer.with(Switch.Feature.LatchingSwitch).enable({
|
|
1350
828
|
events: { switchLatched: true },
|
|
@@ -1354,13 +832,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1354
832
|
});
|
|
1355
833
|
return this;
|
|
1356
834
|
}
|
|
1357
|
-
/**
|
|
1358
|
-
* Triggers a switch event on the specified endpoint.
|
|
1359
|
-
*
|
|
1360
|
-
* @param {string} event - The type of event to trigger. Possible values are 'Single', 'Double', 'Long' for momentarySwitch and 'Press', 'Release' for latchingSwitch.
|
|
1361
|
-
* @param {Endpoint} endpoint - The endpoint on which to trigger the event (default the device endpoint).
|
|
1362
|
-
* @returns {boolean} - A boolean indicating whether the event was successfully triggered.
|
|
1363
|
-
*/
|
|
1364
835
|
async triggerSwitchEvent(event, log) {
|
|
1365
836
|
if (this.maybeNumber === undefined) {
|
|
1366
837
|
this.log.error(`triggerSwitchEvent ${event} error: Endpoint number not assigned on endpoint ${this.maybeId}:${this.maybeNumber}`);
|
|
@@ -1420,31 +891,14 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1420
891
|
}
|
|
1421
892
|
return true;
|
|
1422
893
|
}
|
|
1423
|
-
/**
|
|
1424
|
-
* Creates a default boolean state cluster server.
|
|
1425
|
-
*
|
|
1426
|
-
* @param {boolean} contact - The state of the cluster. Defaults to true (true = contact).
|
|
1427
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1428
|
-
*/
|
|
1429
894
|
createDefaultBooleanStateClusterServer(contact) {
|
|
1430
895
|
this.behaviors.require(BooleanStateServer.enable({
|
|
1431
896
|
events: { stateChange: true },
|
|
1432
897
|
}), {
|
|
1433
|
-
stateValue: contact ?? true,
|
|
898
|
+
stateValue: contact ?? true,
|
|
1434
899
|
});
|
|
1435
900
|
return this;
|
|
1436
901
|
}
|
|
1437
|
-
/**
|
|
1438
|
-
* Creates a default boolean state configuration cluster server to be used with the waterFreezeDetector, waterLeakDetector, and rainSensor device types.
|
|
1439
|
-
*
|
|
1440
|
-
* @remarks Supports the enableDisableAlarm command.
|
|
1441
|
-
*
|
|
1442
|
-
* @param {boolean} [sensorFault=false] - Optional boolean value indicating the sensor fault state. Defaults to `false` if not provided.
|
|
1443
|
-
* @param {number} [currentSensitivityLevel=0] - The current sensitivity level. Defaults to `0` if not provided.
|
|
1444
|
-
* @param {number} [supportedSensitivityLevels=2] - The number of supported sensitivity levels. Defaults to `2` if not provided (min 2, max 10).
|
|
1445
|
-
* @param {number} [defaultSensitivityLevel=0] - The default sensitivity level. Defaults to `0` if not provided.
|
|
1446
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1447
|
-
*/
|
|
1448
902
|
createDefaultBooleanStateConfigurationClusterServer(sensorFault = false, currentSensitivityLevel = 0, supportedSensitivityLevels = 2, defaultSensitivityLevel = 0) {
|
|
1449
903
|
this.behaviors.require(MatterbridgeBooleanStateConfigurationServer.with(BooleanStateConfiguration.Feature.Visual, BooleanStateConfiguration.Feature.Audible, BooleanStateConfiguration.Feature.SensitivityLevel).enable({
|
|
1450
904
|
events: { alarmsStateChanged: true, sensorFault: true },
|
|
@@ -1459,21 +913,10 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1459
913
|
});
|
|
1460
914
|
return this;
|
|
1461
915
|
}
|
|
1462
|
-
/**
|
|
1463
|
-
* Creates a default Power Topology Cluster Server with feature TreeTopology. Only needed for an electricalSensor device type.
|
|
1464
|
-
*
|
|
1465
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1466
|
-
*/
|
|
1467
916
|
createDefaultPowerTopologyClusterServer() {
|
|
1468
917
|
this.behaviors.require(PowerTopologyServer.with(PowerTopology.Feature.TreeTopology));
|
|
1469
918
|
return this;
|
|
1470
919
|
}
|
|
1471
|
-
/**
|
|
1472
|
-
* Creates a default Electrical Energy Measurement Cluster Server.
|
|
1473
|
-
*
|
|
1474
|
-
* @param {number} energy - The total consumption value in mW/h.
|
|
1475
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1476
|
-
*/
|
|
1477
920
|
createDefaultElectricalEnergyMeasurementClusterServer(energy = null) {
|
|
1478
921
|
this.behaviors.require(ElectricalEnergyMeasurementServer.with(ElectricalEnergyMeasurement.Feature.ImportedEnergy, ElectricalEnergyMeasurement.Feature.ExportedEnergy, ElectricalEnergyMeasurement.Feature.CumulativeEnergy), {
|
|
1479
922
|
accuracy: {
|
|
@@ -1489,15 +932,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1489
932
|
});
|
|
1490
933
|
return this;
|
|
1491
934
|
}
|
|
1492
|
-
/**
|
|
1493
|
-
* Creates a default Electrical Power Measurement Cluster Server.
|
|
1494
|
-
*
|
|
1495
|
-
* @param {number} voltage - The voltage value in millivolts.
|
|
1496
|
-
* @param {number} current - The current value in milliamperes.
|
|
1497
|
-
* @param {number} power - The power value in milliwatts.
|
|
1498
|
-
* @param {number} frequency - The frequency value in millihertz.
|
|
1499
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1500
|
-
*/
|
|
1501
935
|
createDefaultElectricalPowerMeasurementClusterServer(voltage = null, current = null, power = null, frequency = null) {
|
|
1502
936
|
this.behaviors.require(ElectricalPowerMeasurementServer.with(ElectricalPowerMeasurement.Feature.AlternatingCurrent), {
|
|
1503
937
|
powerMode: ElectricalPowerMeasurement.PowerMode.Ac,
|
|
@@ -1539,90 +973,36 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1539
973
|
});
|
|
1540
974
|
return this;
|
|
1541
975
|
}
|
|
1542
|
-
/**
|
|
1543
|
-
* Creates a default TemperatureMeasurement cluster server.
|
|
1544
|
-
*
|
|
1545
|
-
* @param {number} measuredValue - The measured value of the temperature x 100.
|
|
1546
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1547
|
-
*/
|
|
1548
976
|
createDefaultTemperatureMeasurementClusterServer(measuredValue = 0) {
|
|
1549
977
|
this.behaviors.require(TemperatureMeasurementServer, getDefaultTemperatureMeasurementClusterServer(measuredValue));
|
|
1550
978
|
return this;
|
|
1551
979
|
}
|
|
1552
|
-
/**
|
|
1553
|
-
* Creates a default RelativeHumidityMeasurement cluster server.
|
|
1554
|
-
*
|
|
1555
|
-
* @param {number} measuredValue - The measured value of the relative humidity x 100.
|
|
1556
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1557
|
-
*/
|
|
1558
980
|
createDefaultRelativeHumidityMeasurementClusterServer(measuredValue = 0) {
|
|
1559
981
|
this.behaviors.require(RelativeHumidityMeasurementServer, getDefaultRelativeHumidityMeasurementClusterServer(measuredValue));
|
|
1560
982
|
return this;
|
|
1561
983
|
}
|
|
1562
|
-
/**
|
|
1563
|
-
* Creates a default PressureMeasurement cluster server.
|
|
1564
|
-
*
|
|
1565
|
-
* @param {number} measuredValue - The measured value for the pressure.
|
|
1566
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1567
|
-
*/
|
|
1568
984
|
createDefaultPressureMeasurementClusterServer(measuredValue = 1000) {
|
|
1569
985
|
this.behaviors.require(PressureMeasurementServer, getDefaultPressureMeasurementClusterServer(measuredValue));
|
|
1570
986
|
return this;
|
|
1571
987
|
}
|
|
1572
|
-
/**
|
|
1573
|
-
* Creates a default IlluminanceMeasurement cluster server.
|
|
1574
|
-
*
|
|
1575
|
-
* @param {number} measuredValue - The measured value of illuminance.
|
|
1576
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1577
|
-
*
|
|
1578
|
-
* @remarks
|
|
1579
|
-
* Lux to matter = Math.round(Math.max(Math.min(10000 * Math.log10(lux), 0xfffe), 0))
|
|
1580
|
-
* Matter to Lux = Math.round(Math.max(Math.pow(10, value / 10000), 0))
|
|
1581
|
-
*/
|
|
1582
988
|
createDefaultIlluminanceMeasurementClusterServer(measuredValue = 0) {
|
|
1583
989
|
this.behaviors.require(IlluminanceMeasurementServer, getDefaultIlluminanceMeasurementClusterServer(measuredValue));
|
|
1584
990
|
return this;
|
|
1585
991
|
}
|
|
1586
|
-
/**
|
|
1587
|
-
* Creates a default FlowMeasurement cluster server.
|
|
1588
|
-
*
|
|
1589
|
-
* @param {number} measuredValue - The measured value of the flow in 10 x m/h.
|
|
1590
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1591
|
-
*/
|
|
1592
992
|
createDefaultFlowMeasurementClusterServer(measuredValue = 0) {
|
|
1593
993
|
this.behaviors.require(FlowMeasurementServer, getDefaultFlowMeasurementClusterServer(measuredValue));
|
|
1594
994
|
return this;
|
|
1595
995
|
}
|
|
1596
|
-
/**
|
|
1597
|
-
* Creates a default OccupancySensing cluster server.
|
|
1598
|
-
*
|
|
1599
|
-
* @param {boolean} occupied - A boolean indicating whether the occupancy is occupied or not. Default is false.
|
|
1600
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1601
|
-
*/
|
|
1602
996
|
createDefaultOccupancySensingClusterServer(occupied = false) {
|
|
1603
997
|
this.behaviors.require(OccupancySensingServer, getDefaultOccupancySensingClusterServer(occupied));
|
|
1604
998
|
return this;
|
|
1605
999
|
}
|
|
1606
|
-
/**
|
|
1607
|
-
* Creates a default AirQuality cluster server.
|
|
1608
|
-
*
|
|
1609
|
-
* @param {AirQuality.AirQualityEnum} airQuality The air quality level. Defaults to `AirQuality.AirQualityType.Unknown`.
|
|
1610
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1611
|
-
*/
|
|
1612
1000
|
createDefaultAirQualityClusterServer(airQuality = AirQuality.AirQualityEnum.Unknown) {
|
|
1613
1001
|
this.behaviors.require(AirQualityServer.with(AirQuality.Feature.Fair, AirQuality.Feature.Moderate, AirQuality.Feature.VeryPoor, AirQuality.Feature.ExtremelyPoor), {
|
|
1614
1002
|
airQuality,
|
|
1615
1003
|
});
|
|
1616
1004
|
return this;
|
|
1617
1005
|
}
|
|
1618
|
-
/**
|
|
1619
|
-
* Creates a default TotalVolatileOrganicCompoundsConcentrationMeasurement cluster server.
|
|
1620
|
-
*
|
|
1621
|
-
* @param {number} measuredValue - The measured value of the concentration.
|
|
1622
|
-
* @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement (default to ConcentrationMeasurement.MeasurementUnit.Ppm).
|
|
1623
|
-
* @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The unit of measurement (default to ConcentrationMeasurement.MeasurementMedium.Air).
|
|
1624
|
-
* @returns {this} The current MatterbridgeEndpoint instance for chaining.
|
|
1625
|
-
*/
|
|
1626
1006
|
createDefaultTvocMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
|
|
1627
1007
|
this.behaviors.require(TotalVolatileOrganicCompoundsConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
|
|
1628
1008
|
measuredValue,
|
|
@@ -1634,13 +1014,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1634
1014
|
});
|
|
1635
1015
|
return this;
|
|
1636
1016
|
}
|
|
1637
|
-
/**
|
|
1638
|
-
* Create a default CarbonMonoxideConcentrationMeasurement cluster server.
|
|
1639
|
-
*
|
|
1640
|
-
* @param {number} measuredValue - The measured value of the concentration.
|
|
1641
|
-
* @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement (default to ConcentrationMeasurement.MeasurementUnit.Ppm).
|
|
1642
|
-
* @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The unit of measurement (default to ConcentrationMeasurement.MeasurementMedium.Air).
|
|
1643
|
-
*/
|
|
1644
1017
|
createDefaultCarbonMonoxideConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
|
|
1645
1018
|
this.behaviors.require(CarbonMonoxideConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
|
|
1646
1019
|
measuredValue,
|
|
@@ -1652,13 +1025,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1652
1025
|
});
|
|
1653
1026
|
return this;
|
|
1654
1027
|
}
|
|
1655
|
-
/**
|
|
1656
|
-
* Create a default CarbonDioxideConcentrationMeasurement cluster server.
|
|
1657
|
-
*
|
|
1658
|
-
* @param {number} measuredValue - The measured value of the concentration.
|
|
1659
|
-
* @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement (default to ConcentrationMeasurement.MeasurementUnit.Ppm).
|
|
1660
|
-
* @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The unit of measurement (default to ConcentrationMeasurement.MeasurementMedium.Air).
|
|
1661
|
-
*/
|
|
1662
1028
|
createDefaultCarbonDioxideConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
|
|
1663
1029
|
this.behaviors.require(CarbonDioxideConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
|
|
1664
1030
|
measuredValue,
|
|
@@ -1670,13 +1036,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1670
1036
|
});
|
|
1671
1037
|
return this;
|
|
1672
1038
|
}
|
|
1673
|
-
/**
|
|
1674
|
-
* Create a default FormaldehydeConcentrationMeasurement cluster server.
|
|
1675
|
-
*
|
|
1676
|
-
* @param {number} measuredValue - The measured value of the concentration.
|
|
1677
|
-
* @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement (default to ConcentrationMeasurement.MeasurementUnit.Ppm).
|
|
1678
|
-
* @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The unit of measurement (default to ConcentrationMeasurement.MeasurementMedium.Air).
|
|
1679
|
-
*/
|
|
1680
1039
|
createDefaultFormaldehydeConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
|
|
1681
1040
|
this.behaviors.require(FormaldehydeConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
|
|
1682
1041
|
measuredValue,
|
|
@@ -1688,13 +1047,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1688
1047
|
});
|
|
1689
1048
|
return this;
|
|
1690
1049
|
}
|
|
1691
|
-
/**
|
|
1692
|
-
* Create a default Pm1ConcentrationMeasurement cluster server.
|
|
1693
|
-
*
|
|
1694
|
-
* @param {number} measuredValue - The measured value of the concentration.
|
|
1695
|
-
* @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement (default to ConcentrationMeasurement.MeasurementUnit.Ppm).
|
|
1696
|
-
* @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The unit of measurement (default to ConcentrationMeasurement.MeasurementMedium.Air).
|
|
1697
|
-
*/
|
|
1698
1050
|
createDefaultPm1ConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
|
|
1699
1051
|
this.behaviors.require(Pm1ConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
|
|
1700
1052
|
measuredValue,
|
|
@@ -1706,13 +1058,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1706
1058
|
});
|
|
1707
1059
|
return this;
|
|
1708
1060
|
}
|
|
1709
|
-
/**
|
|
1710
|
-
* Create a default Pm25ConcentrationMeasurement cluster server.
|
|
1711
|
-
*
|
|
1712
|
-
* @param {number} measuredValue - The measured value of the concentration.
|
|
1713
|
-
* @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement (default to ConcentrationMeasurement.MeasurementUnit.Ppm).
|
|
1714
|
-
* @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The unit of measurement (default to ConcentrationMeasurement.MeasurementMedium.Air).
|
|
1715
|
-
*/
|
|
1716
1061
|
createDefaultPm25ConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
|
|
1717
1062
|
this.behaviors.require(Pm25ConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
|
|
1718
1063
|
measuredValue,
|
|
@@ -1724,13 +1069,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1724
1069
|
});
|
|
1725
1070
|
return this;
|
|
1726
1071
|
}
|
|
1727
|
-
/**
|
|
1728
|
-
* Create a default Pm10ConcentrationMeasurement cluster server.
|
|
1729
|
-
*
|
|
1730
|
-
* @param {number} measuredValue - The measured value of the concentration.
|
|
1731
|
-
* @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement (default to ConcentrationMeasurement.MeasurementUnit.Ppm).
|
|
1732
|
-
* @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The unit of measurement (default to ConcentrationMeasurement.MeasurementMedium.Air).
|
|
1733
|
-
*/
|
|
1734
1072
|
createDefaultPm10ConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
|
|
1735
1073
|
this.behaviors.require(Pm10ConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
|
|
1736
1074
|
measuredValue,
|
|
@@ -1742,13 +1080,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1742
1080
|
});
|
|
1743
1081
|
return this;
|
|
1744
1082
|
}
|
|
1745
|
-
/**
|
|
1746
|
-
* Create a default OzoneConcentrationMeasurement cluster server.
|
|
1747
|
-
*
|
|
1748
|
-
* @param {number} measuredValue - The measured value of the concentration.
|
|
1749
|
-
* @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement (default to ConcentrationMeasurement.MeasurementUnit.Ugm3).
|
|
1750
|
-
* @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The unit of measurement (default to ConcentrationMeasurement.MeasurementMedium.Air).
|
|
1751
|
-
*/
|
|
1752
1083
|
createDefaultOzoneConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ugm3, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
|
|
1753
1084
|
this.behaviors.require(OzoneConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
|
|
1754
1085
|
measuredValue,
|
|
@@ -1760,13 +1091,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1760
1091
|
});
|
|
1761
1092
|
return this;
|
|
1762
1093
|
}
|
|
1763
|
-
/**
|
|
1764
|
-
* Create a default RadonConcentrationMeasurement cluster server.
|
|
1765
|
-
*
|
|
1766
|
-
* @param {number} measuredValue - The measured value of the concentration.
|
|
1767
|
-
* @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement (default to ConcentrationMeasurement.MeasurementUnit.Ppm).
|
|
1768
|
-
* @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The unit of measurement (default to ConcentrationMeasurement.MeasurementMedium.Air).
|
|
1769
|
-
*/
|
|
1770
1094
|
createDefaultRadonConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ppm, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
|
|
1771
1095
|
this.behaviors.require(RadonConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
|
|
1772
1096
|
measuredValue,
|
|
@@ -1778,13 +1102,6 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1778
1102
|
});
|
|
1779
1103
|
return this;
|
|
1780
1104
|
}
|
|
1781
|
-
/**
|
|
1782
|
-
* Create a default NitrogenDioxideConcentrationMeasurement cluster server.
|
|
1783
|
-
*
|
|
1784
|
-
* @param {number} measuredValue - The measured value of the concentration.
|
|
1785
|
-
* @param {ConcentrationMeasurement.MeasurementUnit} measurementUnit - The unit of measurement (default to ConcentrationMeasurement.MeasurementUnit.Ugm3).
|
|
1786
|
-
* @param {ConcentrationMeasurement.MeasurementMedium} measurementMedium - The unit of measurement (default to ConcentrationMeasurement.MeasurementMedium.Air).
|
|
1787
|
-
*/
|
|
1788
1105
|
createDefaultNitrogenDioxideConcentrationMeasurementClusterServer(measuredValue = 0, measurementUnit = ConcentrationMeasurement.MeasurementUnit.Ugm3, measurementMedium = ConcentrationMeasurement.MeasurementMedium.Air) {
|
|
1789
1106
|
this.behaviors.require(NitrogenDioxideConcentrationMeasurementServer.with(ConcentrationMeasurement.Feature.NumericMeasurement), {
|
|
1790
1107
|
measuredValue,
|
|
@@ -1797,4 +1114,3 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
1797
1114
|
return this;
|
|
1798
1115
|
}
|
|
1799
1116
|
}
|
|
1800
|
-
//# sourceMappingURL=matterbridgeEndpoint.js.map
|