isy-nodejs 1.0.1-alpha.27 → 1.0.1-alpha.29
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/CodeGeneration/EnumFactory.js +6 -6
- package/dist/cjs/CodeGeneration/EnumFactory.js.map +1 -1
- package/dist/cjs/CodeGeneration/NodeClassFactory.js +7 -7
- package/dist/cjs/CodeGeneration/NodeClassFactory.js.map +1 -1
- package/dist/cjs/Definitions/Global/Commands.js.map +1 -1
- package/dist/cjs/Definitions/Global/Drivers.js.map +1 -1
- package/dist/cjs/Devices/ISYDevice.js.map +1 -1
- package/dist/cjs/Devices/ISYDeviceNode.js.map +1 -1
- package/dist/cjs/Devices/Insteon/InsteonDevice.js.map +1 -1
- package/dist/cjs/Devices/Insteon/InsteonDeviceFactory.js +12 -8
- package/dist/cjs/Devices/Insteon/InsteonDeviceFactory.js.map +1 -1
- package/dist/cjs/Devices/Insteon/InsteonKeypadDevice.js +2 -2
- package/dist/cjs/Devices/Insteon/InsteonKeypadDevice.js.map +1 -1
- package/dist/cjs/Devices/Insteon/InsteonRelayDevice.js +0 -16
- package/dist/cjs/Devices/Insteon/InsteonRelayDevice.js.map +1 -1
- package/dist/cjs/Devices/Insteon/KeypadButton.js +52 -0
- package/dist/cjs/Devices/Insteon/KeypadButton.js.map +1 -0
- package/dist/cjs/Devices/MapsTo.js +11 -0
- package/dist/cjs/Devices/MapsTo.js.map +1 -1
- package/dist/cjs/Devices/NodeFactory.js +5 -4
- package/dist/cjs/Devices/NodeFactory.js.map +1 -1
- package/dist/cjs/Devices/index.js.map +1 -1
- package/dist/cjs/ISY.js +220 -213
- package/dist/cjs/ISY.js.map +1 -1
- package/dist/cjs/ISYNode.js +3 -3
- package/dist/cjs/ISYNode.js.map +1 -1
- package/dist/cjs/ISYScene.js.map +1 -1
- package/dist/cjs/Matter/Behaviors/ISYBridgedDeviceBehavior.js.map +1 -1
- package/dist/cjs/Matter/Behaviors/ISYClusterBehavior.js.map +1 -1
- package/dist/cjs/Matter/Bridge/Server.js +6 -5
- package/dist/cjs/Matter/Bridge/Server.js.map +1 -1
- package/dist/cjs/Model/ClassDefinition.js +2 -2
- package/dist/cjs/Model/ClassDefinition.js.map +1 -1
- package/dist/cjs/Model/ClusterMap.js +2 -2
- package/dist/cjs/Model/ClusterMap.js.map +1 -1
- package/dist/cjs/Model/NodeDef.js.map +1 -1
- package/dist/cjs/Model/NodeInfo.js +3 -3
- package/dist/cjs/Model/NodeInfo.js.map +1 -1
- package/dist/cjs/Utils.js.map +1 -1
- package/dist/cjs/types/CodeGeneration/EnumFactory.d.ts +1 -1
- package/dist/cjs/types/CodeGeneration/EnumFactory.d.ts.map +1 -1
- package/dist/cjs/types/CodeGeneration/NodeClassFactory.d.ts +1 -1
- package/dist/cjs/types/CodeGeneration/NodeClassFactory.d.ts.map +1 -1
- package/dist/cjs/types/Definitions/Global/Commands.d.ts.map +1 -1
- package/dist/cjs/types/Definitions/Global/Drivers.d.ts +1 -1
- package/dist/cjs/types/Definitions/Global/Drivers.d.ts.map +1 -1
- package/dist/cjs/types/Definitions/Global/Events.d.ts +1 -1
- package/dist/cjs/types/Definitions/Global/Events.d.ts.map +1 -1
- package/dist/cjs/types/Devices/ISYDevice.d.ts +2 -3
- package/dist/cjs/types/Devices/ISYDevice.d.ts.map +1 -1
- package/dist/cjs/types/Devices/ISYDeviceNode.d.ts +2 -1
- package/dist/cjs/types/Devices/ISYDeviceNode.d.ts.map +1 -1
- package/dist/cjs/types/Devices/Insteon/InsteonBaseDevice.d.ts +1 -1
- package/dist/cjs/types/Devices/Insteon/InsteonBaseDevice.d.ts.map +1 -1
- package/dist/cjs/types/Devices/Insteon/InsteonDevice.d.ts +10 -9
- package/dist/cjs/types/Devices/Insteon/InsteonDevice.d.ts.map +1 -1
- package/dist/cjs/types/Devices/Insteon/InsteonDeviceFactory.d.ts +2 -1
- package/dist/cjs/types/Devices/Insteon/InsteonDeviceFactory.d.ts.map +1 -1
- package/dist/cjs/types/Devices/Insteon/InsteonFanDevice.d.ts.map +1 -1
- package/dist/cjs/types/Devices/Insteon/InsteonKeypadDevice.d.ts +4 -4
- package/dist/cjs/types/Devices/Insteon/InsteonKeypadDevice.d.ts.map +1 -1
- package/dist/cjs/types/Devices/Insteon/InsteonRelayDevice.d.ts +0 -3
- package/dist/cjs/types/Devices/Insteon/InsteonRelayDevice.d.ts.map +1 -1
- package/dist/cjs/types/Devices/Insteon/KeypadButton.d.ts +63 -0
- package/dist/cjs/types/Devices/Insteon/KeypadButton.d.ts.map +1 -0
- package/dist/cjs/types/Devices/MapsTo.d.ts +0 -9
- package/dist/cjs/types/Devices/MapsTo.d.ts.map +1 -1
- package/dist/cjs/types/Devices/NodeFactory.d.ts +2 -1
- package/dist/cjs/types/Devices/NodeFactory.d.ts.map +1 -1
- package/dist/cjs/types/Devices/ZWave/ZWaveBaseDevice.d.ts +1 -1
- package/dist/cjs/types/Devices/ZWave/ZWaveBaseDevice.d.ts.map +1 -1
- package/dist/cjs/types/Devices/index.d.ts +1 -1
- package/dist/cjs/types/Devices/index.d.ts.map +1 -1
- package/dist/cjs/types/ISY.d.ts +13 -28
- package/dist/cjs/types/ISY.d.ts.map +1 -1
- package/dist/cjs/types/ISYDevice.d.ts +1 -1
- package/dist/cjs/types/ISYDevice.d.ts.map +1 -1
- package/dist/cjs/types/ISYNode.d.ts +6 -4
- package/dist/cjs/types/ISYNode.d.ts.map +1 -1
- package/dist/cjs/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts +3 -8
- package/dist/cjs/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts.map +1 -1
- package/dist/cjs/types/Matter/Behaviors/ISYClusterBehavior.d.ts.map +1 -1
- package/dist/cjs/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts +3 -40
- package/dist/cjs/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts.map +1 -1
- package/dist/cjs/types/Matter/Bridge/Server.d.ts.map +1 -1
- package/dist/cjs/types/Model/ClusterMap.d.ts +2 -3
- package/dist/cjs/types/Model/ClusterMap.d.ts.map +1 -1
- package/dist/cjs/types/Model/EnumDefinition.d.ts +1 -1
- package/dist/cjs/types/Model/NodeDef.d.ts.map +1 -1
- package/dist/cjs/types/Model/NodeInfo.d.ts +2 -2
- package/dist/cjs/types/Model/NodeInfo.d.ts.map +1 -1
- package/dist/cjs/types/Utils.d.ts +8 -1
- package/dist/cjs/types/Utils.d.ts.map +1 -1
- package/dist/esm/CodeGeneration/EnumFactory.js +1 -1
- package/dist/esm/CodeGeneration/EnumFactory.js.map +1 -1
- package/dist/esm/CodeGeneration/NodeClassFactory.js +1 -1
- package/dist/esm/CodeGeneration/NodeClassFactory.js.map +1 -1
- package/dist/esm/Definitions/Global/Commands.js.map +1 -1
- package/dist/esm/Definitions/Global/Drivers.js.map +1 -1
- package/dist/esm/Devices/ISYDevice.js.map +1 -1
- package/dist/esm/Devices/ISYDeviceNode.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonDeviceFactory.js +5 -1
- package/dist/esm/Devices/Insteon/InsteonDeviceFactory.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonKeypadDevice.js +2 -2
- package/dist/esm/Devices/Insteon/InsteonKeypadDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonRelayDevice.js +0 -16
- package/dist/esm/Devices/Insteon/InsteonRelayDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/KeypadButton.js +48 -0
- package/dist/esm/Devices/Insteon/KeypadButton.js.map +1 -0
- package/dist/esm/Devices/MapsTo.js +11 -0
- package/dist/esm/Devices/MapsTo.js.map +1 -1
- package/dist/esm/Devices/NodeFactory.js +2 -1
- package/dist/esm/Devices/NodeFactory.js.map +1 -1
- package/dist/esm/Devices/index.js.map +1 -1
- package/dist/esm/ISY.js +220 -183
- package/dist/esm/ISY.js.map +1 -1
- package/dist/esm/ISYNode.js +2 -2
- package/dist/esm/ISYNode.js.map +1 -1
- package/dist/esm/ISYScene.js.map +1 -1
- package/dist/esm/Matter/Behaviors/ISYBridgedDeviceBehavior.js.map +1 -1
- package/dist/esm/Matter/Behaviors/ISYClusterBehavior.js.map +1 -1
- package/dist/esm/Matter/Bridge/Server.js +7 -6
- package/dist/esm/Matter/Bridge/Server.js.map +1 -1
- package/dist/esm/Model/ClassDefinition.js +1 -1
- package/dist/esm/Model/ClassDefinition.js.map +1 -1
- package/dist/esm/Model/ClusterMap.js +2 -2
- package/dist/esm/Model/ClusterMap.js.map +1 -1
- package/dist/esm/Model/NodeDef.js.map +1 -1
- package/dist/esm/Model/NodeInfo.js +1 -1
- package/dist/esm/Model/NodeInfo.js.map +1 -1
- package/dist/esm/Utils.js.map +1 -1
- package/dist/esm/types/CodeGeneration/EnumFactory.d.ts +1 -1
- package/dist/esm/types/CodeGeneration/EnumFactory.d.ts.map +1 -1
- package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts +1 -1
- package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts.map +1 -1
- package/dist/esm/types/Definitions/Global/Commands.d.ts.map +1 -1
- package/dist/esm/types/Definitions/Global/Drivers.d.ts +1 -1
- package/dist/esm/types/Definitions/Global/Drivers.d.ts.map +1 -1
- package/dist/esm/types/Definitions/Global/Events.d.ts +1 -1
- package/dist/esm/types/Definitions/Global/Events.d.ts.map +1 -1
- package/dist/esm/types/Devices/ISYDevice.d.ts +2 -3
- package/dist/esm/types/Devices/ISYDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/ISYDeviceNode.d.ts +2 -1
- package/dist/esm/types/Devices/ISYDeviceNode.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonBaseDevice.d.ts +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonBaseDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts +10 -9
- package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonDeviceFactory.d.ts +2 -1
- package/dist/esm/types/Devices/Insteon/InsteonDeviceFactory.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonFanDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonKeypadDevice.d.ts +4 -4
- package/dist/esm/types/Devices/Insteon/InsteonKeypadDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonRelayDevice.d.ts +0 -3
- package/dist/esm/types/Devices/Insteon/InsteonRelayDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/KeypadButton.d.ts +63 -0
- package/dist/esm/types/Devices/Insteon/KeypadButton.d.ts.map +1 -0
- package/dist/esm/types/Devices/MapsTo.d.ts +0 -9
- package/dist/esm/types/Devices/MapsTo.d.ts.map +1 -1
- package/dist/esm/types/Devices/NodeFactory.d.ts +2 -1
- package/dist/esm/types/Devices/NodeFactory.d.ts.map +1 -1
- package/dist/esm/types/Devices/ZWave/ZWaveBaseDevice.d.ts +1 -1
- package/dist/esm/types/Devices/ZWave/ZWaveBaseDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/index.d.ts +1 -1
- package/dist/esm/types/Devices/index.d.ts.map +1 -1
- package/dist/esm/types/ISY.d.ts +13 -28
- package/dist/esm/types/ISY.d.ts.map +1 -1
- package/dist/esm/types/ISYDevice.d.ts +1 -1
- package/dist/esm/types/ISYDevice.d.ts.map +1 -1
- package/dist/esm/types/ISYNode.d.ts +6 -4
- package/dist/esm/types/ISYNode.d.ts.map +1 -1
- package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts +1 -1
- package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts.map +1 -1
- package/dist/esm/types/Matter/Behaviors/ISYClusterBehavior.d.ts.map +1 -1
- package/dist/esm/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts +4 -4
- package/dist/esm/types/Matter/Bridge/Server.d.ts.map +1 -1
- package/dist/esm/types/Model/ClusterMap.d.ts +2 -3
- package/dist/esm/types/Model/ClusterMap.d.ts.map +1 -1
- package/dist/esm/types/Model/NodeDef.d.ts.map +1 -1
- package/dist/esm/types/Model/NodeInfo.d.ts +2 -2
- package/dist/esm/types/Model/NodeInfo.d.ts.map +1 -1
- package/dist/esm/types/Utils.d.ts +8 -1
- package/dist/esm/types/Utils.d.ts.map +1 -1
- package/dist/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +9 -8
- package/src/CodeGeneration/EnumFactory.ts +2 -1
- package/src/CodeGeneration/NodeClassFactory.ts +2 -1
- package/src/Definitions/Global/Commands.ts +1 -3
- package/src/Definitions/Global/Drivers.ts +7 -16
- package/src/Definitions/Global/Events.ts +3 -3
- package/src/Devices/EndpointFor.ts +3 -2
- package/src/Devices/ISYDevice.ts +3 -6
- package/src/Devices/ISYDeviceNode.ts +2 -1
- package/src/Devices/ISYMultiNodeDevice.ts +1 -1
- package/src/Devices/Insteon/InsteonBaseDevice.ts +2 -2
- package/src/Devices/Insteon/InsteonDevice.ts +3 -2
- package/src/Devices/Insteon/InsteonDeviceFactory.ts +7 -2
- package/src/Devices/Insteon/InsteonDimmableDevice.ts +2 -2
- package/src/Devices/Insteon/InsteonFanDevice.ts +1 -1
- package/src/Devices/Insteon/InsteonKeypadDevice.ts +5 -5
- package/src/Devices/Insteon/InsteonRelayDevice.ts +4 -19
- package/src/Devices/Insteon/{Generated/KeypadButton.ts → KeypadButton.ts} +20 -20
- package/src/Devices/MapsTo.ts +3 -3
- package/src/Devices/NodeFactory.ts +3 -2
- package/src/Devices/ZWave/ZWaveBaseDevice.ts +1 -1
- package/src/Devices/ZWave/ZWaveDimmerSwitchDevice.ts +1 -1
- package/src/Devices/index.ts +2 -2
- package/src/ISY.ts +249 -228
- package/src/ISYDevice.ts +3 -2
- package/src/ISYNode.ts +9 -6
- package/src/ISYScene.ts +1 -1
- package/src/Matter/Behaviors/ISYBridgedDeviceBehavior.ts +5 -3
- package/src/Matter/Behaviors/ISYClusterBehavior.ts +2 -12
- package/src/Matter/Bridge/Server.ts +10 -7
- package/src/Matter/Mappings/Insteon.ts +2 -2
- package/src/Model/ClassDefinition.ts +1 -1
- package/src/Model/ClusterMap.ts +7 -14
- package/src/Model/NodeDef.ts +1 -2
- package/src/Model/NodeInfo.ts +4 -3
- package/src/Utils.ts +13 -6
- package/tsconfig.json +2 -1
- package/dist/cjs/Devices/EndpointFor.js +0 -36
- package/dist/cjs/Devices/EndpointFor.js.map +0 -1
- package/dist/cjs/Matter/Behaviors/ISYOnOffBehavior.js +0 -52
- package/dist/cjs/Matter/Behaviors/ISYOnOffBehavior.js.map +0 -1
- package/dist/cjs/package.json +0 -1
- package/dist/cjs/types/Devices/EndpointFor.d.ts +0 -108
- package/dist/cjs/types/Devices/EndpointFor.d.ts.map +0 -1
- package/dist/cjs/types/Matter/Behaviors/ISYOnOffBehavior.d.ts +0 -55
- package/dist/cjs/types/Matter/Behaviors/ISYOnOffBehavior.d.ts.map +0 -1
- package/dist/esm/Devices/EndpointFor.js +0 -31
- package/dist/esm/Devices/EndpointFor.js.map +0 -1
- package/dist/esm/Matter/Behaviors/ISYOnOffBehavior.js +0 -47
- package/dist/esm/Matter/Behaviors/ISYOnOffBehavior.js.map +0 -1
- package/dist/esm/types/Devices/EndpointFor.d.ts +0 -108
- package/dist/esm/types/Devices/EndpointFor.d.ts.map +0 -1
- package/dist/esm/types/Matter/Behaviors/ISYOnOffBehavior.d.ts +0 -55
- package/dist/esm/types/Matter/Behaviors/ISYOnOffBehavior.d.ts.map +0 -1
package/dist/cjs/ISY.js
CHANGED
|
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.ISY = exports.Controls =
|
|
29
|
+
exports.ISY = exports.Controls = void 0;
|
|
30
30
|
const faye_websocket_1 = __importDefault(require("faye-websocket"));
|
|
31
31
|
const fs_1 = require("fs");
|
|
32
32
|
const xml2js_1 = require("xml2js");
|
|
@@ -34,70 +34,48 @@ const processors_js_1 = require("xml2js/lib/processors.js");
|
|
|
34
34
|
const axios_1 = __importDefault(require("axios"));
|
|
35
35
|
const events_1 = require("events");
|
|
36
36
|
const winston_1 = require("winston");
|
|
37
|
-
const Categories_js_1 = require("./Definitions/Global/Categories.js");
|
|
38
|
-
Object.defineProperty(exports, "Categories", { enumerable: true, get: function () { return Categories_js_1.Category; } });
|
|
39
|
-
const Families_js_1 = require("./Definitions/Global/Families.js");
|
|
40
|
-
Object.defineProperty(exports, "Family", { enumerable: true, get: function () { return Families_js_1.Family; } });
|
|
41
37
|
const DeviceFactory_js_1 = require("./Devices/DeviceFactory.js");
|
|
42
38
|
const ElkAlarmPanelDevice_js_1 = require("./Devices/Elk/ElkAlarmPanelDevice.js");
|
|
43
|
-
Object.defineProperty(exports, "ELKAlarmPanelDevice", { enumerable: true, get: function () { return ElkAlarmPanelDevice_js_1.ELKAlarmPanelDevice; } });
|
|
44
|
-
const ElkAlarmSensorDevice_js_1 = require("./Devices/Elk/ElkAlarmSensorDevice.js");
|
|
45
|
-
Object.defineProperty(exports, "ElkAlarmSensorDevice", { enumerable: true, get: function () { return ElkAlarmSensorDevice_js_1.ElkAlarmSensorDevice; } });
|
|
46
|
-
const InsteonBaseDevice_js_1 = require("./Devices/Insteon/InsteonBaseDevice.js");
|
|
47
|
-
Object.defineProperty(exports, "InsteonBaseDevice", { enumerable: true, get: function () { return InsteonBaseDevice_js_1.InsteonBaseDevice; } });
|
|
48
|
-
const InsteonDevice_js_1 = require("./Devices/Insteon/InsteonDevice.js");
|
|
49
|
-
Object.defineProperty(exports, "InsteonOutletDevice", { enumerable: true, get: function () { return InsteonDevice_js_1.InsteonOutletDevice; } });
|
|
50
|
-
const InsteonDimmableDevice_js_1 = require("./Devices/Insteon/InsteonDimmableDevice.js");
|
|
51
|
-
Object.defineProperty(exports, "InsteonDimmableDevice", { enumerable: true, get: function () { return InsteonDimmableDevice_js_1.InsteonDimmableDevice; } });
|
|
52
|
-
const InsteonDimmerOutletDevice_js_1 = require("./Devices/Insteon/InsteonDimmerOutletDevice.js");
|
|
53
|
-
Object.defineProperty(exports, "InsteonDimmerOutletDevice", { enumerable: true, get: function () { return InsteonDimmerOutletDevice_js_1.InsteonDimmerOutletDevice; } });
|
|
54
|
-
const InsteonDimmerSwitchDevice_js_1 = require("./Devices/Insteon/InsteonDimmerSwitchDevice.js");
|
|
55
|
-
Object.defineProperty(exports, "InsteonDimmerSwitchDevice", { enumerable: true, get: function () { return InsteonDimmerSwitchDevice_js_1.InsteonDimmerSwitchDevice; } });
|
|
56
|
-
const InsteonDoorWindowSensorDevice_js_1 = require("./Devices/Insteon/InsteonDoorWindowSensorDevice.js");
|
|
57
|
-
Object.defineProperty(exports, "InsteonDoorWindowSensorDevice", { enumerable: true, get: function () { return InsteonDoorWindowSensorDevice_js_1.InsteonDoorWindowSensorDevice; } });
|
|
58
|
-
const InsteonFanDevice_js_1 = require("./Devices/Insteon/InsteonFanDevice.js");
|
|
59
|
-
Object.defineProperty(exports, "InsteonFanDevice", { enumerable: true, get: function () { return InsteonFanDevice_js_1.InsteonFanDevice; } });
|
|
60
|
-
Object.defineProperty(exports, "InsteonFanMotorDevice", { enumerable: true, get: function () { return InsteonFanDevice_js_1.InsteonFanMotorDevice; } });
|
|
61
|
-
const InsteonKeypadDevice_js_1 = require("./Devices/Insteon/InsteonKeypadDevice.js");
|
|
62
|
-
Object.defineProperty(exports, "InsteonKeypadButtonDevice", { enumerable: true, get: function () { return InsteonKeypadDevice_js_1.InsteonKeypadButtonDevice; } });
|
|
63
|
-
const InsteonKeypadDimmerDevice_js_1 = require("./Devices/Insteon/InsteonKeypadDimmerDevice.js");
|
|
64
|
-
Object.defineProperty(exports, "InsteonKeypadDimmerDevice", { enumerable: true, get: function () { return InsteonKeypadDimmerDevice_js_1.InsteonKeypadDimmerDevice; } });
|
|
65
|
-
const InsteonKeypadRelayDevice_js_1 = require("./Devices/Insteon/InsteonKeypadRelayDevice.js");
|
|
66
|
-
Object.defineProperty(exports, "InsteonKeypadRelayDevice", { enumerable: true, get: function () { return InsteonKeypadRelayDevice_js_1.InsteonKeypadRelayDevice; } });
|
|
67
|
-
const InsteonLeakSensorDevice_js_1 = require("./Devices/Insteon/InsteonLeakSensorDevice.js");
|
|
68
|
-
Object.defineProperty(exports, "InsteonLeakSensorDevice", { enumerable: true, get: function () { return InsteonLeakSensorDevice_js_1.InsteonLeakSensorDevice; } });
|
|
69
|
-
const InsteonLockDevice_js_1 = require("./Devices/Insteon/InsteonLockDevice.js");
|
|
70
|
-
Object.defineProperty(exports, "InsteonLockDevice", { enumerable: true, get: function () { return InsteonLockDevice_js_1.InsteonLockDevice; } });
|
|
71
|
-
const InsteonMotionSensorDevice_js_1 = require("./Devices/Insteon/InsteonMotionSensorDevice.js");
|
|
72
|
-
Object.defineProperty(exports, "InsteonMotionSensorDevice", { enumerable: true, get: function () { return InsteonMotionSensorDevice_js_1.InsteonMotionSensorDevice; } });
|
|
73
|
-
const InsteonOnOffOutletDevice_js_1 = require("./Devices/Insteon/InsteonOnOffOutletDevice.js");
|
|
74
|
-
Object.defineProperty(exports, "InsteonOnOffOutletDevice", { enumerable: true, get: function () { return InsteonOnOffOutletDevice_js_1.InsteonOnOffOutletDevice; } });
|
|
75
|
-
const InsteonRelayDevice_js_1 = require("./Devices/Insteon/InsteonRelayDevice.js");
|
|
76
|
-
Object.defineProperty(exports, "InsteonRelayDevice", { enumerable: true, get: function () { return InsteonRelayDevice_js_1.InsteonRelayDevice; } });
|
|
77
|
-
const InsteonSmokeSensorDevice_js_1 = require("./Devices/Insteon/InsteonSmokeSensorDevice.js");
|
|
78
|
-
Object.defineProperty(exports, "InsteonSmokeSensorDevice", { enumerable: true, get: function () { return InsteonSmokeSensorDevice_js_1.InsteonSmokeSensorDevice; } });
|
|
79
|
-
const InsteonThermostatDevice_js_1 = require("./Devices/Insteon/InsteonThermostatDevice.js");
|
|
80
|
-
Object.defineProperty(exports, "InsteonThermostatDevice", { enumerable: true, get: function () { return InsteonThermostatDevice_js_1.InsteonThermostatDevice; } });
|
|
81
39
|
const ISYDeviceNode_js_1 = require("./Devices/ISYDeviceNode.js");
|
|
82
|
-
Object.defineProperty(exports, "ISYDevice", { enumerable: true, get: function () { return ISYDeviceNode_js_1.ISYDeviceNode; } });
|
|
83
40
|
const EventType_js_1 = require("./Events/EventType.js");
|
|
84
41
|
const ISYConstants_js_1 = require("./ISYConstants.js");
|
|
85
|
-
Object.defineProperty(exports, "NodeType", { enumerable: true, get: function () { return ISYConstants_js_1.NodeType; } });
|
|
86
|
-
Object.defineProperty(exports, "Props", { enumerable: true, get: function () { return ISYConstants_js_1.Props; } });
|
|
87
|
-
Object.defineProperty(exports, "States", { enumerable: true, get: function () { return ISYConstants_js_1.States; } });
|
|
88
|
-
Object.defineProperty(exports, "VariableType", { enumerable: true, get: function () { return ISYConstants_js_1.VariableType; } });
|
|
89
|
-
const ISYNode_js_1 = require("./ISYNode.js");
|
|
90
|
-
Object.defineProperty(exports, "ISYNode", { enumerable: true, get: function () { return ISYNode_js_1.ISYNode; } });
|
|
91
42
|
const ISYScene_js_1 = require("./ISYScene.js");
|
|
92
|
-
Object.defineProperty(exports, "ISYScene", { enumerable: true, get: function () { return ISYScene_js_1.ISYScene; } });
|
|
93
43
|
const ISYVariable_js_1 = require("./ISYVariable.js");
|
|
94
|
-
Object.defineProperty(exports, "ISYVariable", { enumerable: true, get: function () { return ISYVariable_js_1.ISYVariable; } });
|
|
95
44
|
const Utils = __importStar(require("./Utils.js"));
|
|
96
|
-
exports.Utils = Utils;
|
|
97
45
|
const fast_xml_parser_1 = require("fast-xml-parser");
|
|
98
46
|
const path_1 = __importDefault(require("path"));
|
|
99
47
|
const NodeFactory_js_1 = require("./Devices/NodeFactory.js");
|
|
100
48
|
const Utils_js_1 = require("./Utils.js");
|
|
49
|
+
class ISYError extends Error {
|
|
50
|
+
constructor(messageOrError) {
|
|
51
|
+
if (messageOrError instanceof Error) {
|
|
52
|
+
super(messageOrError.message);
|
|
53
|
+
this.stack = messageOrError.stack;
|
|
54
|
+
this.cause = messageOrError;
|
|
55
|
+
this.name = 'ISYError';
|
|
56
|
+
}
|
|
57
|
+
else if (typeof messageOrError === 'string') {
|
|
58
|
+
super(messageOrError);
|
|
59
|
+
this.name = 'ISYError';
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
class ISYNodeError extends ISYError {
|
|
64
|
+
constructor(messageOrError, node) {
|
|
65
|
+
super(messageOrError);
|
|
66
|
+
this.name = 'ISYNodeError';
|
|
67
|
+
this.node = node;
|
|
68
|
+
}
|
|
69
|
+
node;
|
|
70
|
+
}
|
|
71
|
+
class ISYInitializationError extends ISYError {
|
|
72
|
+
step;
|
|
73
|
+
constructor(messageOrError, step) {
|
|
74
|
+
super(messageOrError);
|
|
75
|
+
this.name = 'ISYInitializationError';
|
|
76
|
+
this.step = step;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
101
79
|
const defaultParserOptions = {
|
|
102
80
|
explicitArray: false,
|
|
103
81
|
mergeAttrs: true,
|
|
@@ -167,6 +145,18 @@ class ISY extends events_1.EventEmitter {
|
|
|
167
145
|
vendorName = 'Universal Devices, Inc.';
|
|
168
146
|
webSocket;
|
|
169
147
|
apiVersion;
|
|
148
|
+
socketPath;
|
|
149
|
+
get axiosOptions() {
|
|
150
|
+
return {
|
|
151
|
+
baseURL: `${this.protocol}://${this.host}:${this.port}`,
|
|
152
|
+
auth: {
|
|
153
|
+
username: this.credentials.username,
|
|
154
|
+
password: this.credentials.password
|
|
155
|
+
},
|
|
156
|
+
socketPath: this.socketPath,
|
|
157
|
+
validateStatus: (status) => status >= 200 && status < 300,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
170
160
|
// #endregion Properties (30)
|
|
171
161
|
// #region Constructors (1)
|
|
172
162
|
constructor(config, logger = new winston_1.Logger(), storagePath) {
|
|
@@ -338,64 +328,79 @@ class ISY extends events_1.EventEmitter {
|
|
|
338
328
|
const that = this;
|
|
339
329
|
try {
|
|
340
330
|
this.apiVersion = (await (0, Utils_js_1.findPackageJson)()).version;
|
|
331
|
+
}
|
|
332
|
+
catch (e) {
|
|
333
|
+
this.logger.error(`Unable to read package.json: ${e.message}`);
|
|
334
|
+
}
|
|
335
|
+
try {
|
|
341
336
|
await this.loadConfig();
|
|
342
337
|
await this.loadNodes();
|
|
343
338
|
await this.loadVariables(ISYConstants_js_1.VariableType.Integer);
|
|
344
339
|
await this.loadVariables(ISYConstants_js_1.VariableType.State);
|
|
345
340
|
await this.refreshStatuses();
|
|
346
341
|
await this.#finishInitialize(true);
|
|
342
|
+
return true;
|
|
347
343
|
}
|
|
348
344
|
catch (e) {
|
|
349
|
-
|
|
345
|
+
if (e instanceof ISYInitializationError) {
|
|
346
|
+
this.logger.error(`Error initializing ISY during (${e.step}): ${e.message}`);
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
this.logger.error(`Error initializing ISY: ${e.message}`);
|
|
350
|
+
}
|
|
351
|
+
throw e;
|
|
350
352
|
}
|
|
351
353
|
finally {
|
|
352
354
|
if (this.nodesLoaded !== true) {
|
|
353
355
|
that.#finishInitialize(false);
|
|
354
356
|
}
|
|
355
357
|
}
|
|
356
|
-
return Promise.resolve(true);
|
|
357
358
|
}
|
|
358
|
-
initializeWebSocket() {
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
359
|
+
async initializeWebSocket() {
|
|
360
|
+
try {
|
|
361
|
+
const that = this;
|
|
362
|
+
const auth = `Basic ${Buffer.from(`${this.credentials.username}:${this.credentials.password}`).toString('base64')}`;
|
|
363
|
+
this.logger.info(`Opening webSocket: ${this.wsprotocol}://${this.address}/rest/subscribe`);
|
|
364
|
+
if (this.webSocket) {
|
|
365
|
+
try {
|
|
366
|
+
this.webSocket.close();
|
|
367
|
+
}
|
|
368
|
+
catch (e) {
|
|
369
|
+
this.logger.warn(`Error closing existing websocket: ${e.message}`);
|
|
370
|
+
}
|
|
368
371
|
}
|
|
372
|
+
this.webSocket = new faye_websocket_1.default.Client(`${this.wsprotocol}://${this.address}/rest/subscribe`, ['ISYSUB'], {
|
|
373
|
+
headers: {
|
|
374
|
+
Origin: 'com.universal-devices.websockets.isy',
|
|
375
|
+
Authorization: auth
|
|
376
|
+
},
|
|
377
|
+
ping: 10
|
|
378
|
+
});
|
|
379
|
+
this.lastActivity = new Date();
|
|
380
|
+
this.webSocket
|
|
381
|
+
.on('message', (event) => {
|
|
382
|
+
that.logger.silly(`Received message: ${Utils.logStringify(event.data, 1)}`);
|
|
383
|
+
that.handleWebSocketMessage(event);
|
|
384
|
+
})
|
|
385
|
+
.on('error', (err, response) => {
|
|
386
|
+
that.logger.warn(`Websocket subscription error: ${Utils.logStringify(err, 1)}`);
|
|
387
|
+
})
|
|
388
|
+
.on('fail', (data, response) => {
|
|
389
|
+
that.logger.warn(`Websocket subscription failure: ${data}`);
|
|
390
|
+
throw new Error('Websocket subscription failure');
|
|
391
|
+
})
|
|
392
|
+
.on('abort', () => {
|
|
393
|
+
that.logger.warn('Websocket subscription aborted.');
|
|
394
|
+
throw new Error('Websocket subscription aborted.');
|
|
395
|
+
})
|
|
396
|
+
.on('timeout', (ms) => {
|
|
397
|
+
that.logger.warn(`Websocket subscription timed out after ${ms} milliseconds.`);
|
|
398
|
+
throw new Error('Timeout contacting ISY');
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
catch (e) {
|
|
402
|
+
throw new ISYInitializationError(e, 'websocket');
|
|
369
403
|
}
|
|
370
|
-
this.webSocket = new faye_websocket_1.default.Client(`${this.wsprotocol}://${this.address}/rest/subscribe`, ['ISYSUB'], {
|
|
371
|
-
headers: {
|
|
372
|
-
Origin: 'com.universal-devices.websockets.isy',
|
|
373
|
-
Authorization: auth
|
|
374
|
-
},
|
|
375
|
-
ping: 10
|
|
376
|
-
});
|
|
377
|
-
this.lastActivity = new Date();
|
|
378
|
-
this.webSocket
|
|
379
|
-
.on('message', (event) => {
|
|
380
|
-
that.logger.silly(`Received message: ${JSON.stringify(event.data, null, 2)}`);
|
|
381
|
-
that.handleWebSocketMessage(event);
|
|
382
|
-
})
|
|
383
|
-
.on('error', (err, response) => {
|
|
384
|
-
that.logger.warn(`Websocket subscription error: ${JSON.stringify(err.message)}`);
|
|
385
|
-
/// throw new Error('Error calling ISY' + err);
|
|
386
|
-
})
|
|
387
|
-
.on('fail', (data, response) => {
|
|
388
|
-
that.logger.warn(`Websocket subscription failure: ${data}`);
|
|
389
|
-
throw new Error('Failed calling ISY');
|
|
390
|
-
})
|
|
391
|
-
.on('abort', () => {
|
|
392
|
-
that.logger.warn('Websocket subscription aborted.');
|
|
393
|
-
throw new Error('Call to ISY was aborted');
|
|
394
|
-
})
|
|
395
|
-
.on('timeout', (ms) => {
|
|
396
|
-
that.logger.warn(`Websocket subscription timed out after ${ms} milliseconds.`);
|
|
397
|
-
throw new Error('Timeout contacting ISY');
|
|
398
|
-
});
|
|
399
404
|
}
|
|
400
405
|
async loadConfig() {
|
|
401
406
|
try {
|
|
@@ -423,26 +428,32 @@ class ISY extends events_1.EventEmitter {
|
|
|
423
428
|
return configuration;
|
|
424
429
|
}
|
|
425
430
|
catch (e) {
|
|
426
|
-
|
|
427
|
-
throw Error(`Error Loading Config: ${e.message}`);
|
|
431
|
+
throw new ISYInitializationError(e, 'config');
|
|
428
432
|
}
|
|
429
433
|
}
|
|
430
434
|
async loadNodes() {
|
|
431
435
|
try {
|
|
436
|
+
this.logger.info('Loading ISY Nodes');
|
|
432
437
|
const result = await this.sendRequest('nodes');
|
|
433
438
|
if (this.isDebugEnabled)
|
|
434
439
|
(0, fs_1.writeFile)(this.storagePath + '/ISYNodesDump.json', JSON.stringify(result), this.logger.error);
|
|
435
|
-
await this.#readFolderNodes(result)
|
|
436
|
-
await this.#readDeviceNodes(result)
|
|
437
|
-
await this.#readSceneNodes(result)
|
|
440
|
+
await this.#readFolderNodes(result);
|
|
441
|
+
await this.#readDeviceNodes(result);
|
|
442
|
+
await this.#readSceneNodes(result);
|
|
438
443
|
return result;
|
|
439
444
|
}
|
|
440
445
|
catch (e) {
|
|
441
|
-
|
|
446
|
+
if (e instanceof ISYInitializationError) {
|
|
447
|
+
throw e;
|
|
448
|
+
}
|
|
449
|
+
else {
|
|
450
|
+
throw new ISYInitializationError(e, 'loadNodes');
|
|
451
|
+
}
|
|
442
452
|
}
|
|
443
453
|
}
|
|
444
454
|
async loadVariables(type) {
|
|
445
455
|
const that = this;
|
|
456
|
+
this.logger.info(`Loading ISY Variables of type: ${type}`);
|
|
446
457
|
return this.sendRequest(`vars/definitions/${type}`)
|
|
447
458
|
.then((result) => that.#createVariables(type, result))
|
|
448
459
|
.then(() => that.sendRequest(`vars/get/${type}`))
|
|
@@ -467,39 +478,11 @@ class ISY extends events_1.EventEmitter {
|
|
|
467
478
|
if (that.isDebugEnabled) {
|
|
468
479
|
(0, fs_1.writeFile)(that.storagePath + '/ISYStatusDump.json', JSON.stringify(result), this.logger.error);
|
|
469
480
|
}
|
|
470
|
-
this.logger.debug(result);
|
|
481
|
+
//this.logger.debug(result);
|
|
471
482
|
for (const node of result.nodes.node) {
|
|
472
|
-
|
|
473
|
-
let device = that.getDevice(node.id);
|
|
483
|
+
let device = that.getNode(node.id);
|
|
474
484
|
if (device !== null && device !== undefined) {
|
|
475
|
-
// let child = device.children.find((p) => p.address === node.id);
|
|
476
|
-
// if (child) {
|
|
477
|
-
// //Case FanLinc where we treat the light as a child of the fan.
|
|
478
|
-
// device = child;
|
|
479
|
-
// }
|
|
480
485
|
device.parseResult(node.property);
|
|
481
|
-
// if (Array.isArray(node.property)) {
|
|
482
|
-
// for (let prop of node.property) {
|
|
483
|
-
// device.applyStatus(prop)
|
|
484
|
-
// // device.local[prop.id] = device.convertFrom(prop.value, prop.uom);
|
|
485
|
-
// // device.formatted[prop.id] = prop.formatted;
|
|
486
|
-
// // device.uom[prop.id] = prop.uom;
|
|
487
|
-
// // device.logger(
|
|
488
|
-
// // `Property ${Controls[prop.id].label} (${prop.id}) initialized to: ${device.local[prop.id]} (${
|
|
489
|
-
// // device.formatted[prop.id]
|
|
490
|
-
// // })`
|
|
491
|
-
// // );
|
|
492
|
-
// }
|
|
493
|
-
// } else if (node.property) {
|
|
494
|
-
// device.local[node.property.id] = device.convertFrom(node.property.value, node.property.uom);
|
|
495
|
-
// device.formatted[node.property.id] = node.property.formatted;
|
|
496
|
-
// device.uom[node.property.id] = node.property.uom;
|
|
497
|
-
// device.logger(
|
|
498
|
-
// `Property ${Controls[node.property.id].label} (${node.property.id}) initialized to: ${
|
|
499
|
-
// device.local[node.property.id]
|
|
500
|
-
// } (${device.formatted[node.property.id]})`
|
|
501
|
-
// );
|
|
502
|
-
// }
|
|
503
486
|
}
|
|
504
487
|
}
|
|
505
488
|
}
|
|
@@ -508,8 +491,7 @@ class ISY extends events_1.EventEmitter {
|
|
|
508
491
|
}
|
|
509
492
|
}
|
|
510
493
|
async sendGetVariable(id, type, handleResult) {
|
|
511
|
-
const uriToUse =
|
|
512
|
-
this.logger.info(`Sending ISY command...${uriToUse}`);
|
|
494
|
+
const uriToUse = `vars/get/${type}/${id}`;
|
|
513
495
|
return this.sendRequest(uriToUse).then((p) => handleResult(p.val, p.init));
|
|
514
496
|
}
|
|
515
497
|
async sendISYCommand(path) {
|
|
@@ -544,10 +526,14 @@ class ISY extends events_1.EventEmitter {
|
|
|
544
526
|
const responseLogLevel = options.responseLogLevel ?? 'silly';
|
|
545
527
|
url = `${this.protocol}://${this.address}/rest/${url}${options.trailingSlash ? '/' : ''}`;
|
|
546
528
|
this.logger.log(requestLogLevel, `Sending request: ${url}`);
|
|
529
|
+
const reqOps = { ...this.axiosOptions, ...options, url: path_1.default.join('/rest', url) };
|
|
530
|
+
/*{
|
|
531
|
+
auth: { username: this.credentials.username, password: this.credentials.password },
|
|
532
|
+
baseURL: `${this.protocol}://${this.address}`,
|
|
533
|
+
|
|
534
|
+
}*/
|
|
547
535
|
try {
|
|
548
|
-
const response = await axios_1.default.get(url,
|
|
549
|
-
auth: { username: this.credentials.username, password: this.credentials.password }
|
|
550
|
-
});
|
|
536
|
+
const response = await axios_1.default.get(url, reqOps);
|
|
551
537
|
if (response.data) {
|
|
552
538
|
if (response.headers['content-type'].toString().includes('xml')) {
|
|
553
539
|
let curParser = parser;
|
|
@@ -559,21 +545,26 @@ class ISY extends events_1.EventEmitter {
|
|
|
559
545
|
return s;
|
|
560
546
|
}
|
|
561
547
|
else if (response.headers['content-type'].toString().includes('json')) {
|
|
562
|
-
this.logger.log(responseLogLevel
|
|
548
|
+
this.logger.log(responseLogLevel, `Response: ${JSON.stringify(response.data)}`);
|
|
563
549
|
return JSON.parse(response.data);
|
|
564
550
|
}
|
|
565
551
|
else {
|
|
566
|
-
this.logger.log(responseLogLevel
|
|
552
|
+
this.logger.log(responseLogLevel, `Response Header: ${JSON.stringify(response.headers)} Response: ${JSON.stringify(response.data)}`);
|
|
567
553
|
return response.data;
|
|
568
554
|
}
|
|
569
555
|
}
|
|
570
556
|
}
|
|
571
557
|
catch (error) {
|
|
572
|
-
if (options.
|
|
573
|
-
|
|
558
|
+
if (options.throwOnError) {
|
|
559
|
+
throw error;
|
|
574
560
|
}
|
|
575
561
|
else {
|
|
576
|
-
|
|
562
|
+
if (options.errorLogLevel) {
|
|
563
|
+
this.logger.log(options.errorLogLevel, `Error sending request to ISY: ${error?.message}`);
|
|
564
|
+
}
|
|
565
|
+
else {
|
|
566
|
+
this.logger.error(`Error sending request to ISY: ${error?.message}`);
|
|
567
|
+
}
|
|
577
568
|
}
|
|
578
569
|
}
|
|
579
570
|
}
|
|
@@ -669,97 +660,113 @@ class ISY extends events_1.EventEmitter {
|
|
|
669
660
|
}
|
|
670
661
|
} */
|
|
671
662
|
async #readDeviceNodes(obj) {
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
else {
|
|
683
|
-
this.deviceMap[nodeInfo.pnode].push(nodeInfo.address);
|
|
684
|
-
}
|
|
685
|
-
let newDevice = null;
|
|
686
|
-
// let deviceTypeInfo = this.isyTypeToTypeName(device.type, device.address);
|
|
687
|
-
// this.logger.info(JSON.stringify(deviceTypeInfo));
|
|
688
|
-
const enabled = nodeInfo.enabled ?? true;
|
|
689
|
-
const d = await NodeFactory_js_1.NodeFactory.get(nodeInfo);
|
|
690
|
-
const m = DeviceFactory_js_1.DeviceFactory.getDeviceDetails(nodeInfo);
|
|
691
|
-
const cls = m?.class ?? d;
|
|
692
|
-
nodeInfo.property = Array.isArray(nodeInfo.property) ? nodeInfo.property : [nodeInfo.property];
|
|
693
|
-
nodeInfo.state = nodeInfo.property.reduce((acc, p) => {
|
|
694
|
-
if (p && p?.id) {
|
|
695
|
-
p.name = p.name == '' ? undefined : p.name;
|
|
696
|
-
acc[p.id] = p;
|
|
663
|
+
try {
|
|
664
|
+
this.logger.info('Loading Device Nodes');
|
|
665
|
+
for (const nodeInfo of obj.nodes.node) {
|
|
666
|
+
try {
|
|
667
|
+
this.logger.debug(`Loading Device Node: ${JSON.stringify(nodeInfo)}`);
|
|
668
|
+
if (!this.deviceMap.has(nodeInfo.pnode)) {
|
|
669
|
+
const address = nodeInfo.address;
|
|
670
|
+
this.deviceMap[nodeInfo.pnode] = {
|
|
671
|
+
address
|
|
672
|
+
};
|
|
697
673
|
}
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
674
|
+
else {
|
|
675
|
+
this.deviceMap[nodeInfo.pnode].push(nodeInfo.address);
|
|
676
|
+
}
|
|
677
|
+
let newDevice = null;
|
|
678
|
+
// let deviceTypeInfo = this.isyTypeToTypeName(device.type, device.address);
|
|
679
|
+
// this.logger.info(JSON.stringify(deviceTypeInfo));
|
|
680
|
+
const enabled = nodeInfo.enabled ?? true;
|
|
681
|
+
const d = await NodeFactory_js_1.NodeFactory.get(nodeInfo);
|
|
682
|
+
const m = DeviceFactory_js_1.DeviceFactory.getDeviceDetails(nodeInfo);
|
|
683
|
+
const cls = m?.class ?? d;
|
|
684
|
+
nodeInfo.property = Array.isArray(nodeInfo.property) ? nodeInfo.property : [nodeInfo.property];
|
|
685
|
+
nodeInfo.state = nodeInfo.property.reduce((acc, p) => {
|
|
686
|
+
if (p && p?.id) {
|
|
687
|
+
p.name = p.name == '' ? undefined : p.name;
|
|
688
|
+
acc[p.id] = p;
|
|
689
|
+
}
|
|
690
|
+
return acc;
|
|
691
|
+
}, {});
|
|
692
|
+
newDevice = new cls(this, nodeInfo);
|
|
693
|
+
if (m) {
|
|
694
|
+
newDevice.productName = m.name;
|
|
695
|
+
newDevice.model = `(${m.modelNumber}) ${m.name} v.${m.version}`;
|
|
696
|
+
newDevice.modelNumber = m.modelNumber;
|
|
697
|
+
newDevice.version = m.version;
|
|
711
698
|
}
|
|
712
|
-
|
|
713
|
-
if (
|
|
714
|
-
this.logger.warn(
|
|
699
|
+
if (enabled) {
|
|
700
|
+
if (newDevice === null) {
|
|
701
|
+
this.logger.warn(`Device type resolution failed for ${nodeInfo.name} with type: ${nodeInfo.type} and nodedef: ${nodeInfo.nodeDefId}`);
|
|
702
|
+
newDevice = new ISYDeviceNode_js_1.ISYDeviceNode(this, nodeInfo);
|
|
715
703
|
}
|
|
716
|
-
|
|
717
|
-
|
|
704
|
+
else if (newDevice !== null) {
|
|
705
|
+
if (m.unsupported) {
|
|
706
|
+
this.logger.warn('Device not currently supported: ' + JSON.stringify(nodeInfo) + ' /n It has been mapped to: ' + d.name);
|
|
707
|
+
}
|
|
708
|
+
try {
|
|
709
|
+
await newDevice.refreshNotes();
|
|
710
|
+
}
|
|
711
|
+
catch (e) {
|
|
712
|
+
this.logger.debug('No notes found.');
|
|
713
|
+
}
|
|
714
|
+
// if (!newDevice.hidden) {
|
|
715
|
+
// }
|
|
716
|
+
// this.deviceList.push(newDevice);
|
|
718
717
|
}
|
|
719
|
-
|
|
720
|
-
this.logger.debug('No notes found.');
|
|
718
|
+
else {
|
|
721
719
|
}
|
|
722
|
-
|
|
723
|
-
// }
|
|
724
|
-
// this.deviceList.push(newDevice);
|
|
720
|
+
this.nodeMap.set(newDevice.address, newDevice);
|
|
725
721
|
}
|
|
726
722
|
else {
|
|
723
|
+
this.logger.info(`Ignoring disabled device: ${nodeInfo.name}`);
|
|
727
724
|
}
|
|
728
|
-
this.nodeMap.set(newDevice.address, newDevice);
|
|
729
725
|
}
|
|
730
|
-
|
|
731
|
-
this.logger.
|
|
726
|
+
catch (e) {
|
|
727
|
+
this.logger.error(`Error loading device node: ${e.message}`);
|
|
732
728
|
}
|
|
733
729
|
}
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
730
|
+
this.logger.info(`${this.nodeMap.size} devices added.`);
|
|
731
|
+
}
|
|
732
|
+
catch (e) {
|
|
733
|
+
throw new ISYInitializationError(e, 'readDevices');
|
|
737
734
|
}
|
|
738
|
-
this.logger.info(`${this.nodeMap.size} devices added.`);
|
|
739
735
|
}
|
|
740
736
|
async #readFolderNodes(result) {
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
737
|
+
try {
|
|
738
|
+
this.logger.info('Loading Folder Nodes');
|
|
739
|
+
if (result?.nodes?.folder) {
|
|
740
|
+
for (const folder of result.nodes.folder) {
|
|
741
|
+
this.logger.debug(`Loading Folder Node: ${JSON.stringify(folder)}`);
|
|
742
|
+
this.folderMap.set(folder.address, folder.name);
|
|
743
|
+
}
|
|
746
744
|
}
|
|
747
745
|
}
|
|
746
|
+
catch (e) {
|
|
747
|
+
throw new ISYInitializationError(e, 'readFolders');
|
|
748
|
+
}
|
|
748
749
|
}
|
|
749
750
|
async #readSceneNodes(result) {
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
751
|
+
try {
|
|
752
|
+
this.logger.info('Loading Scene Nodes');
|
|
753
|
+
for (const scene of result.nodes?.group) {
|
|
754
|
+
if (scene.name === 'ISY' || scene.name === 'IoX' || scene.name === 'Auto DR') {
|
|
755
|
+
continue;
|
|
756
|
+
} // Skip ISY & Auto DR Scenes
|
|
757
|
+
const newScene = new ISYScene_js_1.ISYScene(this, scene);
|
|
758
|
+
try {
|
|
759
|
+
await newScene.refreshNotes();
|
|
760
|
+
}
|
|
761
|
+
catch (e) {
|
|
762
|
+
this.logger.debug('No notes found.');
|
|
763
|
+
}
|
|
764
|
+
this.sceneList.set(newScene.address, newScene);
|
|
765
|
+
}
|
|
766
|
+
this.logger.info(`${this.sceneList.size} scenes added.`);
|
|
767
|
+
}
|
|
768
|
+
catch (e) {
|
|
769
|
+
throw new ISYInitializationError(e, 'readScenes');
|
|
763
770
|
}
|
|
764
771
|
}
|
|
765
772
|
#setVariableValues(result) {
|