matterbridge 3.4.0 → 3.4.1-dev-20251127-826b2bf

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. package/CHANGELOG.md +128 -112
  2. package/README-DEV.md +2 -2
  3. package/README-DOCKER.md +1 -1
  4. package/README-MACOS-PLIST.md +1 -1
  5. package/README-NGINX.md +1 -1
  6. package/README-PODMAN.md +1 -1
  7. package/README-SERVICE-LOCAL.md +1 -1
  8. package/README-SERVICE-OPT.md +6 -1
  9. package/README-SERVICE.md +1 -1
  10. package/README.md +57 -49
  11. package/dist/broadcastServer.js +1 -93
  12. package/dist/broadcastServerTypes.js +0 -24
  13. package/dist/cli.js +1 -97
  14. package/dist/cliEmitter.js +0 -37
  15. package/dist/cliHistory.js +0 -38
  16. package/dist/clusters/export.js +0 -2
  17. package/dist/defaultConfigSchema.js +0 -24
  18. package/dist/deviceManager.js +1 -113
  19. package/dist/devices/airConditioner.js +0 -57
  20. package/dist/devices/batteryStorage.js +1 -48
  21. package/dist/devices/cooktop.js +0 -56
  22. package/dist/devices/dishwasher.js +0 -57
  23. package/dist/devices/evse.js +10 -74
  24. package/dist/devices/export.js +0 -5
  25. package/dist/devices/extractorHood.js +0 -43
  26. package/dist/devices/heatPump.js +2 -50
  27. package/dist/devices/laundryDryer.js +3 -62
  28. package/dist/devices/laundryWasher.js +4 -70
  29. package/dist/devices/microwaveOven.js +5 -88
  30. package/dist/devices/oven.js +0 -85
  31. package/dist/devices/refrigerator.js +0 -102
  32. package/dist/devices/roboticVacuumCleaner.js +9 -100
  33. package/dist/devices/solarPower.js +0 -38
  34. package/dist/devices/speaker.js +0 -84
  35. package/dist/devices/temperatureControl.js +3 -24
  36. package/dist/devices/waterHeater.js +2 -82
  37. package/dist/dgram/coap.js +13 -126
  38. package/dist/dgram/dgram.js +2 -114
  39. package/dist/dgram/mb_coap.js +3 -41
  40. package/dist/dgram/mb_mdns.js +15 -80
  41. package/dist/dgram/mdns.js +137 -299
  42. package/dist/dgram/multicast.js +1 -62
  43. package/dist/dgram/unicast.js +0 -54
  44. package/dist/frontend.js +35 -455
  45. package/dist/frontendTypes.js +0 -45
  46. package/dist/helpers.js +0 -53
  47. package/dist/index.js +0 -25
  48. package/dist/jestutils/export.js +0 -1
  49. package/dist/jestutils/jestHelpers.js +13 -352
  50. package/dist/logger/export.js +0 -1
  51. package/dist/matter/behaviors.js +0 -2
  52. package/dist/matter/clusters.js +0 -2
  53. package/dist/matter/devices.js +0 -2
  54. package/dist/matter/endpoints.js +0 -2
  55. package/dist/matter/export.js +0 -3
  56. package/dist/matter/types.js +0 -3
  57. package/dist/matterNode.js +8 -369
  58. package/dist/matterbridge.js +74 -788
  59. package/dist/matterbridgeAccessoryPlatform.js +0 -38
  60. package/dist/matterbridgeBehaviors.js +5 -68
  61. package/dist/matterbridgeDeviceTypes.js +14 -635
  62. package/dist/matterbridgeDynamicPlatform.js +0 -38
  63. package/dist/matterbridgeEndpoint.js +53 -1444
  64. package/dist/matterbridgeEndpointHelpers.js +20 -483
  65. package/dist/matterbridgeEndpointTypes.js +0 -25
  66. package/dist/matterbridgePlatform.js +2 -460
  67. package/dist/matterbridgeTypes.js +0 -26
  68. package/dist/pluginManager.js +5 -340
  69. package/dist/shelly.js +7 -168
  70. package/dist/storage/export.js +0 -1
  71. package/dist/update.js +0 -69
  72. package/dist/utils/colorUtils.js +2 -97
  73. package/dist/utils/commandLine.js +0 -60
  74. package/dist/utils/copyDirectory.js +0 -37
  75. package/dist/utils/createDirectory.js +0 -33
  76. package/dist/utils/createZip.js +2 -47
  77. package/dist/utils/deepCopy.js +0 -39
  78. package/dist/utils/deepEqual.js +1 -72
  79. package/dist/utils/error.js +0 -41
  80. package/dist/utils/export.js +0 -1
  81. package/dist/utils/format.js +0 -49
  82. package/dist/utils/hex.js +0 -124
  83. package/dist/utils/inspector.js +1 -69
  84. package/dist/utils/isvalid.js +0 -101
  85. package/dist/utils/network.js +5 -96
  86. package/dist/utils/spawn.js +1 -71
  87. package/dist/utils/tracker.js +1 -64
  88. package/dist/utils/wait.js +8 -60
  89. package/frontend/build/assets/index.js +4 -4
  90. package/frontend/build/assets/vendor_mui.js +1 -1
  91. package/frontend/build/assets/vendor_node_modules.js +19 -83
  92. package/frontend/build/assets/vendor_qrcode.js +1 -9
  93. package/frontend/build/assets/vendor_rjsf.js +1 -9
  94. package/frontend/package-lock.json +229 -439
  95. package/frontend/package.json +15 -15
  96. package/marked.ps1 +15 -0
  97. package/npm-shrinkwrap.json +165 -231
  98. package/package.json +2 -3
  99. package/dist/broadcastServer.d.ts +0 -115
  100. package/dist/broadcastServer.d.ts.map +0 -1
  101. package/dist/broadcastServer.js.map +0 -1
  102. package/dist/broadcastServerTypes.d.ts +0 -838
  103. package/dist/broadcastServerTypes.d.ts.map +0 -1
  104. package/dist/broadcastServerTypes.js.map +0 -1
  105. package/dist/cli.d.ts +0 -30
  106. package/dist/cli.d.ts.map +0 -1
  107. package/dist/cli.js.map +0 -1
  108. package/dist/cliEmitter.d.ts +0 -50
  109. package/dist/cliEmitter.d.ts.map +0 -1
  110. package/dist/cliEmitter.js.map +0 -1
  111. package/dist/cliHistory.d.ts +0 -48
  112. package/dist/cliHistory.d.ts.map +0 -1
  113. package/dist/cliHistory.js.map +0 -1
  114. package/dist/clusters/export.d.ts +0 -2
  115. package/dist/clusters/export.d.ts.map +0 -1
  116. package/dist/clusters/export.js.map +0 -1
  117. package/dist/defaultConfigSchema.d.ts +0 -28
  118. package/dist/defaultConfigSchema.d.ts.map +0 -1
  119. package/dist/defaultConfigSchema.js.map +0 -1
  120. package/dist/deviceManager.d.ts +0 -135
  121. package/dist/deviceManager.d.ts.map +0 -1
  122. package/dist/deviceManager.js.map +0 -1
  123. package/dist/devices/airConditioner.d.ts +0 -98
  124. package/dist/devices/airConditioner.d.ts.map +0 -1
  125. package/dist/devices/airConditioner.js.map +0 -1
  126. package/dist/devices/batteryStorage.d.ts +0 -48
  127. package/dist/devices/batteryStorage.d.ts.map +0 -1
  128. package/dist/devices/batteryStorage.js.map +0 -1
  129. package/dist/devices/cooktop.d.ts +0 -61
  130. package/dist/devices/cooktop.d.ts.map +0 -1
  131. package/dist/devices/cooktop.js.map +0 -1
  132. package/dist/devices/dishwasher.d.ts +0 -71
  133. package/dist/devices/dishwasher.d.ts.map +0 -1
  134. package/dist/devices/dishwasher.js.map +0 -1
  135. package/dist/devices/evse.d.ts +0 -76
  136. package/dist/devices/evse.d.ts.map +0 -1
  137. package/dist/devices/evse.js.map +0 -1
  138. package/dist/devices/export.d.ts +0 -17
  139. package/dist/devices/export.d.ts.map +0 -1
  140. package/dist/devices/export.js.map +0 -1
  141. package/dist/devices/extractorHood.d.ts +0 -46
  142. package/dist/devices/extractorHood.d.ts.map +0 -1
  143. package/dist/devices/extractorHood.js.map +0 -1
  144. package/dist/devices/heatPump.d.ts +0 -47
  145. package/dist/devices/heatPump.d.ts.map +0 -1
  146. package/dist/devices/heatPump.js.map +0 -1
  147. package/dist/devices/laundryDryer.d.ts +0 -67
  148. package/dist/devices/laundryDryer.d.ts.map +0 -1
  149. package/dist/devices/laundryDryer.js.map +0 -1
  150. package/dist/devices/laundryWasher.d.ts +0 -81
  151. package/dist/devices/laundryWasher.d.ts.map +0 -1
  152. package/dist/devices/laundryWasher.js.map +0 -1
  153. package/dist/devices/microwaveOven.d.ts +0 -168
  154. package/dist/devices/microwaveOven.d.ts.map +0 -1
  155. package/dist/devices/microwaveOven.js.map +0 -1
  156. package/dist/devices/oven.d.ts +0 -105
  157. package/dist/devices/oven.d.ts.map +0 -1
  158. package/dist/devices/oven.js.map +0 -1
  159. package/dist/devices/refrigerator.d.ts +0 -118
  160. package/dist/devices/refrigerator.d.ts.map +0 -1
  161. package/dist/devices/refrigerator.js.map +0 -1
  162. package/dist/devices/roboticVacuumCleaner.d.ts +0 -112
  163. package/dist/devices/roboticVacuumCleaner.d.ts.map +0 -1
  164. package/dist/devices/roboticVacuumCleaner.js.map +0 -1
  165. package/dist/devices/solarPower.d.ts +0 -40
  166. package/dist/devices/solarPower.d.ts.map +0 -1
  167. package/dist/devices/solarPower.js.map +0 -1
  168. package/dist/devices/speaker.d.ts +0 -87
  169. package/dist/devices/speaker.d.ts.map +0 -1
  170. package/dist/devices/speaker.js.map +0 -1
  171. package/dist/devices/temperatureControl.d.ts +0 -166
  172. package/dist/devices/temperatureControl.d.ts.map +0 -1
  173. package/dist/devices/temperatureControl.js.map +0 -1
  174. package/dist/devices/waterHeater.d.ts +0 -111
  175. package/dist/devices/waterHeater.d.ts.map +0 -1
  176. package/dist/devices/waterHeater.js.map +0 -1
  177. package/dist/dgram/coap.d.ts +0 -205
  178. package/dist/dgram/coap.d.ts.map +0 -1
  179. package/dist/dgram/coap.js.map +0 -1
  180. package/dist/dgram/dgram.d.ts +0 -141
  181. package/dist/dgram/dgram.d.ts.map +0 -1
  182. package/dist/dgram/dgram.js.map +0 -1
  183. package/dist/dgram/mb_coap.d.ts +0 -24
  184. package/dist/dgram/mb_coap.d.ts.map +0 -1
  185. package/dist/dgram/mb_coap.js.map +0 -1
  186. package/dist/dgram/mb_mdns.d.ts +0 -24
  187. package/dist/dgram/mb_mdns.d.ts.map +0 -1
  188. package/dist/dgram/mb_mdns.js.map +0 -1
  189. package/dist/dgram/mdns.d.ts +0 -290
  190. package/dist/dgram/mdns.d.ts.map +0 -1
  191. package/dist/dgram/mdns.js.map +0 -1
  192. package/dist/dgram/multicast.d.ts +0 -67
  193. package/dist/dgram/multicast.d.ts.map +0 -1
  194. package/dist/dgram/multicast.js.map +0 -1
  195. package/dist/dgram/unicast.d.ts +0 -56
  196. package/dist/dgram/unicast.d.ts.map +0 -1
  197. package/dist/dgram/unicast.js.map +0 -1
  198. package/dist/frontend.d.ts +0 -238
  199. package/dist/frontend.d.ts.map +0 -1
  200. package/dist/frontend.js.map +0 -1
  201. package/dist/frontendTypes.d.ts +0 -529
  202. package/dist/frontendTypes.d.ts.map +0 -1
  203. package/dist/frontendTypes.js.map +0 -1
  204. package/dist/helpers.d.ts +0 -48
  205. package/dist/helpers.d.ts.map +0 -1
  206. package/dist/helpers.js.map +0 -1
  207. package/dist/index.d.ts +0 -34
  208. package/dist/index.d.ts.map +0 -1
  209. package/dist/index.js.map +0 -1
  210. package/dist/jestutils/export.d.ts +0 -2
  211. package/dist/jestutils/export.d.ts.map +0 -1
  212. package/dist/jestutils/export.js.map +0 -1
  213. package/dist/jestutils/jestHelpers.d.ts +0 -303
  214. package/dist/jestutils/jestHelpers.d.ts.map +0 -1
  215. package/dist/jestutils/jestHelpers.js.map +0 -1
  216. package/dist/logger/export.d.ts +0 -2
  217. package/dist/logger/export.d.ts.map +0 -1
  218. package/dist/logger/export.js.map +0 -1
  219. package/dist/matter/behaviors.d.ts +0 -2
  220. package/dist/matter/behaviors.d.ts.map +0 -1
  221. package/dist/matter/behaviors.js.map +0 -1
  222. package/dist/matter/clusters.d.ts +0 -2
  223. package/dist/matter/clusters.d.ts.map +0 -1
  224. package/dist/matter/clusters.js.map +0 -1
  225. package/dist/matter/devices.d.ts +0 -2
  226. package/dist/matter/devices.d.ts.map +0 -1
  227. package/dist/matter/devices.js.map +0 -1
  228. package/dist/matter/endpoints.d.ts +0 -2
  229. package/dist/matter/endpoints.d.ts.map +0 -1
  230. package/dist/matter/endpoints.js.map +0 -1
  231. package/dist/matter/export.d.ts +0 -5
  232. package/dist/matter/export.d.ts.map +0 -1
  233. package/dist/matter/export.js.map +0 -1
  234. package/dist/matter/types.d.ts +0 -3
  235. package/dist/matter/types.d.ts.map +0 -1
  236. package/dist/matter/types.js.map +0 -1
  237. package/dist/matterNode.d.ts +0 -342
  238. package/dist/matterNode.d.ts.map +0 -1
  239. package/dist/matterNode.js.map +0 -1
  240. package/dist/matterbridge.d.ts +0 -473
  241. package/dist/matterbridge.d.ts.map +0 -1
  242. package/dist/matterbridge.js.map +0 -1
  243. package/dist/matterbridgeAccessoryPlatform.d.ts +0 -41
  244. package/dist/matterbridgeAccessoryPlatform.d.ts.map +0 -1
  245. package/dist/matterbridgeAccessoryPlatform.js.map +0 -1
  246. package/dist/matterbridgeBehaviors.d.ts +0 -2404
  247. package/dist/matterbridgeBehaviors.d.ts.map +0 -1
  248. package/dist/matterbridgeBehaviors.js.map +0 -1
  249. package/dist/matterbridgeDeviceTypes.d.ts +0 -698
  250. package/dist/matterbridgeDeviceTypes.d.ts.map +0 -1
  251. package/dist/matterbridgeDeviceTypes.js.map +0 -1
  252. package/dist/matterbridgeDynamicPlatform.d.ts +0 -41
  253. package/dist/matterbridgeDynamicPlatform.d.ts.map +0 -1
  254. package/dist/matterbridgeDynamicPlatform.js.map +0 -1
  255. package/dist/matterbridgeEndpoint.d.ts +0 -1507
  256. package/dist/matterbridgeEndpoint.d.ts.map +0 -1
  257. package/dist/matterbridgeEndpoint.js.map +0 -1
  258. package/dist/matterbridgeEndpointHelpers.d.ts +0 -787
  259. package/dist/matterbridgeEndpointHelpers.d.ts.map +0 -1
  260. package/dist/matterbridgeEndpointHelpers.js.map +0 -1
  261. package/dist/matterbridgeEndpointTypes.d.ts +0 -166
  262. package/dist/matterbridgeEndpointTypes.d.ts.map +0 -1
  263. package/dist/matterbridgeEndpointTypes.js.map +0 -1
  264. package/dist/matterbridgePlatform.d.ts +0 -524
  265. package/dist/matterbridgePlatform.d.ts.map +0 -1
  266. package/dist/matterbridgePlatform.js.map +0 -1
  267. package/dist/matterbridgeTypes.d.ts +0 -251
  268. package/dist/matterbridgeTypes.d.ts.map +0 -1
  269. package/dist/matterbridgeTypes.js.map +0 -1
  270. package/dist/pluginManager.d.ts +0 -371
  271. package/dist/pluginManager.d.ts.map +0 -1
  272. package/dist/pluginManager.js.map +0 -1
  273. package/dist/shelly.d.ts +0 -174
  274. package/dist/shelly.d.ts.map +0 -1
  275. package/dist/shelly.js.map +0 -1
  276. package/dist/storage/export.d.ts +0 -2
  277. package/dist/storage/export.d.ts.map +0 -1
  278. package/dist/storage/export.js.map +0 -1
  279. package/dist/update.d.ts +0 -75
  280. package/dist/update.d.ts.map +0 -1
  281. package/dist/update.js.map +0 -1
  282. package/dist/utils/colorUtils.d.ts +0 -101
  283. package/dist/utils/colorUtils.d.ts.map +0 -1
  284. package/dist/utils/colorUtils.js.map +0 -1
  285. package/dist/utils/commandLine.d.ts +0 -66
  286. package/dist/utils/commandLine.d.ts.map +0 -1
  287. package/dist/utils/commandLine.js.map +0 -1
  288. package/dist/utils/copyDirectory.d.ts +0 -35
  289. package/dist/utils/copyDirectory.d.ts.map +0 -1
  290. package/dist/utils/copyDirectory.js.map +0 -1
  291. package/dist/utils/createDirectory.d.ts +0 -34
  292. package/dist/utils/createDirectory.d.ts.map +0 -1
  293. package/dist/utils/createDirectory.js.map +0 -1
  294. package/dist/utils/createZip.d.ts +0 -39
  295. package/dist/utils/createZip.d.ts.map +0 -1
  296. package/dist/utils/createZip.js.map +0 -1
  297. package/dist/utils/deepCopy.d.ts +0 -32
  298. package/dist/utils/deepCopy.d.ts.map +0 -1
  299. package/dist/utils/deepCopy.js.map +0 -1
  300. package/dist/utils/deepEqual.d.ts +0 -54
  301. package/dist/utils/deepEqual.d.ts.map +0 -1
  302. package/dist/utils/deepEqual.js.map +0 -1
  303. package/dist/utils/error.d.ts +0 -44
  304. package/dist/utils/error.d.ts.map +0 -1
  305. package/dist/utils/error.js.map +0 -1
  306. package/dist/utils/export.d.ts +0 -13
  307. package/dist/utils/export.d.ts.map +0 -1
  308. package/dist/utils/export.js.map +0 -1
  309. package/dist/utils/format.d.ts +0 -53
  310. package/dist/utils/format.d.ts.map +0 -1
  311. package/dist/utils/format.js.map +0 -1
  312. package/dist/utils/hex.d.ts +0 -89
  313. package/dist/utils/hex.d.ts.map +0 -1
  314. package/dist/utils/hex.js.map +0 -1
  315. package/dist/utils/inspector.d.ts +0 -87
  316. package/dist/utils/inspector.d.ts.map +0 -1
  317. package/dist/utils/inspector.js.map +0 -1
  318. package/dist/utils/isvalid.d.ts +0 -103
  319. package/dist/utils/isvalid.d.ts.map +0 -1
  320. package/dist/utils/isvalid.js.map +0 -1
  321. package/dist/utils/network.d.ts +0 -111
  322. package/dist/utils/network.d.ts.map +0 -1
  323. package/dist/utils/network.js.map +0 -1
  324. package/dist/utils/spawn.d.ts +0 -33
  325. package/dist/utils/spawn.d.ts.map +0 -1
  326. package/dist/utils/spawn.js.map +0 -1
  327. package/dist/utils/tracker.d.ts +0 -108
  328. package/dist/utils/tracker.d.ts.map +0 -1
  329. package/dist/utils/tracker.js.map +0 -1
  330. package/dist/utils/wait.d.ts +0 -54
  331. package/dist/utils/wait.d.ts.map +0 -1
  332. package/dist/utils/wait.js.map +0 -1
