isy-nodejs 1.0.2-alpha.4 → 1.0.3-alpha.0

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 (271) hide show
  1. package/dist/esm/CodeGeneration/{NodeFactory.js → CodeFactory.js} +18 -7
  2. package/dist/esm/CodeGeneration/CodeFactory.js.map +1 -0
  3. package/dist/esm/CodeGeneration/EnumFactory.js +1 -1
  4. package/dist/esm/CodeGeneration/EnumFactory.js.map +1 -1
  5. package/dist/esm/CodeGeneration/NodeClassFactory.js +156 -146
  6. package/dist/esm/CodeGeneration/NodeClassFactory.js.map +1 -1
  7. package/dist/esm/Converters.js +16 -6
  8. package/dist/esm/Converters.js.map +1 -1
  9. package/dist/esm/Devices/Insteon/Generated/AlertModuleArmed.js +4 -2
  10. package/dist/esm/Devices/Insteon/Generated/AlertModuleArmed.js.map +1 -1
  11. package/dist/esm/Devices/Insteon/Generated/AlertModuleSiren.js +4 -2
  12. package/dist/esm/Devices/Insteon/Generated/AlertModuleSiren.js.map +1 -1
  13. package/dist/esm/Devices/Insteon/Generated/BallastRelayLampSwitch.js +5 -3
  14. package/dist/esm/Devices/Insteon/Generated/BallastRelayLampSwitch.js.map +1 -1
  15. package/dist/esm/Devices/Insteon/Generated/BinaryAlarm.js +4 -2
  16. package/dist/esm/Devices/Insteon/Generated/BinaryAlarm.js.map +1 -1
  17. package/dist/esm/Devices/Insteon/Generated/BinaryControl.js +4 -2
  18. package/dist/esm/Devices/Insteon/Generated/BinaryControl.js.map +1 -1
  19. package/dist/esm/Devices/Insteon/Generated/DimmerLamp.js +7 -5
  20. package/dist/esm/Devices/Insteon/Generated/DimmerLamp.js.map +1 -1
  21. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitch.js +8 -6
  22. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitch.js.map +1 -1
  23. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitchLed.js +9 -7
  24. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitchLed.js.map +1 -1
  25. package/dist/esm/Devices/Insteon/Generated/DimmerMotorSwitch.js +8 -6
  26. package/dist/esm/Devices/Insteon/Generated/DimmerMotorSwitch.js.map +1 -1
  27. package/dist/esm/Devices/Insteon/Generated/DimmerSwitch.js +4 -2
  28. package/dist/esm/Devices/Insteon/Generated/DimmerSwitch.js.map +1 -1
  29. package/dist/esm/Devices/Insteon/Generated/DoorLock.js +3 -1
  30. package/dist/esm/Devices/Insteon/Generated/DoorLock.js.map +1 -1
  31. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Input.js +3 -1
  32. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Input.js.map +1 -1
  33. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Output.js +4 -2
  34. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Output.js.map +1 -1
  35. package/dist/esm/Devices/Insteon/Generated/EzrainInput.js +3 -1
  36. package/dist/esm/Devices/Insteon/Generated/EzrainInput.js.map +1 -1
  37. package/dist/esm/Devices/Insteon/Generated/EzrainOutput.js +5 -3
  38. package/dist/esm/Devices/Insteon/Generated/EzrainOutput.js.map +1 -1
  39. package/dist/esm/Devices/Insteon/Generated/FanLincMotor.js +5 -3
  40. package/dist/esm/Devices/Insteon/Generated/FanLincMotor.js.map +1 -1
  41. package/dist/esm/Devices/Insteon/Generated/I3KeypadFlags.js +12 -10
  42. package/dist/esm/Devices/Insteon/Generated/I3KeypadFlags.js.map +1 -1
  43. package/dist/esm/Devices/Insteon/Generated/I3PaddleFlags.js +10 -8
  44. package/dist/esm/Devices/Insteon/Generated/I3PaddleFlags.js.map +1 -1
  45. package/dist/esm/Devices/Insteon/Generated/ImeterSolo.js +3 -1
  46. package/dist/esm/Devices/Insteon/Generated/ImeterSolo.js.map +1 -1
  47. package/dist/esm/Devices/Insteon/Generated/IrLincTx.js +4 -2
  48. package/dist/esm/Devices/Insteon/Generated/IrLincTx.js.map +1 -1
  49. package/dist/esm/Devices/Insteon/Generated/KeypadButton.js +4 -2
  50. package/dist/esm/Devices/Insteon/Generated/KeypadButton.js.map +1 -1
  51. package/dist/esm/Devices/Insteon/Generated/KeypadDimmer.js +9 -7
  52. package/dist/esm/Devices/Insteon/Generated/KeypadDimmer.js.map +1 -1
  53. package/dist/esm/Devices/Insteon/Generated/KeypadRelay.js +7 -5
  54. package/dist/esm/Devices/Insteon/Generated/KeypadRelay.js.map +1 -1
  55. package/dist/esm/Devices/Insteon/Generated/OnOffControl.js +4 -2
  56. package/dist/esm/Devices/Insteon/Generated/OnOffControl.js.map +1 -1
  57. package/dist/esm/Devices/Insteon/Generated/Pir2844.js +6 -4
  58. package/dist/esm/Devices/Insteon/Generated/Pir2844.js.map +1 -1
  59. package/dist/esm/Devices/Insteon/Generated/Pir2844OnOff.js +5 -3
  60. package/dist/esm/Devices/Insteon/Generated/Pir2844OnOff.js.map +1 -1
  61. package/dist/esm/Devices/Insteon/Generated/Pir2844c.js +6 -4
  62. package/dist/esm/Devices/Insteon/Generated/Pir2844c.js.map +1 -1
  63. package/dist/esm/Devices/Insteon/Generated/RelayLamp.js +6 -4
  64. package/dist/esm/Devices/Insteon/Generated/RelayLamp.js.map +1 -1
  65. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js +7 -5
  66. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js.map +1 -1
  67. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitchLed.js +8 -6
  68. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitchLed.js.map +1 -1
  69. package/dist/esm/Devices/Insteon/Generated/RelaySwitch.js +6 -4
  70. package/dist/esm/Devices/Insteon/Generated/RelaySwitch.js.map +1 -1
  71. package/dist/esm/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.js +6 -4
  72. package/dist/esm/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.js.map +1 -1
  73. package/dist/esm/Devices/Insteon/Generated/RemoteLinc2.js +3 -1
  74. package/dist/esm/Devices/Insteon/Generated/RemoteLinc2.js.map +1 -1
  75. package/dist/esm/Devices/Insteon/Generated/Siren.js +5 -3
  76. package/dist/esm/Devices/Insteon/Generated/Siren.js.map +1 -1
  77. package/dist/esm/Devices/Insteon/Generated/SirenAlert.js +3 -1
  78. package/dist/esm/Devices/Insteon/Generated/SirenAlert.js.map +1 -1
  79. package/dist/esm/Devices/Insteon/Generated/TempLinc.js +8 -6
  80. package/dist/esm/Devices/Insteon/Generated/TempLinc.js.map +1 -1
  81. package/dist/esm/Devices/Insteon/Generated/Thermostat.js +8 -6
  82. package/dist/esm/Devices/Insteon/Generated/Thermostat.js.map +1 -1
  83. package/dist/esm/Devices/Insteon/Generated/X10.js +3 -1
  84. package/dist/esm/Devices/Insteon/Generated/X10.js.map +1 -1
  85. package/dist/esm/Devices/Lutron/Generated/LoadShed.js +4 -2
  86. package/dist/esm/Devices/Lutron/Generated/LoadShed.js.map +1 -1
  87. package/dist/esm/Devices/UDI/Generated/Channel.js +3 -1
  88. package/dist/esm/Devices/UDI/Generated/Channel.js.map +1 -1
  89. package/dist/esm/Devices/UDI/Generated/Em3MainChannel.js +3 -1
  90. package/dist/esm/Devices/UDI/Generated/Em3MainChannel.js.map +1 -1
  91. package/dist/esm/Devices/UDI/Generated/Main.js +3 -1
  92. package/dist/esm/Devices/UDI/Generated/Main.js.map +1 -1
  93. package/dist/esm/Devices/UDI/Generated/PulseCounter.js +3 -1
  94. package/dist/esm/Devices/UDI/Generated/PulseCounter.js.map +1 -1
  95. package/dist/esm/Devices/UDI/Generated/Relay.js +3 -1
  96. package/dist/esm/Devices/UDI/Generated/Relay.js.map +1 -1
  97. package/dist/esm/Devices/UDI/Generated/TemperatureSensor.js +3 -1
  98. package/dist/esm/Devices/UDI/Generated/TemperatureSensor.js.map +1 -1
  99. package/dist/esm/Devices/ZWave/Generated/ColorSwitch.js +8 -2
  100. package/dist/esm/Devices/ZWave/Generated/ColorSwitch.js.map +1 -1
  101. package/dist/esm/Devices/ZWave/Generated/DimmerSwitch.js +4 -2
  102. package/dist/esm/Devices/ZWave/Generated/DimmerSwitch.js.map +1 -1
  103. package/dist/esm/ISY.js +59 -34
  104. package/dist/esm/ISY.js.map +1 -1
  105. package/dist/esm/Matter/Behaviors/ISYBridgedDeviceBehavior.js +1 -1
  106. package/dist/esm/Matter/Behaviors/ISYBridgedDeviceBehavior.js.map +1 -1
  107. package/dist/esm/Matter/Behaviors/ISYClusterBehavior.js.map +1 -1
  108. package/dist/esm/Matter/Behaviors/Insteon/ISYOnOffBehavior.js.map +1 -1
  109. package/dist/esm/Matter/Bridge/Server.js +6 -6
  110. package/dist/esm/Matter/Bridge/Server.js.map +1 -1
  111. package/dist/esm/Matter/Mappings/Insteon.js +37 -13
  112. package/dist/esm/Matter/Mappings/Insteon.js.map +1 -1
  113. package/dist/esm/{Model/ClusterMap.js → Matter/Mappings/MappingRegistry.js} +12 -7
  114. package/dist/esm/Matter/Mappings/MappingRegistry.js.map +1 -0
  115. package/dist/esm/Model/ClassDefinition.js +7 -5
  116. package/dist/esm/Model/ClassDefinition.js.map +1 -1
  117. package/dist/esm/types/CodeGeneration/{NodeFactory.d.ts → CodeFactory.d.ts} +1 -1
  118. package/dist/esm/types/CodeGeneration/{NodeFactory.d.ts.map → CodeFactory.d.ts.map} +1 -1
  119. package/dist/esm/types/CodeGeneration/EnumFactory.d.ts +1 -1
  120. package/dist/esm/types/CodeGeneration/EnumFactory.d.ts.map +1 -1
  121. package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts +19 -3
  122. package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts.map +1 -1
  123. package/dist/esm/types/Converters.d.ts +12 -6
  124. package/dist/esm/types/Converters.d.ts.map +1 -1
  125. package/dist/esm/types/Devices/EndpointFor.d.ts +1 -1
  126. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleArmed.d.ts.map +1 -1
  127. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleSiren.d.ts.map +1 -1
  128. package/dist/esm/types/Devices/Insteon/Generated/BallastRelayLampSwitch.d.ts.map +1 -1
  129. package/dist/esm/types/Devices/Insteon/Generated/BinaryAlarm.d.ts.map +1 -1
  130. package/dist/esm/types/Devices/Insteon/Generated/BinaryControl.d.ts.map +1 -1
  131. package/dist/esm/types/Devices/Insteon/Generated/DimmerLamp.d.ts.map +1 -1
  132. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitch.d.ts.map +1 -1
  133. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitchLed.d.ts.map +1 -1
  134. package/dist/esm/types/Devices/Insteon/Generated/DimmerMotorSwitch.d.ts.map +1 -1
  135. package/dist/esm/types/Devices/Insteon/Generated/DimmerSwitch.d.ts.map +1 -1
  136. package/dist/esm/types/Devices/Insteon/Generated/DoorLock.d.ts.map +1 -1
  137. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Input.d.ts.map +1 -1
  138. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Output.d.ts.map +1 -1
  139. package/dist/esm/types/Devices/Insteon/Generated/EzrainInput.d.ts.map +1 -1
  140. package/dist/esm/types/Devices/Insteon/Generated/EzrainOutput.d.ts.map +1 -1
  141. package/dist/esm/types/Devices/Insteon/Generated/FanLincMotor.d.ts.map +1 -1
  142. package/dist/esm/types/Devices/Insteon/Generated/I3KeypadFlags.d.ts.map +1 -1
  143. package/dist/esm/types/Devices/Insteon/Generated/I3PaddleFlags.d.ts.map +1 -1
  144. package/dist/esm/types/Devices/Insteon/Generated/ImeterSolo.d.ts.map +1 -1
  145. package/dist/esm/types/Devices/Insteon/Generated/IrLincTx.d.ts.map +1 -1
  146. package/dist/esm/types/Devices/Insteon/Generated/KeypadButton.d.ts.map +1 -1
  147. package/dist/esm/types/Devices/Insteon/Generated/KeypadDimmer.d.ts.map +1 -1
  148. package/dist/esm/types/Devices/Insteon/Generated/KeypadRelay.d.ts +6 -6
  149. package/dist/esm/types/Devices/Insteon/Generated/KeypadRelay.d.ts.map +1 -1
  150. package/dist/esm/types/Devices/Insteon/Generated/OnOffControl.d.ts +3 -3
  151. package/dist/esm/types/Devices/Insteon/Generated/OnOffControl.d.ts.map +1 -1
  152. package/dist/esm/types/Devices/Insteon/Generated/Pir2844.d.ts.map +1 -1
  153. package/dist/esm/types/Devices/Insteon/Generated/Pir2844OnOff.d.ts.map +1 -1
  154. package/dist/esm/types/Devices/Insteon/Generated/Pir2844c.d.ts.map +1 -1
  155. package/dist/esm/types/Devices/Insteon/Generated/RelayLamp.d.ts +3 -3
  156. package/dist/esm/types/Devices/Insteon/Generated/RelayLamp.d.ts.map +1 -1
  157. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts +3 -3
  158. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts.map +1 -1
  159. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitchLed.d.ts +6 -6
  160. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitchLed.d.ts.map +1 -1
  161. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitch.d.ts.map +1 -1
  162. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.d.ts.map +1 -1
  163. package/dist/esm/types/Devices/Insteon/Generated/RemoteLinc2.d.ts.map +1 -1
  164. package/dist/esm/types/Devices/Insteon/Generated/Siren.d.ts.map +1 -1
  165. package/dist/esm/types/Devices/Insteon/Generated/SirenAlert.d.ts.map +1 -1
  166. package/dist/esm/types/Devices/Insteon/Generated/TempLinc.d.ts.map +1 -1
  167. package/dist/esm/types/Devices/Insteon/Generated/Thermostat.d.ts.map +1 -1
  168. package/dist/esm/types/Devices/Insteon/Generated/X10.d.ts.map +1 -1
  169. package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts +2 -2
  170. package/dist/esm/types/Devices/Lutron/Generated/LoadShed.d.ts.map +1 -1
  171. package/dist/esm/types/Devices/UDI/Generated/Channel.d.ts.map +1 -1
  172. package/dist/esm/types/Devices/UDI/Generated/Em3MainChannel.d.ts.map +1 -1
  173. package/dist/esm/types/Devices/UDI/Generated/Main.d.ts.map +1 -1
  174. package/dist/esm/types/Devices/UDI/Generated/PulseCounter.d.ts.map +1 -1
  175. package/dist/esm/types/Devices/UDI/Generated/Relay.d.ts.map +1 -1
  176. package/dist/esm/types/Devices/UDI/Generated/TemperatureSensor.d.ts.map +1 -1
  177. package/dist/esm/types/Devices/ZWave/Generated/ColorSwitch.d.ts +16 -9
  178. package/dist/esm/types/Devices/ZWave/Generated/ColorSwitch.d.ts.map +1 -1
  179. package/dist/esm/types/Devices/ZWave/Generated/DimmerSwitch.d.ts +15 -15
  180. package/dist/esm/types/Devices/ZWave/Generated/DimmerSwitch.d.ts.map +1 -1
  181. package/dist/esm/types/ISY.d.ts +6 -2
  182. package/dist/esm/types/ISY.d.ts.map +1 -1
  183. package/dist/esm/types/ISYNode.d.ts +1 -1
  184. package/dist/esm/types/ISYNode.d.ts.map +1 -1
  185. package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts +1 -1
  186. package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts.map +1 -1
  187. package/dist/esm/types/Matter/Behaviors/ISYClusterBehavior.d.ts +1 -1
  188. package/dist/esm/types/Matter/Behaviors/ISYClusterBehavior.d.ts.map +1 -1
  189. package/dist/esm/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts.map +1 -1
  190. package/dist/esm/types/Matter/Bridge/Server.d.ts +0 -1
  191. package/dist/esm/types/Matter/Bridge/Server.d.ts.map +1 -1
  192. package/dist/esm/types/Matter/Mappings/Insteon.d.ts +3 -1
  193. package/dist/esm/types/Matter/Mappings/Insteon.d.ts.map +1 -1
  194. package/dist/esm/types/Matter/Mappings/MappingRegistry.d.ts +144 -0
  195. package/dist/esm/types/Matter/Mappings/MappingRegistry.d.ts.map +1 -0
  196. package/dist/esm/types/Model/ClassDefinition.d.ts +9 -623
  197. package/dist/esm/types/Model/ClassDefinition.d.ts.map +1 -1
  198. package/dist/esm/types/Model/EnumDefinition.d.ts +1 -1
  199. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  200. package/package.json +4 -2
  201. package/src/CodeGeneration/{NodeFactory.ts → CodeFactory.ts} +18 -2
  202. package/src/CodeGeneration/EnumFactory.ts +5 -4
  203. package/src/CodeGeneration/NodeClassFactory.ts +266 -241
  204. package/src/Converters.ts +16 -10
  205. package/src/Devices/Brultech/Generated/Channel.ts +3 -1
  206. package/src/Devices/Brultech/Generated/Main.ts +3 -1
  207. package/src/Devices/Insteon/Generated/AlertModuleArmed.ts +4 -2
  208. package/src/Devices/Insteon/Generated/AlertModuleSiren.ts +4 -2
  209. package/src/Devices/Insteon/Generated/BallastRelayLampSwitch.ts +5 -3
  210. package/src/Devices/Insteon/Generated/BinaryAlarm.ts +4 -2
  211. package/src/Devices/Insteon/Generated/BinaryControl.ts +4 -2
  212. package/src/Devices/Insteon/Generated/DimmerLamp.ts +7 -5
  213. package/src/Devices/Insteon/Generated/DimmerLampSwitch.ts +8 -6
  214. package/src/Devices/Insteon/Generated/DimmerLampSwitchLed.ts +9 -7
  215. package/src/Devices/Insteon/Generated/DimmerMotorSwitch.ts +8 -6
  216. package/src/Devices/Insteon/Generated/DimmerSwitch.ts +4 -2
  217. package/src/Devices/Insteon/Generated/DoorLock.ts +3 -1
  218. package/src/Devices/Insteon/Generated/Ezio2x4Input.ts +3 -1
  219. package/src/Devices/Insteon/Generated/Ezio2x4Output.ts +4 -2
  220. package/src/Devices/Insteon/Generated/EzrainInput.ts +3 -1
  221. package/src/Devices/Insteon/Generated/EzrainOutput.ts +12 -10
  222. package/src/Devices/Insteon/Generated/FanLincMotor.ts +5 -3
  223. package/src/Devices/Insteon/Generated/I3KeypadFlags.ts +12 -10
  224. package/src/Devices/Insteon/Generated/I3PaddleFlags.ts +10 -8
  225. package/src/Devices/Insteon/Generated/ImeterSolo.ts +3 -1
  226. package/src/Devices/Insteon/Generated/IrLincTx.ts +4 -2
  227. package/src/Devices/Insteon/Generated/KeypadButton.ts +4 -2
  228. package/src/Devices/Insteon/Generated/KeypadDimmer.ts +9 -7
  229. package/src/Devices/Insteon/Generated/KeypadRelay.ts +18 -16
  230. package/src/Devices/Insteon/Generated/OnOffControl.ts +7 -5
  231. package/src/Devices/Insteon/Generated/Pir2844.ts +6 -4
  232. package/src/Devices/Insteon/Generated/Pir2844OnOff.ts +5 -3
  233. package/src/Devices/Insteon/Generated/Pir2844c.ts +6 -4
  234. package/src/Devices/Insteon/Generated/RelayLamp.ts +9 -7
  235. package/src/Devices/Insteon/Generated/RelayLampSwitch.ts +10 -8
  236. package/src/Devices/Insteon/Generated/RelayLampSwitchLed.ts +12 -10
  237. package/src/Devices/Insteon/Generated/RelaySwitch.ts +6 -4
  238. package/src/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.ts +6 -4
  239. package/src/Devices/Insteon/Generated/RemoteLinc2.ts +3 -1
  240. package/src/Devices/Insteon/Generated/Siren.ts +5 -3
  241. package/src/Devices/Insteon/Generated/SirenAlert.ts +3 -1
  242. package/src/Devices/Insteon/Generated/TempLinc.ts +8 -6
  243. package/src/Devices/Insteon/Generated/Thermostat.ts +8 -6
  244. package/src/Devices/Insteon/Generated/X10.ts +3 -1
  245. package/src/Devices/Lutron/Generated/LoadShed.ts +4 -2
  246. package/src/Devices/NCD/Generated/Relay.ts +4 -2
  247. package/src/Devices/Poly/Generated/MatterBridge.ts +3 -1
  248. package/src/Devices/Scene/Generated/Scene.ts +10 -8
  249. package/src/Devices/UDI/Generated/Channel.ts +3 -1
  250. package/src/Devices/UDI/Generated/Em3MainChannel.ts +3 -1
  251. package/src/Devices/UDI/Generated/Main.ts +3 -1
  252. package/src/Devices/UDI/Generated/PulseCounter.ts +3 -1
  253. package/src/Devices/UDI/Generated/Relay.ts +3 -1
  254. package/src/Devices/UDI/Generated/TemperatureSensor.ts +3 -1
  255. package/src/Devices/ZWave/Generated/ColorSwitch.ts +19 -7
  256. package/src/Devices/ZWave/Generated/DimmerSwitch.ts +13 -11
  257. package/src/Devices/ZigBeeLegacy/Generated/Relay.ts +4 -2
  258. package/src/Devices/ZigBeeLegacy/Generated/Thermostat.ts +11 -9
  259. package/src/ISY.ts +58 -25
  260. package/src/Matter/Behaviors/ISYBridgedDeviceBehavior.ts +1 -1
  261. package/src/Matter/Behaviors/ISYClusterBehavior.ts +2 -1
  262. package/src/Matter/Behaviors/Insteon/ISYOnOffBehavior.ts +2 -1
  263. package/src/Matter/Bridge/Server.ts +10 -6
  264. package/src/Matter/Mappings/Insteon.ts +41 -26
  265. package/src/{Model/ClusterMap.ts → Matter/Mappings/MappingRegistry.ts} +26 -14
  266. package/src/Model/ClassDefinition.ts +16 -10
  267. package/src/Utils.ts +1 -1
  268. package/dist/esm/CodeGeneration/NodeFactory.js.map +0 -1
  269. package/dist/esm/Model/ClusterMap.js.map +0 -1
  270. package/dist/esm/types/Model/ClusterMap.d.ts +0 -101
  271. package/dist/esm/types/Model/ClusterMap.d.ts.map +0 -1
