isy-nodejs 1.0.6-alpha.0 → 1.0.6-alpha.1

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 (129) hide show
  1. package/dist/esm/CodeGeneration/EnumFactory.js +1 -1
  2. package/dist/esm/CodeGeneration/EnumFactory.js.map +1 -1
  3. package/dist/esm/CodeGeneration/NodeClassFactory.js +5 -4
  4. package/dist/esm/CodeGeneration/NodeClassFactory.js.map +1 -1
  5. package/dist/esm/Converters.js.map +1 -1
  6. package/dist/esm/Definitions/Global/Drivers.js +7 -5
  7. package/dist/esm/Definitions/Global/Drivers.js.map +1 -1
  8. package/dist/esm/Devices/DynamicNode.js +19 -0
  9. package/dist/esm/Devices/DynamicNode.js.map +1 -0
  10. package/dist/esm/Devices/GenericNode.js +17 -0
  11. package/dist/esm/Devices/GenericNode.js.map +1 -0
  12. package/dist/esm/Devices/Insteon/InsteonDevice.js.map +1 -1
  13. package/dist/esm/Devices/Insteon/InsteonDeviceFactory.js +86 -102
  14. package/dist/esm/Devices/Insteon/InsteonDeviceFactory.js.map +1 -1
  15. package/dist/esm/Devices/Insteon/InsteonLockDevice.js +4 -5
  16. package/dist/esm/Devices/Insteon/InsteonLockDevice.js.map +1 -1
  17. package/dist/esm/Devices/Insteon/InsteonMotionSensorDevice.js +4 -5
  18. package/dist/esm/Devices/Insteon/InsteonMotionSensorDevice.js.map +1 -1
  19. package/dist/esm/Devices/Insteon/InsteonRelayDevice.js.map +1 -1
  20. package/dist/esm/Devices/Insteon/InsteonThermostatDevice.js +2 -24
  21. package/dist/esm/Devices/Insteon/InsteonThermostatDevice.js.map +1 -1
  22. package/dist/esm/Devices/Insteon/index.js +3 -0
  23. package/dist/esm/Devices/Insteon/index.js.map +1 -1
  24. package/dist/esm/Devices/MapsTo.js +0 -11
  25. package/dist/esm/Devices/MapsTo.js.map +1 -1
  26. package/dist/esm/Devices/NodeFactory.js +1 -1
  27. package/dist/esm/Devices/NodeFactory.js.map +1 -1
  28. package/dist/esm/Devices/ZWave/ZWaveBaseDevice.js +2 -2
  29. package/dist/esm/Devices/ZWave/ZWaveBaseDevice.js.map +1 -1
  30. package/dist/esm/Devices/ZWave/ZWaveDimmerSwitchDevice.js +2 -2
  31. package/dist/esm/Devices/ZWave/ZWaveDimmerSwitchDevice.js.map +1 -1
  32. package/dist/esm/Devices/ZWave/ZWaveLockDevice.js +5 -5
  33. package/dist/esm/Devices/ZWave/ZWaveLockDevice.js.map +1 -1
  34. package/dist/esm/ISY.js +3 -3
  35. package/dist/esm/ISY.js.map +1 -1
  36. package/dist/esm/ISYConstants.js +0 -5
  37. package/dist/esm/ISYConstants.js.map +1 -1
  38. package/dist/esm/ISYNode.js +12 -7
  39. package/dist/esm/ISYNode.js.map +1 -1
  40. package/dist/esm/ISYScene.js +3 -3
  41. package/dist/esm/ISYScene.js.map +1 -1
  42. package/dist/esm/Matter/Behaviors/ISYBridgedDeviceBehavior.js +1 -1
  43. package/dist/esm/Matter/Behaviors/ISYBridgedDeviceBehavior.js.map +1 -1
  44. package/dist/esm/Matter/Behaviors/ISYClusterBehavior.js +1 -0
  45. package/dist/esm/Matter/Behaviors/ISYClusterBehavior.js.map +1 -1
  46. package/dist/esm/Matter/Mappings/Insteon.js +3 -5
  47. package/dist/esm/Matter/Mappings/Insteon.js.map +1 -1
  48. package/dist/esm/Matter/Mappings/MappingRegistry.js +26 -9
  49. package/dist/esm/Matter/Mappings/MappingRegistry.js.map +1 -1
  50. package/dist/esm/Utils.js.map +1 -1
  51. package/dist/esm/types/CodeGeneration/EnumFactory.d.ts +2 -2
  52. package/dist/esm/types/CodeGeneration/EnumFactory.d.ts.map +1 -1
  53. package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts +11 -9
  54. package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts.map +1 -1
  55. package/dist/esm/types/Converters.d.ts +25 -16
  56. package/dist/esm/types/Converters.d.ts.map +1 -1
  57. package/dist/esm/types/Definitions/Global/Drivers.d.ts.map +1 -1
  58. package/dist/esm/types/Devices/DynamicNode.d.ts +11 -0
  59. package/dist/esm/types/Devices/DynamicNode.d.ts.map +1 -0
  60. package/dist/esm/types/Devices/EndpointFor.d.ts +3 -3
  61. package/dist/esm/types/Devices/GenericNode.d.ts +9 -0
  62. package/dist/esm/types/Devices/GenericNode.d.ts.map +1 -0
  63. package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts +10 -10
  64. package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts.map +1 -1
  65. package/dist/esm/types/Devices/Insteon/InsteonDeviceFactory.d.ts +3 -4
  66. package/dist/esm/types/Devices/Insteon/InsteonDeviceFactory.d.ts.map +1 -1
  67. package/dist/esm/types/Devices/Insteon/InsteonMotionSensorDevice.d.ts +3 -3
  68. package/dist/esm/types/Devices/Insteon/InsteonMotionSensorDevice.d.ts.map +1 -1
  69. package/dist/esm/types/Devices/Insteon/InsteonRelayDevice.d.ts.map +1 -1
  70. package/dist/esm/types/Devices/Insteon/InsteonThermostatDevice.d.ts +2 -9
  71. package/dist/esm/types/Devices/Insteon/InsteonThermostatDevice.d.ts.map +1 -1
  72. package/dist/esm/types/Devices/Insteon/index.d.ts +3 -0
  73. package/dist/esm/types/Devices/Insteon/index.d.ts.map +1 -1
  74. package/dist/esm/types/Devices/MapsTo.d.ts +1 -3
  75. package/dist/esm/types/Devices/MapsTo.d.ts.map +1 -1
  76. package/dist/esm/types/Devices/ZWave/ZWaveBaseDevice.d.ts +2 -2
  77. package/dist/esm/types/Devices/ZWave/ZWaveBaseDevice.d.ts.map +1 -1
  78. package/dist/esm/types/Devices/ZWave/ZWaveDimmerSwitchDevice.d.ts +2 -2
  79. package/dist/esm/types/Devices/ZWave/ZWaveDimmerSwitchDevice.d.ts.map +1 -1
  80. package/dist/esm/types/Devices/ZWave/ZWaveLockDevice.d.ts +2 -1
  81. package/dist/esm/types/Devices/ZWave/ZWaveLockDevice.d.ts.map +1 -1
  82. package/dist/esm/types/ISY.d.ts.map +1 -1
  83. package/dist/esm/types/ISYConstants.d.ts +0 -263
  84. package/dist/esm/types/ISYConstants.d.ts.map +1 -1
  85. package/dist/esm/types/ISYNode.d.ts +5 -5
  86. package/dist/esm/types/ISYNode.d.ts.map +1 -1
  87. package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts +4 -4
  88. package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts.map +1 -1
  89. package/dist/esm/types/Matter/Behaviors/ISYClusterBehavior.d.ts +2 -2
  90. package/dist/esm/types/Matter/Behaviors/ISYClusterBehavior.d.ts.map +1 -1
  91. package/dist/esm/types/Matter/Mappings/Insteon.d.ts.map +1 -1
  92. package/dist/esm/types/Matter/Mappings/MappingRegistry.d.ts +35 -21
  93. package/dist/esm/types/Matter/Mappings/MappingRegistry.d.ts.map +1 -1
  94. package/dist/esm/types/Model/EnumDefinition.d.ts +1 -1
  95. package/dist/esm/types/Utils.d.ts +5 -5
  96. package/dist/esm/types/Utils.d.ts.map +1 -1
  97. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  98. package/package.json +3 -2
  99. package/src/CodeGeneration/EnumFactory.ts +1 -1
  100. package/src/CodeGeneration/NodeClassFactory.ts +7 -4
  101. package/src/Converters.ts +7 -4
  102. package/src/Definitions/Global/Drivers.ts +8 -6
  103. package/src/Devices/DynamicNode.ts +37 -0
  104. package/src/Devices/GenericNode.ts +31 -0
  105. package/src/Devices/Insteon/InsteonDevice.ts +0 -3
  106. package/src/Devices/Insteon/InsteonDeviceFactory.ts +93 -104
  107. package/src/Devices/Insteon/InsteonFanDevice.ts +1 -1
  108. package/src/Devices/Insteon/InsteonLockDevice.ts +5 -5
  109. package/src/Devices/Insteon/InsteonMotionSensorDevice.ts +8 -5
  110. package/src/Devices/Insteon/InsteonRelayDevice.ts +1 -8
  111. package/src/Devices/Insteon/InsteonThermostatDevice.ts +3 -20
  112. package/src/Devices/Insteon/index.ts +6 -0
  113. package/src/Devices/MapsTo.ts +0 -25
  114. package/src/Devices/NCD/Generated/Relay.ts +17 -14
  115. package/src/Devices/NodeFactory.ts +1 -1
  116. package/src/Devices/ZWave/ZWaveBaseDevice.ts +2 -1
  117. package/src/Devices/ZWave/ZWaveDimmerSwitchDevice.ts +2 -1
  118. package/src/Devices/ZWave/ZWaveLockDevice.ts +7 -6
  119. package/src/Devices/ZigBeeLegacy/Generated/Relay.ts +14 -17
  120. package/src/Devices/ZigBeeLegacy/Generated/Thermostat.ts +70 -87
  121. package/src/ISY.ts +3 -4
  122. package/src/ISYConstants.ts +0 -10
  123. package/src/ISYNode.ts +7 -2
  124. package/src/ISYScene.ts +3 -3
  125. package/src/Matter/Behaviors/ISYBridgedDeviceBehavior.ts +12 -30
  126. package/src/Matter/Behaviors/ISYClusterBehavior.ts +8 -7
  127. package/src/Matter/Mappings/Insteon.ts +7 -7
  128. package/src/Matter/Mappings/MappingRegistry.ts +93 -35
  129. package/src/Utils.ts +21 -18
