isy-nodejs 1.0.1-alpha.6 → 1.0.1-alpha.9

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 (158) hide show
  1. package/dist/cjs/Converters.js +66 -30
  2. package/dist/cjs/Converters.js.map +1 -1
  3. package/dist/cjs/Definitions/Global/Drivers.js +10 -3
  4. package/dist/cjs/Definitions/Global/Drivers.js.map +1 -1
  5. package/dist/cjs/Definitions/Global/Events.js +1 -2
  6. package/dist/cjs/Definitions/Global/Events.js.map +1 -1
  7. package/dist/cjs/Devices/Elk/ElkAlarmPanelDevice.js +3 -3
  8. package/dist/cjs/Devices/Elk/ElkAlarmSensorDevice.js +9 -6
  9. package/dist/cjs/Devices/Elk/ElkAlarmSensorDevice.js.map +1 -1
  10. package/dist/cjs/Devices/Insteon/InsteonBaseDevice.js +1 -1
  11. package/dist/cjs/Devices/Insteon/InsteonBaseDevice.js.map +1 -1
  12. package/dist/cjs/Devices/Insteon/InsteonFanDevice.js +4 -2
  13. package/dist/cjs/Devices/Insteon/InsteonFanDevice.js.map +1 -1
  14. package/dist/cjs/Devices/Insteon/InsteonMotionSensorDevice.js +5 -5
  15. package/dist/cjs/ISY.js +29 -20
  16. package/dist/cjs/ISY.js.map +1 -1
  17. package/dist/cjs/ISYNode.js +11 -8
  18. package/dist/cjs/ISYNode.js.map +1 -1
  19. package/dist/cjs/ISYScene.js +2 -2
  20. package/dist/cjs/Matter/Behaviors/ISYBridgedDeviceBehavior.js +11 -4
  21. package/dist/cjs/Matter/Behaviors/ISYBridgedDeviceBehavior.js.map +1 -1
  22. package/dist/cjs/Matter/Behaviors/ISYClusterBehavior.js +26 -7
  23. package/dist/cjs/Matter/Behaviors/ISYClusterBehavior.js.map +1 -1
  24. package/dist/cjs/Matter/Behaviors/ISYOnOffBehavior.js +9 -7
  25. package/dist/cjs/Matter/Behaviors/ISYOnOffBehavior.js.map +1 -1
  26. package/dist/cjs/Matter/{Server → Bridge}/Server.js +31 -45
  27. package/dist/cjs/Matter/Bridge/Server.js.map +1 -0
  28. package/dist/cjs/Matter/Mappings/Insteon.js +19 -15
  29. package/dist/cjs/Matter/Mappings/Insteon.js.map +1 -1
  30. package/dist/cjs/Matter/Mappings/register.js +1 -0
  31. package/dist/cjs/Matter/Mappings/register.js.map +1 -0
  32. package/dist/cjs/Model/ClusterMap.js +12 -9
  33. package/dist/cjs/Model/ClusterMap.js.map +1 -1
  34. package/dist/cjs/Utils.js +0 -9
  35. package/dist/cjs/Utils.js.map +1 -1
  36. package/dist/cjs/types/Converters.d.ts +28 -8
  37. package/dist/cjs/types/Converters.d.ts.map +1 -1
  38. package/dist/cjs/types/Definitions/Global/Drivers.d.ts +4 -3
  39. package/dist/cjs/types/Definitions/Global/Drivers.d.ts.map +1 -1
  40. package/dist/cjs/types/Definitions/Global/Events.d.ts.map +1 -1
  41. package/dist/cjs/types/Devices/Elk/ElkAlarmSensorDevice.d.ts.map +1 -1
  42. package/dist/cjs/types/Devices/EndpointFor.d.ts +2 -2
  43. package/dist/cjs/types/Devices/Insteon/InsteonDevice.d.ts +4 -4
  44. package/dist/cjs/types/Devices/Insteon/InsteonFanDevice.d.ts.map +1 -1
  45. package/dist/cjs/types/ISY.d.ts +21 -18
  46. package/dist/cjs/types/ISY.d.ts.map +1 -1
  47. package/dist/cjs/types/ISYNode.d.ts +4 -4
  48. package/dist/cjs/types/ISYNode.d.ts.map +1 -1
  49. package/dist/cjs/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts +16 -6
  50. package/dist/cjs/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts.map +1 -1
  51. package/dist/cjs/types/Matter/Behaviors/ISYClusterBehavior.d.ts +13 -11
  52. package/dist/cjs/types/Matter/Behaviors/ISYClusterBehavior.d.ts.map +1 -1
  53. package/dist/cjs/types/Matter/Behaviors/ISYOnOffBehavior.d.ts +4 -4
  54. package/dist/cjs/types/Matter/Behaviors/ISYOnOffBehavior.d.ts.map +1 -1
  55. package/dist/cjs/types/Matter/Bridge/Server.d.ts +17 -0
  56. package/dist/cjs/types/Matter/Bridge/Server.d.ts.map +1 -0
  57. package/dist/cjs/types/Matter/Mappings/register.d.ts +1 -0
  58. package/dist/cjs/types/Matter/Mappings/register.d.ts.map +1 -0
  59. package/dist/cjs/types/Model/ClusterMap.d.ts +19 -11
  60. package/dist/cjs/types/Model/ClusterMap.d.ts.map +1 -1
  61. package/dist/cjs/types/Utils.d.ts +0 -5
  62. package/dist/cjs/types/Utils.d.ts.map +1 -1
  63. package/dist/esm/Converters.js +63 -28
  64. package/dist/esm/Converters.js.map +1 -1
  65. package/dist/esm/Definitions/Global/Drivers.js +10 -3
  66. package/dist/esm/Definitions/Global/Drivers.js.map +1 -1
  67. package/dist/esm/Definitions/Global/Events.js +1 -2
  68. package/dist/esm/Definitions/Global/Events.js.map +1 -1
  69. package/dist/esm/Devices/Elk/ElkAlarmPanelDevice.js +3 -3
  70. package/dist/esm/Devices/Elk/ElkAlarmSensorDevice.js +9 -6
  71. package/dist/esm/Devices/Elk/ElkAlarmSensorDevice.js.map +1 -1
  72. package/dist/esm/Devices/Insteon/InsteonBaseDevice.js +2 -2
  73. package/dist/esm/Devices/Insteon/InsteonBaseDevice.js.map +1 -1
  74. package/dist/esm/Devices/Insteon/InsteonFanDevice.js +4 -2
  75. package/dist/esm/Devices/Insteon/InsteonFanDevice.js.map +1 -1
  76. package/dist/esm/Devices/Insteon/InsteonMotionSensorDevice.js +5 -5
  77. package/dist/esm/ISY.js +28 -19
  78. package/dist/esm/ISY.js.map +1 -1
  79. package/dist/esm/ISYNode.js +12 -9
  80. package/dist/esm/ISYNode.js.map +1 -1
  81. package/dist/esm/ISYScene.js +2 -2
  82. package/dist/esm/Matter/Behaviors/ISYBridgedDeviceBehavior.js +11 -4
  83. package/dist/esm/Matter/Behaviors/ISYBridgedDeviceBehavior.js.map +1 -1
  84. package/dist/esm/Matter/Behaviors/ISYClusterBehavior.js +26 -7
  85. package/dist/esm/Matter/Behaviors/ISYClusterBehavior.js.map +1 -1
  86. package/dist/esm/Matter/Behaviors/ISYOnOffBehavior.js +10 -8
  87. package/dist/esm/Matter/Behaviors/ISYOnOffBehavior.js.map +1 -1
  88. package/dist/esm/Matter/{Server → Bridge}/Server.js +29 -44
  89. package/dist/esm/Matter/Bridge/Server.js.map +1 -0
  90. package/dist/esm/Matter/Mappings/Insteon.js +22 -18
  91. package/dist/esm/Matter/Mappings/Insteon.js.map +1 -1
  92. package/dist/esm/Matter/Mappings/register.js +2 -0
  93. package/dist/esm/Matter/Mappings/register.js.map +1 -0
  94. package/dist/esm/Model/ClusterMap.js +12 -9
  95. package/dist/esm/Model/ClusterMap.js.map +1 -1
  96. package/dist/esm/Utils.js +0 -8
  97. package/dist/esm/Utils.js.map +1 -1
  98. package/dist/esm/types/Converters.d.ts +28 -8
  99. package/dist/esm/types/Converters.d.ts.map +1 -1
  100. package/dist/esm/types/Definitions/Global/Drivers.d.ts +4 -3
  101. package/dist/esm/types/Definitions/Global/Drivers.d.ts.map +1 -1
  102. package/dist/esm/types/Definitions/Global/Events.d.ts.map +1 -1
  103. package/dist/esm/types/Devices/Elk/ElkAlarmSensorDevice.d.ts.map +1 -1
  104. package/dist/esm/types/Devices/EndpointFor.d.ts +3 -3
  105. package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts +6 -6
  106. package/dist/esm/types/Devices/Insteon/InsteonFanDevice.d.ts.map +1 -1
  107. package/dist/esm/types/ISY.d.ts +21 -18
  108. package/dist/esm/types/ISY.d.ts.map +1 -1
  109. package/dist/esm/types/ISYNode.d.ts +5 -5
  110. package/dist/esm/types/ISYNode.d.ts.map +1 -1
  111. package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts +16 -6
  112. package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts.map +1 -1
  113. package/dist/esm/types/Matter/Behaviors/ISYClusterBehavior.d.ts +13 -11
  114. package/dist/esm/types/Matter/Behaviors/ISYClusterBehavior.d.ts.map +1 -1
  115. package/dist/esm/types/Matter/Behaviors/ISYOnOffBehavior.d.ts +4 -4
  116. package/dist/esm/types/Matter/Behaviors/ISYOnOffBehavior.d.ts.map +1 -1
  117. package/dist/esm/types/Matter/Bridge/Server.d.ts +17 -0
  118. package/dist/esm/types/Matter/Bridge/Server.d.ts.map +1 -0
  119. package/dist/esm/types/Matter/Mappings/register.d.ts +2 -0
  120. package/dist/esm/types/Matter/Mappings/register.d.ts.map +1 -0
  121. package/dist/esm/types/Model/ClusterMap.d.ts +19 -11
  122. package/dist/esm/types/Model/ClusterMap.d.ts.map +1 -1
  123. package/dist/esm/types/Utils.d.ts +0 -5
  124. package/dist/esm/types/Utils.d.ts.map +1 -1
  125. package/package.json +2 -7
  126. package/src/Converters.ts +137 -69
  127. package/src/Definitions/Global/Drivers.ts +16 -7
  128. package/src/Definitions/Global/Events.ts +4 -3
  129. package/src/Devices/Elk/ElkAlarmPanelDevice.ts +3 -3
  130. package/src/Devices/Elk/ElkAlarmSensorDevice.ts +15 -21
  131. package/src/Devices/Insteon/Generated/RelayLamp.ts +8 -7
  132. package/src/Devices/Insteon/InsteonBaseDevice.ts +2 -2
  133. package/src/Devices/Insteon/InsteonFanDevice.ts +11 -9
  134. package/src/Devices/Insteon/InsteonMotionSensorDevice.ts +5 -5
  135. package/src/ISY.ts +53 -38
  136. package/src/ISYNode.ts +13 -10
  137. package/src/ISYScene.ts +2 -2
  138. package/src/Matter/Behaviors/ISYBridgedDeviceBehavior.ts +28 -10
  139. package/src/Matter/Behaviors/ISYClusterBehavior.ts +46 -28
  140. package/src/Matter/Behaviors/ISYOnOffBehavior.ts +49 -60
  141. package/src/Matter/{Server → Bridge}/Server.ts +49 -53
  142. package/src/Matter/Mappings/Insteon.ts +53 -60
  143. package/src/Matter/Mappings/register.ts +0 -0
  144. package/src/Model/ClusterMap.ts +31 -22
  145. package/src/Utils.ts +1 -19
  146. package/LICENSE +0 -22
  147. package/dist/cjs/Matter/Server/Server.js.map +0 -1
  148. package/dist/cjs/types/Matter/Server/Server.d.ts +0 -4
  149. package/dist/cjs/types/Matter/Server/Server.d.ts.map +0 -1
  150. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js +0 -68
  151. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js.map +0 -1
  152. package/dist/esm/Matter/Server/Server.js.map +0 -1
  153. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts +0 -93
  154. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts.map +0 -1
  155. package/dist/esm/types/Matter/Server/Server.d.ts +0 -4
  156. package/dist/esm/types/Matter/Server/Server.d.ts.map +0 -1
  157. package/dist/tsconfig.cjs.tsbuildinfo +0 -1
  158. package/dist/tsconfig.esm.tsbuildinfo +0 -1