package/dist/cli.js CHANGED
@@ -1,33 +1,6 @@
1
- /**
2
- * This file contains the CLI entry point of Matterbridge.
3
- *
4
- * @file cli.ts
5
- * @author Luca Liguori
6
- * @created 2023-12-29
7
- * @version 3.0.0
8
- * @license Apache-2.0
9
- *
10
- * Copyright 2023, 2024, 2025 Luca Liguori.
11
- *
12
- * Licensed under the Apache License, Version 2.0 (the "License");
13
- * you may not use this file except in compliance with the License.
14
- * You may obtain a copy of the License at
15
- *
16
- * http://www.apache.org/licenses/LICENSE-2.0
17
- *
18
- * Unless required by applicable law or agreed to in writing, software
19
- * distributed under the License is distributed on an "AS IS" BASIS,
20
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
- * See the License for the specific language governing permissions and
22
- * limitations under the License.
23
- */
24
- /* eslint-disable no-console */
25
- /* eslint-disable n/no-process-exit */
26
1
  if (process.argv.includes('--loader') || process.argv.includes('-loader'))
27
2
  console.log('\u001B[32mCli loaded.\u001B[40;0m');
28
- // AnsiLogger module
29
3
  import { AnsiLogger } from 'node-ansi-logger';
30
- // Cli
31
4
  import { cliEmitter } from './cliEmitter.js';