@@ -31,7 +31,7 @@ export class LoadShedNode extends Base<Drivers, Commands> implements LoadShed.In
31
31
  this.drivers.ST = Driver.create("ST", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Percent, label: "Status", name: "status" });
32
32
  this.drivers.ERR = Driver.create("ERR", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Index, label: "Responding", name: "responding" });
33
33
  }
34
- async on(value?: (0 | 100)) { return this.sendCommand("DON", { value: value }); }
34
+ async on(value?: (0 | 100)) { return this.sendCommand("DON", value); }
35
35
  async off() { return this.sendCommand("DOF"); }
36
36
  async query() { return this.sendCommand("QUERY"); }
37
37
  public get status(): (0 | 100) {
@@ -48,7 +48,9 @@ export namespace LoadShed {
48
48
  export interface Interface extends Omit<InstanceType<typeof LoadShedNode>, keyof ISYDeviceNode<any, any, any, any>> {
49
49
  nodeDefId: "LUTLoadShed";
50
50
  }
51
- export function is(node: ISYNode<any, any, any, any>): node is LoadShedNode { return ["LUTLoadShed"].includes(node.nodeDefId); }
51
+ export function is(node: ISYNode<any, any, any, any>): node is LoadShedNode {
52
+ return ["LUTLoadShed"].includes(node.nodeDefId);
53
+ }
52
54
  export function isImplementedBy(node: ISYNode<any, any, any, any>): node is LoadShedNode {
53
55
  return ["LUTLoadShed"].includes(node.nodeDefId);
54
56
  }
@@ -35,7 +35,7 @@ export class RelayNode extends Base<Drivers, Commands> implements Relay.Interfac
35
35
  async on() { return this.sendCommand("DON"); }
36
36
  async off() { return this.sendCommand("DOF"); }
37
37
  async query() { return this.sendCommand("QUERY"); }
38
- async adr(value: (0 | 1)) { return this.sendCommand("ADRPST", { value: value }); }
38
+ async adr(value: (0 | 1)) { return this.sendCommand("ADRPST", value); }
39
39
  public get status(): (0 | 100) {
40
40
  return this.drivers.ST?.value;
41
41
  }
@@ -50,7 +50,9 @@ export namespace Relay {
50
50
  export interface Interface extends Omit<InstanceType<typeof RelayNode>, keyof ISYDeviceNode<any, any, any, any>> {
51
51
  nodeDefId: "NCDRelay";
52
52
  }
53
- export function is(node: ISYNode<any, any, any, any>): node is RelayNode { return ["NCDRelay"].includes(node.nodeDefId); }
53
+ export function is(node: ISYNode<any, any, any, any>): node is RelayNode {
54
+ return ["NCDRelay"].includes(node.nodeDefId);
55
+ }
54
56
  export function isImplementedBy(node: ISYNode<any, any, any, any>): node is RelayNode {
55
57
  return ["NCDRelay"].includes(node.nodeDefId);
56
58
  }
@@ -47,7 +47,9 @@ export namespace MatterBridge {
47
47
  export interface Interface extends Omit<InstanceType<typeof MatterBridgeNode>, keyof ISYDeviceNode<any, any, any, any>> {
48
48
  nodeDefId: "CONTROLLER";
49
49
  }
50
- export function is(node: ISYNode<any, any, any, any>): node is MatterBridgeNode { return ["CONTROLLER"].includes(node.nodeDefId); }
50
+ export function is(node: ISYNode<any, any, any, any>): node is MatterBridgeNode {
51
+ return ["CONTROLLER"].includes(node.nodeDefId);
52
+ }
51
53
  export function isImplementedBy(node: ISYNode<any, any, any, any>): node is MatterBridgeNode {
52
54
  return ["CONTROLLER"].includes(node.nodeDefId);
53
55
  }
@@ -43,7 +43,7 @@ export class SceneNode extends Base<Drivers, Commands> implements Scene.Interfac
43
43
  constructor (isy: ISY, nodeInfo: NodeInfo) {
44
44
  super(isy, nodeInfo);
45
45
  }
46
- async on(value?: number) { return this.sendCommand("DON", { value: value }); }
46
+ async on(value?: number) { return this.sendCommand("DON", value); }
47
47
  async off() { return this.sendCommand("DOF"); }
48
48
  async fastOff() { return this.sendCommand("DFOF"); }
49
49
  async fastOn() { return this.sendCommand("DFON"); }
@@ -54,12 +54,12 @@ export class SceneNode extends Base<Drivers, Commands> implements Scene.Interfac
54
54
  async fadeStop() { return this.sendCommand("FDSTOP"); }
55
55
  async beep() { return this.sendCommand("BEEP"); }
56
56
  async query() { return this.sendCommand("QUERY"); }
57
- async mode(value: number) { return this.sendCommand("CLIMD", { value: value }); }
58
- async fanMode(value: (0 | 1)) { return this.sendCommand("CLIFS", { value: value }); }
59
- async heatSetpoint(value: number) { return this.sendCommand("CLISPH", { value: value }); }
60
- async coolSetpoint(value: number) { return this.sendCommand("CLISPC", { value: value }); }
61
- async heatSetpointShift(value: number) { return this.sendCommand("CLISPHD", { value: value }); }
62
- async coolSetpointShift(value: number) { return this.sendCommand("CLISPCD", { value: value }); }
57
+ async mode(value: number) { return this.sendCommand("CLIMD", value); }
58
+ async fanMode(value: (0 | 1)) { return this.sendCommand("CLIFS", value); }
59
+ async heatSetpoint(value: number) { return this.sendCommand("CLISPH", value); }
60
+ async coolSetpoint(value: number) { return this.sendCommand("CLISPC", value); }
61
+ async heatSetpointShift(value: number) { return this.sendCommand("CLISPHD", value); }
62
+ async coolSetpointShift(value: number) { return this.sendCommand("CLISPCD", value); }
63
63
  }
64
64
 
65
65
  NodeFactory.register(SceneNode);
@@ -68,7 +68,9 @@ export namespace Scene {
68
68
  export interface Interface extends Omit<InstanceType<typeof SceneNode>, keyof ISYDeviceNode<any, any, any, any>> {
69
69
  nodeDefId: "InsteonDimmer";
70
70
  }
71
- export function is(node: ISYNode<any, any, any, any>): node is SceneNode { return ["InsteonDimmer"].includes(node.nodeDefId); }
71
+ export function is(node: ISYNode<any, any, any, any>): node is SceneNode {
72
+ return ["InsteonDimmer"].includes(node.nodeDefId);
73
+ }
72
74
  export function isImplementedBy(node: ISYNode<any, any, any, any>): node is SceneNode {
73
75
  return ["InsteonDimmer"].includes(node.nodeDefId);
74
76
  }
@@ -45,7 +45,9 @@ export namespace Channel {
45
45
  export interface Interface extends Omit<InstanceType<typeof ChannelNode>, keyof ISYDeviceNode<any, any, any, any>> {
46
46
  nodeDefId: "EM3Channel";
47
47
  }
48
- export function is(node: ISYNode<any, any, any, any>): node is ChannelNode { return ["EM3Channel"].includes(node.nodeDefId); }
48
+ export function is(node: ISYNode<any, any, any, any>): node is ChannelNode {
49
+ return ["EM3Channel"].includes(node.nodeDefId);
50
+ }
49
51
  export function isImplementedBy(node: ISYNode<any, any, any, any>): node is ChannelNode {
50
52
  return ["EM3Channel", "EM3Main", "EM3MainChannel"].includes(node.nodeDefId);
51
53
  }
@@ -57,7 +57,9 @@ export namespace Em3MainChannel {
57
57
  export interface Interface extends Omit<InstanceType<typeof Em3MainChannelNode>, keyof ISYDeviceNode<any, any, any, any>> {
58
58
  nodeDefId: "EM3MainChannel";
59
59
  }
60
- export function is(node: ISYNode<any, any, any, any>): node is Em3MainChannelNode { return ["EM3MainChannel"].includes(node.nodeDefId); }
60
+ export function is(node: ISYNode<any, any, any, any>): node is Em3MainChannelNode {
61
+ return ["EM3MainChannel"].includes(node.nodeDefId);
62
+ }
61
63
  export function isImplementedBy(node: ISYNode<any, any, any, any>): node is Em3MainChannelNode {
62
64
  return ["EM3MainChannel"].includes(node.nodeDefId);
63
65
  }
@@ -48,7 +48,9 @@ export namespace Main {
48
48
  export interface Interface extends Omit<InstanceType<typeof MainNode>, keyof ISYDeviceNode<any, any, any, any>> {
49
49
  nodeDefId: "EM3Main";
50
50
  }
51
- export function is(node: ISYNode<any, any, any, any>): node is MainNode { return ["EM3Main"].includes(node.nodeDefId); }
51
+ export function is(node: ISYNode<any, any, any, any>): node is MainNode {
52
+ return ["EM3Main"].includes(node.nodeDefId);
53
+ }
52
54
  export function isImplementedBy(node: ISYNode<any, any, any, any>): node is MainNode {
53
55
  return ["EM3Main"].includes(node.nodeDefId);
54
56
  }
@@ -49,7 +49,9 @@ export namespace PulseCounter {
49
49
  export interface Interface extends Omit<InstanceType<typeof PulseCounterNode>, keyof ISYDeviceNode<any, any, any, any>> {
50
50
  nodeDefId: "EM3PulseCounter";
51
51
  }
52
- export function is(node: ISYNode<any, any, any, any>): node is PulseCounterNode { return ["EM3PulseCounter"].includes(node.nodeDefId); }
52
+ export function is(node: ISYNode<any, any, any, any>): node is PulseCounterNode {
53
+ return ["EM3PulseCounter"].includes(node.nodeDefId);
54
+ }
53
55
  export function isImplementedBy(node: ISYNode<any, any, any, any>): node is PulseCounterNode {
54
56
  return ["EM3PulseCounter"].includes(node.nodeDefId);
55
57
  }
@@ -48,7 +48,9 @@ export namespace Relay {
48
48
  export interface Interface extends Omit<InstanceType<typeof RelayNode>, keyof ISYDeviceNode<any, any, any, any>> {
49
49
  nodeDefId: "EM3Relay";
50
50
  }
51
- export function is(node: ISYNode<any, any, any, any>): node is RelayNode { return ["EM3Relay"].includes(node.nodeDefId); }
51
+ export function is(node: ISYNode<any, any, any, any>): node is RelayNode {
52
+ return ["EM3Relay"].includes(node.nodeDefId);
53
+ }
52
54
  export function isImplementedBy(node: ISYNode<any, any, any, any>): node is RelayNode {
53
55
  return ["EM3Relay"].includes(node.nodeDefId);
54
56
  }
@@ -41,7 +41,9 @@ export namespace TemperatureSensor {
41
41
  export interface Interface extends Omit<InstanceType<typeof TemperatureSensorNode>, keyof ISYDeviceNode<any, any, any, any>> {
42
42
  nodeDefId: "EM3TempSensor";
43
43
  }
44
- export function is(node: ISYNode<any, any, any, any>): node is TemperatureSensorNode { return ["EM3TempSensor"].includes(node.nodeDefId); }
44
+ export function is(node: ISYNode<any, any, any, any>): node is TemperatureSensorNode {
45
+ return ["EM3TempSensor"].includes(node.nodeDefId);
46
+ }
45
47
  export function isImplementedBy(node: ISYNode<any, any, any, any>): node is TemperatureSensorNode {
46
48
  return ["EM3TempSensor"].includes(node.nodeDefId);
47
49
  }
@@ -34,10 +34,11 @@ export class ColorSwitchNode extends Base<Drivers, Commands> implements ColorSwi
34
34
  this.drivers.GV2 = Driver.create("GV2", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Raw1ByteUnsignedValue, label: "Red", name: "red" });
35
35
  this.drivers.GV3 = Driver.create("GV3", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Raw1ByteUnsignedValue, label: "Green", name: "green" });
36
36
  this.drivers.GV4 = Driver.create("GV4", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Raw1ByteUnsignedValue, label: "Blue", name: "blue" });
37
+ this.drivers.GV1 = Driver.create("GV1", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Raw1ByteUnsignedValue, label: "Cold White", name: "coldWhite" });
37
38
  }
38
- async set(warmWhite?: number, red?: number, green?: number, blue?: number, duration?: number | number) { return this.sendCommand("DON", { GV0: warmWhite, GV2: red, GV3: green, GV4: blue, RR: duration }); }
39
- async fadeUp(component: ZWave.ColorComponent, startLevel?: number, duration?: number | number) { return this.sendCommand("FDUP", { ID: component, STARTLEVEL: startLevel, RR: duration }); }
40
- async fadeDown(component: ZWave.ColorComponent, startLevel?: number, duration?: number | number) { return this.sendCommand("FDDOWN", { ID: component, STARTLEVEL: startLevel, RR: duration }); }
39
+ async set(warmWhite?: number, red?: number, green?: number, blue?: number, duration?: number, coldWhite?: number) { return this.sendCommand("DON", { GV0: warmWhite, GV2: red, GV3: green, GV4: blue, RR: duration, GV1: coldWhite }); }
40
+ async fadeUp(component: ZWave.ColorComponent, startLevel?: number, duration?: number) { return this.sendCommand("FDUP", { ID: component, STARTLEVEL: startLevel, RR: duration }); }
41
+ async fadeDown(component: ZWave.ColorComponent, startLevel?: number, duration?: number) { return this.sendCommand("FDDOWN", { ID: component, STARTLEVEL: startLevel, RR: duration }); }
41
42
  async fadeStop(component: ZWave.ColorComponent) { return this.sendCommand("FDSTOP", { ID: component }); }
42
43
  async query() { return this.sendCommand("QUERY"); }
43
44
  public get warmWhite(): number {
@@ -52,6 +53,9 @@ export class ColorSwitchNode extends Base<Drivers, Commands> implements ColorSwi
52
53
  public get blue(): number {
53
54
  return this.drivers.GV4?.value;
54
55
  }
56
+ public get coldWhite(): number {
57
+ return this.drivers.GV1?.value;
58
+ }
55
59
  }
56
60
 
57
61
  NodeFactory.register(ColorSwitchNode);
@@ -60,7 +64,9 @@ export namespace ColorSwitch {
60
64
  export interface Interface extends Omit<InstanceType<typeof ColorSwitchNode>, keyof ISYDeviceNode<any, any, any, any>> {
61
65
  nodeDefId: "186";
62
66
  }
63
- export function is(node: ISYNode<any, any, any, any>): node is ColorSwitchNode { return ["186"].includes(node.nodeDefId); }
67
+ export function is(node: ISYNode<any, any, any, any>): node is ColorSwitchNode {
68
+ return ["186"].includes(node.nodeDefId);
69
+ }
64
70
  export function isImplementedBy(node: ISYNode<any, any, any, any>): node is ColorSwitchNode {
65
71
  return ["186"].includes(node.nodeDefId);
66
72
  }
@@ -69,15 +75,15 @@ export namespace ColorSwitch {
69
75
  }
70
76
  export const Node = ColorSwitchNode;
71
77
  export type Commands = {
72
- DON: ((GV0?: number, GV2?: number, GV3?: number, GV4?: number, RR?: number | number) => Promise<boolean>) & {
78
+ DON: ((GV0?: number, GV2?: number, GV3?: number, GV4?: number, RR?: number, GV1?: number) => Promise<boolean>) & {
73
79
  label: "Set";
74
80
  name: "set";
75
81
  };
76
- FDUP: ((ID: ZWave.ColorComponent, STARTLEVEL?: number, RR?: number | number) => Promise<boolean>) & {
82
+ FDUP: ((ID: ZWave.ColorComponent, STARTLEVEL?: number, RR?: number) => Promise<boolean>) & {
77
83
  label: "Fade Up";
78
84
  name: "fadeUp";
79
85
  };
80
- FDDOWN: ((ID: ZWave.ColorComponent, STARTLEVEL?: number, RR?: number | number) => Promise<boolean>) & {
86
+ FDDOWN: ((ID: ZWave.ColorComponent, STARTLEVEL?: number, RR?: number) => Promise<boolean>) & {
81
87
  label: "Fade Down";
82
88
  name: "fadeDown";
83
89
  };
@@ -115,5 +121,11 @@ export namespace ColorSwitch {
115
121
  label: "Blue";
116
122
  name: "blue";
117
123
  };
124
+ GV1: {
125
+ uom: UnitOfMeasure.Raw1ByteUnsignedValue;
126
+ value: number;
127
+ label: "Cold White";
128
+ name: "coldWhite";
129
+ };
118
130
  };
119
131
  }
@@ -41,18 +41,18 @@ export class DimmerSwitchNode extends Base<Drivers, Commands> implements DimmerS
41
41
  this.drivers.ST = Driver.create("ST", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Percent, label: "Status", name: "status" });
42
42
  this.drivers.ERR = Driver.create("ERR", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Index, label: "Responding", name: "responding" });
43
43
  }
44
- async on(value?: ZWave.PercentOpt | number, rampRate?: number | number) { return this.sendCommand("DON", { value: value, RR: rampRate }); }
44
+ async on(value?: number | ZWave.PercentOpt, rampRate?: number) { return this.sendCommand("DON", value, { RR: rampRate }); }
45
45
  async off() { return this.sendCommand("DOF"); }
46
46
  async fastOn() { return this.sendCommand("DFON"); }
47
47
  async fastOff() { return this.sendCommand("DFOF"); }
48
48
  async brighten() { return this.sendCommand("BRT"); }
49
49
  async dim() { return this.sendCommand("DIM"); }
50
- async fadeUp(startLevel?: ZWave.PercentOpt | number, rampRate?: number | number) { return this.sendCommand("FDUP", { STARTLEVEL: startLevel, RR: rampRate }); }
51
- async fadeDown(startLevel?: ZWave.PercentOpt | number, rampRate?: number | number) { return this.sendCommand("FDDOWN", { STARTLEVEL: startLevel, RR: rampRate }); }
52
- async fade(direction: ZWave.FadeDirection, startLevel?: ZWave.PercentOpt | number, rampRate?: number | number, direction2?: ZWave.FadeDirection, fadeRate2?: number | number) { return this.sendCommand("FADE", { DIR: direction, STARTLEVEL: startLevel, RR: rampRate, DIR2: direction2, STEP2: fadeRate2 }); }
50
+ async fadeUp(startLevel?: number | ZWave.PercentOpt, rampRate?: number) { return this.sendCommand("FDUP", { STARTLEVEL: startLevel, RR: rampRate }); }
51
+ async fadeDown(startLevel?: number | ZWave.PercentOpt, rampRate?: number) { return this.sendCommand("FDDOWN", { STARTLEVEL: startLevel, RR: rampRate }); }
52
+ async fade(direction: ZWave.FadeDirection, startLevel?: number | ZWave.PercentOpt, rampRate?: number, direction2?: ZWave.FadeDirection, fadeRate2?: number) { return this.sendCommand("FADE", { DIR: direction, STARTLEVEL: startLevel, RR: rampRate, DIR2: direction2, STEP2: fadeRate2 }); }
53
53
  async fadeStop() { return this.sendCommand("FDSTOP"); }
54
54
  async query() { return this.sendCommand("QUERY"); }
55
- async setConfiguration(parameterNumber: number, parameterValue: number | number | number | number | number | number) { return this.sendCommand("CONFIG", { NUM: parameterNumber, VAL: parameterValue }); }
55
+ async setConfiguration(parameterNumber: number, parameterValue: number) { return this.sendCommand("CONFIG", { NUM: parameterNumber, VAL: parameterValue }); }
56
56
  async writeChanges() { return this.sendCommand("WDU"); }
57
57
  public get status(): number {
58
58
  return this.drivers.ST?.value;
@@ -68,7 +68,9 @@ export namespace DimmerSwitch {
68
68
  export interface Interface extends Omit<InstanceType<typeof DimmerSwitchNode>, keyof ISYDeviceNode<any, any, any, any>> {
69
69
  nodeDefId: "119";
70
70
  }
71
- export function is(node: ISYNode<any, any, any, any>): node is DimmerSwitchNode { return ["119"].includes(node.nodeDefId); }
71
+ export function is(node: ISYNode<any, any, any, any>): node is DimmerSwitchNode {
72
+ return ["119"].includes(node.nodeDefId);
73
+ }
72
74
  export function isImplementedBy(node: ISYNode<any, any, any, any>): node is DimmerSwitchNode {
73
75
  return ["119"].includes(node.nodeDefId);
74
76
  }
@@ -77,7 +79,7 @@ export namespace DimmerSwitch {
77
79
  }
78
80
  export const Node = DimmerSwitchNode;
79
81
  export type Commands = {
80
- DON: ((value?: ZWave.PercentOpt | number, RR?: number | number) => Promise<boolean>) & {
82
+ DON: ((value?: number | ZWave.PercentOpt, RR?: number) => Promise<boolean>) & {
81
83
  label: "On";
82
84
  name: "on";
83
85
  };
@@ -101,15 +103,15 @@ export namespace DimmerSwitch {
101
103
  label: "Dim";
102
104
  name: "dim";
103
105
  };
104
- FDUP: ((STARTLEVEL?: ZWave.PercentOpt | number, RR?: number | number) => Promise<boolean>) & {
106
+ FDUP: ((STARTLEVEL?: number | ZWave.PercentOpt, RR?: number) => Promise<boolean>) & {
105
107
  label: "Fade Up";
106
108
  name: "fadeUp";
107
109
  };
108
- FDDOWN: ((STARTLEVEL?: ZWave.PercentOpt | number, RR?: number | number) => Promise<boolean>) & {
110
+ FDDOWN: ((STARTLEVEL?: number | ZWave.PercentOpt, RR?: number) => Promise<boolean>) & {
109
111
  label: "Fade Down";
110
112
  name: "fadeDown";
111
113
  };
112
- FADE: ((DIR: ZWave.FadeDirection, STARTLEVEL?: ZWave.PercentOpt | number, RR?: number | number, DIR2?: ZWave.FadeDirection, STEP2?: number | number) => Promise<boolean>) & {
114
+ FADE: ((DIR: ZWave.FadeDirection, STARTLEVEL?: number | ZWave.PercentOpt, RR?: number, DIR2?: ZWave.FadeDirection, STEP2?: number) => Promise<boolean>) & {
113
115
  label: "Fade";
114
116
  name: "fade";
115
117
  };
@@ -121,7 +123,7 @@ export namespace DimmerSwitch {
121
123
  label: "Query";
122
124
  name: "query";
123
125
  };
124
- CONFIG: ((NUM: number, VAL: number | number | number | number | number | number) => Promise<boolean>) & {
126
+ CONFIG: ((NUM: number, VAL: number) => Promise<boolean>) & {
125
127
  label: "Set Configuration";
126
128
  name: "setConfiguration";
127
129
  };
@@ -35,7 +35,7 @@ export class RelayNode extends Base<Drivers, Commands> implements Relay.Interfac
35
35
  async on() { return this.sendCommand("DON"); }
36
36
  async off() { return this.sendCommand("DOF"); }
37
37
  async query() { return this.sendCommand("QUERY"); }
38
- async adr(value: ) { return this.sendCommand("ADRPST", { value: value }); }
38
+ async adr(value: ) { return this.sendCommand("ADRPST", value); }
39
39
  public get status(): {
40
40
 
41
41
  return this.drivers.ST?.value;
@@ -53,7 +53,9 @@ export namespace Relay {
53
53
  export interface Interface extends Omit<InstanceType<typeof RelayNode>, keyof ISYDeviceNode<any, any, any, any>> {
54
54
  nodeDefId: "RelayLoadControl";
55
55
  }
56
- export function is(node: ISYNode<any, any, any, any>): node is RelayNode { return ["RelayLoadControl"].includes(node.nodeDefId); }
56
+ export function is(node: ISYNode<any, any, any, any>): node is RelayNode {
57
+ return ["RelayLoadControl"].includes(node.nodeDefId);
58
+ }
57
59
  export function isImplementedBy(node: ISYNode<any, any, any, any>): node is RelayNode {
58
60
  return ["RelayLoadControl"].includes(node.nodeDefId);
59
61
  }
@@ -44,15 +44,15 @@ export class ThermostatNode extends Base<Drivers, Commands> implements Thermosta
44
44
  this.drivers.CLISMD = Driver.create("CLISMD", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Unknown, label: "Schedule Mode", name: "scheduleMode" });
45
45
  this.drivers.ERR = Driver.create("ERR", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Unknown, label: "Responding", name: "responding" });
46
46
  }
47
- async updateHeatSetpoint(value: ) { return this.sendCommand("CLISPH", { value: value }); }
48
- async updateCoolSetpoint(value: ) { return this.sendCommand("CLISPC", { value: value }); }
49
- async updateMode(value: ) { return this.sendCommand("CLIMD", { value: value }); }
50
- async updateFanMode(value: ) { return this.sendCommand("CLIFS", { value: value }); }
51
- async updateScheduleMode(value: ) { return this.sendCommand("CLISMD", { value: value }); }
52
- async heatSetpointShift(value: ) { return this.sendCommand("CLISPHD", { value: value }); }
53
- async coolSetpointShift(value: ) { return this.sendCommand("CLISPCD", { value: value }); }
47
+ async updateHeatSetpoint(value: ) { return this.sendCommand("CLISPH", value); }
48
+ async updateCoolSetpoint(value: ) { return this.sendCommand("CLISPC", value); }
49
+ async updateMode(value: ) { return this.sendCommand("CLIMD", value); }
50
+ async updateFanMode(value: ) { return this.sendCommand("CLIFS", value); }
51
+ async updateScheduleMode(value: ) { return this.sendCommand("CLISMD", value); }
52
+ async heatSetpointShift(value: ) { return this.sendCommand("CLISPHD", value); }
53
+ async coolSetpointShift(value: ) { return this.sendCommand("CLISPCD", value); }
54
54
  async query() { return this.sendCommand("QUERY"); }
55
- async adr(value: ) { return this.sendCommand("ADRPST", { value: value }); }
55
+ async adr(value: ) { return this.sendCommand("ADRPST", value); }
56
56
  public get temperature(): {
57
57
 
58
58
  return this.drivers.ST?.value;
@@ -105,7 +105,9 @@ export namespace Thermostat {
105
105
  export interface Interface extends Omit<InstanceType<typeof ThermostatNode>, keyof ISYDeviceNode<any, any, any, any>> {
106
106
  nodeDefId: "Thermostat";
107
107
  }
108
- export function is(node: ISYNode<any, any, any, any>): node is ThermostatNode { return ["Thermostat"].includes(node.nodeDefId); }
108
+ export function is(node: ISYNode<any, any, any, any>): node is ThermostatNode {
109
+ return ["Thermostat"].includes(node.nodeDefId);
110
+ }
109
111
  export function isImplementedBy(node: ISYNode<any, any, any, any>): node is ThermostatNode {
110
112
  return ["Thermostat"].includes(node.nodeDefId);
111
113
  }
package/src/ISY.ts CHANGED
@@ -1,9 +1,9 @@
1
- import WebSocket from 'faye-websocket';
1
+
2
2
  import { writeFile } from 'fs';
3
3
 
4
4
  import { Parser, type ParserOptions } from 'xml2js';
5
5
  import { parseBooleans, parseNumbers } from 'xml2js/lib/processors.js';
6
-
6
+ import WebSocket from 'ws';
7
7
  import axios, { type AxiosRequestConfig } from 'axios';
8
8
  import { EventEmitter } from 'events';
9
9
  import { format, Logger, loggers, type LeveledLogMethod } from 'winston';
@@ -27,6 +27,9 @@ import { NodeFactory } from './Devices/NodeFactory.js';
27
27
  import { ISYError } from './ISYError.js';
28
28
  import type { Config } from './Model/Config.js';
29
29
  import { findPackageJson } from './Utils.js';
30
+ import { textChangeRangeIsUnchanged } from 'typescript';
31
+ import type { ClientRequestArgs } from 'http';
32
+ import { promisify } from 'util';
30
33
 
31
34
 
32
35
 
@@ -94,9 +97,9 @@ interface ISYConfig {
94
97
  port: number;
95
98
  protocol: 'http' | 'https';
96
99
  username: string;
97
-
98
100
  socketPath?: string;
99
-
101
+ axiosOptions?: AxiosRequestConfig;
102
+ webSocketOptions?: WebSocket.ClientOptions & ClientRequestArgs;
100
103
  // #endregion Properties (8)
101
104
  }
102
105
 
@@ -135,7 +138,7 @@ export class ISY extends EventEmitter implements Disposable {
135
138
  public productName = 'eisy';
136
139
  public firmwareVersion: any;
137
140
  public vendorName = 'Universal Devices, Inc.';
138
- public webSocket: WebSocket.Client;
141
+ public webSocket: WebSocket;
139
142
 
140
143
  public apiVersion: string;
141
144
 
@@ -162,7 +165,7 @@ export class ISY extends EventEmitter implements Disposable {
162
165
  };
163
166
  this.protocol = config.protocol;
164
167
  this.wsprotocol = config.protocol === 'https' ? 'wss' : 'ws';
165
-
168
+ this.socketPath = config.socketPath;
166
169
  this.axiosOptions = {
167
170
  baseURL: `${this.protocol}://${this.host}:${this.port}`,
168
171
  validateStatus: (status) => status >= 200 && status < 300
@@ -174,6 +177,15 @@ export class ISY extends EventEmitter implements Disposable {
174
177
  this.axiosOptions.auth = { username: this.credentials.username, password: this.credentials.password };
175
178
  }
176
179
 
180
+ this.webSocketOptions = { origin: 'com.universal-devices.websockets.isy' };
181
+
182
+ if (this.socketPath) {
183
+ this.webSocketOptions.socketPath = this.socketPath;
184
+ } else {
185
+ this.webSocketOptions.auth = `${this.credentials.username}:${this.credentials.password}`;
186
+ }
187
+
188
+
177
189
  //this.elkEnabled = config.elkEnabled ?? false;
178
190
 
179
191
  this.nodesLoaded = false;
@@ -355,29 +367,40 @@ export class ISY extends EventEmitter implements Disposable {
355
367
  try {
356
368
  await this.loadConfig();
357
369
  await this.loadNodes();
370
+ await this.refreshStatuses();
358
371
  await this.loadVariables(VariableType.Integer);
359
372
  await this.loadVariables(VariableType.State);
360
- await this.refreshStatuses();
361
373
  await this.#finishInitialize(true);
362
374
  return true;
363
375
  } catch (e) {
364
376
  if (e instanceof ISYInitializationError) {
377
+ if(e.step === 'variables')
378
+ {
379
+ this.logger.warn(`Error loading variables: ${e.message}`);
380
+ await this.#finishInitialize(true);
381
+ return true;
382
+ }
365
383
  this.logger.error(`Error initializing ISY during (${e.step}): ${e.message}`);
384
+ return false;
366
385
  } else {
367
386
  this.logger.error(`Error initializing ISY: ${e.message}`);
387
+ return false;
368
388
  }
369
389
  throw e;
370
390
  } finally {
371
391
  if (this.nodesLoaded !== true) {
372
- that.#finishInitialize(false);
392
+ await that.#finishInitialize(false);
373
393
  }
374
394
  }
375
395
  }
376
396
 
397
+ webSocketOptions: WebSocket.ClientOptions & ClientRequestArgs;
398
+
377
399
  public async initializeWebSocket() {
378
400
  try {
379
401
  const that = this;
380
- const auth = `Basic ${Buffer.from(`${this.credentials.username}:${this.credentials.password}`).toString('base64')}`;
402
+
403
+ //const auth = `Basic ${Buffer.from(`${this.credentials.username}:${this.credentials.password}`).toString('base64')}`;
381
404
  this.logger.info(`Opening webSocket: ${this.wsprotocol}://${this.address}/rest/subscribe`);
382
405
  if (this.webSocket) {
383
406
  try {
@@ -386,27 +409,33 @@ export class ISY extends EventEmitter implements Disposable {
386
409
  this.logger.warn(`Error closing existing websocket: ${e.message}`);
387
410
  }
388
411
  }
389
- this.webSocket = new WebSocket.Client(`${this.wsprotocol}://${this.address}/rest/subscribe`, ['ISYSUB'], {
390
- headers: {
412
+
413
+ /*headers: {
391
414
  Origin: 'com.universal-devices.websockets.isy',
392
- Authorization: auth
415
+ auth
393
416
  },
394
- ping: 10
395
- });
396
417
 
397
- this.lastActivity = new Date();
418
+ ping: 10*/
419
+ let p = new Promise<void>((resolve, reject) => {
398
420
 
399
- this.webSocket
400
- .on('message', (event: any) => {
401
- that.logger.silly(`Received message: ${Utils.logStringify(event.data, 1)}`);
402
- that.handleWebSocketMessage(event);
421
+ this.webSocket = new WebSocket(`${this.wsprotocol}://${this.address}/rest/subscribe`, ['ISYSUB'], this.webSocketOptions);
422
+ this.lastActivity = new Date();
423
+ //this.webSocket.onmessage = (event) => {this.handleWebSocketMessage()
424
+ this.webSocket.on('open',() => {
425
+ this.logger.info('Websocket connection open');
426
+ resolve();
427
+ })
428
+ .on('message',(data,b)=> {
429
+ that.logger.silly(`Received message: ${Utils.logStringify(data, 1)}`);
430
+ that.handleWebSocketMessage({data: data});
403
431
  })
404
432
  .on('error', (err: any, response: any) => {
405
- that.logger.warn(`Websocket subscription error: ${Utils.logStringify(err, 1)}`);
433
+ that.logger.warn(`Websocket subscription error: ${err}`);
434
+ return reject(new ISYInitializationError('Websocket subscription error', 'websocket'));
406
435
  })
407
436
  .on('fail', (data: string, response: any) => {
408
437
  that.logger.warn(`Websocket subscription failure: ${data}`);
409
- throw new Error('Websocket subscription failure');
438
+ return reject(new Error('Websocket subscription failure'));
410
439
  })
411
440
  .on('abort', () => {
412
441
  that.logger.warn('Websocket subscription aborted.');
@@ -414,8 +443,11 @@ export class ISY extends EventEmitter implements Disposable {
414
443
  })
415
444
  .on('timeout', (ms: string) => {
416
445
  that.logger.warn(`Websocket subscription timed out after ${ms} milliseconds.`);
417
- throw new Error('Timeout contacting ISY');
446
+ return reject(new Error('Timeout contacting ISY'));
447
+ //throw new Error('Timeout contacting ISY');
418
448
  });
449
+ });
450
+ return p;
419
451
  } catch (e) {
420
452
  throw new ISYInitializationError(e, 'websocket');
421
453
  }
@@ -538,7 +570,7 @@ export class ISY extends EventEmitter implements Disposable {
538
570
  if (typeof parameters == 'object') {
539
571
  var q = parameters as Record<P, string | number>;
540
572
  for (const paramName in q) {
541
- if (paramName === 'value') {
573
+ if (paramName === 'value' || paramName === 'default') {
542
574
  uriToUse += `/${q[paramName]}`;
543
575
  continue;
544
576
  }
@@ -646,7 +678,7 @@ export class ISY extends EventEmitter implements Disposable {
646
678
  }
647
679
  }
648
680
 
649
- #finishInitialize(success: boolean) {
681
+ async #finishInitialize(success: boolean) {
650
682
  if (!this.nodesLoaded) {
651
683
  this.nodesLoaded = true;
652
684
  //initializeCompleted();
@@ -656,10 +688,11 @@ export class ISY extends EventEmitter implements Disposable {
656
688
  // }
657
689
  if (this.enableWebSocket) {
658
690
  this.guardianTimer = setInterval(this.#guardian.bind(this), 60000);
659
- this.initializeWebSocket();
691
+ return this.initializeWebSocket();
660
692
  }
661
693
  }
662
694
  }
695
+
663
696
  }
664
697
 
665
698
  async #guardian() {
@@ -11,10 +11,10 @@ import internal from 'stream';
11
11
  import type { Driver } from '../../Definitions/Global/Drivers.js';
12
12
  import { ISY } from '../../ISY.js';
13
13
  import type { ISYDevice } from '../../ISYDevice.js';
14
- import { DeviceToClusterMap, MappingRegistry, type ClusterMapping, type BehaviorMapping } from '../../Model/ClusterMap.js';
15
14
  import { server } from 'typescript';
16
15
  import type { ISYNode } from '../../ISYNode.js';
17
16
  import type { Family } from '../../Definitions/index.js';
17
+ import { MappingRegistry, type BehaviorMapping, type DeviceToClusterMap } from '../Mappings/MappingRegistry.js';
18
18
 
19
19
 
20
20
 
@@ -4,8 +4,9 @@ import '@project-chip/matter.js/device';
4
4
  import { Converter } from '../../Converters.js';
5
5
  import type { Constructor } from '../../Devices/Constructor.js';
6
6
  import type { DriversOf, ISYNode } from '../../ISYNode.js';
7
- import { BehaviorMapping } from '../../Model/ClusterMap.js';
7
+
8
8
  import { ISYBridgedDeviceBehavior } from './ISYBridgedDeviceBehavior.js';
9
+ import type { BehaviorMapping } from '../Mappings/MappingRegistry.js';
9
10
 
10
11
  // #region Type aliases (6)
11
12
 
@@ -8,7 +8,7 @@ import type { MaybePromise } from '@project-chip/matter.js/util';
8
8
  import { DriverType } from '../../../Definitions/Global/Drivers.js';
9
9
  import { InsteonDimmableDevice } from '../../../Devices/Insteon/InsteonDimmableDevice.js';
10
10
  import { InsteonRelayDevice } from '../../../Devices/Insteon/InsteonRelayDevice.js';
11
- import { MappingRegistry } from '../../../Model/ClusterMap.js';
11
+
12
12
  import { ClusterForBehavior, ISYClusterBehavior, type PropertyChange } from '../ISYClusterBehavior.js';
13
13
 
14
14
  import { Converter } from '../../../Converters.js';
@@ -53,6 +53,7 @@ export class ISYDimmableBehavior extends ISYClusterBehavior(DimmableLightRequire
53
53
 
54
54
  override setLevel(level: number): MaybePromise<void> {
55
55
  level = Converter.Matter.LevelFrom0To255.LightingLevel.from(level);
56
+
56
57
  if (level > 0) {
57
58
  return this.device.on(level);
58
59
  } else {