@@ -1,3 +1,4 @@
1
+ import '@project-chip/matter-node.js';
1
2
  import { NodeJsEnvironment } from '@project-chip/matter-node.js/environment';
2
3
  import { StorageBackendDisk } from '@project-chip/matter-node.js/storage';
3
4
  import { CommissioningOptions } from '@project-chip/matter.js/behavior/system/commissioning';
@@ -9,42 +10,47 @@ import { DimmableLightDevice, OnOffLightDevice } from '@project-chip/matter.js/e
9
10
  import type { SupportedBehaviors } from '@project-chip/matter.js/endpoint/properties';
10
11
  import { EndpointType, MutableEndpoint } from '@project-chip/matter.js/endpoint/type';
11
12
  import { AggregatorEndpoint } from '@project-chip/matter.js/endpoints/AggregatorEndpoint';
12
- import { Environment, StorageService } from '@project-chip/matter.js/environment';
13
+ import { StorageService } from '@project-chip/matter.js/environment';
13
14
  import { Level, levelFromString, Logger as MatterLogger } from '@project-chip/matter.js/log';
14
15
  import { ServerNode } from '@project-chip/matter.js/node';
15
- import { CommissioningFlowType, QrCode } from '@project-chip/matter.js/schema';
16
+ import { QrCode } from '@project-chip/matter.js/schema';
16
17
  import { resolve } from 'path';