@@ -1,28 +1,3 @@
1
1
  import { Behavior } from '@project-chip/matter.js/behavior';
2
2
 
3
3
  import type { Cluster, ClusterType, MutableCluster } from '@project-chip/matter.js/cluster';
4
-
5
-
6
- export type RelaxTypes<V> = V extends number
7
- ? number
8
- : V extends bigint
9
- ? bigint
10
- : V extends object
11
- ? V extends (...args: any[]) => any
12
- ? V
13
- : {
14
- [K in keyof V]: RelaxTypes<V[K]>;
15
- }
16
- : V;
17
-
18
- /*
19
-
20
- export interface MapsTo<T extends Behavior.Type, T1 extends Behavior.Type = T, T2 extends Behavior.Type = T, T3 extends Behavior.Type = T> {
21
- initialize(endpoint: EndpointFor<T, T1, T2, T3>): void | Promise<void>;
22
-
23
- }
24
-
25
- export interface MapsToCluster<T extends ClusterType.Of<ClusterType.Options<{}>>, T1 extends ClusterType = T, T2 extends ClusterType = T, T3 extends ClusterType = T> {
26
- initialize(endpoint: EndpointForCluster<T,T1, T2, T3>): void;
27
-
28
- }*/
@@ -29,19 +29,22 @@ export class RelayNode extends Base<Drivers, Commands> implements Relay.Interfac
29
29
  declare readonly nodeDefId: "NCDRelay";