32
5
  import { hasParameter, hasAnyParameter } from './utils/commandLine.js';
33
6
  import { inspectError } from './utils/error.js';
@@ -37,10 +10,7 @@ import { formatBytes, formatUptime } from './utils/format.js';
37
10
  export let instance;
38
11
  export const tracker = new Tracker('Cli', false, false);
39
12
  export const inspector = new Inspector('Cli', false, false);
40
- const log = new AnsiLogger({ logName: 'Cli', logTimestampFormat: 4 /* TimestampFormat.TIME_MILLIS */, logLevel: hasParameter('debug') ? "debug" /* LogLevel.DEBUG */ : "info" /* LogLevel.INFO */ });
41
- /**
42
- * Starts the CPU and memory tracker.
43
- */
13
+ const log = new AnsiLogger({ logName: 'Cli', logTimestampFormat: 4, logLevel: hasParameter('debug') ? "debug" : "info" });
44
14
  function startCpuMemoryCheck() {
45
15
  log.debug(`Cpu memory check starting...`);
46
16
  tracker.start();
@@ -53,50 +23,26 @@ function startCpuMemoryCheck() {
53
23
  });
54
24
  log.debug(`Cpu memory check started`);
55
25
  }
56
- /**
57
- * Stops the CPU and memory tracker.
58
- */
59
26
  function stopCpuMemoryCheck() {
60
27
  log.debug(`Cpu memory check stopping...`);
61
28
  tracker.stop();
62
29
  tracker.removeAllListeners();
63
30
  log.debug(`Cpu memory check stopped`);
64
31
  }
