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.
Files changed (240) hide show
  1. package/dist/cjs/CodeGeneration/EnumFactory.js +6 -6
  2. package/dist/cjs/CodeGeneration/EnumFactory.js.map +1 -1
  3. package/dist/cjs/CodeGeneration/NodeClassFactory.js +7 -7
  4. package/dist/cjs/CodeGeneration/NodeClassFactory.js.map +1 -1
  5. package/dist/cjs/Definitions/Global/Commands.js.map +1 -1
  6. package/dist/cjs/Definitions/Global/Drivers.js.map +1 -1
  7. package/dist/cjs/Devices/ISYDevice.js.map +1 -1
  8. package/dist/cjs/Devices/ISYDeviceNode.js.map +1 -1
  9. package/dist/cjs/Devices/Insteon/InsteonDevice.js.map +1 -1
  10. package/dist/cjs/Devices/Insteon/InsteonDeviceFactory.js +12 -8
  11. package/dist/cjs/Devices/Insteon/InsteonDeviceFactory.js.map +1 -1
  12. package/dist/cjs/Devices/Insteon/InsteonKeypadDevice.js +2 -2
  13. package/dist/cjs/Devices/Insteon/InsteonKeypadDevice.js.map +1 -1
  14. package/dist/cjs/Devices/Insteon/InsteonRelayDevice.js +0 -16
  15. package/dist/cjs/Devices/Insteon/InsteonRelayDevice.js.map +1 -1
  16. package/dist/cjs/Devices/Insteon/KeypadButton.js +52 -0
  17. package/dist/cjs/Devices/Insteon/KeypadButton.js.map +1 -0
  18. package/dist/cjs/Devices/MapsTo.js +11 -0
  19. package/dist/cjs/Devices/MapsTo.js.map +1 -1
  20. package/dist/cjs/Devices/NodeFactory.js +5 -4
  21. package/dist/cjs/Devices/NodeFactory.js.map +1 -1
  22. package/dist/cjs/Devices/index.js.map +1 -1
  23. package/dist/cjs/ISY.js +220 -213
  24. package/dist/cjs/ISY.js.map +1 -1
  25. package/dist/cjs/ISYNode.js +3 -3
  26. package/dist/cjs/ISYNode.js.map +1 -1
  27. package/dist/cjs/ISYScene.js.map +1 -1
  28. package/dist/cjs/Matter/Behaviors/ISYBridgedDeviceBehavior.js.map +1 -1
  29. package/dist/cjs/Matter/Behaviors/ISYClusterBehavior.js.map +1 -1
  30. package/dist/cjs/Matter/Bridge/Server.js +6 -5
  31. package/dist/cjs/Matter/Bridge/Server.js.map +1 -1
  32. package/dist/cjs/Model/ClassDefinition.js +2 -2
  33. package/dist/cjs/Model/ClassDefinition.js.map +1 -1
  34. package/dist/cjs/Model/ClusterMap.js +2 -2
  35. package/dist/cjs/Model/ClusterMap.js.map +1 -1
  36. package/dist/cjs/Model/NodeDef.js.map +1 -1
  37. package/dist/cjs/Model/NodeInfo.js +3 -3
  38. package/dist/cjs/Model/NodeInfo.js.map +1 -1
  39. package/dist/cjs/Utils.js.map +1 -1
  40. package/dist/cjs/types/CodeGeneration/EnumFactory.d.ts +1 -1
  41. package/dist/cjs/types/CodeGeneration/EnumFactory.d.ts.map +1 -1
  42. package/dist/cjs/types/CodeGeneration/NodeClassFactory.d.ts +1 -1
  43. package/dist/cjs/types/CodeGeneration/NodeClassFactory.d.ts.map +1 -1
  44. package/dist/cjs/types/Definitions/Global/Commands.d.ts.map +1 -1
  45. package/dist/cjs/types/Definitions/Global/Drivers.d.ts +1 -1
  46. package/dist/cjs/types/Definitions/Global/Drivers.d.ts.map +1 -1
  47. package/dist/cjs/types/Definitions/Global/Events.d.ts +1 -1
  48. package/dist/cjs/types/Definitions/Global/Events.d.ts.map +1 -1
  49. package/dist/cjs/types/Devices/ISYDevice.d.ts +2 -3
  50. package/dist/cjs/types/Devices/ISYDevice.d.ts.map +1 -1
  51. package/dist/cjs/types/Devices/ISYDeviceNode.d.ts +2 -1
  52. package/dist/cjs/types/Devices/ISYDeviceNode.d.ts.map +1 -1
  53. package/dist/cjs/types/Devices/Insteon/InsteonBaseDevice.d.ts +1 -1
  54. package/dist/cjs/types/Devices/Insteon/InsteonBaseDevice.d.ts.map +1 -1
  55. package/dist/cjs/types/Devices/Insteon/InsteonDevice.d.ts +10 -9
  56. package/dist/cjs/types/Devices/Insteon/InsteonDevice.d.ts.map +1 -1
  57. package/dist/cjs/types/Devices/Insteon/InsteonDeviceFactory.d.ts +2 -1
  58. package/dist/cjs/types/Devices/Insteon/InsteonDeviceFactory.d.ts.map +1 -1
  59. package/dist/cjs/types/Devices/Insteon/InsteonFanDevice.d.ts.map +1 -1
  60. package/dist/cjs/types/Devices/Insteon/InsteonKeypadDevice.d.ts +4 -4
  61. package/dist/cjs/types/Devices/Insteon/InsteonKeypadDevice.d.ts.map +1 -1
  62. package/dist/cjs/types/Devices/Insteon/InsteonRelayDevice.d.ts +0 -3
  63. package/dist/cjs/types/Devices/Insteon/InsteonRelayDevice.d.ts.map +1 -1
  64. package/dist/cjs/types/Devices/Insteon/KeypadButton.d.ts +63 -0
  65. package/dist/cjs/types/Devices/Insteon/KeypadButton.d.ts.map +1 -0
  66. package/dist/cjs/types/Devices/MapsTo.d.ts +0 -9
  67. package/dist/cjs/types/Devices/MapsTo.d.ts.map +1 -1
  68. package/dist/cjs/types/Devices/NodeFactory.d.ts +2 -1
  69. package/dist/cjs/types/Devices/NodeFactory.d.ts.map +1 -1
  70. package/dist/cjs/types/Devices/ZWave/ZWaveBaseDevice.d.ts +1 -1
  71. package/dist/cjs/types/Devices/ZWave/ZWaveBaseDevice.d.ts.map +1 -1
  72. package/dist/cjs/types/Devices/index.d.ts +1 -1
  73. package/dist/cjs/types/Devices/index.d.ts.map +1 -1
  74. package/dist/cjs/types/ISY.d.ts +13 -28
  75. package/dist/cjs/types/ISY.d.ts.map +1 -1
  76. package/dist/cjs/types/ISYDevice.d.ts +1 -1
  77. package/dist/cjs/types/ISYDevice.d.ts.map +1 -1
  78. package/dist/cjs/types/ISYNode.d.ts +6 -4
  79. package/dist/cjs/types/ISYNode.d.ts.map +1 -1
  80. package/dist/cjs/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts +3 -8
  81. package/dist/cjs/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts.map +1 -1
  82. package/dist/cjs/types/Matter/Behaviors/ISYClusterBehavior.d.ts.map +1 -1
  83. package/dist/cjs/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts +3 -40
  84. package/dist/cjs/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts.map +1 -1
  85. package/dist/cjs/types/Matter/Bridge/Server.d.ts.map +1 -1
  86. package/dist/cjs/types/Model/ClusterMap.d.ts +2 -3
  87. package/dist/cjs/types/Model/ClusterMap.d.ts.map +1 -1
  88. package/dist/cjs/types/Model/EnumDefinition.d.ts +1 -1
  89. package/dist/cjs/types/Model/NodeDef.d.ts.map +1 -1
  90. package/dist/cjs/types/Model/NodeInfo.d.ts +2 -2
  91. package/dist/cjs/types/Model/NodeInfo.d.ts.map +1 -1
  92. package/dist/cjs/types/Utils.d.ts +8 -1
  93. package/dist/cjs/types/Utils.d.ts.map +1 -1
  94. package/dist/esm/CodeGeneration/EnumFactory.js +1 -1
  95. package/dist/esm/CodeGeneration/EnumFactory.js.map +1 -1
  96. package/dist/esm/CodeGeneration/NodeClassFactory.js +1 -1
  97. package/dist/esm/CodeGeneration/NodeClassFactory.js.map +1 -1
  98. package/dist/esm/Definitions/Global/Commands.js.map +1 -1
  99. package/dist/esm/Definitions/Global/Drivers.js.map +1 -1
  100. package/dist/esm/Devices/ISYDevice.js.map +1 -1
  101. package/dist/esm/Devices/ISYDeviceNode.js.map +1 -1
  102. package/dist/esm/Devices/Insteon/InsteonDevice.js.map +1 -1
  103. package/dist/esm/Devices/Insteon/InsteonDeviceFactory.js +5 -1
  104. package/dist/esm/Devices/Insteon/InsteonDeviceFactory.js.map +1 -1
  105. package/dist/esm/Devices/Insteon/InsteonKeypadDevice.js +2 -2
  106. package/dist/esm/Devices/Insteon/InsteonKeypadDevice.js.map +1 -1
  107. package/dist/esm/Devices/Insteon/InsteonRelayDevice.js +0 -16
  108. package/dist/esm/Devices/Insteon/InsteonRelayDevice.js.map +1 -1
  109. package/dist/esm/Devices/Insteon/KeypadButton.js +48 -0
  110. package/dist/esm/Devices/Insteon/KeypadButton.js.map +1 -0
  111. package/dist/esm/Devices/MapsTo.js +11 -0
  112. package/dist/esm/Devices/MapsTo.js.map +1 -1
  113. package/dist/esm/Devices/NodeFactory.js +2 -1
  114. package/dist/esm/Devices/NodeFactory.js.map +1 -1
  115. package/dist/esm/Devices/index.js.map +1 -1
  116. package/dist/esm/ISY.js +220 -183
  117. package/dist/esm/ISY.js.map +1 -1
  118. package/dist/esm/ISYNode.js +2 -2
  119. package/dist/esm/ISYNode.js.map +1 -1
  120. package/dist/esm/ISYScene.js.map +1 -1
  121. package/dist/esm/Matter/Behaviors/ISYBridgedDeviceBehavior.js.map +1 -1
  122. package/dist/esm/Matter/Behaviors/ISYClusterBehavior.js.map +1 -1
  123. package/dist/esm/Matter/Bridge/Server.js +7 -6
  124. package/dist/esm/Matter/Bridge/Server.js.map +1 -1
  125. package/dist/esm/Model/ClassDefinition.js +1 -1
  126. package/dist/esm/Model/ClassDefinition.js.map +1 -1
  127. package/dist/esm/Model/ClusterMap.js +2 -2
  128. package/dist/esm/Model/ClusterMap.js.map +1 -1
  129. package/dist/esm/Model/NodeDef.js.map +1 -1
  130. package/dist/esm/Model/NodeInfo.js +1 -1
  131. package/dist/esm/Model/NodeInfo.js.map +1 -1
  132. package/dist/esm/Utils.js.map +1 -1
  133. package/dist/esm/types/CodeGeneration/EnumFactory.d.ts +1 -1
  134. package/dist/esm/types/CodeGeneration/EnumFactory.d.ts.map +1 -1
  135. package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts +1 -1
  136. package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts.map +1 -1
  137. package/dist/esm/types/Definitions/Global/Commands.d.ts.map +1 -1
  138. package/dist/esm/types/Definitions/Global/Drivers.d.ts +1 -1
  139. package/dist/esm/types/Definitions/Global/Drivers.d.ts.map +1 -1
  140. package/dist/esm/types/Definitions/Global/Events.d.ts +1 -1
  141. package/dist/esm/types/Definitions/Global/Events.d.ts.map +1 -1
  142. package/dist/esm/types/Devices/ISYDevice.d.ts +2 -3
  143. package/dist/esm/types/Devices/ISYDevice.d.ts.map +1 -1
  144. package/dist/esm/types/Devices/ISYDeviceNode.d.ts +2 -1
  145. package/dist/esm/types/Devices/ISYDeviceNode.d.ts.map +1 -1
  146. package/dist/esm/types/Devices/Insteon/InsteonBaseDevice.d.ts +1 -1
  147. package/dist/esm/types/Devices/Insteon/InsteonBaseDevice.d.ts.map +1 -1
  148. package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts +10 -9
  149. package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts.map +1 -1
  150. package/dist/esm/types/Devices/Insteon/InsteonDeviceFactory.d.ts +2 -1
  151. package/dist/esm/types/Devices/Insteon/InsteonDeviceFactory.d.ts.map +1 -1
  152. package/dist/esm/types/Devices/Insteon/InsteonFanDevice.d.ts.map +1 -1
  153. package/dist/esm/types/Devices/Insteon/InsteonKeypadDevice.d.ts +4 -4
  154. package/dist/esm/types/Devices/Insteon/InsteonKeypadDevice.d.ts.map +1 -1
  155. package/dist/esm/types/Devices/Insteon/InsteonRelayDevice.d.ts +0 -3
  156. package/dist/esm/types/Devices/Insteon/InsteonRelayDevice.d.ts.map +1 -1
  157. package/dist/esm/types/Devices/Insteon/KeypadButton.d.ts +63 -0
  158. package/dist/esm/types/Devices/Insteon/KeypadButton.d.ts.map +1 -0
  159. package/dist/esm/types/Devices/MapsTo.d.ts +0 -9
  160. package/dist/esm/types/Devices/MapsTo.d.ts.map +1 -1
  161. package/dist/esm/types/Devices/NodeFactory.d.ts +2 -1
  162. package/dist/esm/types/Devices/NodeFactory.d.ts.map +1 -1
  163. package/dist/esm/types/Devices/ZWave/ZWaveBaseDevice.d.ts +1 -1
  164. package/dist/esm/types/Devices/ZWave/ZWaveBaseDevice.d.ts.map +1 -1
  165. package/dist/esm/types/Devices/index.d.ts +1 -1
  166. package/dist/esm/types/Devices/index.d.ts.map +1 -1
  167. package/dist/esm/types/ISY.d.ts +13 -28
  168. package/dist/esm/types/ISY.d.ts.map +1 -1
  169. package/dist/esm/types/ISYDevice.d.ts +1 -1
  170. package/dist/esm/types/ISYDevice.d.ts.map +1 -1
  171. package/dist/esm/types/ISYNode.d.ts +6 -4
  172. package/dist/esm/types/ISYNode.d.ts.map +1 -1
  173. package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts +1 -1
  174. package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts.map +1 -1
  175. package/dist/esm/types/Matter/Behaviors/ISYClusterBehavior.d.ts.map +1 -1
  176. package/dist/esm/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts +4 -4
  177. package/dist/esm/types/Matter/Bridge/Server.d.ts.map +1 -1
  178. package/dist/esm/types/Model/ClusterMap.d.ts +2 -3
  179. package/dist/esm/types/Model/ClusterMap.d.ts.map +1 -1
  180. package/dist/esm/types/Model/NodeDef.d.ts.map +1 -1
  181. package/dist/esm/types/Model/NodeInfo.d.ts +2 -2
  182. package/dist/esm/types/Model/NodeInfo.d.ts.map +1 -1
  183. package/dist/esm/types/Utils.d.ts +8 -1
  184. package/dist/esm/types/Utils.d.ts.map +1 -1
  185. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  186. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  187. package/package.json +9 -8
  188. package/src/CodeGeneration/EnumFactory.ts +2 -1
  189. package/src/CodeGeneration/NodeClassFactory.ts +2 -1
  190. package/src/Definitions/Global/Commands.ts +1 -3
  191. package/src/Definitions/Global/Drivers.ts +7 -16
  192. package/src/Definitions/Global/Events.ts +3 -3
  193. package/src/Devices/EndpointFor.ts +3 -2
  194. package/src/Devices/ISYDevice.ts +3 -6
  195. package/src/Devices/ISYDeviceNode.ts +2 -1
  196. package/src/Devices/ISYMultiNodeDevice.ts +1 -1
  197. package/src/Devices/Insteon/InsteonBaseDevice.ts +2 -2
  198. package/src/Devices/Insteon/InsteonDevice.ts +3 -2
  199. package/src/Devices/Insteon/InsteonDeviceFactory.ts +7 -2
  200. package/src/Devices/Insteon/InsteonDimmableDevice.ts +2 -2
  201. package/src/Devices/Insteon/InsteonFanDevice.ts +1 -1
  202. package/src/Devices/Insteon/InsteonKeypadDevice.ts +5 -5
  203. package/src/Devices/Insteon/InsteonRelayDevice.ts +4 -19
  204. package/src/Devices/Insteon/{Generated/KeypadButton.ts → KeypadButton.ts} +20 -20
  205. package/src/Devices/MapsTo.ts +3 -3
  206. package/src/Devices/NodeFactory.ts +3 -2
  207. package/src/Devices/ZWave/ZWaveBaseDevice.ts +1 -1
  208. package/src/Devices/ZWave/ZWaveDimmerSwitchDevice.ts +1 -1
  209. package/src/Devices/index.ts +2 -2
  210. package/src/ISY.ts +249 -228
  211. package/src/ISYDevice.ts +3 -2
  212. package/src/ISYNode.ts +9 -6
  213. package/src/ISYScene.ts +1 -1
  214. package/src/Matter/Behaviors/ISYBridgedDeviceBehavior.ts +5 -3
  215. package/src/Matter/Behaviors/ISYClusterBehavior.ts +2 -12
  216. package/src/Matter/Bridge/Server.ts +10 -7
  217. package/src/Matter/Mappings/Insteon.ts +2 -2
  218. package/src/Model/ClassDefinition.ts +1 -1
  219. package/src/Model/ClusterMap.ts +7 -14
  220. package/src/Model/NodeDef.ts +1 -2
  221. package/src/Model/NodeInfo.ts +4 -3
  222. package/src/Utils.ts +13 -6
  223. package/tsconfig.json +2 -1
  224. package/dist/cjs/Devices/EndpointFor.js +0 -36
  225. package/dist/cjs/Devices/EndpointFor.js.map +0 -1
  226. package/dist/cjs/Matter/Behaviors/ISYOnOffBehavior.js +0 -52
  227. package/dist/cjs/Matter/Behaviors/ISYOnOffBehavior.js.map +0 -1
  228. package/dist/cjs/package.json +0 -1
  229. package/dist/cjs/types/Devices/EndpointFor.d.ts +0 -108
  230. package/dist/cjs/types/Devices/EndpointFor.d.ts.map +0 -1
  231. package/dist/cjs/types/Matter/Behaviors/ISYOnOffBehavior.d.ts +0 -55
  232. package/dist/cjs/types/Matter/Behaviors/ISYOnOffBehavior.d.ts.map +0 -1
  233. package/dist/esm/Devices/EndpointFor.js +0 -31
  234. package/dist/esm/Devices/EndpointFor.js.map +0 -1
  235. package/dist/esm/Matter/Behaviors/ISYOnOffBehavior.js +0 -47
  236. package/dist/esm/Matter/Behaviors/ISYOnOffBehavior.js.map +0 -1
  237. package/dist/esm/types/Devices/EndpointFor.d.ts +0 -108
  238. package/dist/esm/types/Devices/EndpointFor.d.ts.map +0 -1
  239. package/dist/esm/types/Matter/Behaviors/ISYOnOffBehavior.d.ts +0 -55
  240. 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 = exports.VariableType = exports.Utils = exports.States = exports.Props = exports.NodeType = exports.ISYVariable = exports.ISYScene = exports.ISYNode = exports.ISYDevice = exports.InsteonThermostatDevice = exports.InsteonSmokeSensorDevice = exports.InsteonRelayDevice = exports.InsteonOutletDevice = exports.InsteonOnOffOutletDevice = exports.InsteonMotionSensorDevice = exports.InsteonLockDevice = exports.InsteonLeakSensorDevice = exports.InsteonKeypadRelayDevice = exports.InsteonKeypadDimmerDevice = exports.InsteonKeypadButtonDevice = exports.InsteonFanMotorDevice = exports.InsteonFanDevice = exports.InsteonDoorWindowSensorDevice = exports.InsteonDimmerSwitchDevice = exports.InsteonDimmerOutletDevice = exports.InsteonDimmableDevice = exports.InsteonBaseDevice = exports.Family = exports.ElkAlarmSensorDevice = exports.ELKAlarmPanelDevice = exports.Categories = void 0;
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
- this.handleInitializeError('initialize', e);
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
- const that = this;
360
- const auth = `Basic ${Buffer.from(`${this.credentials.username}:${this.credentials.password}`).toString('base64')}`;
361
- this.logger.info(`Opening webSocket: ${this.wsprotocol}://${this.address}/rest/subscribe`);
362
- if (this.webSocket) {
363
- try {
364
- this.webSocket.close();
365
- }
366
- catch (e) {
367
- this.logger.warn(`Error closing existing websocket: ${e.message}`);
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
- this.handleInitializeError('config', e);
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).catch((p) => this.logger.error('Error Loading Folders', p));
436
- await this.#readDeviceNodes(result).catch((p) => this.logger.error('Error Loading Devices', p));
437
- await this.#readSceneNodes(result).catch((p) => this.logger.error('Error Loading Scenes', p));
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
- throw new Error(`Error loading nodes: ${e.message}`);
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
- this.logger.debug(node);
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 = `${this.protocol}://${this.address}/rest/vars/get/${type}/${id}`;
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 ?? 'debug', `Response: ${JSON.stringify(response.data)}`);
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 ?? 'debug', `Response Header: ${JSON.stringify(response.headers)} Response: ${JSON.stringify(response.data)}`);
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.errorLogLevel) {
573
- this.logger.log(options.errorLogLevel, `Error sending request to ISY: ${error?.message}`);
558
+ if (options.throwOnError) {
559
+ throw error;
574
560
  }
575
561
  else {
576
- this.logger.error(`Error sending request to ISY: ${error?.message}`);
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
- this.logger.info('Loading Device Nodes');
673
- for (const nodeInfo of obj.nodes.node) {
674
- try {
675
- this.logger.debug(`Loading Device Node: ${JSON.stringify(nodeInfo)}`);
676
- if (!this.deviceMap.has(nodeInfo.pnode)) {
677
- const address = nodeInfo.address;
678
- this.deviceMap[nodeInfo.pnode] = {
679
- address
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
- return acc;
699
- }, {});
700
- newDevice = new cls(this, nodeInfo);
701
- if (m) {
702
- newDevice.productName = m.name;
703
- newDevice.model = `(${m.modelNumber}) ${m.name} v.${m.version}`;
704
- newDevice.modelNumber = m.modelNumber;
705
- newDevice.version = m.version;
706
- }
707
- if (enabled) {
708
- if (newDevice === null) {
709
- this.logger.warn(`Device type resolution failed for ${nodeInfo.name} with type: ${nodeInfo.type} and nodedef: ${nodeInfo.nodeDefId}`);
710
- newDevice = new ISYDeviceNode_js_1.ISYDeviceNode(this, nodeInfo);
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
- else if (newDevice !== null) {
713
- if (m.unsupported) {
714
- this.logger.warn('Device not currently supported: ' + JSON.stringify(nodeInfo) + ' /n It has been mapped to: ' + d.name);
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
- try {
717
- await newDevice.refreshNotes();
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
- catch (e) {
720
- this.logger.debug('No notes found.');
718
+ else {
721
719
  }
722
- // if (!newDevice.hidden) {
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
- else {
731
- this.logger.info(`Ignoring disabled device: ${nodeInfo.name}`);
726
+ catch (e) {
727
+ this.logger.error(`Error loading device node: ${e.message}`);
732
728
  }
733
729
  }
734
- catch (e) {
735
- this.logger.error(`Error loading device node: ${e.message}`);
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
- this.logger.info('Loading Folder Nodes');
742
- if (result?.nodes?.folder) {
743
- for (const folder of result.nodes.folder) {
744
- this.logger.debug(`Loading Folder Node: ${JSON.stringify(folder)}`);
745
- this.folderMap.set(folder.address, folder.name);
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
- this.logger.info('Loading Scene Nodes');
751
- for (const scene of result.nodes?.group) {
752
- if (scene.name === 'ISY' || scene.name === 'IoX' || scene.name === 'Auto DR') {
753
- continue;
754
- } // Skip ISY & Auto DR Scenes
755
- const newScene = new ISYScene_js_1.ISYScene(this, scene);
756
- try {
757
- await newScene.refreshNotes();
758
- }
759
- catch (e) {
760
- this.logger.debug('No notes found.');
761
- }
762
- this.sceneList.set(newScene.address, newScene);
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) {