30
30
  constructor (isy: ISY, nodeInfo: NodeInfo) {
31
31
  super(isy, nodeInfo);
32
- this.drivers.ST = Driver.create("ST", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Percent, label: "Status", name: "status" });
33
- this.drivers.ERR = Driver.create("ERR", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Index, label: "Responding", name: "responding" });
32
+ this.drivers.ST = Driver.create("ST", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Unknown, label: "Status", name: "status" });
33
+ this.drivers.ERR = Driver.create("ERR", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Unknown, label: "Responding", name: "responding" });
34
34
  }
35
35
  async on() { return this.sendCommand("DON"); }
36
36
  async off() { return this.sendCommand("DOF"); }
37
37
  async query() { return this.sendCommand("QUERY"); }
38
- async adr(value: (0 | 1)) { return this.sendCommand("ADRPST", value); }
39
- public get status(): (0 | 100) {
40
- return this.drivers.ST?.value;
41
- }
42
- public get responding(): NCD.Error {
43
- return this.drivers.ERR?.value;
44
- }
38
+ async adr(value: ) { return this.sendCommand("ADRPST", value); }
39
+ public get status(): {
40
+
41
+ return this.drivers.ST?.value;
42
+ }
43
+ public
44
+ get responding():
45
+ {
46
+ return this.drivers.ERR?.value;
47
+ }
45
48
  }
46
49
 
47
50
  NodeFactory.register(RelayNode);
@@ -73,21 +76,21 @@ export namespace Relay {
73
76
  label: "Query";
74
77
  name: "query";
75
78
  };
76
- ADRPST: ((value: (0 | 1)) => Promise<boolean>) & {
79
+ ADRPST: ((value: ) => Promise<boolean>) & {
77
80
  label: "ADR";
78
81
  name: "adr";
79
82
  };
80
83
  };
