isy-nodejs 1.0.6-alpha.0 → 1.0.6-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/CodeGeneration/EnumFactory.js +1 -1
- package/dist/esm/CodeGeneration/EnumFactory.js.map +1 -1
- package/dist/esm/CodeGeneration/NodeClassFactory.js +5 -4
- package/dist/esm/CodeGeneration/NodeClassFactory.js.map +1 -1
- package/dist/esm/Converters.js.map +1 -1
- package/dist/esm/Definitions/Global/Drivers.js +7 -5
- package/dist/esm/Definitions/Global/Drivers.js.map +1 -1
- package/dist/esm/Devices/DynamicNode.js +19 -0
- package/dist/esm/Devices/DynamicNode.js.map +1 -0
- package/dist/esm/Devices/GenericNode.js +17 -0
- package/dist/esm/Devices/GenericNode.js.map +1 -0
- package/dist/esm/Devices/Insteon/InsteonDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonDeviceFactory.js +86 -102
- package/dist/esm/Devices/Insteon/InsteonDeviceFactory.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonLockDevice.js +4 -5
- package/dist/esm/Devices/Insteon/InsteonLockDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonMotionSensorDevice.js +4 -5
- package/dist/esm/Devices/Insteon/InsteonMotionSensorDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonRelayDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonThermostatDevice.js +2 -24
- package/dist/esm/Devices/Insteon/InsteonThermostatDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/index.js +3 -0
- package/dist/esm/Devices/Insteon/index.js.map +1 -1
- package/dist/esm/Devices/MapsTo.js +0 -11
- package/dist/esm/Devices/MapsTo.js.map +1 -1
- package/dist/esm/Devices/NodeFactory.js +1 -1
- package/dist/esm/Devices/NodeFactory.js.map +1 -1
- package/dist/esm/Devices/ZWave/ZWaveBaseDevice.js +2 -2
- package/dist/esm/Devices/ZWave/ZWaveBaseDevice.js.map +1 -1
- package/dist/esm/Devices/ZWave/ZWaveDimmerSwitchDevice.js +2 -2
- package/dist/esm/Devices/ZWave/ZWaveDimmerSwitchDevice.js.map +1 -1
- package/dist/esm/Devices/ZWave/ZWaveLockDevice.js +5 -5
- package/dist/esm/Devices/ZWave/ZWaveLockDevice.js.map +1 -1
- package/dist/esm/ISY.js +3 -3
- package/dist/esm/ISY.js.map +1 -1
- package/dist/esm/ISYConstants.js +0 -5
- package/dist/esm/ISYConstants.js.map +1 -1
- package/dist/esm/ISYNode.js +12 -7
- package/dist/esm/ISYNode.js.map +1 -1
- package/dist/esm/ISYScene.js +3 -3
- package/dist/esm/ISYScene.js.map +1 -1
- package/dist/esm/Matter/Behaviors/ISYBridgedDeviceBehavior.js +1 -1
- package/dist/esm/Matter/Behaviors/ISYBridgedDeviceBehavior.js.map +1 -1
- package/dist/esm/Matter/Behaviors/ISYClusterBehavior.js +1 -0
- package/dist/esm/Matter/Behaviors/ISYClusterBehavior.js.map +1 -1
- package/dist/esm/Matter/Mappings/Insteon.js +3 -5
- package/dist/esm/Matter/Mappings/Insteon.js.map +1 -1
- package/dist/esm/Matter/Mappings/MappingRegistry.js +26 -9
- package/dist/esm/Matter/Mappings/MappingRegistry.js.map +1 -1
- package/dist/esm/Utils.js.map +1 -1
- package/dist/esm/types/CodeGeneration/EnumFactory.d.ts +2 -2
- package/dist/esm/types/CodeGeneration/EnumFactory.d.ts.map +1 -1
- package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts +11 -9
- package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts.map +1 -1
- package/dist/esm/types/Converters.d.ts +25 -16
- package/dist/esm/types/Converters.d.ts.map +1 -1
- package/dist/esm/types/Definitions/Global/Drivers.d.ts.map +1 -1
- package/dist/esm/types/Devices/DynamicNode.d.ts +11 -0
- package/dist/esm/types/Devices/DynamicNode.d.ts.map +1 -0
- package/dist/esm/types/Devices/EndpointFor.d.ts +3 -3
- package/dist/esm/types/Devices/GenericNode.d.ts +9 -0
- package/dist/esm/types/Devices/GenericNode.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts +10 -10
- package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonDeviceFactory.d.ts +3 -4
- package/dist/esm/types/Devices/Insteon/InsteonDeviceFactory.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonMotionSensorDevice.d.ts +3 -3
- package/dist/esm/types/Devices/Insteon/InsteonMotionSensorDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonRelayDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonThermostatDevice.d.ts +2 -9
- package/dist/esm/types/Devices/Insteon/InsteonThermostatDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/index.d.ts +3 -0
- package/dist/esm/types/Devices/Insteon/index.d.ts.map +1 -1
- package/dist/esm/types/Devices/MapsTo.d.ts +1 -3
- package/dist/esm/types/Devices/MapsTo.d.ts.map +1 -1
- package/dist/esm/types/Devices/ZWave/ZWaveBaseDevice.d.ts +2 -2
- package/dist/esm/types/Devices/ZWave/ZWaveBaseDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/ZWave/ZWaveDimmerSwitchDevice.d.ts +2 -2
- package/dist/esm/types/Devices/ZWave/ZWaveDimmerSwitchDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/ZWave/ZWaveLockDevice.d.ts +2 -1
- package/dist/esm/types/Devices/ZWave/ZWaveLockDevice.d.ts.map +1 -1
- package/dist/esm/types/ISY.d.ts.map +1 -1
- package/dist/esm/types/ISYConstants.d.ts +0 -263
- package/dist/esm/types/ISYConstants.d.ts.map +1 -1
- package/dist/esm/types/ISYNode.d.ts +5 -5
- package/dist/esm/types/ISYNode.d.ts.map +1 -1
- package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts +4 -4
- package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts.map +1 -1
- package/dist/esm/types/Matter/Behaviors/ISYClusterBehavior.d.ts +2 -2
- package/dist/esm/types/Matter/Behaviors/ISYClusterBehavior.d.ts.map +1 -1
- package/dist/esm/types/Matter/Mappings/Insteon.d.ts.map +1 -1
- package/dist/esm/types/Matter/Mappings/MappingRegistry.d.ts +35 -21
- package/dist/esm/types/Matter/Mappings/MappingRegistry.d.ts.map +1 -1
- package/dist/esm/types/Utils.d.ts +5 -5
- package/dist/esm/types/Utils.d.ts.map +1 -1
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +6 -5
- package/src/CodeGeneration/EnumFactory.ts +1 -1
- package/src/CodeGeneration/NodeClassFactory.ts +7 -4
- package/src/Converters.ts +7 -4
- package/src/Definitions/Global/Drivers.ts +8 -6
- package/src/Devices/DynamicNode.ts +37 -0
- package/src/Devices/GenericNode.ts +31 -0
- package/src/Devices/Insteon/InsteonDevice.ts +0 -3
- package/src/Devices/Insteon/InsteonDeviceFactory.ts +93 -104
- package/src/Devices/Insteon/InsteonFanDevice.ts +1 -1
- package/src/Devices/Insteon/InsteonLockDevice.ts +5 -5
- package/src/Devices/Insteon/InsteonMotionSensorDevice.ts +8 -5
- package/src/Devices/Insteon/InsteonRelayDevice.ts +1 -8
- package/src/Devices/Insteon/InsteonThermostatDevice.ts +3 -20
- package/src/Devices/Insteon/index.ts +6 -0
- package/src/Devices/MapsTo.ts +0 -25
- package/src/Devices/NCD/Generated/Relay.ts +17 -14
- package/src/Devices/NodeFactory.ts +1 -1
- package/src/Devices/ZWave/ZWaveBaseDevice.ts +2 -1
- package/src/Devices/ZWave/ZWaveDimmerSwitchDevice.ts +2 -1
- package/src/Devices/ZWave/ZWaveLockDevice.ts +7 -6
- package/src/Devices/ZigBeeLegacy/Generated/Relay.ts +14 -17
- package/src/Devices/ZigBeeLegacy/Generated/Thermostat.ts +70 -87
- package/src/ISY.ts +3 -4
- package/src/ISYConstants.ts +0 -10
- package/src/ISYNode.ts +7 -2
- package/src/ISYScene.ts +3 -3
- package/src/Matter/Behaviors/ISYBridgedDeviceBehavior.ts +12 -30
- package/src/Matter/Behaviors/ISYClusterBehavior.ts +8 -7
- package/src/Matter/Mappings/Insteon.ts +7 -7
- package/src/Matter/Mappings/MappingRegistry.ts +93 -35
- package/src/Utils.ts +21 -18
- package/dist/esm/Matter/Mappings/register.js +0 -2
- package/dist/esm/Matter/Mappings/register.js.map +0 -1
- package/dist/esm/types/Matter/Mappings/register.d.ts +0 -2
- package/dist/esm/types/Matter/Mappings/register.d.ts.map +0 -1
package/src/Devices/MapsTo.ts
CHANGED
|
@@ -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.
|
|
33
|
-
this.drivers.ERR = Driver.create("ERR", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.
|
|
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:
|
|
39
|
-
public get status():
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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:
|
|
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:
|
|
84
|
-
value:
|
|
86
|
+
uom: ;
|
|
87
|
+
value: ;
|
|
85
88
|
label: "Status";
|
|
86
89
|
name: "status";
|
|
87
90
|
};
|
|
88
91
|
ERR: {
|
|
89
|
-
uom:
|
|
90
|
-
value:
|
|
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]
|
|
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
|
|
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
|
|
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
|
-
|
|
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,
|
|
31
|
+
return this.isy.sendNodeCommand(this, 'DON');
|
|
31
32
|
}
|
|
32
33
|
else {
|
|
33
|
-
return this.isy.sendNodeCommand(this,
|
|
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,
|
|
39
|
+
return this.isy.sendNodeCommand(this, 'DON', ZWave.OnOff);
|
|
39
40
|
}
|
|
40
41
|
else {
|
|
41
|
-
return this.isy.sendNodeCommand(this,
|
|
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.
|
|
33
|
-
this.drivers.ERR = Driver.create("ERR", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.
|
|
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
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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.
|
|
38
|
-
this.drivers.CLISPH = Driver.create("CLISPH", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.
|
|
39
|
-
this.drivers.CLISPC = Driver.create("CLISPC", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.
|
|
40
|
-
this.drivers.CLIMD = Driver.create("CLIMD", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.
|
|
41
|
-
this.drivers.CLIFS = Driver.create("CLIFS", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.
|
|
42
|
-
this.drivers.CLIHCS = Driver.create("CLIHCS", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.
|
|
43
|
-
this.drivers.CLIFRS = Driver.create("CLIFRS", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.
|
|
44
|
-
this.drivers.CLISMD = Driver.create("CLISMD", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.
|
|
45
|
-
this.drivers.ERR = Driver.create("ERR", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.
|
|
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
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
{
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
get
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
{
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
|
|
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
|
|
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
|
|
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);
|
package/src/ISYConstants.ts
CHANGED
|
@@ -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.
|
|
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 {
|
|
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 ?
|
|
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 ?
|
|
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) {
|