isy-nodejs 1.0.1-alpha.5 → 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 +5 -3
- package/dist/cjs/Devices/Insteon/InsteonFanDevice.js.map +1 -1
- package/dist/cjs/Devices/Insteon/InsteonMotionSensorDevice.js +5 -5
- package/dist/cjs/Devices/Insteon/InsteonRelayDevice.js +3 -9
- package/dist/cjs/Devices/Insteon/InsteonRelayDevice.js.map +1 -1
- package/dist/cjs/Devices/Insteon/RelayLampSwitch.js +72 -0
- package/dist/cjs/Devices/Insteon/RelayLampSwitch.js.map +1 -0
- package/dist/cjs/ISY.js +36 -27
- package/dist/cjs/ISY.js.map +1 -1
- package/dist/cjs/ISYNode.js +12 -9
- package/dist/cjs/ISYNode.js.map +1 -1
- package/dist/cjs/ISYScene.js +3 -3
- package/dist/cjs/ISYScene.js.map +1 -1
- 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/Devices/Insteon/InsteonRelayDevice.d.ts +2 -4
- package/dist/cjs/types/Devices/Insteon/InsteonRelayDevice.d.ts.map +1 -1
- package/dist/cjs/types/Devices/Insteon/RelayLampSwitch.d.ts +93 -0
- package/dist/cjs/types/Devices/Insteon/RelayLampSwitch.d.ts.map +1 -0
- 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/Brultech/index.js +4 -0
- package/dist/esm/Devices/Brultech/index.js.map +1 -0
- package/dist/esm/Devices/Constructor.js +2 -0
- package/dist/esm/Devices/Constructor.js.map +1 -0
- package/dist/esm/Devices/DeviceFactory.js +13 -0
- package/dist/esm/Devices/DeviceFactory.js.map +1 -0
- package/dist/esm/Devices/DeviceMap.js +4 -0
- package/dist/esm/Devices/DeviceMap.js.map +1 -0
- package/dist/esm/Devices/Elk/ElkAlarmPanelDevice.js +181 -0
- package/dist/esm/Devices/Elk/ElkAlarmPanelDevice.js.map +1 -0
- package/dist/esm/Devices/Elk/ElkAlarmSensorDevice.js +110 -0
- package/dist/esm/Devices/Elk/ElkAlarmSensorDevice.js.map +1 -0
- package/dist/esm/Devices/EndpointFor.js +31 -0
- package/dist/esm/Devices/EndpointFor.js.map +1 -0
- package/dist/esm/Devices/ISYDevice.js +35 -0
- package/dist/esm/Devices/ISYDevice.js.map +1 -0
- package/dist/esm/Devices/ISYDeviceNode.js +62 -0
- package/dist/esm/Devices/ISYDeviceNode.js.map +1 -0
- package/dist/esm/Devices/ISYMultiNodeDevice.js +89 -0
- package/dist/esm/Devices/ISYMultiNodeDevice.js.map +1 -0
- package/dist/esm/Devices/Insteon/InsteonBallastDimmerDevice.js +8 -0
- package/dist/esm/Devices/Insteon/InsteonBallastDimmerDevice.js.map +1 -0
- package/dist/esm/Devices/Insteon/InsteonBaseDevice.js +2 -2
- package/dist/esm/Devices/Insteon/InsteonBaseDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonDimmerOutletDevice.js +7 -0
- package/dist/esm/Devices/Insteon/InsteonDimmerOutletDevice.js.map +1 -0
- package/dist/esm/Devices/Insteon/InsteonDimmerSwitchDevice.js +8 -0
- package/dist/esm/Devices/Insteon/InsteonDimmerSwitchDevice.js.map +1 -0
- package/dist/esm/Devices/Insteon/InsteonFanDevice.js +5 -3
- package/dist/esm/Devices/Insteon/InsteonFanDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonKeypadDimmerDevice.js +8 -0
- package/dist/esm/Devices/Insteon/InsteonKeypadDimmerDevice.js.map +1 -0
- package/dist/esm/Devices/Insteon/InsteonMotionSensorDevice.js +5 -5
- package/dist/esm/Devices/Insteon/InsteonRelayDevice.js +3 -9
- package/dist/esm/Devices/Insteon/InsteonRelayDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/RelayLampSwitch.js +68 -0
- package/dist/esm/Devices/Insteon/RelayLampSwitch.js.map +1 -0
- package/dist/esm/Devices/Lutron/index.js +4 -0
- package/dist/esm/Devices/Lutron/index.js.map +1 -0
- package/dist/esm/Devices/MapsTo.js +2 -0
- package/dist/esm/Devices/MapsTo.js.map +1 -0
- package/dist/esm/Devices/NCD/index.js +4 -0
- package/dist/esm/Devices/NCD/index.js.map +1 -0
- package/dist/esm/Devices/NodeFactory.js +48 -0
- package/dist/esm/Devices/NodeFactory.js.map +1 -0
- package/dist/esm/Devices/Poly/index.js +4 -0
- package/dist/esm/Devices/Poly/index.js.map +1 -0
- package/dist/esm/Devices/Scene/index.js +4 -0
- package/dist/esm/Devices/Scene/index.js.map +1 -0
- package/dist/esm/Devices/UDI/index.js +4 -0
- package/dist/esm/Devices/UDI/index.js.map +1 -0
- package/dist/esm/Devices/ZWave/ZWaveBaseDevice.js +38 -0
- package/dist/esm/Devices/ZWave/ZWaveBaseDevice.js.map +1 -0
- package/dist/esm/Devices/ZWave/ZWaveDimmerSwitchDevice.js +8 -0
- package/dist/esm/Devices/ZWave/ZWaveDimmerSwitchDevice.js.map +1 -0
- package/dist/esm/Devices/ZWave/ZWaveLockDevice.js +35 -0
- package/dist/esm/Devices/ZWave/ZWaveLockDevice.js.map +1 -0
- package/dist/esm/Devices/ZWave/index.js +20 -0
- package/dist/esm/Devices/ZWave/index.js.map +1 -0
- package/dist/esm/Devices/index.js +9 -0
- package/dist/esm/Devices/index.js.map +1 -0
- package/dist/esm/ISY.js +35 -26
- package/dist/esm/ISY.js.map +1 -1
- package/dist/esm/ISYNode.js +13 -10
- 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 +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 +2 -2
- package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts +4 -4
- package/dist/esm/types/Devices/Insteon/InsteonFanDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonRelayDevice.d.ts +2 -4
- package/dist/esm/types/Devices/Insteon/InsteonRelayDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/RelayLampSwitch.d.ts +93 -0
- package/dist/esm/types/Devices/Insteon/RelayLampSwitch.d.ts.map +1 -0
- 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 +4 -4
- 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 +4 -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 +12 -10
- package/src/Devices/Insteon/InsteonMotionSensorDevice.ts +5 -5
- package/src/Devices/Insteon/InsteonRelayDevice.ts +3 -6
- package/src/Devices/Insteon/RelayLampSwitch.ts +131 -0
- package/src/ISY.ts +57 -42
- package/src/ISYNode.ts +14 -11
- package/src/ISYScene.ts +3 -3
- package/src/Matter/Behaviors/ISYBridgedDeviceBehavior.ts +29 -11
- package/src/Matter/Behaviors/ISYClusterBehavior.ts +46 -28
- package/src/Matter/Behaviors/ISYOnOffBehavior.ts +49 -60
- package/src/Matter/{Server → Bridge}/Server.ts +50 -50
- package/src/Matter/Mappings/Insteon.ts +53 -60
- package/src/Matter/Mappings/register.ts +0 -0
- package/src/Model/ClassDefinition.ts +1 -1
- package/src/Model/ClusterMap.ts +31 -22
- package/src/Utils.ts +1 -19
- package/tsconfig.json +2 -2
- 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/Matter/Server/Server.js.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,11 +1,11 @@
|
|
|
1
|
-
import * as Clusters from '@project-chip/matter.js/cluster';
|
|
2
1
|
import { Behavior } from '@project-chip/matter.js/behavior';
|
|
3
2
|
import { ClusterBehavior } from '@project-chip/matter.js/behavior/cluster';
|
|
3
|
+
import * as Clusters from '@project-chip/matter.js/cluster';
|
|
4
4
|
import { SupportedBehaviors } from '@project-chip/matter.js/endpoint/properties';
|
|
5
5
|
import type { MutableEndpoint } from '@project-chip/matter.js/endpoint/type';
|
|
6
|
+
import type { Converter } from '../Converters.js';
|
|
6
7
|
import { Devices } from '../Devices/index.js';
|
|
7
8
|
import { Family } from '../ISY.js';
|
|
8
|
-
import type { ISYDevice } from '../ISYDevice.js';
|
|
9
9
|
import type { CommandsOf, DriversOf, ISYNode } from '../ISYNode.js';
|
|
10
10
|
export type AttributeMapping<B, D> = B extends {
|
|
11
11
|
cluster: {
|
|
@@ -15,8 +15,14 @@ export type AttributeMapping<B, D> = B extends {
|
|
|
15
15
|
};
|
|
16
16
|
} ? Partial<Record<keyof E, keyof DriversOf<D> | {
|
|
17
17
|
driver: keyof DriversOf<D>;
|
|
18
|
-
converter?:
|
|
18
|
+
converter?: Converter.KnownConverters;
|
|
19
19
|
}>> : never;
|
|
20
|
+
export type BehaviorMapping<B extends {
|
|
21
|
+
cluster?: any;
|
|
22
|
+
}, T extends ISYNode<any, any, any, any>> = {
|
|
23
|
+
attributes?: AttributeMapping<B, T>;
|
|
24
|
+
commands?: CommandMapping<B, T>;
|
|
25
|
+
};
|
|
20
26
|
export type ClusterAttributeMapping<A, K> = {
|
|
21
27
|
[key in keyof Clusters.ClusterType.AttributesOf<A>]?: {
|
|
22
28
|
driver: Extract<keyof DriversOf<K>, string>;
|
|
@@ -43,7 +49,10 @@ export type CommandMapping<B, D> = B extends ({
|
|
|
43
49
|
command: keyof CommandsOf<D>;
|
|
44
50
|
parameters?: parameterMapping;
|
|
45
51
|
}>> : never;
|
|
46
|
-
export type DeviceToClusterMap<T extends ISYNode<Family, any, any, any>, D
|
|
52
|
+
export type DeviceToClusterMap<T extends ISYNode<Family, any, any, any>, D extends {
|
|
53
|
+
behaviors: SupportedBehaviors;
|
|
54
|
+
deviceType: string;
|
|
55
|
+
}> = D extends {
|
|
47
56
|
behaviors: SupportedBehaviors;
|
|
48
57
|
deviceType: string;
|
|
49
58
|
} ? {
|
|
@@ -52,17 +61,16 @@ export type DeviceToClusterMap<T extends ISYNode<Family, any, any, any>, D> = D
|
|
|
52
61
|
} : never;
|
|
53
62
|
export type EndpointMapping<A extends {
|
|
54
63
|
behaviors: any;
|
|
55
|
-
}, D
|
|
56
|
-
[K in Capitalize<StringKeys<A['behaviors']>>]?:
|
|
57
|
-
attributes?: AttributeMapping<A['behaviors'][Uncapitalize<K>], D>;
|
|
58
|
-
commands?: CommandMapping<A['behaviors'][Uncapitalize<K>], D>;
|
|
59
|
-
};
|
|
64
|
+
}, D extends ISYNode<Family, any, any, any>> = {
|
|
65
|
+
[K in Capitalize<StringKeys<A['behaviors']>>]?: BehaviorMapping<A['behaviors'][Uncapitalize<K>], D>;
|
|
60
66
|
};
|
|
61
67
|
export type EndpointMapping1<A extends MutableEndpoint, K> = {
|
|
62
68
|
attributes?: SBAttributeMapping<A['behaviors'], K>;
|
|
63
69
|
commands?: SBCommandMapping<A['behaviors'], K>;
|
|
64
70
|
};
|
|
65
71
|
export type FamilyToClusterMap<T extends Family.Insteon | Family.ZWave | Family.ZigBee> = {
|
|
72
|
+
Family: T;
|
|
73
|
+
} & {
|
|
66
74
|
[Type in keyof Devices.Insteon]?: DeviceToClusterMap<InstanceType<Devices.Insteon[Type]>, any>;
|
|
67
75
|
};
|
|
68
76
|
export type SBAttributeMapping<SB extends SupportedBehaviors, D> = {
|
|
@@ -90,11 +98,11 @@ export type parameterMapping = {
|
|
|
90
98
|
};
|
|
91
99
|
export declare class MappingRegistry {
|
|
92
100
|
static map: Map<string, DeviceToClusterMap<any, any>>;
|
|
93
|
-
static getMapping<T extends
|
|
101
|
+
static getMapping<T extends ISYNode<any, any, any, any>>(device: T): {
|
|
94
102
|
deviceType: any;
|
|
95
103
|
mapping: EndpointMapping<any, any>;
|
|
96
104
|
};
|
|
97
|
-
static getMappingForBehavior<T extends
|
|
105
|
+
static getMappingForBehavior<T extends ISYNode<any, any, any, any>, B extends ClusterBehavior>(device: T, behavior: B): BehaviorMapping<B, T>;
|
|
98
106
|
static register(map: Partial<FamilyToClusterMap<any>>): void;
|
|
99
107
|
}
|
|
100
108
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClusterMap.d.ts","sourceRoot":"","sources":["../../../../src/Model/ClusterMap.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ClusterMap.d.ts","sourceRoot":"","sources":["../../../../src/Model/ClusterMap.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,6 @@ import { Logger } from 'winston';
|
|
|
3
3
|
import { EventEmitter as BaseEventEmitter } from 'events';
|
|
4
4
|
import { Category } from './Definitions/Global/Categories.js';
|
|
5
5
|
import { EventType } from './Events/EventType.js';
|
|
6
|
-
export interface Converter<F, T> {
|
|
7
|
-
from: (value: F) => T;
|
|
8
|
-
to: (value: T) => F;
|
|
9
|
-
}
|
|
10
6
|
export type StringKeys<T> = Extract<keyof T, string>;
|
|
11
7
|
export declare function getEnumValueByEnumKey<E extends {
|
|
12
8
|
[index: string]: number;
|
|
@@ -17,7 +13,6 @@ export declare function getEnumKeyByEnumValue<E extends {
|
|
|
17
13
|
export type ValuesOf<TEnum extends number | string | boolean | bigint> = `${TEnum}` extends `${infer R extends number}` ? R : `${TEnum}`;
|
|
18
14
|
export type IdentityOf<T> = T extends (...args: any[]) => infer R ? R : T;
|
|
19
15
|
export type LabelsOf<TEnum> = keyof IdentityOf<TEnum>;
|
|
20
|
-
export declare function invert<F, T>(converter: Converter<F, T>): Converter<T, F>;
|
|
21
16
|
export type MaybeArray<T> = T | T[];
|
|
22
17
|
export type ObjectToUnion<T> = T[keyof T];
|
|
23
18
|
export declare function toArray<T>(value: MaybeArray<T>): T[];
|
|
@@ -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
|
},
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
"@types/node": "^22.7.5",
|
|
47
47
|
"@types/xml2js": "",
|
|
48
48
|
"@types/xmldoc": "",
|
|
49
|
+
"microdiff": "^1.4.0",
|
|
49
50
|
"mocha": "",
|
|
50
51
|
"rimraf": "^6.0.1"
|
|
51
52
|
},
|
|
@@ -56,6 +57,7 @@
|
|
|
56
57
|
"axios": "^1.7.7",
|
|
57
58
|
"fast-xml-parser": "^4.5.0",
|
|
58
59
|
"faye-websocket": "^0.11.4",
|
|
60
|
+
"install": "^0.13.0",
|
|
59
61
|
"mocha": "^10.7.3",
|
|
60
62
|
"p-queue": "^8.0.1",
|
|
61
63
|
"winston": "^3.15.0",
|
|
@@ -64,12 +66,7 @@
|
|
|
64
66
|
"bugs": {
|
|
65
67
|
"url": "https://github.com/pradeepmouli/isy-nodejs/issues"
|
|
66
68
|
},
|
|
67
|
-
"repository": {
|
|
68
|
-
"type": "git",
|
|
69
|
-
"url": "https://github.com/pradeepmouli/isy-js.git"
|
|
70
|
-
},
|
|
71
69
|
"publishConfig": {
|
|
72
70
|
"access": "public"
|
|
73
|
-
}
|
|
74
|
-
"gitHead": "ce49adae004a6ba0589251732b944a3eb3edc1a2"
|
|
71
|
+
}
|
|
75
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";
|