81
84
  export type Drivers = {
82
85
  ST: {
83
- uom: UnitOfMeasure.Percent;
84
- value: (0 | 100);
86
+ uom: ;
87
+ value: ;
85
88
  label: "Status";
86
89
  name: "status";
87
90
  };
88
91
  ERR: {
89
- uom: UnitOfMeasure.Index;
90
- value: NCD.Error;
92
+ uom: ;
93
+ value: ;
91
94
  label: "Responding";
92
95
  name: "responding";
93
96
  };
@@ -86,7 +86,7 @@ export namespace NodeFactory {
86
86
  export async function get<F extends keyof typeof Family>(node: NodeInfo<typeof Family[F]>, isy: ISY = ISY.instance): Promise<typeof ISYNode<typeof Family[F], any, any, any>> {
87
87
  if (!isDynamic(node))
88
88
  {
89
- return Promise.resolve(getForNodeDefId(Family[node.family] as F, node.nodeDefId));
89
+ return Promise.resolve(getForNodeDefId(Family[node.family ?? Family.Insteon] as F, node.nodeDefId));
90
90
  }
91
91
 
92
92
  else {
@@ -7,9 +7,10 @@ import { ISYNode } from '../../ISYNode.js';
7
7
  import 'winston';
8
8
  import type { Driver } from '../../Definitions/Global/Drivers.js';
9
9
  import type { Merge } from '@matter/general';
10
+ import { DynamicNode } from '../DynamicNode.js';
10
11
 
11
12
  // import { InsteonNLS } from './insteonfam'
12
- export class ZWaveBaseDevice<D extends ISYNode.DriverSignatures = {}, C extends ISYNode.CommandSignatures = {}> extends ISYDeviceNode<Family.ZWave,Merge<D,Driver.Signatures<'ST'>>,C> {
13
+ export class ZWaveBaseDevice<D extends ISYNode.DriverSignatures, C extends ISYNode.CommandSignatures, E extends ISYNode.EventSignatures = {}> extends DynamicNode<Family.ZWave,Merge<D,Driver.Signatures<'ST'>>,C,E > {
13
14
 
14
15
  public async getNodeDef()
15
16
  {
@@ -1,10 +1,11 @@
1
1
 
2
2
 
3
3
 
4
+ import { DimmerSwitch } from './Generated/DimmerSwitch.js';
4
5
  import { ZWaveBaseDevice } from './ZWaveBaseDevice.js';
5
6
  import 'winston';
6
7
 
7
- export class ZWaveDimmerSwitchDevice extends ZWaveBaseDevice {
8
+ export class ZWaveDimmerSwitchDevice extends DimmerSwitch.Node {
8
9
  constructor (isy: any, deviceNode: any) {
9
10
  super(isy, deviceNode);
10
11
  }
@@ -1,11 +1,12 @@
1
+ import { ZWave, type Driver } from '../../Definitions/index.js';
1
2
  import { ISY } from '../../ISY.js';
2
- import { Commands, States } from '../../ISYConstants.js';
3
+
3
4
 
4
5
  import { ZWaveBaseDevice } from './ZWaveBaseDevice.js';
5
6
  import 'winston';
6
7
 
7
8
 
8
- export class ZwaveLockDevice extends ZWaveBaseDevice {
9
+ export class ZwaveLockDevice extends ZWaveBaseDevice<Driver.Signatures<'ST'>,any,any> {
9
10
  constructor (isy: ISY, deviceNode: any
10
11
  ) {
11
12
  super(isy, deviceNode);
@@ -27,18 +28,18 @@ export class ZwaveLockDevice extends ZWaveBaseDevice {
27
28
 
28
29
  public async sendNonSecureLockCommand(lockState: any) {
29
30
  if (lockState) {
30
- return this.isy.sendNodeCommand(this, Commands.Lock.Lock);
31
+ return this.isy.sendNodeCommand(this, 'DON');
31
32
  }
32
33
  else {
33
- return this.isy.sendNodeCommand(this, Commands.Lock.Unlock);
34
+ return this.isy.sendNodeCommand(this, 'DOF');
34
35
  }
35
36
  }
36
37
  public async sendSecureLockCommand(lockState: any) {
37
38
  if (lockState) {
38
- return this.isy.sendNodeCommand(this, Commands.On, States.SecureLock.Secured);
39
+ return this.isy.sendNodeCommand(this, 'DON', ZWave.OnOff);
39
40
  }
40
41
  else {
41
- return this.isy.sendNodeCommand(this, Commands.On, States.SecureLock.NotSecured);
42
+ return this.isy.sendNodeCommand(this, 'DON', 0);
42
43
  }
43
44
  }
44
45
  }
@@ -29,22 +29,19 @@ export class RelayNode extends Base<Drivers, Commands> implements Relay.Interfac
29
29
  declare readonly nodeDefId: "RelayLoadControl";
30
30
  constructor (isy: ISY, nodeInfo: NodeInfo) {
31
31
  super(isy, nodeInfo);
32
- this.drivers.ST = Driver.create("ST", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Unknown, label: "Status", name: "status" });
33
- this.drivers.ERR = Driver.create("ERR", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Unknown, label: "Responding", name: "responding" });
32
+ this.drivers.ST = Driver.create("ST", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Percent, label: "Status", name: "status" });
33
+ this.drivers.ERR = Driver.create("ERR", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Index, label: "Responding", name: "responding" });
34
34
  }
35
35
  async on() { return this.sendCommand("DON"); }
36
36
  async off() { return this.sendCommand("DOF"); }
37
37
  async query() { return this.sendCommand("QUERY"); }
38
- async adr(value: ) { return this.sendCommand("ADRPST", value); }
39
- public get status(): {
40
-
41
- return this.drivers.ST?.value;
42
- }
43
- public
44
- get responding():
45
- {
46
- return this.drivers.ERR?.value;
47
- }
38
+ async adr(value: (0 | 1)) { return this.sendCommand("ADRPST", value); }
39
+ public get status(): (0 | 100) {
40
+ return this.drivers.ST?.value;
41
+ }
42
+ public get responding(): ZigBeeLegacy.Error {
43
+ return this.drivers.ERR?.value;
44
+ }
48
45
  }
49
46
 
50
47
  NodeFactory.register(RelayNode);
@@ -76,21 +73,21 @@ export namespace Relay {
76
73
  label: "Query";
77
74
  name: "query";
78
75
  };
79
- ADRPST: ((value: ) => Promise<boolean>) & {
76
+ ADRPST: ((value: (0 | 1)) => Promise<boolean>) & {
80
77
  label: "ADR";
81
78
  name: "adr";
82
79
  };
83
80
  };
84
81
  export type Drivers = {
85
82
  ST: {
86
- uom: ;
87
- value: ;
83
+ uom: UnitOfMeasure.Percent;
84
+ value: (0 | 100);
88
85
  label: "Status";
89
86
  name: "status";
90
87
  };
91
88
  ERR: {
92
- uom: ;
93
- value: ;
89
+ uom: UnitOfMeasure.Index;
90
+ value: ZigBeeLegacy.Error;
94
91
  label: "Responding";
95
92
  name: "responding";
96
93
  };
@@ -34,69 +34,52 @@ export class ThermostatNode extends Base<Drivers, Commands> implements Thermosta
34
34
  declare readonly nodeDefId: "Thermostat";
35
35
  constructor (isy: ISY, nodeInfo: NodeInfo) {
36
36
  super(isy, nodeInfo);
37
- this.drivers.ST = Driver.create("ST", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Unknown, label: "Temperature", name: "temperature" });
38
- this.drivers.CLISPH = Driver.create("CLISPH", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Unknown, label: "Heat Setpoint", name: "heatSetpoint" });
39
- this.drivers.CLISPC = Driver.create("CLISPC", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Unknown, label: "Cool Setpoint", name: "coolSetpoint" });
40
- this.drivers.CLIMD = Driver.create("CLIMD", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Unknown, label: "Mode", name: "mode" });
41
- this.drivers.CLIFS = Driver.create("CLIFS", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Unknown, label: "Fan Mode", name: "fanMode" });
42
- this.drivers.CLIHCS = Driver.create("CLIHCS", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Unknown, label: "Heat/Cool State", name: "heatCoolState" });
43
- this.drivers.CLIFRS = Driver.create("CLIFRS", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Unknown, label: "Fan State", name: "fanState" });
44
- this.drivers.CLISMD = Driver.create("CLISMD", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Unknown, label: "Schedule Mode", name: "scheduleMode" });
45
- this.drivers.ERR = Driver.create("ERR", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Unknown, label: "Responding", name: "responding" });
37
+ this.drivers.ST = Driver.create("ST", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Degree, label: "Temperature", name: "temperature" });
38
+ this.drivers.CLISPH = Driver.create("CLISPH", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Degree, label: "Heat Setpoint", name: "heatSetpoint" });
39
+ this.drivers.CLISPC = Driver.create("CLISPC", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Degree, label: "Cool Setpoint", name: "coolSetpoint" });
40
+ this.drivers.CLIMD = Driver.create("CLIMD", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.ThermostatMode, label: "Mode", name: "mode" });
41
+ this.drivers.CLIFS = Driver.create("CLIFS", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.ThermostatFanMode, label: "Fan Mode", name: "fanMode" });
42
+ this.drivers.CLIHCS = Driver.create("CLIHCS", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.ThermostatHeatCoolState, label: "Heat/Cool State", name: "heatCoolState" });
43
+ this.drivers.CLIFRS = Driver.create("CLIFRS", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.ThermostatFanRunState, label: "Fan State", name: "fanState" });
44
+ this.drivers.CLISMD = Driver.create("CLISMD", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Index, label: "Schedule Mode", name: "scheduleMode" });
45
+ this.drivers.ERR = Driver.create("ERR", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Index, label: "Responding", name: "responding" });
46
46
  }