17
- import { config } from 'winston';
18
18
  import { InsteonDimmableDevice, InsteonKeypadButtonDevice, InsteonRelayDevice, ISY } from '../../ISY.js';
19
19
  import { ISYBridgedDeviceBehavior } from '../Behaviors/ISYBridgedDeviceBehavior.js';
20
20
  import { ISYDimmableBehavior, ISYOnOffBehavior } from '../Behaviors/ISYOnOffBehavior.js';
21
+ import '../Mappings/Insteon.js';
22
+ import type { ISYDeviceNode } from '../../Devices/ISYDeviceNode.js';
21
23
 
22
- // #region Functions (2)
24
+ // #region Interfaces (1)
23
25
 
24
- //import {clone} from 'isy-nodejs/Utils';
25
- //let { Utils } = await import ('isy-nodejs');
26
+ export interface Config {
27
+ // #region Properties (8)
26
28
 
27
- // function plainLogFormatter(now: Date, level: Level, facility: string, prefix: string, values: any[]) {
28
- // const creator = plaintextCreator();
29
+ discriminator: number;
30
+ passcode: number;
31
+ port: number;
32
+ productId: number;
33
+ productName?: string;
34
+ uniqueId: string;
35
+ vendorId: number;
36
+ vendorName?: string;
29
37
 
30
- // const formattedValues = renderDiagnostic(values, {
31
- // ...creator,
32
- // key: text => creator.text(`${text}: `),
33
- // value: producer => creator.text(producer()),
34
- // strong: producer => creator.text(`*${producer()}*`),
35
- // weak: producer => creator.text(producer()),
36
- // status: (status, producer) => `${creator.text(statusIcon(status))}${producer()}`,
37
- // via: text => creator.text(text),
38
- // });
38
+ // #endregion Properties (8)
39
+ }
40
+
41
+ // #endregion Interfaces (1)
39
42
 
