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.
- package/dist/cjs/Converters.js +66 -30
- package/dist/cjs/Converters.js.map +1 -1
- package/dist/cjs/Definitions/Global/Drivers.js +10 -3
- package/dist/cjs/Definitions/Global/Drivers.js.map +1 -1
- package/dist/cjs/Definitions/Global/Events.js +1 -2
- package/dist/cjs/Definitions/Global/Events.js.map +1 -1
- package/dist/cjs/Devices/Elk/ElkAlarmPanelDevice.js +3 -3
- package/dist/cjs/Devices/Elk/ElkAlarmSensorDevice.js +9 -6
- package/dist/cjs/Devices/Elk/ElkAlarmSensorDevice.js.map +1 -1
- package/dist/cjs/Devices/Insteon/InsteonBaseDevice.js +1 -1
- package/dist/cjs/Devices/Insteon/InsteonBaseDevice.js.map +1 -1
- package/dist/cjs/Devices/Insteon/InsteonFanDevice.js +4 -2
- package/dist/cjs/Devices/Insteon/InsteonFanDevice.js.map +1 -1
- package/dist/cjs/Devices/Insteon/InsteonMotionSensorDevice.js +5 -5
- package/dist/cjs/ISY.js +29 -20
- package/dist/cjs/ISY.js.map +1 -1
- package/dist/cjs/ISYNode.js +11 -8
- package/dist/cjs/ISYNode.js.map +1 -1
- package/dist/cjs/ISYScene.js +2 -2
- package/dist/cjs/Matter/Behaviors/ISYBridgedDeviceBehavior.js +11 -4
- package/dist/cjs/Matter/Behaviors/ISYBridgedDeviceBehavior.js.map +1 -1
- package/dist/cjs/Matter/Behaviors/ISYClusterBehavior.js +26 -7
- package/dist/cjs/Matter/Behaviors/ISYClusterBehavior.js.map +1 -1
- package/dist/cjs/Matter/Behaviors/ISYOnOffBehavior.js +9 -7
- package/dist/cjs/Matter/Behaviors/ISYOnOffBehavior.js.map +1 -1
- package/dist/cjs/Matter/{Server → Bridge}/Server.js +31 -45
- package/dist/cjs/Matter/Bridge/Server.js.map +1 -0
- package/dist/cjs/Matter/Mappings/Insteon.js +19 -15
- package/dist/cjs/Matter/Mappings/Insteon.js.map +1 -1
- package/dist/cjs/Matter/Mappings/register.js +1 -0
- package/dist/cjs/Matter/Mappings/register.js.map +1 -0
- package/dist/cjs/Model/ClusterMap.js +12 -9
- package/dist/cjs/Model/ClusterMap.js.map +1 -1
- package/dist/cjs/Utils.js +0 -9
- package/dist/cjs/Utils.js.map +1 -1
- package/dist/cjs/types/Converters.d.ts +28 -8
- package/dist/cjs/types/Converters.d.ts.map +1 -1
- package/dist/cjs/types/Definitions/Global/Drivers.d.ts +4 -3
- package/dist/cjs/types/Definitions/Global/Drivers.d.ts.map +1 -1
- package/dist/cjs/types/Definitions/Global/Events.d.ts.map +1 -1
- package/dist/cjs/types/Devices/Elk/ElkAlarmSensorDevice.d.ts.map +1 -1
- package/dist/cjs/types/Devices/EndpointFor.d.ts +2 -2
- package/dist/cjs/types/Devices/Insteon/InsteonDevice.d.ts +4 -4
- package/dist/cjs/types/Devices/Insteon/InsteonFanDevice.d.ts.map +1 -1
- package/dist/cjs/types/ISY.d.ts +21 -18
- package/dist/cjs/types/ISY.d.ts.map +1 -1
- package/dist/cjs/types/ISYNode.d.ts +4 -4
- package/dist/cjs/types/ISYNode.d.ts.map +1 -1
- package/dist/cjs/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts +16 -6
- package/dist/cjs/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts.map +1 -1
- package/dist/cjs/types/Matter/Behaviors/ISYClusterBehavior.d.ts +13 -11
- package/dist/cjs/types/Matter/Behaviors/ISYClusterBehavior.d.ts.map +1 -1
- package/dist/cjs/types/Matter/Behaviors/ISYOnOffBehavior.d.ts +4 -4
- package/dist/cjs/types/Matter/Behaviors/ISYOnOffBehavior.d.ts.map +1 -1
- package/dist/cjs/types/Matter/Bridge/Server.d.ts +17 -0
- package/dist/cjs/types/Matter/Bridge/Server.d.ts.map +1 -0
- package/dist/cjs/types/Matter/Mappings/register.d.ts +1 -0
- package/dist/cjs/types/Matter/Mappings/register.d.ts.map +1 -0
- package/dist/cjs/types/Model/ClusterMap.d.ts +19 -11
- package/dist/cjs/types/Model/ClusterMap.d.ts.map +1 -1
- package/dist/cjs/types/Utils.d.ts +0 -5
- package/dist/cjs/types/Utils.d.ts.map +1 -1
- package/dist/esm/Converters.js +63 -28
- package/dist/esm/Converters.js.map +1 -1
- package/dist/esm/Definitions/Global/Drivers.js +10 -3
- package/dist/esm/Definitions/Global/Drivers.js.map +1 -1
- package/dist/esm/Definitions/Global/Events.js +1 -2
- package/dist/esm/Definitions/Global/Events.js.map +1 -1
- package/dist/esm/Devices/Elk/ElkAlarmPanelDevice.js +3 -3
- package/dist/esm/Devices/Elk/ElkAlarmSensorDevice.js +9 -6
- package/dist/esm/Devices/Elk/ElkAlarmSensorDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonBaseDevice.js +2 -2
- package/dist/esm/Devices/Insteon/InsteonBaseDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonFanDevice.js +4 -2
- package/dist/esm/Devices/Insteon/InsteonFanDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonMotionSensorDevice.js +5 -5
- package/dist/esm/ISY.js +28 -19
- package/dist/esm/ISY.js.map +1 -1
- package/dist/esm/ISYNode.js +12 -9
- package/dist/esm/ISYNode.js.map +1 -1
- package/dist/esm/ISYScene.js +2 -2
- package/dist/esm/Matter/Behaviors/ISYBridgedDeviceBehavior.js +11 -4
- package/dist/esm/Matter/Behaviors/ISYBridgedDeviceBehavior.js.map +1 -1
- package/dist/esm/Matter/Behaviors/ISYClusterBehavior.js +26 -7
- package/dist/esm/Matter/Behaviors/ISYClusterBehavior.js.map +1 -1
- package/dist/esm/Matter/Behaviors/ISYOnOffBehavior.js +10 -8
- package/dist/esm/Matter/Behaviors/ISYOnOffBehavior.js.map +1 -1
- package/dist/esm/Matter/{Server → Bridge}/Server.js +29 -44
- package/dist/esm/Matter/Bridge/Server.js.map +1 -0
- package/dist/esm/Matter/Mappings/Insteon.js +22 -18
- package/dist/esm/Matter/Mappings/Insteon.js.map +1 -1
- package/dist/esm/Matter/Mappings/register.js +2 -0
- package/dist/esm/Matter/Mappings/register.js.map +1 -0
- package/dist/esm/Model/ClusterMap.js +12 -9
- package/dist/esm/Model/ClusterMap.js.map +1 -1
- package/dist/esm/Utils.js +0 -8
- package/dist/esm/Utils.js.map +1 -1
- package/dist/esm/types/Converters.d.ts +28 -8
- package/dist/esm/types/Converters.d.ts.map +1 -1
- package/dist/esm/types/Definitions/Global/Drivers.d.ts +4 -3
- package/dist/esm/types/Definitions/Global/Drivers.d.ts.map +1 -1
- package/dist/esm/types/Definitions/Global/Events.d.ts.map +1 -1
- package/dist/esm/types/Devices/Elk/ElkAlarmSensorDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/EndpointFor.d.ts +3 -3
- package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts +6 -6
- package/dist/esm/types/Devices/Insteon/InsteonFanDevice.d.ts.map +1 -1
- package/dist/esm/types/ISY.d.ts +21 -18
- package/dist/esm/types/ISY.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 +16 -6
- package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts.map +1 -1
- package/dist/esm/types/Matter/Behaviors/ISYClusterBehavior.d.ts +13 -11
- package/dist/esm/types/Matter/Behaviors/ISYClusterBehavior.d.ts.map +1 -1
- package/dist/esm/types/Matter/Behaviors/ISYOnOffBehavior.d.ts +4 -4
- package/dist/esm/types/Matter/Behaviors/ISYOnOffBehavior.d.ts.map +1 -1
- package/dist/esm/types/Matter/Bridge/Server.d.ts +17 -0
- package/dist/esm/types/Matter/Bridge/Server.d.ts.map +1 -0
- package/dist/esm/types/Matter/Mappings/register.d.ts +2 -0
- package/dist/esm/types/Matter/Mappings/register.d.ts.map +1 -0
- package/dist/esm/types/Model/ClusterMap.d.ts +19 -11
- package/dist/esm/types/Model/ClusterMap.d.ts.map +1 -1
- package/dist/esm/types/Utils.d.ts +0 -5
- package/dist/esm/types/Utils.d.ts.map +1 -1
- package/package.json +2 -7
- package/src/Converters.ts +137 -69
- package/src/Definitions/Global/Drivers.ts +16 -7
- package/src/Definitions/Global/Events.ts +4 -3
- package/src/Devices/Elk/ElkAlarmPanelDevice.ts +3 -3
- package/src/Devices/Elk/ElkAlarmSensorDevice.ts +15 -21
- package/src/Devices/Insteon/Generated/RelayLamp.ts +8 -7
- package/src/Devices/Insteon/InsteonBaseDevice.ts +2 -2
- package/src/Devices/Insteon/InsteonFanDevice.ts +11 -9
- package/src/Devices/Insteon/InsteonMotionSensorDevice.ts +5 -5
- package/src/ISY.ts +53 -38
- package/src/ISYNode.ts +13 -10
- package/src/ISYScene.ts +2 -2
- package/src/Matter/Behaviors/ISYBridgedDeviceBehavior.ts +28 -10
- package/src/Matter/Behaviors/ISYClusterBehavior.ts +46 -28
- package/src/Matter/Behaviors/ISYOnOffBehavior.ts +49 -60
- package/src/Matter/{Server → Bridge}/Server.ts +49 -53
- package/src/Matter/Mappings/Insteon.ts +53 -60
- package/src/Matter/Mappings/register.ts +0 -0
- package/src/Model/ClusterMap.ts +31 -22
- package/src/Utils.ts +1 -19
- package/LICENSE +0 -22
- package/dist/cjs/Matter/Server/Server.js.map +0 -1
- package/dist/cjs/types/Matter/Server/Server.d.ts +0 -4
- package/dist/cjs/types/Matter/Server/Server.d.ts.map +0 -1
- package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js +0 -68
- package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js.map +0 -1
- package/dist/esm/Matter/Server/Server.js.map +0 -1
- package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts +0 -93
- package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts.map +0 -1
- package/dist/esm/types/Matter/Server/Server.d.ts +0 -4
- package/dist/esm/types/Matter/Server/Server.d.ts.map +0 -1
- package/dist/tsconfig.cjs.tsbuildinfo +0 -1
- package/dist/tsconfig.esm.tsbuildinfo +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Utils.d.ts","sourceRoot":"","sources":["../../../src/Utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAC;AAClD,OAAgB,EAAE,MAAM,EAAU,MAAM,SAAS,CAAC;AAGlD,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAM9D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,
|
|
1
|
+
{"version":3,"file":"Utils.d.ts","sourceRoot":"","sources":["../../../src/Utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "isy-nodejs",
|
|
3
3
|
"description": "Node.js wrapper for ISY interface including websockets for change notifications. Fork of isy-js by Rod Toll. Designed to be used in a node.js application.",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "1.0.1-alpha.
|
|
5
|
+
"version": "1.0.1-alpha.9",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Pradeep Mouli"
|
|
8
8
|
},
|
|
@@ -66,12 +66,7 @@
|
|
|
66
66
|
"bugs": {
|
|
67
67
|
"url": "https://github.com/pradeepmouli/isy-nodejs/issues"
|
|
68
68
|
},
|
|
69
|
-
"repository": {
|
|
70
|
-
"type": "git",
|
|
71
|
-
"url": "https://github.com/pradeepmouli/isy-js.git"
|
|
72
|
-
},
|
|
73
69
|
"publishConfig": {
|
|
74
70
|
"access": "public"
|
|
75
|
-
}
|
|
76
|
-
"gitHead": "960151429615c48f5774a0911ca58885a39e55b4"
|
|
71
|
+
}
|
|
77
72
|
}
|
package/src/Converters.ts
CHANGED
|
@@ -1,87 +1,155 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
1
|
+
|
|
2
|
+
import { UnitOfMeasure } from './Definitions/Global/UOM.js';
|
|
3
|
+
import { type StringKeys } from './Utils.js';
|
|
3
4
|
|
|
4
5
|
let BooleanPercentage: Converter<boolean, number>;
|
|
6
|
+
let NullConverter: Converter<any, any>;
|
|
7
|
+
{
|
|
8
|
+
to: (value: any) => value;
|
|
9
|
+
from: (value: any) => value;
|
|
10
|
+
}
|
|
5
11
|
|
|
6
12
|
BooleanPercentage = {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
to: (value: number): boolean => {
|
|
14
|
+
return value > 0;
|
|
15
|
+
},
|
|
16
|
+
from: (value: boolean): number => {
|
|
17
|
+
return value ? 100 : 0;
|
|
18
|
+
}
|
|
13
19
|
};
|
|
14
20
|
|
|
15
|
-
const StandardConverters
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
21
|
+
const StandardConverters: {
|
|
22
|
+
[x in `${keyof typeof UnitOfMeasure}`]?: { [y in `${keyof typeof UnitOfMeasure}`]?: Converter<any, any> };
|
|
23
|
+
} = {
|
|
24
|
+
Boolean: {
|
|
25
|
+
LevelFrom0To255: {
|
|
26
|
+
to: (value: boolean) => (value ? 255 : 0),
|
|
27
|
+
from: (value: number) => value > 0
|
|
28
|
+
},
|
|
29
|
+
Percent: BooleanPercentage
|
|
30
|
+
},
|
|
31
|
+
Percent: {},
|
|
32
|
+
LevelFrom0To255: {
|
|
33
|
+
Percent: {
|
|
34
|
+
to: (value: number): number => {
|
|
35
|
+
return Math.round((value * 100) / 255);
|
|
36
|
+
},
|
|
37
|
+
from: (value: number): number => {
|
|
38
|
+
return Math.round((value * 255) / 100);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
36
42
|
};
|
|
37
43
|
|
|
38
44
|
StandardConverters.Percent.LevelFrom0To255 = invert(StandardConverters.LevelFrom0To255.Percent);
|
|
39
45
|
StandardConverters.LevelFrom0To255.Boolean = invert(StandardConverters.Boolean.LevelFrom0To255);
|
|
40
46
|
|
|
41
|
-
export const
|
|
47
|
+
export const StdConverterRegistry = new Map<UnitOfMeasure | string, Map<UnitOfMeasure | string, Converter<any, any>>>();
|
|
42
48
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
+
export const ConverterRegistry = new Map<string, Converter<any, any>>();
|
|
50
|
+
|
|
51
|
+
function registerConverters() {
|
|
52
|
+
for (const from in StandardConverters) {
|
|
53
|
+
for (const to in StandardConverters[from]) {
|
|
54
|
+
registerConverter(UnitOfMeasure[from], UnitOfMeasure[to], StandardConverters[from][to] as Converter<any, any>);
|
|
55
|
+
registerConverter(UnitOfMeasure[to], UnitOfMeasure[from], invert(StandardConverters[from][to]) as Converter<any, any>);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
for (const from in Converter.Matter) {
|
|
59
|
+
for (const to in Converter.Matter[from]) {
|
|
60
|
+
registerConverter(from, to, Converter.Matter[from][to] as Converter<any, any>);
|
|
61
|
+
registerConverter(to, from, invert(Converter.Matter[from][to]) as Converter<any, any>);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
49
64
|
}
|
|
50
65
|
|
|
51
|
-
export function registerConverter(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
66
|
+
export function registerConverter(
|
|
67
|
+
from: keyof typeof StandardConverters | UnitOfMeasure | keyof typeof Converter.Matter | string,
|
|
68
|
+
to: keyof typeof StandardConverters | UnitOfMeasure | keyof typeof Converter.Matter | string,
|
|
69
|
+
converter: Converter<any, any>
|
|
70
|
+
) {
|
|
71
|
+
if (!StdConverterRegistry.has(from)) {
|
|
72
|
+
StdConverterRegistry.set(from, new Map());
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
StdConverterRegistry.get(from).set(to, converter);
|
|
76
|
+
let key = from + '.' + to;
|
|
77
|
+
if (!ConverterRegistry.has(key)) {
|
|
78
|
+
ConverterRegistry.set(key, converter);
|
|
79
|
+
}
|
|
57
80
|
}
|
|
58
81
|
|
|
59
|
-
export namespace
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
82
|
+
export namespace Converter {
|
|
83
|
+
export const Standard: typeof StandardConverters = StandardConverters;
|
|
84
|
+
|
|
85
|
+
export const Matter = {
|
|
86
|
+
LevelFrom0To255: {
|
|
87
|
+
LightingLevel: {
|
|
88
|
+
from: (value) =>
|
|
89
|
+
value === 1 ? 0
|
|
90
|
+
: value === 254 ? 255
|
|
91
|
+
: value,
|
|
92
|
+
to: (value) =>
|
|
93
|
+
value === 0 ? 1
|
|
94
|
+
: value === 255 ? 254
|
|
95
|
+
: value
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
export type ConverterTypes = `${StringKeys<typeof StandardConverters>}`;
|
|
101
|
+
|
|
102
|
+
export type StandardConverters = `${StringKeys<typeof StandardConverters>}.${StringKeys<typeof StandardConverters>}`;
|
|
103
|
+
|
|
104
|
+
export type MatterISYConvertibleTypes = `${StringKeys<(typeof Matter)[`${keyof typeof Matter}`]>}`;
|
|
105
|
+
|
|
106
|
+
export type ISYMatterConvertibleTypes = `${StringKeys<typeof Matter>}`;
|
|
107
|
+
|
|
108
|
+
export type MatterConverters = `${MatterISYConvertibleTypes}.${ISYMatterConvertibleTypes}` | `${ISYMatterConvertibleTypes}.${MatterISYConvertibleTypes}`;
|
|
109
|
+
|
|
110
|
+
export type KnownConverters = StandardConverters | MatterConverters;
|
|
111
|
+
|
|
112
|
+
export function get(label: KnownConverters): Converter<any, any>;
|
|
113
|
+
export function get(from: UnitOfMeasure, to: UnitOfMeasure);
|
|
114
|
+
export function get(from: ConverterTypes, to: ConverterTypes);
|
|
115
|
+
export function get(from: UnitOfMeasure, to: UnitOfMeasure);
|
|
116
|
+
export function get(from: MatterISYConvertibleTypes, to: ISYMatterConvertibleTypes);
|
|
117
|
+
export function get(to: ISYMatterConvertibleTypes, from: MatterISYConvertibleTypes);
|
|
118
|
+
export function get(from: UnitOfMeasure | `${keyof typeof UnitOfMeasure}` | string, to?: UnitOfMeasure | `${keyof typeof UnitOfMeasure}` | string): Converter<any, any> {
|
|
119
|
+
let isString = typeof from === 'string';
|
|
120
|
+
let fuom = isString ? UnitOfMeasure[from] : from;
|
|
121
|
+
if (to) {
|
|
122
|
+
let tuom = typeof to === 'string' ? UnitOfMeasure[to] : to;
|
|
123
|
+
|
|
124
|
+
if (StdConverterRegistry.has(fuom)) {
|
|
125
|
+
return StdConverterRegistry.get(fuom).get(tuom);
|
|
126
|
+
}
|
|
127
|
+
} else if (typeof from === 'string') {
|
|
128
|
+
return ConverterRegistry.get(from);
|
|
129
|
+
}
|
|
130
|
+
return NullConverter;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export function convert<F, T>(from: UnitOfMeasure, to: UnitOfMeasure, value: F): T {
|
|
134
|
+
const converter = get(from, to);
|
|
135
|
+
if (converter) {
|
|
136
|
+
return converter.to(value);
|
|
137
|
+
}
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
85
140
|
}
|
|
86
141
|
|
|
87
|
-
registerConverters();
|
|
142
|
+
registerConverters();
|
|
143
|
+
export interface Converter<F, T> {
|
|
144
|
+
// #region Properties (2)
|
|
145
|
+
from: (value: F) => T;
|
|
146
|
+
to: (value: T) => F;
|
|
147
|
+
} //onst D: d = 'ST';
|
|
148
|
+
//type DriverLabel = Values<IdentityOf<DriverType>>;
|
|
149
|
+
|
|
150
|
+
export function invert<F, T>(converter: Converter<F, T>): Converter<T, F> {
|
|
151
|
+
return {
|
|
152
|
+
from: converter.to,
|
|
153
|
+
to: converter.from
|
|
154
|
+
};
|
|
155
|
+
}
|
|
@@ -9,9 +9,10 @@ import type { Identity, MaybePromise, UnionToIntersection } from '@project-chip/
|
|
|
9
9
|
import exp from 'constants';
|
|
10
10
|
import { init } from 'homebridge';
|
|
11
11
|
import { server } from 'typescript';
|
|
12
|
+
import { Converter } from '../../Converters.js';
|
|
12
13
|
import type { ISYDeviceNode } from '../../Devices/ISYDeviceNode.js';
|
|
13
14
|
import type { DriverState } from '../../Model/DriverState.js';
|
|
14
|
-
import type {
|
|
15
|
+
import type { StringKeys } from '../../Utils.js';
|
|
15
16
|
import type { Family } from './Families.js';
|
|
16
17
|
|
|
17
18
|
export enum DriverType {
|
|
@@ -293,7 +294,7 @@ export interface Driver<
|
|
|
293
294
|
// #region Public Methods (2)
|
|
294
295
|
|
|
295
296
|
apply(state: DriverState, notify?: boolean): boolean;
|
|
296
|
-
patch(value: T, formattedValue: string, uom: UnitOfMeasure, prec: number): boolean;
|
|
297
|
+
patch(value: T, formattedValue: string, uom: UnitOfMeasure, prec: number, notify?: boolean): boolean;
|
|
297
298
|
|
|
298
299
|
// #endregion Public Methods (2)
|
|
299
300
|
//override on('change', listener: (value: any) => void): this;
|
|
@@ -339,7 +340,6 @@ export function isTrue(x: true | false): x is true {
|
|
|
339
340
|
|
|
340
341
|
export type DriverTypeLiteral = EnumLiteral<DriverType>;
|
|
341
342
|
|
|
342
|
-
|
|
343
343
|
export type EnumWithLiteral<D extends string | bigint | number | boolean> = D | EnumLiteral<D>;
|
|
344
344
|
export namespace Driver {
|
|
345
345
|
export type Signature<U extends UnitOfMeasure = UnitOfMeasure, V = any, SU = U, N = string, L = N> = { uom: U; value: V; name: N; label: L; serverUom?: SU };
|
|
@@ -384,7 +384,7 @@ export namespace Driver {
|
|
|
384
384
|
type StatelessOrStateful<D extends string, U extends UnitOfMeasure, T = number, N = string, L = string, S extends boolean = false> =
|
|
385
385
|
S extends true ? StatelessDriver<D, U, T, U, N, L> : Driver<D, U, T, U, N, L>;
|
|
386
386
|
|
|
387
|
-
export function create<D extends Literal, U extends UnitOfMeasure, T = number,
|
|
387
|
+
export function create<D extends Literal, U extends UnitOfMeasure, T = number, N extends string = string, L extends string = string, S extends boolean = false>(
|
|
388
388
|
driver: EnumWithLiteral<D>,
|
|
389
389
|
|
|
390
390
|
node?: ISYNode<Family, any, any, any>,
|
|
@@ -446,13 +446,22 @@ export namespace Driver {
|
|
|
446
446
|
if (notify) node.events.emit(`${this.name}Changed`, driver as D, this.state.value, previousValue, this.state.formattedValue);
|
|
447
447
|
return true;
|
|
448
448
|
},
|
|
449
|
-
patch(value: T, formattedValue: string, uom: UnitOfMeasure, prec: number, notify =
|
|
449
|
+
patch(value: T, formattedValue: string, uom: UnitOfMeasure, prec: number, notify = true) {
|
|
450
450
|
let previousValue = this.state.value;
|
|
451
451
|
|
|
452
452
|
this.state.formattedValue = formattedValue;
|
|
453
453
|
if (uom != this.uom) {
|
|
454
|
-
this.serverUom
|
|
455
|
-
this.state.value = converter ? converter.from(value) :
|
|
454
|
+
this.serverUom == uom;
|
|
455
|
+
this.state.value = converter ? converter.from(value) : Converter.convert(uom, this.uom, value);
|
|
456
|
+
|
|
457
|
+
}
|
|
458
|
+
else if(converter)
|
|
459
|
+
{
|
|
460
|
+
this.state.value = converter.from(value);
|
|
461
|
+
}
|
|
462
|
+
else
|
|
463
|
+
{
|
|
464
|
+
this.state.value = value;
|
|
456
465
|
}
|
|
457
466
|
if (previousValue == this.state.value) {
|
|
458
467
|
return false;
|
|
@@ -52,7 +52,8 @@ export namespace Event {
|
|
|
52
52
|
|
|
53
53
|
constructor(node: N) {
|
|
54
54
|
super({ captureRejections: true });
|
|
55
|
-
|
|
55
|
+
|
|
56
|
+
}
|
|
56
57
|
|
|
57
58
|
// #endregion Constructors (1)
|
|
58
59
|
}
|
|
@@ -61,8 +62,8 @@ export namespace Event {
|
|
|
61
62
|
node: N
|
|
62
63
|
): FunctionSigFor<E, NodeEventEmitter<N>> & Omit<NodeEventEmitter<N>, 'on'> {
|
|
63
64
|
var f = new NodeEventEmitter(node);
|
|
64
|
-
for (let evt in node.
|
|
65
|
-
|
|
65
|
+
for (let evt in node.drivers) {
|
|
66
|
+
|
|
66
67
|
//f[`on${ev.name}`] = f.on.bind(f, ev.name);
|
|
67
68
|
}
|
|
68
69
|
|
|
@@ -90,21 +90,21 @@ export class ELKAlarmPanelDevice extends ISYDeviceNode<Family.Global,any,any> {
|
|
|
90
90
|
if (this.alarmTripState !== valueToSet) {
|
|
91
91
|
const oldVal = this.alarmTripState;
|
|
92
92
|
this.alarmTripState = valueToSet;
|
|
93
|
-
this.emit('
|
|
93
|
+
this.emit('propertyChanged', 'alarmTripState', this.alarmTripState, oldVal, AlarmTripState[this.alarmTripState]);
|
|
94
94
|
valueChanged = true;
|
|
95
95
|
}
|
|
96
96
|
} else if (updateType === AlarmPanelProperty.AlarmState) {
|
|
97
97
|
if (this.alarmState !== valueToSet) {
|
|
98
98
|
const oldVal = this.alarmState;
|
|
99
99
|
this.alarmState = valueToSet;
|
|
100
|
-
this.emit('
|
|
100
|
+
this.emit('propertyChanged', 'alarmState', this.alarmState, oldVal, AlarmState[this.alarmState]);
|
|
101
101
|
valueChanged = true;
|
|
102
102
|
}
|
|
103
103
|
} else if (updateType === AlarmPanelProperty.AlarmMode) {
|
|
104
104
|
if (this.alarmMode !== valueToSet) {
|
|
105
105
|
const oldVal = this.alarmMode;
|
|
106
106
|
this.alarmMode = valueToSet;
|
|
107
|
-
this.emit('
|
|
107
|
+
this.emit('propertyChanged', 'alarmMode', this.alarmState, oldVal, AlarmMode[this.alarmMode]);
|
|
108
108
|
valueChanged = true;
|
|
109
109
|
}
|
|
110
110
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
import { Family } from '../../Definitions/Global/Families.js';
|
|
3
2
|
import { ISY } from '../../ISY.js';
|
|
4
3
|
import { ISYDeviceNode } from '../ISYDeviceNode.js';
|
|
@@ -6,7 +5,7 @@ import { AlarmSensorPhysicalState, AlarmSensorLogicalState } from './ElkAlarmPan
|
|
|
6
5
|
/////////////////////////////
|
|
7
6
|
// ELKAlarmSensor
|
|
8
7
|
//
|
|
9
|
-
export class ElkAlarmSensorDevice extends ISYDeviceNode<Family.Global,any,any> {
|
|
8
|
+
export class ElkAlarmSensorDevice extends ISYDeviceNode<Family.Global, any, any> {
|
|
10
9
|
[x: string]: any;
|
|
11
10
|
public area: number;
|
|
12
11
|
public zone: string;
|
|
@@ -17,9 +16,12 @@ export class ElkAlarmSensorDevice extends ISYDeviceNode<Family.Global,any,any> {
|
|
|
17
16
|
public physicalState: AlarmSensorPhysicalState;
|
|
18
17
|
public logicalState: AlarmSensorLogicalState;
|
|
19
18
|
public voltage: number;
|
|
20
|
-
constructor
|
|
19
|
+
constructor(isy: ISY, name: string, area: number, zone: string) {
|
|
21
20
|
super(isy, {
|
|
22
|
-
family: Family.Global,
|
|
21
|
+
family: Family.Global,
|
|
22
|
+
name,
|
|
23
|
+
address: `ElkZone_${zone}`,
|
|
24
|
+
enabled: true,
|
|
23
25
|
pnode: undefined,
|
|
24
26
|
startDelay: 0,
|
|
25
27
|
hint: '',
|
|
@@ -49,13 +51,13 @@ export class ElkAlarmSensorDevice extends ISYDeviceNode<Family.Global,any,any> {
|
|
|
49
51
|
return this.physicalState;
|
|
50
52
|
}
|
|
51
53
|
public isBypassed() {
|
|
52
|
-
return
|
|
54
|
+
return this.logicalState === 3;
|
|
53
55
|
}
|
|
54
56
|
public getLogicalState() {
|
|
55
57
|
return this.logicalState;
|
|
56
58
|
}
|
|
57
59
|
public getCurrentDoorWindowState() {
|
|
58
|
-
return
|
|
60
|
+
return this.physicalState === this.SENSOR_STATE_PHYSICAL_OPEN || this.logicalState === this.SENSOR_STATE_LOGICAL_VIOLATED;
|
|
59
61
|
}
|
|
60
62
|
public getSensorStatus() {
|
|
61
63
|
return 'PS [' + this.physicalState + '] LS [' + this.logicatState + ']';
|
|
@@ -63,17 +65,11 @@ export class ElkAlarmSensorDevice extends ISYDeviceNode<Family.Global,any,any> {
|
|
|
63
65
|
public isPresent() {
|
|
64
66
|
if (this.voltage < 65 || this.voltage > 80) {
|
|
65
67
|
return true;
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
+
} else {
|
|
68
69
|
return false;
|
|
69
70
|
}
|
|
70
71
|
}
|
|
71
|
-
public override handleEvent(event: {
|
|
72
|
-
control?: string;
|
|
73
|
-
data?: any;
|
|
74
|
-
node?: any;
|
|
75
|
-
eventInfo?: any;
|
|
76
|
-
}) {
|
|
72
|
+
public override handleEvent(event: { control?: string; data?: any; node?: any; eventInfo?: any }) {
|
|
77
73
|
const zoneUpdate = event.eventInfo.ze;
|
|
78
74
|
const zone = zoneUpdate.attr.zone;
|
|
79
75
|
const updateType = zoneUpdate.attr.type;
|
|
@@ -84,24 +80,22 @@ export class ElkAlarmSensorDevice extends ISYDeviceNode<Family.Global,any,any> {
|
|
|
84
80
|
if (this.logicalState !== valueToSet) {
|
|
85
81
|
const temp = this.logicalState;
|
|
86
82
|
this.logicalState = valueToSet;
|
|
87
|
-
this.emit('
|
|
83
|
+
this.emit('propertyChanged', 'logicalState', this.logicalState, temp, this.voltage.toString());
|
|
88
84
|
// Not triggering change update on logical state because physical always follows and don't want double notify.
|
|
89
85
|
// valueChanged = true;
|
|
90
86
|
}
|
|
91
|
-
}
|
|
92
|
-
else if (updateType === 52) {
|
|
87
|
+
} else if (updateType === 52) {
|
|
93
88
|
if (this.physicalState !== valueToSet) {
|
|
94
89
|
const temp = this.physicalState;
|
|
95
90
|
this.physicalState = valueToSet;
|
|
96
|
-
this.emit('
|
|
91
|
+
this.emit('propertyChanged', 'physicalState', this.physicalState, temp, this.voltage.toString());
|
|
97
92
|
valueChanged = true;
|
|
98
93
|
}
|
|
99
|
-
}
|
|
100
|
-
else if (updateType === 53) {
|
|
94
|
+
} else if (updateType === 53) {
|
|
101
95
|
if (this.voltage !== valueToSet) {
|
|
102
96
|
const temp = this.voltage;
|
|
103
97
|
this.voltage = valueToSet;
|
|
104
|
-
this.emit('
|
|
98
|
+
this.emit('propertyChanged', 'voltage', this.voltage, temp, this.voltage.toString());
|
|
105
99
|
valueChanged = true;
|
|
106
100
|
}
|
|
107
101
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT DIRECTLY. */
|
|
2
|
-
|
|
1
|
+
/* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT DIRECTLY. */
|
|
2
|
+
|
|
3
3
|
import { UnitOfMeasure } from "../../../Definitions/Global/UOM.js";
|
|
4
4
|
import { Family } from "../../../Definitions/Global/Families.js";
|
|
5
5
|
import type { NodeInfo } from "../../../Model/NodeInfo.js";
|
|
@@ -11,12 +11,12 @@ import { Driver } from "../../../Definitions/Global/Drivers.js";
|
|
|
11
11
|
import { Insteon } from "../../../Definitions/index.js";
|
|
12
12
|
import type { DriverState } from "../../../Model/DriverState.js";
|
|
13
13
|
import { NodeFactory } from "../../NodeFactory.js";
|
|
14
|
-
|
|
14
|
+
|
|
15
15
|
export const nodeDefId = "RelayLampOnly";
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
type Commands = RelayLamp.Commands;
|
|
18
18
|
type Drivers = RelayLamp.Drivers;
|
|
19
|
-
|
|
19
|
+
|
|
20
20
|
export class RelayLampNode extends Base<Drivers, Commands> implements RelayLamp.Interface {
|
|
21
21
|
public readonly commands = {
|
|
22
22
|
DON: this.on,
|
|
@@ -33,6 +33,7 @@ export class RelayLampNode extends Base<Drivers, Commands> implements RelayLamp.
|
|
|
33
33
|
super(isy, nodeInfo);
|
|
34
34
|
this.drivers.ST = Driver.create("ST", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Percent, label: "Status", name: "status" });
|
|
35
35
|
this.drivers.ERR = Driver.create("ERR", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Index, label: "Responding", name: "responding" });
|
|
36
|
+
|
|
36
37
|
}
|
|
37
38
|
async on(value?: (0 | 100)) {
|
|
38
39
|
return this.sendCommand("DON", { value: value });
|
|
@@ -62,9 +63,9 @@ export class RelayLampNode extends Base<Drivers, Commands> implements RelayLamp.
|
|
|
62
63
|
return this.drivers.ERR?.value;
|
|
63
64
|
}
|
|
64
65
|
}
|
|
65
|
-
|
|
66
|
+
|
|
66
67
|
NodeFactory.register(RelayLampNode);
|
|
67
|
-
|
|
68
|
+
|
|
68
69
|
export namespace RelayLamp {
|
|
69
70
|
export interface Interface extends Omit<InstanceType<typeof RelayLampNode>, keyof ISYDeviceNode<any, any, any, any>> {
|
|
70
71
|
nodeDefId: "RelayLampOnly";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'winston';
|
|
2
|
-
import {
|
|
2
|
+
import { Converter } from '../../Converters.js';
|
|
3
3
|
import type { Command } from '../../Definitions/Global/Commands.js';
|
|
4
4
|
import { Driver, DriverType } from '../../Definitions/Global/Drivers.js';
|
|
5
5
|
import { Family, Insteon } from '../../Definitions/Global/Families.js';
|
|
@@ -38,7 +38,7 @@ export class InsteonBaseDevice<D extends ISYNode.DriverSignatures = {}, C extend
|
|
|
38
38
|
case UOM.DegreeX2:
|
|
39
39
|
return byteToDegree(value);
|
|
40
40
|
case UOM.LevelFrom0To255:
|
|
41
|
-
return
|
|
41
|
+
return Converter.Standard.LevelFrom0To255.Percent.to(value);
|
|
42
42
|
case UOM.Fahrenheit:
|
|
43
43
|
return value / 10;
|
|
44
44
|
default:
|
|
@@ -6,12 +6,12 @@ import { InsteonBaseDevice } from './InsteonBaseDevice.js';
|
|
|
6
6
|
import { InsteonDimmableDevice } from './InsteonDimmableDevice.js';
|
|
7
7
|
import 'winston';
|
|
8
8
|
import type { NodeInfo, StaticNodeInfo } from '../../Model/NodeInfo.js';
|
|
9
|
-
import {Insteon} from './index.js';
|
|
10
|
-
import
|
|
9
|
+
import { Insteon } from './index.js';
|
|
10
|
+
import { Command, Driver, UnitOfMeasure } from '../../Definitions/index.js';
|
|
11
11
|
import type { DriverState } from '../../Model/DriverState.js';
|
|
12
12
|
|
|
13
13
|
export class InsteonFanMotorDevice extends InsteonBaseDevice<Driver.Signatures<'ST'>, Command.Signatures<'DON' | 'DOF'>> {
|
|
14
|
-
constructor
|
|
14
|
+
constructor(isy: ISY, deviceNode: StaticNodeInfo) {
|
|
15
15
|
super(isy, deviceNode);
|
|
16
16
|
this.drivers.ST = Driver.create('ST', this, deviceNode.property as DriverState, { uom: UnitOfMeasure.Percent, label: 'Fan Speed (%)', name: 'fanSpeed' });
|
|
17
17
|
this.hidden = true;
|
|
@@ -25,7 +25,7 @@ export class InsteonFanMotorDevice extends InsteonBaseDevice<Driver.Signatures<'
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
public async updateFanSpeed(level: number) {
|
|
28
|
-
return
|
|
28
|
+
return level;
|
|
29
29
|
}
|
|
30
30
|
public async updateIsOn(isOn: boolean) {
|
|
31
31
|
if (!isOn) {
|
|
@@ -34,7 +34,6 @@ export class InsteonFanMotorDevice extends InsteonBaseDevice<Driver.Signatures<'
|
|
|
34
34
|
//return this.commands.BEEP(States.Level.Max);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
|
|
38
37
|
}
|
|
39
38
|
|
|
40
39
|
export class InsteonFanDevice extends InsteonBaseDevice {
|
|
@@ -47,7 +46,7 @@ export class InsteonFanDevice extends InsteonBaseDevice {
|
|
|
47
46
|
this.addChild(this.light);
|
|
48
47
|
}
|
|
49
48
|
|
|
50
|
-
public override handleEvent(event: { control?: string; data?: any; node?: any
|
|
49
|
+
public override handleEvent(event: { control?: string; data?: any; node?: any }): boolean {
|
|
51
50
|
this.logger(JSON.stringify(event));
|
|
52
51
|
const child = this.children.find((p) => p.address === event.node);
|
|
53
52
|
if (child !== undefined) {
|
|
@@ -61,13 +60,16 @@ export class InsteonFanDevice extends InsteonBaseDevice {
|
|
|
61
60
|
if (childDevice instanceof InsteonFanMotorDevice) {
|
|
62
61
|
this.logger('Fan Motor Found');
|
|
63
62
|
this.motor = childDevice as InsteonFanMotorDevice;
|
|
64
|
-
this.motor.events.on(
|
|
63
|
+
this.motor.events.on(
|
|
64
|
+
'statusChanged',
|
|
65
|
+
((a: any, b: any, c: any, d: string) => {
|
|
66
|
+
this.emit('propertyChanged', `motor.${a}`, b, c, d);
|
|
67
|
+
}).bind(this)
|
|
68
|
+
);
|
|
65
69
|
}
|
|
66
70
|
}
|
|
67
71
|
|
|
68
72
|
public async updateFanSpeed(level: number) {
|
|
69
73
|
return this.motor.updateFanSpeed(level);
|
|
70
74
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
75
|
}
|
|
@@ -16,13 +16,13 @@ export class InsteonMotionSensorDevice extends InsteonBaseDevice {
|
|
|
16
16
|
if (controlName === Commands.On) {
|
|
17
17
|
this.logger('Motion detected.');
|
|
18
18
|
this._isMotionDetected = true;
|
|
19
|
-
this.emit('
|
|
20
|
-
this.emit('
|
|
19
|
+
this.emit('controlTriggered',controlName);
|
|
20
|
+
this.emit('propertyChanged', 'motionDetected', true, false, "true");
|
|
21
21
|
|
|
22
22
|
setTimeout(() => {
|
|
23
23
|
this.logger('No motion detected in last 30 seconds.');
|
|
24
24
|
this._isMotionDetected = false;
|
|
25
|
-
this.emit('
|
|
25
|
+
this.emit('propertyChanged', 'motionDetected', false, true, "false"); /*Included for compatiblity purposes*/
|
|
26
26
|
}, 30000);
|
|
27
27
|
return true;
|
|
28
28
|
}
|
|
@@ -30,8 +30,8 @@ export class InsteonMotionSensorDevice extends InsteonBaseDevice {
|
|
|
30
30
|
else if (controlName === Commands.Off) {
|
|
31
31
|
this._isMotionDetected = false;
|
|
32
32
|
this.logger('No motion detected.');
|
|
33
|
-
this.emit('
|
|
34
|
-
this.emit('
|
|
33
|
+
this.emit('controlTriggered',controlName);
|
|
34
|
+
this.emit('propertyChanged', 'motionDetected', false, true, "false");
|
|
35
35
|
return true;
|
|
36
36
|
}
|
|
37
37
|
|