47
- async updateHeatSetpoint(value: ) { return this.sendCommand("CLISPH", value); }
48
- async updateCoolSetpoint(value: ) { return this.sendCommand("CLISPC", value); }
49
- async updateMode(value: ) { return this.sendCommand("CLIMD", value); }
50
- async updateFanMode(value: ) { return this.sendCommand("CLIFS", value); }
51
- async updateScheduleMode(value: ) { return this.sendCommand("CLISMD", value); }
52
- async heatSetpointShift(value: ) { return this.sendCommand("CLISPHD", value); }
53
- async coolSetpointShift(value: ) { return this.sendCommand("CLISPCD", value); }
47
+ async updateHeatSetpoint(value: number) { return this.sendCommand("CLISPH", value); }
48
+ async updateCoolSetpoint(value: number) { return this.sendCommand("CLISPC", value); }
49
+ async updateMode(value: number) { return this.sendCommand("CLIMD", value); }
50
+ async updateFanMode(value: (0 | 1)) { return this.sendCommand("CLIFS", value); }
51
+ async updateScheduleMode(value: number) { return this.sendCommand("CLISMD", value); }
52
+ async heatSetpointShift(value: number) { return this.sendCommand("CLISPHD", value); }
53
+ async coolSetpointShift(value: number) { return this.sendCommand("CLISPCD", value); }
54
54
  async query() { return this.sendCommand("QUERY"); }