40
- // return `${formatTime(now)} ${Level[level]} ${facility} ${prefix}${formattedValues}`;
41
- //
43
+ // #region Functions (3)
42
44
 
43
- //let matterLogger = clone(logger,'matter.js');
45
+ export function create(isy?: ISY, config?: Config): Promise<ServerNode> {
46
+ return createMatterServer(isy, config);
47
+ }
44
48
 
45
- //2024-07-03 16:30:43.693
46
- export async function createServerNode(isy: ISY = ISY.instance): Promise<ServerNode> {
49
+ export async function createMatterServer(isy?: ISY, config?: Config): Promise<ServerNode> {
47
50
  var logger = isy.logger;
51
+ if (isy === undefined) {
52
+ isy = ISY.instance;
53
+ }
48
54
 
49
55
  try {
50
56
  MatterLogger.addLogger(
@@ -59,7 +65,7 @@ export async function createServerNode(isy: ISY = ISY.instance): Promise<ServerN
59
65
  MatterLogger.defaultLogLevel = levelFromString(logger.level);
60
66
  }
61
67
 
62
- var config = await getConfiguration(isy);
68
+ config = await initializeConfiguration(isy, config);
63
69
 
64
70
  logger.info(`Matter config read: ${JSON.stringify(config)}`);
65
71
 
@@ -75,8 +81,6 @@ export async function createServerNode(isy: ISY = ISY.instance): Promise<ServerN
75
81
  //ipv4: false,
76
82
  discoveryCapabilities: {
77
83
  onIpNetwork: true
78
-
79
-
80
84
  }
81
85
  },
82
86
 
@@ -128,7 +132,8 @@ export async function createServerNode(isy: ISY = ISY.instance): Promise<ServerN
128
132
 
129
133
  const endpoints: { 0: Endpoint; 1: InsteonRelayDevice }[] = [];
130
134
 
131
- for (const device of isy.deviceList.values()) {
135
+ for (const node of isy.nodeMap.values()) {
136
+ let device = node as ISYDeviceNode<any, any, any>;
132
137
  let serialNumber = `${device.address.replaceAll(' ', '_').replaceAll('.', '_')}`;
133
138
  if (device.enabled && !(device instanceof InsteonKeypadButtonDevice)) {
134
139
  //const name = `OnOff ${isASocket ? "Socket" : "Light"} ${i}`;
@@ -151,6 +156,7 @@ export async function createServerNode(isy: ISY = ISY.instance): Promise<ServerN
151
156
  }
152
157
 
153
158
  if (baseBehavior !== undefined) {
159
+ //@ts-ignore
154
160
  const endpoint = new Endpoint(baseBehavior, {
155
161
  id: serialNumber,
156
162
  isyNode: {
@@ -194,9 +200,13 @@ export async function createServerNode(isy: ISY = ISY.instance): Promise<ServerN
194
200
  * offline again because we do not need anything more here. See the Full example for other starting options.
195
201
  * The QR Code is printed automatically.
196
202
  */
203
+ process.on('SIGINT', async () => {
204
+ logger.info('Bringing server offline');
205
+ server.close();
206
+ });
197
207
 
198
208
  logger.info('Bringing server online');
199
- await server.run();
209
+ await server.start();
200
210
 
201
211
  logger.info('Matter Server is online');
202
212
  /**
@@ -220,34 +230,20 @@ export async function createServerNode(isy: ISY = ISY.instance): Promise<ServerN
220
230
  logger.info(`Manual pairing code: ${manualPairingCode}`);
221
231
  }
222
232
  /*for(let e of endpoints)
223
- {
224
- e[1].initialize(e[0] as any);
225
- }*/
233
+ {
234
+ e[1].initialize(e[0] as any);
235
+ }*/
226
236
 
227
237
  return server;
228
-
229
- function createBaseBehavior(): any {
230
- let baseBehavior: any;
231
- return baseBehavior;
232
- }
233
238
  }
234
239
 
235
- async function getConfiguration(isy: ISY) {
240
+ async function initializeConfiguration(isy: ISY, config?: Config): Promise<Config> {
236
241
  var logger = isy.logger;
237
- /**
238
- * Collect all needed data
239
- *
240
- * This block collects all needed data from cli, environment or storage. Replace this with where ever your data come from.
241
- *
242
- * Note: This example uses the matter.js process storage system to store the device parameter data for convenience
243
- * and easy reuse. When you also do that be careful to not overlap with Matter-Server own storage contexts
244
- * (so maybe better not do it ;-)).
245
- */
246
242
 
247
243
  const environment = NodeJsEnvironment();
248
244
 
249
245
  const storageService = environment.get(StorageService);
250
- environment.vars.set('storage.path', ISY.instance.storagePath + '/matter');
246
+ environment.vars.set('storage.path', `${ISY.instance.storagePath}matter`);
251
247
  environment.vars.use(() => {
252
248
  const location = environment.vars.get('storage.path', environment.vars.get('path.root', '.'));
253
249
  storageService.location = location;
@@ -258,15 +254,15 @@ async function getConfiguration(isy: ISY) {
258
254
  const deviceStorage = (await storageService.open('device')).createContext('data');
259
255
 
260
256
  const vendorName = isy.vendorName;
261
- const passcode = environment.vars.number('passcode') ?? (await deviceStorage.get('passcode', 20202021));
262
- const discriminator = environment.vars.number('discriminator') ?? (await deviceStorage.get('discriminator', 3840));
257
+ const passcode = config.passcode ?? environment.vars.number('passcode') ?? (await deviceStorage.get('passcode', 20202021));
258
+ const discriminator = config.discriminator ?? environment.vars.number('discriminator') ?? (await deviceStorage.get('discriminator', 3840));
263
259
  // product name / id and vendor id should match what is in the device certificate
264
- const vendorId = environment.vars.number('vendorid') ?? (await deviceStorage.get('vendorid', 0xfff1));
265
- const productId = environment.vars.number('productid') ?? (await deviceStorage.get('productid', 0x8000));
260
+ const vendorId = config.vendorId ?? environment.vars.number('vendorid') ?? (await deviceStorage.get('vendorid', 0xfff1));
261
+ const productId = config.productId ?? environment.vars.number('productid') ?? (await deviceStorage.get('productid', 0x8000));
266
262
  const productName = isy.productName;
267
- const port = environment.vars.number('port') ?? 5540;
263
+ const port = config.port ?? environment.vars.number('port') ?? 5540;
268
264
 
269
- const uniqueId = isy.id;
265
+ const uniqueId = isy.id.replaceAll(':', '_');
270
266
  //environment.vars.string("uniqueid") ?? (await deviceStorage.get("uniqueid", Time.nowMs().toString()));
271
267
 
272
268
  // Persist basic data to keep them also on restart
@@ -291,4 +287,4 @@ async function getConfiguration(isy: ISY) {
291
287
  };
292
288
  }
293
289
 
294
- // #endregion Functions (2)
290
+ // #endregion Functions (3)
@@ -1,68 +1,61 @@
1
- import { OnOffCluster } from "@project-chip/matter.js/cluster";
2
- import { DriverType } from "../../Definitions/Global/Drivers.js";
3
- import { Family, type t } from "../../Definitions/Global/Families.js";
4
- import { Insteon } from "../../Devices/Insteon/index.js";
5
- import { Devices} from "../../Devices/index.js";
6
- import {
7
- MappingRegistry,
8
- type FamilyToClusterMap,
9
- type DeviceToClusterMap,
10
- type EndpointMapping
11
- } from "../../Model/ClusterMap.js";
12
- import { DeviceTypeDefinition, DeviceTypes, OnOffBaseDevice } from "@project-chip/matter.js/device";
13
- import { OnOffLightDevice } from "@project-chip/matter.js/devices/OnOffLightDevice";
1
+ import { OnOffCluster } from '@project-chip/matter.js/cluster';
2
+ import { DeviceTypeDefinition, DeviceTypes, OnOffBaseDevice } from '@project-chip/matter.js/device';
3
+ import { OnOffLightDevice } from '@project-chip/matter.js/devices/OnOffLightDevice';
4
+ import { DriverType } from '../../Definitions/Global/Drivers.js';
5
+ import { Family, type t } from '../../Definitions/Global/Families.js';
6
+ import { Insteon } from '../../Devices/Insteon/index.js';
7
+ import { Devices } from '../../Devices/index.js';
8
+ import { MappingRegistry, type DeviceToClusterMap, type EndpointMapping, type FamilyToClusterMap } from '../../Model/ClusterMap.js';
14
9
 
15
10
  //import InsteonMap from "./Insteon.json";
16
- import { DimmableLightDevice } from "@project-chip/matter.js/devices/DimmableLightDevice";
17
- import { Converters } from '../../Converters.js';
11
+ import { DimmableLightDevice } from '@project-chip/matter.js/devices/DimmableLightDevice';
12
+ import { Converter } from '../../Converters.js';
18
13
  import type { InsteonRelaySwitchDevice } from '../../Devices/Insteon/InsteonRelaySwitchDevice.js';
19
14
 
20
-
21
-
22
15
  const map: FamilyToClusterMap<Family.Insteon> = {
23
- Relay: {
24
- deviceType: OnOffLightDevice,
25
- mapping: {
26
-
27
- OnOff: {
28
- attributes: {
29
- onOff: { driver: "ST"},
30
- },
31
- commands: { on: 'DON'},
32
- },
33
-
34
-
35
-
36
- }
37
- } ,
38
- RelaySwitch: {
39
- deviceType: OnOffLightDevice,
40
- mapping: {
41
- OnOff: {
42
- attributes: {
43
- onOff: "ST",
44
- },
45
- commands: { on: "DON"},
46
- },
47
- },
48
- } ,
49
- Dimmer: {
50
- deviceType: DimmableLightDevice,
51
- mapping: {
52
- OnOff: {
53
- attributes: {
54
- onOff: { driver: "ST" },
55
- },
56
- commands: { on: "DON" },
57
- },
58
- LevelControl: {
59
- attributes: {
60
- currentLevel: { driver: DriverType.Status },
61
- },
62
- commands: { moveToLevel: {command: 'DON'}},
63
- },
64
- },
65
- },
16
+ Family: Family.Insteon,
17
+ Relay: {
18
+ deviceType: OnOffLightDevice,
19
+ mapping: {
20
+ OnOff: {
21
+ attributes: {
22
+ onOff: { driver: 'ST', converter: 'Percent.Boolean' }
23
+ },
24
+ commands: { on: 'DON' }
25
+ }
26
+ } as EndpointMapping<OnOffLightDevice, Insteon.Relay>
27
+ },
28
+ RelaySwitch: {
29
+ deviceType: OnOffLightDevice,
30
+ mapping: {
31
+ OnOff: {
32
+ attributes: {
33
+ onOff: 'ST'
34
+ },
35
+ commands: { on: 'DON' }
36
+ }
37
+ }
38
+ },
39
+ Dimmer: {
40
+ deviceType: DimmableLightDevice,
41
+ mapping: {
42
+ OnOff: {
43
+ attributes: {
44
+ onOff: { driver: 'ST', converter: 'LevelFrom0To255.Boolean' }
45
+ },
46
+ commands: { on: 'DON' }
47
+ },
48
+ LevelControl: {
49
+ attributes: {
50
+ currentLevel: { driver: DriverType.Status, converter: 'LevelFrom0To255.LightingLevel' }
51
+ },
52
+ commands: { moveToLevel: { command: 'DON' } }
53
+ }
54
+ }
55
+ }
66
56
  };
67
57
 
58
+ map.KeypadDimmer = map.Dimmer;
59
+ map.DimmerSwitch = map.Dimmer;
60
+
68
61
  MappingRegistry.register(map);
File without changes
@@ -1,25 +1,34 @@
1
- import * as Clusters from '@project-chip/matter.js/cluster';
2
- import { Driver, DriverType } from '../Definitions/Global/Drivers.js';
3
1
  import { Behavior } from '@project-chip/matter.js/behavior';
4
2
  import { ClusterBehavior } from '@project-chip/matter.js/behavior/cluster';
5
3
  import type { OnOffBehavior } from '@project-chip/matter.js/behaviors/on-off';
4
+ import * as Clusters from '@project-chip/matter.js/cluster';
6
5
  import { type Device, type DeviceTypeDefinition, type OnOffBaseDevice } from '@project-chip/matter.js/device';
7
6
  import { OnOffLightDevice } from '@project-chip/matter.js/devices/OnOffLightDevice';
7
+ import * as DeviceTypes from '@project-chip/matter.js/endpoint/definitions';
8
8
  import { SupportedBehaviors } from '@project-chip/matter.js/endpoint/properties';
9
9
  import type { MutableEndpoint } from '@project-chip/matter.js/endpoint/type';
10
10
  import type { Identity } from '@project-chip/matter.js/util';
11
11
  import test from 'node:test';
12
+ import type { Converter } from '../Converters.js';
13
+ import { Driver, DriverType } from '../Definitions/Global/Drivers.js';
12
14
  import { Devices, type ToDevice } from '../Devices/index.js';
15
+ import { Insteon } from '../Devices/Insteon/index.js';
13
16
  import { Family, InsteonRelayDevice } from '../ISY.js';
14
17
  import type { ISYDevice } from '../ISYDevice.js';
15
18
  import type { CommandsOf, DriversOf, ISYNode } from '../ISYNode.js';
16
19
  import type { ClusterForBehavior } from '../Matter/Behaviors/ISYClusterBehavior.js';
17
20
  import { ClusterType } from './ClusterType.js';
18
21
 
22
+ // #region Type aliases (16)
23
+
19
24
  export type AttributeMapping<B, D> =
20
25
  B extends { cluster: { attributes: infer E extends { [K in string]: Clusters.ClusterType.Attribute } } } ?
21
- Partial<Record<keyof E, keyof DriversOf<D> | { driver: keyof DriversOf<D>; converter?: string }>>
26
+ Partial<Record<keyof E, keyof DriversOf<D> | { driver: keyof DriversOf<D>; converter?: Converter.KnownConverters }>>
22
27
  : never;
28
+ export type BehaviorMapping<B extends { cluster? }, T extends ISYNode<any, any, any, any>> = {
29
+ attributes?: AttributeMapping<B, T>;
30
+ commands?: CommandMapping<B, T>;
31
+ };
23
32
  export type ClusterAttributeMapping<A, K> = {
24
33
  [key in keyof Clusters.ClusterType.AttributesOf<A>]?: { driver: Extract<keyof DriversOf<K>, string>; converter?: (value: any) => any } | Extract<keyof DriversOf<K>, string>;
25
34
  };
@@ -82,18 +91,18 @@ export type CommandMapping<B, D> =
82
91
  // behavior?: typeof ClusterBehavior;
83
92
 
84
93
  // }
85
- export type DeviceToClusterMap<T extends ISYNode<Family, any, any, any>, D> =
94
+ export type DeviceToClusterMap<T extends ISYNode<Family, any, any, any>, D extends { behaviors: SupportedBehaviors; deviceType: string }> =
86
95
  D extends { behaviors: SupportedBehaviors; deviceType: string } ?
87
96
  {
88
97
  deviceType: D;
89
98
  mapping: EndpointMapping<D, T>;
90
99
  }
91
100
  : never;
92
- export type EndpointMapping<A extends { behaviors: any }, D> = {
93
- [K in Capitalize<StringKeys<A['behaviors']>>]?: {
94
- attributes?: AttributeMapping<A['behaviors'][Uncapitalize<K>], D>;
95
- commands?: CommandMapping<A['behaviors'][Uncapitalize<K>], D>;
96
- };
101
+ export type EndpointMapping<A extends { behaviors: any }, D extends ISYNode<Family, any, any, any>> = {
102
+ [K in Capitalize<StringKeys<A['behaviors']>>]?: BehaviorMapping<A['behaviors'][Uncapitalize<K>], D>; //{
103
+ /*attributes?: AttributeMapping<A['behaviors'][Uncapitalize<K>], D>;
104
+ commands?: CommandMapping<A['behaviors'][Uncapitalize<K>], D>;*/
105
+ //};
97
106
  };
98
107
  ////const ClusterIdentifier = Object.values(Clusters).filter(p=> p instanceof Clusters.MutableCluster && typeof p == "object" && p.constructor.name.endsWith(".Cluster"));
99
108
  //type clusterList = keyof typeof ClusterIdentifier;
@@ -113,7 +122,7 @@ export type EndpointMapping1<A extends MutableEndpoint, K> = {
113
122
  attributes?: SBAttributeMapping<A['behaviors'], K>;
114
123
  commands?: SBCommandMapping<A['behaviors'], K>;
115
124
  };
116
- export type FamilyToClusterMap<T extends Family.Insteon | Family.ZWave | Family.ZigBee> = {
125
+ export type FamilyToClusterMap<T extends Family.Insteon | Family.ZWave | Family.ZigBee> = { Family: T } & {
117
126
  [Type in keyof Devices.Insteon]?: DeviceToClusterMap<InstanceType<Devices.Insteon[Type]>, any>;
118
127
  };
119
128
  export type SBAttributeMapping<SB extends SupportedBehaviors, D> = {
@@ -130,7 +139,7 @@ export type parameterMapping = {
130
139
  [key: string]: { parameter: string; converter?: string };
131
140
  };
132
141
 
133
- // #endregion Type aliases (15)
142
+ // #endregion Type aliases (16)
134
143
 
135
144
  // #region Classes (1)
136
145
 
@@ -143,25 +152,25 @@ export class MappingRegistry {
143
152
 
144
153
  // #region Public Static Methods (3)
145
154
 
146
- public static getMapping<T extends ISYDevice<any, any, any>>(device: T) {
155
+ public static getMapping<T extends ISYNode<any, any, any, any>>(device: T) {
147
156
  return MappingRegistry.map.get(device.constructor.name);
148
157
  }
149
158
 
150
- public static getMappingForBehavior<T extends ISYDevice<any, any, any>, B extends ClusterBehavior>(device: T, behavior: B): ClusterMapping<B['cluster'], T> {
151
- var m = MappingRegistry.getMapping(device);
159
+ public static getMappingForBehavior<T extends ISYNode<any, any, any, any>, B extends ClusterBehavior>(device: T, behavior: B): BehaviorMapping<B, T> {
160
+ //var m = MappingRegistry.getMapping(device);
152
161
 
153
- return m[behavior.cluster.name];
154
- // for(var m in MappingRegistry.getMapping(device).mapping)
155
- // {
156
- // if(behavior.cluster.name === m)
157
- // return MappingRegistry.getMapping(device).mapping[m];
158
-
159
- // }
162
+ //return m[behavior.cluster.name];
163
+ for (var m in MappingRegistry.getMapping(device).mapping) {
164
+ if (behavior.cluster.name === m) return MappingRegistry.getMapping(device).mapping[m] as unknown as BehaviorMapping<B, T>;
165
+ }
160
166
  }
161
167
 
162
168
  public static register(map: Partial<FamilyToClusterMap<any>>) {
163
169
  for (var key in map) {
164
- MappingRegistry.map.set(key, map[key]);
170
+ if (key !== 'Family') {
171
+ MappingRegistry.map.set(key, map[key]);
172
+ MappingRegistry.map.set(Insteon[key].name, map[key]);
173
+ }
165
174
  }
166
175
  }
167
176
 
package/src/Utils.ts CHANGED
@@ -10,18 +10,9 @@ import { Category } from './Definitions/Global/Categories.js';
10
10
  //import { get } from 'http';
11
11
  import type { Identity } from '@project-chip/matter.js/util';
12
12
  import { isBoxedPrimitive } from 'util/types';
13
- import { Family, type Driver, type DriverType, type EnumLiteral } from './Definitions/index.js';
13
+ import { Family, type Driver, type DriverType, type EnumLiteral } from './Definitions/index.js';
14
14
  import { EventType } from './Events/EventType.js';
15
15
 
16
- export interface Converter<F, T> {
17
- // #region Properties (2)
18
-
19
- from: (value: F) => T;
20
- to: (value: T) => F;
21
-
22
- // #endregion Properties (2)
23
- }
24
-
25
16
  export type StringKeys<T> = Extract<keyof T, string>;
26
17
 
27
18
  export function getEnumValueByEnumKey<E extends { [index: string]: number }, T extends keyof E>(enumType: E, enumKey: T): E[T] {
@@ -42,15 +33,6 @@ export type IdentityOf<T> = T extends (...args: any[]) => infer R ? R : T;
42
33
  export type LabelsOf<TEnum> = keyof IdentityOf<TEnum>;
43
34
  type d = LabelsOf<Family>;
44
35
 
45
- //onst D: d = 'ST';
46
- //type DriverLabel = Values<IdentityOf<DriverType>>;
47
- export function invert<F, T>(converter: Converter<F, T>): Converter<T, F> {
48
- return {
49
- from: converter.to,
50
- to: converter.from
51
- };
52
- }
53
-
54
36
  export type MaybeArray<T> = T | T[];
55
37
 
56
38
  export type ObjectToUnion<T> = T[keyof T];
package/LICENSE DELETED
@@ -1,22 +0,0 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2015 Rod Toll
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
22
-
@@ -1 +0,0 @@
1
- {"version":3,"file":"Server.js","sourceRoot":"","sources":["../../../../src/Matter/Server/Server.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { ServerNode } from '@project-chip/matter.js/node';
2
- import { ISY } from '../../ISY.js';
3
- export declare function createServerNode(isy?: ISY): Promise<ServerNode>;
4
- //# sourceMappingURL=Server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../../../../../src/Matter/Server/Server.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAI1D,OAAO,EAAwE,GAAG,EAAE,MAAM,cAAc,CAAC;AA4BzG,wBAAsB,gBAAgB,CAAC,GAAG,GAAE,GAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CA2LnF"}
@@ -1,68 +0,0 @@
1
- /* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT DIRECTLY. */
2
- import { UnitOfMeasure } from "../../../Definitions/Global/UOM.js";
3
- import { Base } from "../index.js";
4
- import { Driver } from "../../../Definitions/Global/Drivers.js";
5
- import { NodeFactory } from "../../NodeFactory.js";
6
- export const nodeDefId = "RelayLampSwitch";
7
- export class RelayLampSwitchNode extends Base {
8
- commands = {
9
- DON: this.on,
10
- DOF: this.off,
11
- DFOF: this.fastOff,
12
- DFON: this.fastOn,
13
- QUERY: this.query,
14
- BEEP: this.beep,
15
- BL: this.backlight,
16
- WDU: this.writeChanges
17
- };
18
- static nodeDefId = "RelayLampSwitch";
19
- constructor(isy, nodeInfo) {
20
- super(isy, nodeInfo);
21
- this.drivers.ST = Driver.create("ST", this, nodeInfo.property, { uom: UnitOfMeasure.Percent, label: "Status", name: "status" });
22
- this.drivers.ERR = Driver.create("ERR", this, nodeInfo.property, { uom: UnitOfMeasure.Index, label: "Responding", name: "responding" });
23
- }
24
- async on(value) {
25
- return this.sendCommand("DON", { value: value });
26
- }
27
- async off() {
28
- return this.sendCommand("DOF");
29
- }
30
- async fastOff() {
31
- return this.sendCommand("DFOF");
32
- }
33
- async fastOn() {
34
- return this.sendCommand("DFON");
35
- }
36
- async query() {
37
- return this.sendCommand("QUERY");
38
- }
39
- async beep(value) {
40
- return this.sendCommand("BEEP", { value: value });
41
- }
42
- async backlight(value) {
43
- return this.sendCommand("BL", { value: value });
44
- }
45
- async writeChanges() {
46
- return this.sendCommand("WDU");
47
- }
48
- get status() {
49
- return this.drivers.ST?.value;
50
- }
51
- get responding() {
52
- return this.drivers.ERR?.value;
53
- }
54
- }
55
- NodeFactory.register(RelayLampSwitchNode);
56
- export var RelayLampSwitch;
57
- (function (RelayLampSwitch) {
58
- function is(node) {
59
- return node.nodeDefId === nodeDefId;
60
- }
61
- RelayLampSwitch.is = is;
62
- function create(isy, nodeInfo) {
63
- return new RelayLampSwitchNode(isy, nodeInfo);
64
- }
65
- RelayLampSwitch.create = create;
66
- RelayLampSwitch.Node = RelayLampSwitchNode;
67
- })(RelayLampSwitch || (RelayLampSwitch = {}));
68
- //# sourceMappingURL=RelayLampSwitch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RelayLampSwitch.js","sourceRoot":"","sources":["../../../../../src/Devices/Insteon/Generated/RelayLampSwitch.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Server.js","sourceRoot":"","sources":["../../../../src/Matter/Server/Server.ts"],"names":[],"mappings":"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"}