65
- /**
66
- * Starts the inspector for heap sampling.
67
- * This function is called when the -inspect parameter is passed.
68
- */
69
32
  async function startInspector() {
70
33
  await inspector.start();
71
34
  }
72
- /**
73
- * Stops the heap sampling and saves the profile.
74
- * This function is called when the -inspect parameter is passed.
75
- */
76
35
  async function stopInspector() {
77
36
  await inspector.stop();
78
37
  }
79
- /**
80
- * Takes a heap snapshot
81
- */
82
38
  async function takeHeapSnapshot() {
83
39
  await inspector.takeHeapSnapshot();
84
40
  }
85
- /**
86
- * Triggers a manual garbage collection.
87
- * This function is working only if the node process is started with --expose_gc.
88
- *
89
- * @remarks To check the effect of the garbage collection, add also --trace_gc or --trace_gc_verbose.
90
- */
91
41
  function triggerGarbageCollection() {
92
42
  inspector.runGarbageCollector();
93
43
  }
94
- /**
95
- * Registers event handlers for the Matterbridge instance.
96
- */
97
44
  function registerHandlers() {
98
45
  log.debug('Registering event handlers...');
99
- // istanbul ignore next cause registerHandlers is called only if instance is defined
100
46
  if (!instance)
101
47
  return;
102
48
  instance.on('shutdown', () => shutdown());
@@ -110,9 +56,6 @@ function registerHandlers() {
110
56
  instance.on('triggergarbagecollection', () => triggerGarbageCollection());
111
57
  log.debug('Registered event handlers');
112
58
  }
113
- /**
114
- * Shuts down the Matterbridge instance and exits the process.
115
- */
116
59
  async function shutdown() {
117
60
  log.debug('Received shutdown event, exiting...');
118
61
  if (hasParameter('inspect'))
@@ -121,56 +64,26 @@ async function shutdown() {
121
64
  cliEmitter.emit('shutdown');
122
65
  process.exit(0);
123
66
  }
124
- /**
125
- * Restarts the Matterbridge instance.
126
- */
127
67
  async function restart() {
128
68
  log.debug('Received restart event, loading...');
129
69
  const { Matterbridge } = await import('./matterbridge.js');
130
70
  instance = await Matterbridge.loadInstance(true);
131
71
  registerHandlers();
132
72
  }
133
- /**
134
- * Updates the Matterbridge instance.
135
- */
136
73
  async function update() {
137
74
  log.debug('Received update event, updating...');
138
- // TODO: Implement update logic outside of matterbridge
139
75
  const { Matterbridge } = await import('./matterbridge.js');
140
76
  instance = await Matterbridge.loadInstance(true);
141
77
  registerHandlers();
142
78
  }
143
- /**
144
- * Starts the CPU and memory check when the -startmemorycheck parameter is passed.
145
- */
146
79
  function start() {
147
80
  log.debug('Received start memory check event');
148
81
  startCpuMemoryCheck();
149
82
  }
150
- /**
151
- * Stops the CPU and memory check when the -stopmemorycheck parameter is passed.
152
- */
153
83
  function stop() {
154
84
  log.debug('Received stop memory check event');
155
85
  stopCpuMemoryCheck();
156
86
  }
157
- /**
158
- * Main function that initializes the Matterbridge instance and starts the CLI.
159
- *
160
- * @remarks
161
- *
162
- * Debug parameters:
163
- *
164
- * --debug enables debug logging.
165
- *
166
- * --verbose enables verbose logging.
167
- *
168
- * --loader enables loader logging.
169
- *
170
- * --inspect enables the inspector for heap sampling.
171
- *
172
- * --snapshotinterval <milliseconds> can be used to set the heap snapshot interval. Default is undefined. Minimum is 30000 ms.
173
- */
174
87
  async function main() {
175
88
  log.debug(`Cli main() started`);
176
89
  startCpuMemoryCheck();
@@ -180,7 +93,6 @@ async function main() {
180
93
  const { Matterbridge } = await import('./matterbridge.js');
181
94
  instance = await Matterbridge.loadInstance(true);
182
95
  log.debug(`***Matterbridge.loadInstance(true) exited`);
183
- // Check if the instance needs to shut down from parseCommandLine()
184
96
  if (!instance || instance.shutdown) {
185
97
  shutdown();
186
98
  }
@@ -198,18 +110,11 @@ main().catch((error) => {
198
110
  inspectError(log, 'Matterbridge.loadInstance() failed with error', error);
199
111
  shutdown();
200
112
  });
201
- /**
202
- * Displays the version.
203
- */
204
113
  async function version() {
205
- // Dynamic JSON import (Node >= 20) with import attributes
206
114
  const { default: pkg } = await import('../package.json', { with: { type: 'json' } });
207
115
  console.log(`Matterbridge version ${pkg.version}`);
208
116
  process.exit(0);
209
117
  }
210
- /**
211
- * Displays the help.
212
- */
213
118
  function help() {
214
119
  console.log(`
215
120
  Usage: matterbridge [options] [command]
@@ -263,4 +168,3 @@ function help() {
263
168
  `);
264
169
  process.exit(0);
265
170
  }
266
- //# sourceMappingURL=cli.js.map
@@ -1,49 +1,12 @@
1
- /**
2
- * This file contains the CLI emitter.
3
- *
4
- * @file cliEmitter.ts
5
- * @author Luca Liguori
6
- * @created 2025-07-04
7
- * @version 1.0.2
8
- * @license Apache-2.0
9
- *
10
- * Copyright 2025, 2026, 2027 Luca Liguori.
11
- *
12
- * Licensed under the Apache License, Version 2.0 (the "License");
13
- * you may not use this file except in compliance with the License.
14
- * You may obtain a copy of the License at
15
- *
16
- * http://www.apache.org/licenses/LICENSE-2.0
17
- *
18
- * Unless required by applicable law or agreed to in writing, software
19
- * distributed under the License is distributed on an "AS IS" BASIS,
20
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
- * See the License for the specific language governing permissions and
22
- * limitations under the License.
23
- */
24
- // eslint-disable-next-line no-console
25
1
  if (process.argv.includes('--loader') || process.argv.includes('-loader'))
26
2
  console.log('\u001B[32mCli emitter loaded.\u001B[40;0m');
27
3
  import { EventEmitter } from 'node:events';
28
4
  export const cliEmitter = new EventEmitter();
29
5
  export let lastOsCpuUsage = 0;
30
6
  export let lastProcessCpuUsage = 0;
31
- /**
32
- * Sets the last os CPU usage.
33
- *
34
- * @param {number} val - The os CPU usage percentage to set.
35
- * @returns {void}
36
- */
37
7
  export function setLastOsCpuUsage(val) {
38
8
  lastOsCpuUsage = val;
39
9
  }
40
- /**
41
- * Sets the last process CPU usage.
42
- *
43
- * @param {number} val - The process CPU usage percentage to set.
44
- * @returns {void}
45
- */
46
10
  export function setLastProcessCpuUsage(val) {
47
11
  lastProcessCpuUsage = val;
48
12
  }
49
- //# sourceMappingURL=cliEmitter.js.map
@@ -1,40 +1,9 @@
1
- /**
2
- * This file contains the CLI history page generator.
3
- *
4
- * @file cliHistory.ts
5
- * @author Luca Liguori
6
- * @created 2025-10-09
7
- * @version 1.0.1
8
- * @license Apache-2.0
9
- *
10
- * Copyright 2025, 2026, 2027 Luca Liguori.
11
- *
12
- * Licensed under the Apache License, Version 2.0 (the "License");
13
- * you may not use this file except in compliance with the License.
14
- * You may obtain a copy of the License at
15
- *
16
- * http://www.apache.org/licenses/LICENSE-2.0
17
- *
18
- * Unless required by applicable law or agreed to in writing, software
19
- * distributed under the License is distributed on an "AS IS" BASIS,
20
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
- * See the License for the specific language governing permissions and
22
- * limitations under the License.
23
- */
24
- // eslint-disable-next-line no-console
25
1
  if (process.argv.includes('--loader') || process.argv.includes('-loader'))
26
2
  console.log('\u001B[32mCli history loaded.\u001B[40;0m');
27
3
  import { writeFileSync } from 'node:fs';
28
4
  import path from 'node:path';
29
5
  import os from 'node:os';
30
6
  import { Tracker } from './utils/tracker.js';
31
- /**
32
- * Generates a static HTML dashboard displaying CPU and memory history.
33
- *
34
- * @param {GenerateHistoryPageOptions} [options] - Optional configuration for output path, page title, and refresh interval.
35
- *
36
- * @returns {string | undefined} The absolute path to the generated HTML file, or undefined if no samples exist.
37
- */
38
7
  export function generateHistoryPage(options = {}) {
39
8
  const pageTitle = options.pageTitle ?? 'Matterbridge CPU & Memory History';
40
9
  const hostname = options.hostname ?? os.hostname();
@@ -814,13 +783,6 @@ export function generateHistoryPage(options = {}) {
814
783
  writeFileSync(outputPath, html, { encoding: 'utf-8' });
815
784
  return outputPath;
816
785
  }
817
- /**
818
- * Escapes HTML special characters to prevent breaking embedded markup.
819
- *
820
- * @param {string} input - The string to escape.
821
- * @returns {string} The escaped string safe for HTML contexts.
822
- */
823
786
  function escapeHtml(input) {
824
787
  return input.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#39;');
825
788
  }
826
- //# sourceMappingURL=cliHistory.js.map
@@ -1,3 +1 @@
1
1
  export {};
2
- // Nothing to export right now, but this file is here to make it easier to add exports in the future
3
- //# sourceMappingURL=export.js.map
@@ -1,26 +1,3 @@
1
- /**
2
- * This file contains the default config for the plugins.
3
- *
4
- * @file defaultConfigSchema.ts
5
- * @author Luca Liguori
6
- * @created 2024-05-07
7
- * @version 1.0.1
8
- * @license Apache-2.0
9
- *
10
- * Copyright 2024, 2025, 2026 Luca Liguori.
11
- *
12
- * Licensed under the Apache License, Version 2.0 (the "License");
13
- * you may not use this file except in compliance with the License.
14
- * You may obtain a copy of the License at
15
- *
16
- * http://www.apache.org/licenses/LICENSE-2.0
17
- *
18
- * Unless required by applicable law or agreed to in writing, software
19
- * distributed under the License is distributed on an "AS IS" BASIS,
20
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
- * See the License for the specific language governing permissions and
22
- * limitations under the License.
23
- */
24
1
  export const zigbee2mqtt_config = {
25
2
  name: 'matterbridge-zigbee2mqtt',
26
3
  type: 'DynamicPlatform',
@@ -82,4 +59,3 @@ export const shelly_config = {
82
59
  debugWs: false,
83
60
  unregisterOnShutdown: false,
84
61
  };
85
- //# sourceMappingURL=defaultConfigSchema.js.map
@@ -1,40 +1,9 @@
1
- /**
2
- * This file contains the DeviceManager class.
3
- *
4
- * @file devices.ts
5
- * @author Luca Liguori
6
- * @created 2024-07-26
7
- * @version 1.1.1
8
- * @license Apache-2.0
9
- *
10
- * Copyright 2024, 2025, 2026 Luca Liguori.
11
- *
12
- * Licensed under the Apache License, Version 2.0 (the "License");
13
- * you may not use this file except in compliance with the License.
14
- * You may obtain a copy of the License at
15
- *
16
- * http://www.apache.org/licenses/LICENSE-2.0
17
- *
18
- * Unless required by applicable law or agreed to in writing, software
19
- * distributed under the License is distributed on an "AS IS" BASIS,
20
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
- * See the License for the specific language governing permissions and
22
- * limitations under the License.
23
- */
24
- // AnsiLogger module
25
1
  import { AnsiLogger, BLUE, CYAN, db, debugStringify, er } from 'node-ansi-logger';
26
2
  import { dev } from './matterbridgeTypes.js';
27
3
  import { BroadcastServer } from './broadcastServer.js';
28
4
  import { hasParameter } from './utils/commandLine.js';
29
- /**
30
- * Converts a MatterbridgeEndpoint to a BaseDevice.
31
- *
32
- * @param {MatterbridgeEndpoint} device The MatterbridgeEndpoint to convert.
33
- * @returns {BaseDevice} The converted BaseDevice.
34
- */
35
5
  export function toBaseDevice(device) {
36
6
  return {
37
- // MatterbridgeEndpoint properties
38
7
  mode: device.mode,
39
8
  plugin: device.plugin,
40
9
  configUrl: device.configUrl,
@@ -54,25 +23,18 @@ export function toBaseDevice(device) {
54
23
  originalId: device.originalId,
55
24
  name: device.name,
56
25
  deviceType: device.deviceType,
57
- // Endpoint properties
58
26
  number: device.number,
59
27
  id: device.id,
60
28
  };
61
29
  }
62
- /**
63
- * Manages Matterbridge devices.
64
- */
65
30
  export class DeviceManager {
66
31
  _devices = new Map();
67
32
  log;
68
33
  server;
69
34
  debug = hasParameter('debug') || hasParameter('verbose');
70
35
  verbose = hasParameter('verbose');
71
- /**
72
- * Creates an instance of DeviceManager.
73
- */
74
36
  constructor() {
75
- this.log = new AnsiLogger({ logName: 'DeviceManager', logTimestampFormat: 4 /* TimestampFormat.TIME_MILLIS */, logLevel: hasParameter('debug') ? "debug" /* LogLevel.DEBUG */ : "info" /* LogLevel.INFO */ });
37
+ this.log = new AnsiLogger({ logName: 'DeviceManager', logTimestampFormat: 4, logLevel: hasParameter('debug') ? "debug" : "info" });
76
38
  this.log.debug('Matterbridge device manager starting...');
77
39
  this.server = new BroadcastServer('devices', this.log);
78
40
  this.server.on('broadcast_message', this.msgHandler.bind(this));
@@ -127,47 +89,18 @@ export class DeviceManager {
127
89
  }
128
90
  }
129
91
  }
130
- /**
131
- * Gets the number of devices.
132
- *
133
- * @returns {number} The number of devices.
134
- */
135
92
  get length() {
136
93
  return this._devices.size;
137
94
  }
138
- /**
139
- * Gets the number of devices.
140
- *
141
- * @returns {number} The number of devices.
142
- */
143
95
  get size() {
144
96
  return this._devices.size;
145
97
  }
146
- /**
147
- * Checks if a device with the specified unique ID exists.
148
- *
149
- * @param {string} uniqueId - The unique ID of the device.
150
- * @returns {boolean} True if the device exists, false otherwise.
151
- */
152
98
  has(uniqueId) {
153
99
  return this._devices.has(uniqueId);
154
100
  }
155
- /**
156
- * Gets a device by its unique ID.
157
- *
158
- * @param {string} uniqueId - The unique ID of the device.
159
- * @returns {MatterbridgeEndpoint | undefined} The device, or undefined if not found.
160
- */
161
101
  get(uniqueId) {
162
102
  return this._devices.get(uniqueId);
163
103
  }
164
- /**
165
- * Adds a device to the manager.
166
- *
167
- * @param {MatterbridgeEndpoint} device - The device to add.
168
- * @returns {MatterbridgeEndpoint} The added device.
169
- * @throws {Error} If the device does not have a unique ID.
170
- */
171
104
  set(device) {
172
105
  if (!device.uniqueId)
173
106
  throw new Error(`The device ${dev}${device.deviceName}${er} has not been initialized: uniqueId is required`);
@@ -176,13 +109,6 @@ export class DeviceManager {
176
109
  this._devices.set(device.uniqueId, device);
177
110
  return device;
178
111
  }
179
- /**
180
- * Removes a device from the manager.
181
- *
182
- * @param {MatterbridgeEndpoint} device - The device to remove.
183
- * @returns {boolean} True if the device was removed, false otherwise.
184
- * @throws {Error} If the device does not have a unique ID.
185
- */
186
112
  remove(device) {
187
113
  if (!device.uniqueId)
188
114
  throw new Error(`The device ${dev}${device.deviceName}${er} has not been initialized: uniqueId is required`);
@@ -190,59 +116,27 @@ export class DeviceManager {
190
116
  this.log.error(`The device ${dev}${device.deviceName}${er} with uniqueId ${BLUE}${device.uniqueId}${er} serialNumber ${BLUE}${device.serialNumber}${er} is not registered in the device manager`);
191
117
  return this._devices.delete(device.uniqueId);
192
118
  }
193
- /**
194
- * Clears all devices from the manager.
195
- */
196
119
  clear() {
197
120
  this._devices.clear();
198
121
  }
199
- /**
200
- * Converts a MatterbridgeEndpoint to a BaseDevice.
201
- *
202
- * @param {MatterbridgeEndpoint} device The MatterbridgeEndpoint to convert.
203
- * @returns {BaseDevice} The converted BaseDevice.
204
- */
205
122
  toBaseDevice(device) {
206
123
  return toBaseDevice(device);
207
124
  }
208
- /**
209
- * Gets an array of all devices.
210
- *
211
- * @returns {MatterbridgeEndpoint[]} An array of all devices.
212
- */
213
125
  array() {
214
126
  return Array.from(this._devices.values());
215
127
  }
216
- /**
217
- * Gets a base array of all devices suitable for serialization.
218
- *
219
- * @param {string} [pluginName] - Optional plugin name to filter devices.
220
- * @returns {ApiDevices[]} A base array of all devices.
221
- */
222
128
  baseArray(pluginName) {
223
129
  const devices = [];
224
130
  for (const device of Array.from(this._devices.values())) {
225
- // Filter by pluginName if provided
226
131
  if (pluginName && pluginName !== device.plugin)
227
132
  continue;
228
133
  devices.push(this.toBaseDevice(device));
229
134
  }
230
135
  return devices;
231
136
  }
232
- /**
233
- * Iterates over all devices.
234
- *
235
- * @returns {IterableIterator<MatterbridgeEndpoint>} An iterator for the devices.
236
- */
237
137
  [Symbol.iterator]() {
238
138
  return this._devices.values();
239
139
  }
240
- /**
241
- * Asynchronously iterates over each device and calls the provided callback function.
242
- *
243
- * @param {(device: MatterbridgeEndpoint) => Promise<void>} callback - The callback function to call with each device.
244
- * @returns {Promise<void>} A promise that resolves when all callbacks have been called.
245
- */
246
140
  async forEach(callback) {
247
141
  if (this.size === 0)
248
142
  return;
@@ -256,13 +150,7 @@ export class DeviceManager {
256
150
  });
257
151
  await Promise.all(tasks);
258
152
  }
259
- /**
260
- * Sets the log level.
261
- *
262
- * @param {LogLevel} logLevel - The log level to set.
263
- */
264
153
  set logLevel(logLevel) {
265
154
  this.log.logLevel = logLevel;
266
155
  }
267
156
  }
268
- //# sourceMappingURL=deviceManager.js.map
@@ -1,64 +1,8 @@
1
- /**
2
- * @description This file contains the AirConditioner class.
3
- * @file src/devices/airConditioner.ts
4
- * @author Luca Liguori
5
- * @created 2025-09-04
6
- * @version 1.0.0
7
- * @license Apache-2.0
8
- *
9
- * Copyright 2025, 2026, 2027 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
- // Imports from @matter
24
1
  import { ThermostatUserInterfaceConfiguration } from '@matter/types/clusters/thermostat-user-interface-configuration';
25
2
  import { FanControl } from '@matter/types/clusters/fan-control';
26
- // Matterbridge
27
3
  import { airConditioner, powerSource } from '../matterbridgeDeviceTypes.js';
28
4
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
29
5
  export class AirConditioner extends MatterbridgeEndpoint {
30
- /**
31
- * Creates an instance of the AirConditioner class.
32
- *
33
- * A Room Air Conditioner is a device which at a minimum is capable of being turned on and off and of controlling the temperature in the living space.
34
- * A Room Air Conditioner MAY also support additional capabilities via endpoint composition.
35
- * The DF (Dead Front) feature is required for the On/Off cluster in this device type.
36
- *
37
- * @param {string} name - The name of the air conditioner.
38
- * @param {string} serial - The serial number of the air conditioner.
39
- * @param {AirConditionerOptions} [options] - Optional configuration values. Missing fields use defaults.
40
- *
41
- * Options defaults:
42
- * - localTemperature: 23
43
- * - occupiedHeatingSetpoint: 21
44
- * - occupiedCoolingSetpoint: 25
45
- * - minSetpointDeadBand: 1
46
- * - minHeatSetpointLimit: 0
47
- * - maxHeatSetpointLimit: 50
48
- * - minCoolSetpointLimit: 0
49
- * - maxCoolSetpointLimit: 50
50
- * - temperatureDisplayMode: Celsius
51
- * - keypadLockout: NoLockout
52
- * - scheduleProgrammingVisibility: ScheduleProgrammingPermitted
53
- * - fanMode: Off
54
- * - fanModeSequence: OffLowMedHighAuto
55
- * - percentSetting: 0
56
- * - percentCurrent: 0
57
- *
58
- * @returns {AirConditioner} The AirConditioner instance.
59
- *
60
- * @remarks Not supported by Google Home.
61
- */
62
6
  constructor(name, serial, options = {}) {
63
7
  const { localTemperature = 23, occupiedHeatingSetpoint = 21, occupiedCoolingSetpoint = 25, minSetpointDeadBand = 1, minHeatSetpointLimit = 0, maxHeatSetpointLimit = 50, minCoolSetpointLimit = 0, maxCoolSetpointLimit = 50, temperatureDisplayMode = ThermostatUserInterfaceConfiguration.TemperatureDisplayMode.Celsius, keypadLockout = ThermostatUserInterfaceConfiguration.KeypadLockout.NoLockout, scheduleProgrammingVisibility = ThermostatUserInterfaceConfiguration.ScheduleProgrammingVisibility.ScheduleProgrammingPermitted, fanMode = FanControl.FanMode.Off, fanModeSequence = FanControl.FanModeSequence.OffLowMedHighAuto, percentSetting = 0, percentCurrent = 0, } = options;
64
8
  super([airConditioner, powerSource], { id: `${name.replaceAll(' ', '')}-${serial.replaceAll(' ', '')}` });
@@ -71,4 +15,3 @@ export class AirConditioner extends MatterbridgeEndpoint {
71
15
  this.createDefaultFanControlClusterServer(fanMode, fanModeSequence, percentSetting, percentCurrent);
72
16
  }
73
17
  }
74
- //# sourceMappingURL=airConditioner.js.map
@@ -1,53 +1,9 @@
1
- /**
2
- * @description This file contains the BatteryStorage class.
3
- * @file src/devices/batteryStorage.ts
4
- * @author Luca Liguori
5
- * @contributor Ludovic BOUÉ
6
- * @created 2025-06-20
7
- * @version 1.0.0
8
- * @license Apache-2.0
9
- *
10
- * Copyright 2025, 2026, 2027 Luca Liguori.
11
- *
12
- * Licensed under the Apache License, Version 2.0 (the "License");
13
- * you may not use this file except in compliance with the License.
14
- * You may obtain a copy of the License at
15
- *
16
- * http://www.apache.org/licenses/LICENSE-2.0
17
- *
18
- * Unless required by applicable law or agreed to in writing, software
19
- * distributed under the License is distributed on an "AS IS" BASIS,
20
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
- * See the License for the specific language governing permissions and
22
- * limitations under the License.
23
- */
24
- // @matter
25
1
  import { PowerSourceTag } from '@matter/node';
26
2
  import { DeviceEnergyManagement } from '@matter/types/clusters/device-energy-management';
27
3
  import { PowerSource } from '@matter/types/clusters/power-source';
28
- // Matterbridge
29
4
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
30
5
  import { deviceEnergyManagement, electricalSensor, batteryStorage, powerSource } from '../matterbridgeDeviceTypes.js';
31
6
  export class BatteryStorage extends MatterbridgeEndpoint {
32
- /**
33
- * Creates an instance of the BatteryStorage class.
34
- *
35
- * @param {string} name - The name of the BatteryStorage.
36
- * @param {string} serial - The serial number of the BatteryStorage.
37
- * @param {number} [batPercentRemaining] - The percentage of battery remaining, defaults to `100` if not provided.
38
- * @param {PowerSource.BatChargeLevel} [batChargeLevel] - The battery charge level (default: PowerSource.BatChargeLevel.Ok).
39
- * @param {number} voltage - The voltage value in millivolts.
40
- * @param {number} current - The current value in milliamperes.
41
- * @param {number} power - The power value in milliwatts.
42
- * @param {number} energyImported - The total production value in mW/h.
43
- * @param {number} energyExported - The total production value in mW/h.
44
- * @param {number} [absMinPower] - Indicate the minimum electrical power in mw that the ESA can consume when switched on. Defaults to `0` if not provided.
45
- * @param {number} [absMaxPower] - Indicate the maximum electrical power in mw that the ESA can consume when switched on. Defaults to `0` if not provided.
46
- *
47
- * @remarks
48
- * - A battery storage inverter that can charge its battery at a maximum power of 2000W and can
49
- * discharge the battery at a maximum power of 3000W, would have a absMinPower: -3000W, absMaxPower: 2000W.
50
- */
51
7
  constructor(name, serial, batPercentRemaining = 100, batChargeLevel = PowerSource.BatChargeLevel.Ok, voltage = null, current = null, power = null, energyImported = null, energyExported = null, absMinPower = 0, absMaxPower = 0) {
52
8
  super([batteryStorage, electricalSensor, deviceEnergyManagement], { id: `${name.replaceAll(' ', '')}-${serial.replaceAll(' ', '')}` });
53
9
  this.createDefaultIdentifyClusterServer()
@@ -58,12 +14,10 @@ export class BatteryStorage extends MatterbridgeEndpoint {
58
14
  .createDefaultDeviceEnergyManagementClusterServer(DeviceEnergyManagement.EsaType.BatteryStorage, true, DeviceEnergyManagement.EsaState.Online, absMinPower, absMaxPower)
59
15
  .createDefaultDeviceEnergyManagementModeClusterServer()
60
16
  .addRequiredClusterServers();
61
- // Add separate PowerSource child devices cause in matter.js the PowerSource cluster is not supported with both features Wired and Battery.
62
- // Probably this is also an error in the specification...
63
17
  this.addChildDeviceType('BatteryPowerSource', powerSource, {
64
18
  tagList: [{ mfgCode: null, namespaceId: PowerSourceTag.Battery.namespaceId, tag: PowerSourceTag.Battery.tag, label: null }],
65
19
  })
66
- .createDefaultPowerSourceRechargeableBatteryClusterServer(batPercentRemaining, batChargeLevel, 24_000) // Battery voltage in mV (24V).
20
+ .createDefaultPowerSourceRechargeableBatteryClusterServer(batPercentRemaining, batChargeLevel, 24_000)
67
21
  .addRequiredClusterServers();
68
22
  this.addChildDeviceType('GridPowerSource', powerSource, {
69
23
  tagList: [{ mfgCode: null, namespaceId: PowerSourceTag.Grid.namespaceId, tag: PowerSourceTag.Grid.tag, label: null }],
@@ -72,4 +26,3 @@ export class BatteryStorage extends MatterbridgeEndpoint {
72
26
  .addRequiredClusterServers();
73
27
  }
74
28
  }
75
- //# sourceMappingURL=batteryStorage.js.map