55
- async adr(value: ) { return this.sendCommand("ADRPST", value); }
56
- public get temperature(): {
57
-
58
- return this.drivers.ST?.value;
59
- }
60
- public
61
- get heatSetpoint():
62
- {
63
- return this.drivers.CLISPH?.value;
64
- }
65
- public
66
- get coolSetpoint():
67
- {
68
- return this.drivers.CLISPC?.value;
69
- }
70
- public
71
- get mode():
72
- {
73
- return this.drivers.CLIMD?.value;
74
- }
75
- public
76
- get fanMode():
77
- {
78
- return this.drivers.CLIFS?.value;
79
- }
80
- public
81
- get heatCoolState():
82
- {
83
- return this.drivers.CLIHCS?.value;
84
- }
85
- public
86
- get fanState():
87
- {
88
- return this.drivers.CLIFRS?.value;
89
- }
90
- public
91
- get scheduleMode():
92
- {
93
- return this.drivers.CLISMD?.value;
94
- }
95
- public
96
- get responding():
97
- {
98
- return this.drivers.ERR?.value;
99
- }
55
+ async adr(value: (0 | 1)) { return this.sendCommand("ADRPST", value); }
56
+ public get temperature(): number {
57
+ return this.drivers.ST?.value;
58
+ }
59
+ public get heatSetpoint(): number {
60
+ return this.drivers.CLISPH?.value;
61
+ }
62
+ public get coolSetpoint(): number {
63
+ return this.drivers.CLISPC?.value;
64
+ }
65
+ public get mode(): number {
66
+ return this.drivers.CLIMD?.value;
67
+ }
68
+ public get fanMode(): (0 | 1) {
69
+ return this.drivers.CLIFS?.value;
70
+ }
71
+ public get heatCoolState(): number {
72
+ return this.drivers.CLIHCS?.value;
73
+ }
74
+ public get fanState(): (0 | 1) {
75
+ return this.drivers.CLIFRS?.value;
76
+ }
77
+ public get scheduleMode(): number {
78
+ return this.drivers.CLISMD?.value;
79
+ }
80
+ public get responding(): ZigBeeLegacy.Error {
81
+ return this.drivers.ERR?.value;
82
+ }
100
83
  }
101
84
 
102
85
  NodeFactory.register(ThermostatNode);
@@ -116,31 +99,31 @@ export namespace Thermostat {
116
99
  }
117
100
  export const Node = ThermostatNode;
118
101
  export type Commands = {
119
- CLISPH: ((value: ) => Promise<boolean>) & {
102
+ CLISPH: ((value: number) => Promise<boolean>) & {
120
103
  label: "Heat Setpoint";
121
104
  name: "updateHeatSetpoint";
122
105
  };
123
- CLISPC: ((value: ) => Promise<boolean>) & {
106
+ CLISPC: ((value: number) => Promise<boolean>) & {
124
107
  label: "Cool Setpoint";
125
108
  name: "updateCoolSetpoint";
126
109
  };
127
- CLIMD: ((value: ) => Promise<boolean>) & {
110
+ CLIMD: ((value: number) => Promise<boolean>) & {
128
111
  label: "Mode";
129
112
  name: "updateMode";
130
113
  };
131
- CLIFS: ((value: ) => Promise<boolean>) & {
114
+ CLIFS: ((value: (0 | 1)) => Promise<boolean>) & {
132
115
  label: "Fan Mode";
133
116
  name: "updateFanMode";
134
117
  };
135
- CLISMD: ((value: ) => Promise<boolean>) & {
118
+ CLISMD: ((value: number) => Promise<boolean>) & {
136
119
  label: "Schedule Mode";
137
120
  name: "updateScheduleMode";
138
121
  };
139
- CLISPHD: ((value: ) => Promise<boolean>) & {
122
+ CLISPHD: ((value: number) => Promise<boolean>) & {
140
123
  label: "Heat Setpoint Shift";
141
124
  name: "heatSetpointShift";
142
125
  };
143
- CLISPCD: ((value: ) => Promise<boolean>) & {
126
+ CLISPCD: ((value: number) => Promise<boolean>) & {
144
127
  label: "Cool Setpoint Shift";
145
128
  name: "coolSetpointShift";
146
129
  };
@@ -148,63 +131,63 @@ export namespace Thermostat {
148
131
  label: "Query";
149
132
  name: "query";
150
133
  };
151
- ADRPST: ((value: ) => Promise<boolean>) & {
134
+ ADRPST: ((value: (0 | 1)) => Promise<boolean>) & {
152
135
  label: "ADR";
153
136
  name: "adr";
154
137
  };
155
138
  };
156
139
  export type Drivers = {
157
140
  ST: {
158
- uom: ;
159
- value: ;
141
+ uom: UnitOfMeasure.Degree;
142
+ value: number;
160
143
  label: "Temperature";
161
144
  name: "temperature";
162
145
  };
163
146
  CLISPH: {
164
- uom: ;
165
- value: ;
147
+ uom: UnitOfMeasure.Degree;
148
+ value: number;
166
149
  label: "Heat Setpoint";
167
150
  name: "heatSetpoint";
168
151
  };
169
152
  CLISPC: {
170
- uom: ;
171
- value: ;
153
+ uom: UnitOfMeasure.Degree;
154
+ value: number;
172
155
  label: "Cool Setpoint";
173
156
  name: "coolSetpoint";
174
157
  };
175
158
  CLIMD: {
176
- uom: ;
177
- value: ;
159
+ uom: UnitOfMeasure.ThermostatMode;
160
+ value: number;
178
161
  label: "Mode";
179
162
  name: "mode";
180
163
  };
181
164
  CLIFS: {
182
- uom: ;
183
- value: ;
165
+ uom: UnitOfMeasure.ThermostatFanMode;
166
+ value: (0 | 1);
184
167
  label: "Fan Mode";
185
168
  name: "fanMode";
186
169
  };
187
170
  CLIHCS: {
188
- uom: ;
189
- value: ;
171
+ uom: UnitOfMeasure.ThermostatHeatCoolState;
172
+ value: number;
190
173
  label: "Heat/Cool State";
191
174
  name: "heatCoolState";
192
175
  };
193
176
  CLIFRS: {
194
- uom: ;
195
- value: ;
177
+ uom: UnitOfMeasure.ThermostatFanRunState;
178
+ value: (0 | 1);
196
179
  label: "Fan State";
197
180
  name: "fanState";
198
181
  };
199
182
  CLISMD: {
200
- uom: ;
201
- value: ;
183
+ uom: UnitOfMeasure.Index;
184
+ value: number;
202
185
  label: "Schedule Mode";
203
186
  name: "scheduleMode";
204
187
  };
205
188
  ERR: {
206
- uom: ;
207
- value: ;
189
+ uom: UnitOfMeasure.Index;
190
+ value: ZigBeeLegacy.Error;
208
191
  label: "Responding";
209
192
  name: "responding";
210
193
  };
package/src/ISY.ts CHANGED
@@ -23,12 +23,11 @@ import * as Utils from './Utils.js';
23
23
  import { X2jOptions, XMLParser } from 'fast-xml-parser';
24
24
  import type { ClientRequestArgs } from 'http';
25
25
  import path from 'path';
26
- import { textChangeRangeIsUnchanged } from 'typescript';
27
- import { promisify } from 'util';
28
26
  import { NodeFactory } from './Devices/NodeFactory.js';
29
27
  import { ISYError } from './ISYError.js';
30
28
  import type { Config } from './Model/Config.js';
31
29
  import { findPackageJson } from './Utils.js';
30
+ import { GenericNode } from './Devices/GenericNode.js';
32
31
 
33
32
  type InitStep = 'config' | 'loadNodes' | 'readFolders' | 'readDevices' | 'readScenes' | 'variables' | 'websocket' | 'refreshStatuses' | 'initialize';
34
33
 
@@ -541,7 +540,7 @@ export class ISY extends EventEmitter implements Disposable {
541
540
  for (const node of result.nodes.node) {
542
541
  let device = that.getNode(node.id) as unknown as ISYNode<any, any, any, any>;
543
542
  if (device !== null && device !== undefined) {
544
- device.parseResult(node.property);
543
+ device.parseResult(node);
545
544
  }
546
545
  }
547
546
  } catch (e) {
@@ -792,7 +791,7 @@ export class ISY extends EventEmitter implements Disposable {
792
791
  if (enabled) {
793
792
  if (newDevice === null) {
794
793
  this.logger.warn(`Device type resolution failed for ${nodeInfo.name} with type: ${nodeInfo.type} and nodedef: ${nodeInfo.nodeDefId}`);
795
- newDevice = new ISYDeviceNode<any, any, any, any>(this, nodeInfo);
794
+ newDevice = new GenericNode(this, nodeInfo);
796
795
  } else if (newDevice !== null) {
797
796
  if (m.unsupported) {
798
797
  this.logger.warn('Device not currently supported: ' + JSON.stringify(nodeInfo) + ' /n It has been mapped to: ' + d.name);
@@ -154,10 +154,6 @@ const ISYConstants = {
154
154
 
155
155
  };
156
156
 
157
- export const Properties =
158
- {
159
-
160
- }
161
157
 
162
158
  export enum VariableType {
163
159
  Integer = 1,
@@ -174,9 +170,3 @@ export enum LinkType
174
170
  Controller = 16,
175
171
  Responder = 0
176
172
  }
177
-
178
-
179
- export default ISYConstants;
180
- export const Props = ISYConstants.Props;
181
- export const States = ISYConstants.States;
182
- export const Commands = ISYConstants.Cmds;
package/src/ISYNode.ts CHANGED
@@ -156,16 +156,21 @@ export class ISYNode<
156
156
  }
157
157
 
158
158
  public applyStatus(prop: DriverState) {
159
+ try {
159
160
  var d = this.drivers[prop.id];
160
161
 
161
162
  if (d) {
162
163
  d.apply(prop);
163
164
 
164
- this.logger(`Property ${d.label} (${prop.id}) refreshed to: ${d.value} (${d.state.formattedValue}})`);
165
+ this.logger(`Property ${d?.label ?? prop.id} (${prop.id}) refreshed to: ${d.value} (${prop.formatted}})`);
165
166
  //d.state.value = this.convertFrom(prop.value, prop.uom, prop.id);
166
167
  //d.state.formatted = prop.formatted;
167
168
  //d.state.uom = prop.uom;
168
169
  }
170
+ }
171
+ catch(e) {
172
+ this.logger(e?.message ?? e, 'error');
173
+ }
169
174
  }
170
175
 
171
176
  public convert(value: any, from: UnitOfMeasure, to: UnitOfMeasure): any {
@@ -369,7 +374,7 @@ export class ISYNode<
369
374
  return this.isy.sendNodeCommand(this, command, { default: valueOrParameters, ...parameters });
370
375
  }
371
376
 
372
-
377
+
373
378
 
374
379
  }
375
380
 
package/src/ISYScene.ts CHANGED
@@ -3,7 +3,7 @@ import type { Driver } from './Definitions/Global/Drivers.js';
3
3
  import { Family } from './Definitions/Global/Families.js';
4
4
  import {Insteon} from './Devices/index.js';
5
5
  import type { ISY } from './ISY.js';
6
- import { Commands, LinkType } from './ISYConstants.js';
6
+ import { LinkType } from './ISYConstants.js';
7
7
  import { ISYDevice } from './ISYDevice.js';
8
8
  import { ISYNode } from './ISYNode.js';
9
9
  import type { NodeInfo, StaticNodeInfo } from './Model/NodeInfo.js';
@@ -123,10 +123,10 @@ export class ISYScene extends ISYNode<Family.Scene, Driver.Signatures<'ST'>, Com
123
123
  }
124
124
  }
125
125
  public async updateIsOn(lightState: boolean) {
126
- return this.isy.sendNodeCommand(this, lightState ? Commands.On : Commands.Off);
126
+ return this.isy.sendNodeCommand(this, lightState ? 'DON' : 'DOF');
127
127
  }
128
128
  public async updateBrightnessLevel(level) {
129
- return this.isy.sendNodeCommand(this, level > 0 ? Commands.On : Commands.Off, level);
129
+ return this.isy.sendNodeCommand(this, level > 0 ? 'DON' : 'DOF', level);
130
130
  }
131
131
  public getAreAllLightsInSpecifiedState(state) {
132
132
  for (const device of this.members) {