isy-nodejs 1.0.2-alpha.3 → 1.0.2-alpha.4

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 (417) hide show
  1. package/dist/esm/CodeGeneration/NodeClassFactory.js +76 -33
  2. package/dist/esm/CodeGeneration/NodeClassFactory.js.map +1 -1
  3. package/dist/esm/CodeGeneration/NodeFactory.js +245 -0
  4. package/dist/esm/CodeGeneration/NodeFactory.js.map +1 -0
  5. package/dist/esm/Converters.js +15 -1
  6. package/dist/esm/Converters.js.map +1 -1
  7. package/dist/esm/Definitions/Global/Drivers.js.map +1 -1
  8. package/dist/esm/Definitions/Global/Events.js.map +1 -1
  9. package/dist/esm/Devices/ISYDevice.js +0 -33
  10. package/dist/esm/Devices/ISYDevice.js.map +1 -1
  11. package/dist/esm/Devices/ISYDeviceNode.js +2 -2
  12. package/dist/esm/Devices/ISYDeviceNode.js.map +1 -1
  13. package/dist/esm/Devices/Insteon/Generated/AlertModuleArmed.js +49 -0
  14. package/dist/esm/Devices/Insteon/Generated/AlertModuleArmed.js.map +1 -0
  15. package/dist/esm/Devices/Insteon/Generated/AlertModuleSiren.js +54 -0
  16. package/dist/esm/Devices/Insteon/Generated/AlertModuleSiren.js.map +1 -0
  17. package/dist/esm/Devices/Insteon/Generated/BallastRelayLampSwitch.js +54 -0
  18. package/dist/esm/Devices/Insteon/Generated/BallastRelayLampSwitch.js.map +1 -0
  19. package/dist/esm/Devices/Insteon/Generated/BinaryAlarm.js +46 -0
  20. package/dist/esm/Devices/Insteon/Generated/BinaryAlarm.js.map +1 -0
  21. package/dist/esm/Devices/Insteon/Generated/BinaryControl.js +46 -0
  22. package/dist/esm/Devices/Insteon/Generated/BinaryControl.js.map +1 -0
  23. package/dist/esm/Devices/Insteon/Generated/DimmerLamp.js +75 -0
  24. package/dist/esm/Devices/Insteon/Generated/DimmerLamp.js.map +1 -0
  25. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitch.js +78 -0
  26. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitch.js.map +1 -0
  27. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitchLed.js +80 -0
  28. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitchLed.js.map +1 -0
  29. package/dist/esm/Devices/Insteon/Generated/DimmerMotorSwitch.js +74 -0
  30. package/dist/esm/Devices/Insteon/Generated/DimmerMotorSwitch.js.map +1 -0
  31. package/dist/esm/Devices/Insteon/Generated/DimmerSwitch.js +40 -0
  32. package/dist/esm/Devices/Insteon/Generated/DimmerSwitch.js.map +1 -0
  33. package/dist/esm/Devices/Insteon/Generated/DoorLock.js +45 -0
  34. package/dist/esm/Devices/Insteon/Generated/DoorLock.js.map +1 -0
  35. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Input.js +42 -0
  36. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Input.js.map +1 -0
  37. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Output.js +47 -0
  38. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Output.js.map +1 -0
  39. package/dist/esm/Devices/Insteon/Generated/EzrainInput.js +42 -0
  40. package/dist/esm/Devices/Insteon/Generated/EzrainInput.js.map +1 -0
  41. package/dist/esm/Devices/Insteon/Generated/EzrainOutput.js +49 -0
  42. package/dist/esm/Devices/Insteon/Generated/EzrainOutput.js.map +1 -0
  43. package/dist/esm/Devices/Insteon/Generated/FanLincMotor.js +53 -0
  44. package/dist/esm/Devices/Insteon/Generated/FanLincMotor.js.map +1 -0
  45. package/dist/esm/Devices/Insteon/Generated/I3KeypadFlags.js +93 -0
  46. package/dist/esm/Devices/Insteon/Generated/I3KeypadFlags.js.map +1 -0
  47. package/dist/esm/Devices/Insteon/Generated/I3PaddleFlags.js +81 -0
  48. package/dist/esm/Devices/Insteon/Generated/I3PaddleFlags.js.map +1 -0
  49. package/dist/esm/Devices/Insteon/Generated/ImeterSolo.js +49 -0
  50. package/dist/esm/Devices/Insteon/Generated/ImeterSolo.js.map +1 -0
  51. package/dist/esm/Devices/Insteon/Generated/IrLincTx.js +39 -0
  52. package/dist/esm/Devices/Insteon/Generated/IrLincTx.js.map +1 -0
  53. package/dist/esm/Devices/Insteon/Generated/KeypadButton.js +46 -0
  54. package/dist/esm/Devices/Insteon/Generated/KeypadButton.js.map +1 -0
  55. package/dist/esm/Devices/Insteon/Generated/KeypadDimmer.js +78 -0
  56. package/dist/esm/Devices/Insteon/Generated/KeypadDimmer.js.map +1 -0
  57. package/dist/esm/Devices/Insteon/Generated/KeypadRelay.js +56 -0
  58. package/dist/esm/Devices/Insteon/Generated/KeypadRelay.js.map +1 -0
  59. package/dist/esm/Devices/Insteon/Generated/OnOffControl.js +39 -0
  60. package/dist/esm/Devices/Insteon/Generated/OnOffControl.js.map +1 -0
  61. package/dist/esm/Devices/Insteon/Generated/Pir2844.js +64 -0
  62. package/dist/esm/Devices/Insteon/Generated/Pir2844.js.map +1 -0
  63. package/dist/esm/Devices/Insteon/Generated/Pir2844OnOff.js +50 -0
  64. package/dist/esm/Devices/Insteon/Generated/Pir2844OnOff.js.map +1 -0
  65. package/dist/esm/Devices/Insteon/Generated/Pir2844c.js +64 -0
  66. package/dist/esm/Devices/Insteon/Generated/Pir2844c.js.map +1 -0
  67. package/dist/esm/Devices/Insteon/Generated/RelayLamp.js +54 -0
  68. package/dist/esm/Devices/Insteon/Generated/RelayLamp.js.map +1 -0
  69. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js +56 -0
  70. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js.map +1 -0
  71. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitchLed.js +58 -0
  72. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitchLed.js.map +1 -0
  73. package/dist/esm/Devices/Insteon/Generated/RelaySwitch.js +42 -0
  74. package/dist/esm/Devices/Insteon/Generated/RelaySwitch.js.map +1 -0
  75. package/dist/esm/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.js +44 -0
  76. package/dist/esm/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.js.map +1 -0
  77. package/dist/esm/Devices/Insteon/Generated/RemoteLinc2.js +42 -0
  78. package/dist/esm/Devices/Insteon/Generated/RemoteLinc2.js.map +1 -0
  79. package/dist/esm/Devices/Insteon/Generated/Siren.js +66 -0
  80. package/dist/esm/Devices/Insteon/Generated/Siren.js.map +1 -0
  81. package/dist/esm/Devices/Insteon/Generated/SirenAlert.js +35 -0
  82. package/dist/esm/Devices/Insteon/Generated/SirenAlert.js.map +1 -0
  83. package/dist/esm/Devices/Insteon/Generated/TempLinc.js +83 -0
  84. package/dist/esm/Devices/Insteon/Generated/TempLinc.js.map +1 -0
  85. package/dist/esm/Devices/Insteon/Generated/Thermostat.js +83 -0
  86. package/dist/esm/Devices/Insteon/Generated/Thermostat.js.map +1 -0
  87. package/dist/esm/Devices/Insteon/Generated/X10.js +49 -0
  88. package/dist/esm/Devices/Insteon/Generated/X10.js.map +1 -0
  89. package/dist/esm/Devices/Insteon/Generated/index.js +39 -0
  90. package/dist/esm/Devices/Insteon/Generated/index.js.map +1 -0
  91. package/dist/esm/Devices/Insteon/InsteonBaseDevice.js +3 -4
  92. package/dist/esm/Devices/Insteon/InsteonBaseDevice.js.map +1 -1
  93. package/dist/esm/Devices/Insteon/InsteonFanDevice.js +2 -2
  94. package/dist/esm/Devices/Insteon/InsteonFanDevice.js.map +1 -1
  95. package/dist/esm/Devices/Insteon/InsteonRelayDevice.js.map +1 -1
  96. package/dist/esm/Devices/Insteon/KeypadButton.js +11 -11
  97. package/dist/esm/Devices/Insteon/KeypadButton.js.map +1 -1
  98. package/dist/esm/Devices/Insteon/index.js +16 -29
  99. package/dist/esm/Devices/Insteon/index.js.map +1 -1
  100. package/dist/esm/Devices/Lutron/Generated/LoadShed.js +45 -0
  101. package/dist/esm/Devices/Lutron/Generated/LoadShed.js.map +1 -0
  102. package/dist/esm/Devices/NodeFactory.js +45 -8
  103. package/dist/esm/Devices/NodeFactory.js.map +1 -1
  104. package/dist/esm/Devices/Scene/index.js +2 -2
  105. package/dist/esm/Devices/Scene/index.js.map +1 -1
  106. package/dist/esm/Devices/UDI/Generated/Channel.js +42 -0
  107. package/dist/esm/Devices/UDI/Generated/Channel.js.map +1 -0
  108. package/dist/esm/Devices/UDI/Generated/Em3MainChannel.js +54 -0
  109. package/dist/esm/Devices/UDI/Generated/Em3MainChannel.js.map +1 -0
  110. package/dist/esm/Devices/UDI/Generated/Main.js +45 -0
  111. package/dist/esm/Devices/UDI/Generated/Main.js.map +1 -0
  112. package/dist/esm/Devices/UDI/Generated/PulseCounter.js +46 -0
  113. package/dist/esm/Devices/UDI/Generated/PulseCounter.js.map +1 -0
  114. package/dist/esm/Devices/UDI/Generated/Relay.js +45 -0
  115. package/dist/esm/Devices/UDI/Generated/Relay.js.map +1 -0
  116. package/dist/esm/Devices/UDI/Generated/TemperatureSensor.js +38 -0
  117. package/dist/esm/Devices/UDI/Generated/TemperatureSensor.js.map +1 -0
  118. package/dist/esm/Devices/ZWave/Generated/ColorSwitch.js +57 -0
  119. package/dist/esm/Devices/ZWave/Generated/ColorSwitch.js.map +1 -0
  120. package/dist/esm/Devices/ZWave/Generated/DimmerSwitch.js +65 -0
  121. package/dist/esm/Devices/ZWave/Generated/DimmerSwitch.js.map +1 -0
  122. package/dist/esm/Devices/ZWave/Generated/index.js +3 -0
  123. package/dist/esm/Devices/ZWave/Generated/index.js.map +1 -0
  124. package/dist/esm/Devices/ZWave/index.js +1 -0
  125. package/dist/esm/Devices/ZWave/index.js.map +1 -1
  126. package/dist/esm/Devices/index.js +9 -3
  127. package/dist/esm/Devices/index.js.map +1 -1
  128. package/dist/esm/ISY.js +13 -8
  129. package/dist/esm/ISY.js.map +1 -1
  130. package/dist/esm/ISYDevice.js +7 -1
  131. package/dist/esm/ISYDevice.js.map +1 -1
  132. package/dist/esm/ISYNode.js +13 -4
  133. package/dist/esm/ISYNode.js.map +1 -1
  134. package/dist/esm/ISYScene.js +13 -12
  135. package/dist/esm/ISYScene.js.map +1 -1
  136. package/dist/esm/Matter/Behaviors/BehaviorRegistry.js +13 -0
  137. package/dist/esm/Matter/Behaviors/BehaviorRegistry.js.map +1 -0
  138. package/dist/esm/Matter/Behaviors/Insteon/ISYOnOffBehavior.js +3 -0
  139. package/dist/esm/Matter/Behaviors/Insteon/ISYOnOffBehavior.js.map +1 -1
  140. package/dist/esm/Matter/Bridge/Server.js +65 -56
  141. package/dist/esm/Matter/Bridge/Server.js.map +1 -1
  142. package/dist/esm/Matter/Mappings/Insteon.js +28 -10
  143. package/dist/esm/Matter/Mappings/Insteon.js.map +1 -1
  144. package/dist/esm/Model/ClassDefinition.js +22 -3
  145. package/dist/esm/Model/ClassDefinition.js.map +1 -1
  146. package/dist/esm/Model/ClusterMap.js +45 -19
  147. package/dist/esm/Model/ClusterMap.js.map +1 -1
  148. package/dist/esm/Model/NodeInfo.js +1 -1
  149. package/dist/esm/Model/NodeInfo.js.map +1 -1
  150. package/dist/esm/Utils.js.map +1 -1
  151. package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts +6 -3
  152. package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts.map +1 -1
  153. package/dist/esm/types/CodeGeneration/NodeFactory.d.ts +75 -0
  154. package/dist/esm/types/CodeGeneration/NodeFactory.d.ts.map +1 -0
  155. package/dist/esm/types/Converters.d.ts +9 -3
  156. package/dist/esm/types/Converters.d.ts.map +1 -1
  157. package/dist/esm/types/Definitions/Global/Drivers.d.ts.map +1 -1
  158. package/dist/esm/types/Definitions/Global/Events.d.ts +2 -2
  159. package/dist/esm/types/Definitions/Global/Events.d.ts.map +1 -1
  160. package/dist/esm/types/Devices/DeviceMap.d.ts +1 -1
  161. package/dist/esm/types/Devices/DeviceMap.d.ts.map +1 -1
  162. package/dist/esm/types/Devices/EndpointFor.d.ts +7 -5
  163. package/dist/esm/types/Devices/EndpointFor.d.ts.map +1 -1
  164. package/dist/esm/types/Devices/ISYDevice.d.ts.map +1 -1
  165. package/dist/esm/types/Devices/ISYDeviceNode.d.ts +5 -13
  166. package/dist/esm/types/Devices/ISYDeviceNode.d.ts.map +1 -1
  167. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleArmed.d.ts +76 -0
  168. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleArmed.d.ts.map +1 -0
  169. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleSiren.d.ts +88 -0
  170. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleSiren.d.ts.map +1 -0
  171. package/dist/esm/types/Devices/Insteon/Generated/BallastRelayLampSwitch.d.ts +88 -0
  172. package/dist/esm/types/Devices/Insteon/Generated/BallastRelayLampSwitch.d.ts.map +1 -0
  173. package/dist/esm/types/Devices/Insteon/Generated/BinaryAlarm.d.ts +64 -0
  174. package/dist/esm/types/Devices/Insteon/Generated/BinaryAlarm.d.ts.map +1 -0
  175. package/dist/esm/types/Devices/Insteon/Generated/BinaryControl.d.ts +64 -0
  176. package/dist/esm/types/Devices/Insteon/Generated/BinaryControl.d.ts.map +1 -0
  177. package/dist/esm/types/Devices/Insteon/Generated/DimmerLamp.d.ts +144 -0
  178. package/dist/esm/types/Devices/Insteon/Generated/DimmerLamp.d.ts.map +1 -0
  179. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitch.d.ts +150 -0
  180. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitch.d.ts.map +1 -0
  181. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitchLed.d.ts +156 -0
  182. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitchLed.d.ts.map +1 -0
  183. package/dist/esm/types/Devices/Insteon/Generated/DimmerMotorSwitch.d.ts +138 -0
  184. package/dist/esm/types/Devices/Insteon/Generated/DimmerMotorSwitch.d.ts.map +1 -0
  185. package/dist/esm/types/Devices/Insteon/Generated/DimmerSwitch.d.ts +51 -0
  186. package/dist/esm/types/Devices/Insteon/Generated/DimmerSwitch.d.ts.map +1 -0
  187. package/dist/esm/types/Devices/Insteon/Generated/DoorLock.d.ts +64 -0
  188. package/dist/esm/types/Devices/Insteon/Generated/DoorLock.d.ts.map +1 -0
  189. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Input.d.ts +52 -0
  190. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Input.d.ts.map +1 -0
  191. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Output.d.ts +70 -0
  192. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Output.d.ts.map +1 -0
  193. package/dist/esm/types/Devices/Insteon/Generated/EzrainInput.d.ts +52 -0
  194. package/dist/esm/types/Devices/Insteon/Generated/EzrainInput.d.ts.map +1 -0
  195. package/dist/esm/types/Devices/Insteon/Generated/EzrainOutput.d.ts +76 -0
  196. package/dist/esm/types/Devices/Insteon/Generated/EzrainOutput.d.ts.map +1 -0
  197. package/dist/esm/types/Devices/Insteon/Generated/FanLincMotor.d.ts +88 -0
  198. package/dist/esm/types/Devices/Insteon/Generated/FanLincMotor.d.ts.map +1 -0
  199. package/dist/esm/types/Devices/Insteon/Generated/I3KeypadFlags.d.ts +168 -0
  200. package/dist/esm/types/Devices/Insteon/Generated/I3KeypadFlags.d.ts.map +1 -0
  201. package/dist/esm/types/Devices/Insteon/Generated/I3PaddleFlags.d.ts +142 -0
  202. package/dist/esm/types/Devices/Insteon/Generated/I3PaddleFlags.d.ts.map +1 -0
  203. package/dist/esm/types/Devices/Insteon/Generated/ImeterSolo.d.ts +71 -0
  204. package/dist/esm/types/Devices/Insteon/Generated/ImeterSolo.d.ts.map +1 -0
  205. package/dist/esm/types/Devices/Insteon/Generated/IrLincTx.d.ts +51 -0
  206. package/dist/esm/types/Devices/Insteon/Generated/IrLincTx.d.ts.map +1 -0
  207. package/dist/esm/types/Devices/Insteon/Generated/KeypadButton.d.ts +64 -0
  208. package/dist/esm/types/Devices/Insteon/Generated/KeypadButton.d.ts.map +1 -0
  209. package/dist/esm/types/Devices/Insteon/Generated/KeypadDimmer.d.ts +150 -0
  210. package/dist/esm/types/Devices/Insteon/Generated/KeypadDimmer.d.ts.map +1 -0
  211. package/dist/esm/types/Devices/Insteon/Generated/KeypadRelay.d.ts +94 -0
  212. package/dist/esm/types/Devices/Insteon/Generated/KeypadRelay.d.ts.map +1 -0
  213. package/dist/esm/types/Devices/Insteon/Generated/OnOffControl.d.ts +44 -0
  214. package/dist/esm/types/Devices/Insteon/Generated/OnOffControl.d.ts.map +1 -0
  215. package/dist/esm/types/Devices/Insteon/Generated/Pir2844.d.ts +98 -0
  216. package/dist/esm/types/Devices/Insteon/Generated/Pir2844.d.ts.map +1 -0
  217. package/dist/esm/types/Devices/Insteon/Generated/Pir2844OnOff.d.ts +76 -0
  218. package/dist/esm/types/Devices/Insteon/Generated/Pir2844OnOff.d.ts.map +1 -0
  219. package/dist/esm/types/Devices/Insteon/Generated/Pir2844c.d.ts +98 -0
  220. package/dist/esm/types/Devices/Insteon/Generated/Pir2844c.d.ts.map +1 -0
  221. package/dist/esm/types/Devices/Insteon/Generated/RelayLamp.d.ts +88 -0
  222. package/dist/esm/types/Devices/Insteon/Generated/RelayLamp.d.ts.map +1 -0
  223. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts +94 -0
  224. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts.map +1 -0
  225. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitchLed.d.ts +100 -0
  226. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitchLed.d.ts.map +1 -0
  227. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitch.d.ts +57 -0
  228. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitch.d.ts.map +1 -0
  229. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.d.ts +63 -0
  230. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.d.ts.map +1 -0
  231. package/dist/esm/types/Devices/Insteon/Generated/RemoteLinc2.d.ts +52 -0
  232. package/dist/esm/types/Devices/Insteon/Generated/RemoteLinc2.d.ts.map +1 -0
  233. package/dist/esm/types/Devices/Insteon/Generated/Siren.d.ts +109 -0
  234. package/dist/esm/types/Devices/Insteon/Generated/Siren.d.ts.map +1 -0
  235. package/dist/esm/types/Devices/Insteon/Generated/SirenAlert.d.ts +37 -0
  236. package/dist/esm/types/Devices/Insteon/Generated/SirenAlert.d.ts.map +1 -0
  237. package/dist/esm/types/Devices/Insteon/Generated/TempLinc.d.ts +148 -0
  238. package/dist/esm/types/Devices/Insteon/Generated/TempLinc.d.ts.map +1 -0
  239. package/dist/esm/types/Devices/Insteon/Generated/Thermostat.d.ts +148 -0
  240. package/dist/esm/types/Devices/Insteon/Generated/Thermostat.d.ts.map +1 -0
  241. package/dist/esm/types/Devices/Insteon/Generated/X10.d.ts +76 -0
  242. package/dist/esm/types/Devices/Insteon/Generated/X10.d.ts.map +1 -0
  243. package/dist/esm/types/Devices/Insteon/Generated/index.d.ts +39 -0
  244. package/dist/esm/types/Devices/Insteon/Generated/index.d.ts.map +1 -0
  245. package/dist/esm/types/Devices/Insteon/InsteonBaseDevice.d.ts +4 -10
  246. package/dist/esm/types/Devices/Insteon/InsteonBaseDevice.d.ts.map +1 -1
  247. package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts +22 -28
  248. package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts.map +1 -1
  249. package/dist/esm/types/Devices/Insteon/InsteonFanDevice.d.ts +3 -3
  250. package/dist/esm/types/Devices/Insteon/InsteonFanDevice.d.ts.map +1 -1
  251. package/dist/esm/types/Devices/Insteon/InsteonLeakSensorDevice.d.ts +1 -1
  252. package/dist/esm/types/Devices/Insteon/InsteonLeakSensorDevice.d.ts.map +1 -1
  253. package/dist/esm/types/Devices/Insteon/InsteonRelayDevice.d.ts.map +1 -1
  254. package/dist/esm/types/Devices/Insteon/KeypadButton.d.ts +19 -19
  255. package/dist/esm/types/Devices/Insteon/KeypadButton.d.ts.map +1 -1
  256. package/dist/esm/types/Devices/Insteon/index.d.ts +6 -42
  257. package/dist/esm/types/Devices/Insteon/index.d.ts.map +1 -1
  258. package/dist/esm/types/Devices/Lutron/Generated/LoadShed.d.ts +64 -0
  259. package/dist/esm/types/Devices/Lutron/Generated/LoadShed.d.ts.map +1 -0
  260. package/dist/esm/types/Devices/NodeFactory.d.ts +18 -7
  261. package/dist/esm/types/Devices/NodeFactory.d.ts.map +1 -1
  262. package/dist/esm/types/Devices/Scene/index.d.ts +2 -1
  263. package/dist/esm/types/Devices/Scene/index.d.ts.map +1 -1
  264. package/dist/esm/types/Devices/UDI/Generated/Channel.d.ts +51 -0
  265. package/dist/esm/types/Devices/UDI/Generated/Channel.d.ts.map +1 -0
  266. package/dist/esm/types/Devices/UDI/Generated/Em3MainChannel.d.ts +72 -0
  267. package/dist/esm/types/Devices/UDI/Generated/Em3MainChannel.d.ts.map +1 -0
  268. package/dist/esm/types/Devices/UDI/Generated/Main.d.ts +59 -0
  269. package/dist/esm/types/Devices/UDI/Generated/Main.d.ts.map +1 -0
  270. package/dist/esm/types/Devices/UDI/Generated/PulseCounter.d.ts +58 -0
  271. package/dist/esm/types/Devices/UDI/Generated/PulseCounter.d.ts.map +1 -0
  272. package/dist/esm/types/Devices/UDI/Generated/Relay.d.ts +64 -0
  273. package/dist/esm/types/Devices/UDI/Generated/Relay.d.ts.map +1 -0
  274. package/dist/esm/types/Devices/UDI/Generated/TemperatureSensor.d.ts +44 -0
  275. package/dist/esm/types/Devices/UDI/Generated/TemperatureSensor.d.ts.map +1 -0
  276. package/dist/esm/types/Devices/ZWave/Generated/ColorSwitch.d.ts +90 -0
  277. package/dist/esm/types/Devices/ZWave/Generated/ColorSwitch.d.ts.map +1 -0
  278. package/dist/esm/types/Devices/ZWave/Generated/DimmerSwitch.d.ts +124 -0
  279. package/dist/esm/types/Devices/ZWave/Generated/DimmerSwitch.d.ts.map +1 -0
  280. package/dist/esm/types/Devices/ZWave/Generated/index.d.ts +3 -0
  281. package/dist/esm/types/Devices/ZWave/Generated/index.d.ts.map +1 -0
  282. package/dist/esm/types/Devices/ZWave/index.d.ts.map +1 -1
  283. package/dist/esm/types/Devices/index.d.ts +7 -21
  284. package/dist/esm/types/Devices/index.d.ts.map +1 -1
  285. package/dist/esm/types/ISY.d.ts.map +1 -1
  286. package/dist/esm/types/ISYDevice.d.ts +19 -28
  287. package/dist/esm/types/ISYDevice.d.ts.map +1 -1
  288. package/dist/esm/types/ISYNode.d.ts +25 -8
  289. package/dist/esm/types/ISYNode.d.ts.map +1 -1
  290. package/dist/esm/types/ISYScene.d.ts +5 -6
  291. package/dist/esm/types/ISYScene.d.ts.map +1 -1
  292. package/dist/esm/types/Matter/Behaviors/BehaviorRegistry.d.ts +11 -0
  293. package/dist/esm/types/Matter/Behaviors/BehaviorRegistry.d.ts.map +1 -0
  294. package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts +1 -4
  295. package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts.map +1 -1
  296. package/dist/esm/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts +5 -4
  297. package/dist/esm/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts.map +1 -1
  298. package/dist/esm/types/Matter/Bridge/Server.d.ts +1 -1
  299. package/dist/esm/types/Matter/Bridge/Server.d.ts.map +1 -1
  300. package/dist/esm/types/Model/ClassDefinition.d.ts +6 -2
  301. package/dist/esm/types/Model/ClassDefinition.d.ts.map +1 -1
  302. package/dist/esm/types/Model/ClusterMap.d.ts +12 -21
  303. package/dist/esm/types/Model/ClusterMap.d.ts.map +1 -1
  304. package/dist/esm/types/Model/EnumDefinition.d.ts +1 -1
  305. package/dist/esm/types/Utils.d.ts +18 -0
  306. package/dist/esm/types/Utils.d.ts.map +1 -1
  307. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  308. package/package.json +2 -2
  309. package/src/CodeGeneration/NodeClassFactory.ts +144 -39
  310. package/src/CodeGeneration/NodeFactory.ts +341 -0
  311. package/src/Converters.ts +23 -3
  312. package/src/Definitions/Global/Drivers.ts +1 -0
  313. package/src/Definitions/Global/Events.ts +3 -3
  314. package/src/Devices/Brultech/Generated/Channel.ts +8 -6
  315. package/src/Devices/Brultech/Generated/Main.ts +9 -9
  316. package/src/Devices/DeviceMap.ts +1 -1
  317. package/src/Devices/ISYDevice.ts +8 -57
  318. package/src/Devices/ISYDeviceNode.ts +143 -166
  319. package/src/Devices/Insteon/Generated/AlertModuleArmed.ts +13 -21
  320. package/src/Devices/Insteon/Generated/AlertModuleSiren.ts +18 -29
  321. package/src/Devices/Insteon/Generated/BallastRelayLampSwitch.ts +18 -29
  322. package/src/Devices/Insteon/Generated/BinaryAlarm.ts +14 -17
  323. package/src/Devices/Insteon/Generated/BinaryControl.ts +14 -17
  324. package/src/Devices/Insteon/Generated/DimmerLamp.ts +25 -51
  325. package/src/Devices/Insteon/Generated/DimmerLampSwitch.ts +36 -64
  326. package/src/Devices/Insteon/Generated/DimmerLampSwitchLed.ts +31 -60
  327. package/src/Devices/Insteon/Generated/DimmerMotorSwitch.ts +24 -47
  328. package/src/Devices/Insteon/Generated/DimmerSwitch.ts +13 -14
  329. package/src/Devices/Insteon/Generated/DoorLock.ts +11 -15
  330. package/src/Devices/Insteon/Generated/Ezio2x4Input.ts +12 -11
  331. package/src/Devices/Insteon/Generated/Ezio2x4Output.ts +12 -18
  332. package/src/Devices/Insteon/Generated/EzrainInput.ts +12 -11
  333. package/src/Devices/Insteon/Generated/EzrainOutput.ts +20 -28
  334. package/src/Devices/Insteon/Generated/FanLincMotor.ts +15 -27
  335. package/src/Devices/Insteon/Generated/I3KeypadFlags.ts +19 -39
  336. package/src/Devices/Insteon/Generated/I3PaddleFlags.ts +17 -33
  337. package/src/Devices/Insteon/Generated/ImeterSolo.ts +11 -15
  338. package/src/Devices/Insteon/Generated/IrLincTx.ts +10 -12
  339. package/src/Devices/Insteon/Generated/{KeypadButtonAdv.ts → KeypadButton.ts} +23 -26
  340. package/src/Devices/Insteon/Generated/KeypadDimmer.ts +30 -57
  341. package/src/Devices/Insteon/Generated/KeypadRelay.ts +30 -43
  342. package/src/Devices/Insteon/Generated/OnOffControl.ts +15 -12
  343. package/src/Devices/Insteon/Generated/Pir2844.ts +15 -20
  344. package/src/Devices/Insteon/Generated/Pir2844OnOff.ts +16 -23
  345. package/src/Devices/Insteon/Generated/Pir2844c.ts +15 -20
  346. package/src/Devices/Insteon/Generated/RelayLamp.ts +29 -41
  347. package/src/Devices/Insteon/Generated/RelayLampSwitch.ts +29 -42
  348. package/src/Devices/Insteon/Generated/RelayLampSwitchLed.ts +24 -39
  349. package/src/Devices/Insteon/Generated/RelaySwitch.ts +14 -17
  350. package/src/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.ts +15 -20
  351. package/src/Devices/Insteon/Generated/RemoteLinc2.ts +12 -11
  352. package/src/Devices/Insteon/Generated/Siren.ts +18 -29
  353. package/src/Devices/Insteon/Generated/SirenAlert.ts +11 -8
  354. package/src/Devices/Insteon/Generated/TempLinc.ts +18 -36
  355. package/src/Devices/Insteon/Generated/Thermostat.ts +18 -36
  356. package/src/Devices/Insteon/Generated/X10.ts +13 -21
  357. package/src/Devices/Insteon/Generated/index.ts +38 -0
  358. package/src/Devices/Insteon/InsteonBaseDevice.ts +5 -4
  359. package/src/Devices/Insteon/InsteonFanDevice.ts +3 -4
  360. package/src/Devices/Insteon/InsteonRelayDevice.ts +1 -0
  361. package/src/Devices/Insteon/KeypadButton.ts +31 -31
  362. package/src/Devices/Insteon/index.ts +18 -26
  363. package/src/Devices/Lutron/Generated/LoadShed.ts +11 -15
  364. package/src/Devices/NCD/Generated/Relay.ts +12 -18
  365. package/src/Devices/NodeFactory.ts +67 -13
  366. package/src/Devices/Poly/Generated/MatterBridge.ts +84 -0
  367. package/src/Devices/Scene/Generated/Scene.ts +33 -65
  368. package/src/Devices/Scene/index.ts +2 -1
  369. package/src/Devices/UDI/Generated/Channel.ts +8 -6
  370. package/src/Devices/UDI/Generated/Em3MainChannel.ts +8 -6
  371. package/src/Devices/UDI/Generated/Main.ts +9 -9
  372. package/src/Devices/UDI/Generated/PulseCounter.ts +8 -6
  373. package/src/Devices/UDI/Generated/Relay.ts +11 -15
  374. package/src/Devices/UDI/Generated/TemperatureSensor.ts +8 -6
  375. package/src/Devices/ZWave/Generated/ColorSwitch.ts +16 -24
  376. package/src/Devices/ZWave/Generated/DimmerSwitch.ts +25 -49
  377. package/src/Devices/ZWave/Generated/index.ts +2 -0
  378. package/src/Devices/ZWave/index.ts +5 -1
  379. package/src/Devices/ZigBeeLegacy/Generated/Relay.ts +12 -18
  380. package/src/Devices/ZigBeeLegacy/Generated/Thermostat.ts +17 -33
  381. package/src/Devices/index.ts +17 -12
  382. package/src/ISY.ts +8 -2
  383. package/src/ISYDevice.ts +68 -57
  384. package/src/ISYNode.ts +32 -8
  385. package/src/ISYScene.ts +31 -28
  386. package/src/Matter/Behaviors/BehaviorRegistry.ts +26 -0
  387. package/src/Matter/Behaviors/Insteon/ISYOnOffBehavior.ts +6 -0
  388. package/src/Matter/Bridge/Server.ts +39 -15
  389. package/src/Matter/Mappings/Insteon.ts +39 -14
  390. package/src/Model/ClassDefinition.ts +34 -4
  391. package/src/Model/ClusterMap.ts +73 -57
  392. package/src/Model/NodeInfo.ts +1 -1
  393. package/src/Utils.ts +38 -0
  394. package/tsconfig.json +7 -1
  395. package/src/Devices/Insteon/Generated/AlertModuleSirenAdv.ts +0 -123
  396. package/src/Devices/Insteon/Generated/BallastRelayLampSwitchAdv.ts +0 -123
  397. package/src/Devices/Insteon/Generated/BinaryAlarmAdv.ts +0 -91
  398. package/src/Devices/Insteon/Generated/BinaryControlAdv.ts +0 -91
  399. package/src/Devices/Insteon/Generated/DimmerLampSwitchAdv.ts +0 -207
  400. package/src/Devices/Insteon/Generated/DimmerLampSwitchLedAdv.ts +0 -215
  401. package/src/Devices/Insteon/Generated/DimmerMotorSwitchAdv.ts +0 -191
  402. package/src/Devices/Insteon/Generated/DimmerSwitchOnlyAdv.ts +0 -73
  403. package/src/Devices/Insteon/Generated/Ezio2x4InputAdv.ts +0 -75
  404. package/src/Devices/Insteon/Generated/EzrainInputAdv.ts +0 -75
  405. package/src/Devices/Insteon/Generated/KeypadDimmerAdv.ts +0 -207
  406. package/src/Devices/Insteon/Generated/KeypadRelayAdv.ts +0 -131
  407. package/src/Devices/Insteon/Generated/OnOffControlAdv.ts +0 -65
  408. package/src/Devices/Insteon/Generated/Pir2844Adv.ts +0 -139
  409. package/src/Devices/Insteon/Generated/Pir2844OnOffAdv.ts +0 -107
  410. package/src/Devices/Insteon/Generated/Pir2844cAdv.ts +0 -139
  411. package/src/Devices/Insteon/Generated/RelayLampOnlyAdv.ts +0 -123
  412. package/src/Devices/Insteon/Generated/RelayLampSwitchAdv.ts +0 -131
  413. package/src/Devices/Insteon/Generated/RelayLampSwitchLedAdv.ts +0 -139
  414. package/src/Devices/Insteon/Generated/RelaySwitchOnlyAdv.ts +0 -81
  415. package/src/Devices/Insteon/Generated/RelaySwitchOnlyPlusQueryAdv.ts +0 -89
  416. package/src/Devices/Insteon/Generated/RemoteLinc2Adv.ts +0 -75
  417. package/src/Devices/Insteon/Generated/SirenArm.ts +0 -55
@@ -3,7 +3,7 @@
3
3
  import { UnitOfMeasure } from "../../../Definitions/Global/UOM.js";
4
4
  import { Family } from "../../../Definitions/Global/Families.js";
5
5
  import type { NodeInfo } from "../../../Model/NodeInfo.js";
6
- import type { ISY } from "../../../ISY.js";
6
+ import { ISY } from "../../../ISY.js";
7
7
  import type { ISYNode } from "../../../ISYNode.js";
8
8
  import { Base } from "../index.js";
9
9
  import { ISYDeviceNode } from "../../ISYDeviceNode.js";
@@ -12,13 +12,13 @@ import { ZigBeeLegacy } from "../../../Definitions/index.js";
12
12
  import type { DriverState } from "../../../Model/DriverState.js";
13
13
  import { NodeFactory } from "../../NodeFactory.js";
14
14
 
15
- export const nodeDefId = "Thermostat";
15
+ const nodeDefId = "Thermostat";
16
16
 
17
17
  type Commands = Thermostat.Commands;
18
18
  type Drivers = Thermostat.Drivers;
19
19
 
20
20
  export class ThermostatNode extends Base<Drivers, Commands> implements Thermostat.Interface {
21
- public readonly commands = {
21
+ public override readonly commands = {
22
22
  CLISPH: this.updateHeatSetpoint,
23
23
  CLISPC: this.updateCoolSetpoint,
24
24
  CLIMD: this.updateMode,
@@ -29,7 +29,8 @@ export class ThermostatNode extends Base<Drivers, Commands> implements Thermosta
29
29
  QUERY: this.query,
30
30
  ADRPST: this.adr
31
31
  };
32
- static nodeDefId = "Thermostat";
32
+ static override nodeDefId = "Thermostat";
33
+ static override implements = ["Thermostat"];
33
34
  declare readonly nodeDefId: "Thermostat";
34
35
  constructor (isy: ISY, nodeInfo: NodeInfo) {
35
36
  super(isy, nodeInfo);
@@ -43,33 +44,15 @@ export class ThermostatNode extends Base<Drivers, Commands> implements Thermosta
43
44
  this.drivers.CLISMD = Driver.create("CLISMD", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Unknown, label: "Schedule Mode", name: "scheduleMode" });
44
45
  this.drivers.ERR = Driver.create("ERR", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Unknown, label: "Responding", name: "responding" });
45
46
  }
46
- async updateHeatSetpoint(value: ) {
47
- return this.sendCommand("CLISPH", { value: value });
48
- }
49
- async updateCoolSetpoint(value: ) {
50
- return this.sendCommand("CLISPC", { value: value });
51
- }
52
- async updateMode(value: ) {
53
- return this.sendCommand("CLIMD", { value: value });
54
- }
55
- async updateFanMode(value: ) {
56
- return this.sendCommand("CLIFS", { value: value });
57
- }
58
- async updateScheduleMode(value: ) {
59
- return this.sendCommand("CLISMD", { value: value });
60
- }
61
- async heatSetpointShift(value: ) {
62
- return this.sendCommand("CLISPHD", { value: value });
63
- }
64
- async coolSetpointShift(value: ) {
65
- return this.sendCommand("CLISPCD", { value: value });
66
- }
67
- async query() {
68
- return this.sendCommand("QUERY");
69
- }
70
- async adr(value: ) {
71
- return this.sendCommand("ADRPST", { value: value });
72
- }
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 }); }
54
+ async query() { return this.sendCommand("QUERY"); }
55
+ async adr(value: ) { return this.sendCommand("ADRPST", { value: value }); }
73
56
  public get temperature(): {
74
57
 
75
58
  return this.drivers.ST?.value;
@@ -122,8 +105,9 @@ export namespace Thermostat {
122
105
  export interface Interface extends Omit<InstanceType<typeof ThermostatNode>, keyof ISYDeviceNode<any, any, any, any>> {
123
106
  nodeDefId: "Thermostat";
124
107
  }
125
- export function is(node: ISYNode<any, any, any, any>): node is ThermostatNode {
126
- return node.nodeDefId === nodeDefId;
108
+ export function is(node: ISYNode<any, any, any, any>): node is ThermostatNode { return ["Thermostat"].includes(node.nodeDefId); }
109
+ export function isImplementedBy(node: ISYNode<any, any, any, any>): node is ThermostatNode {
110
+ return ["Thermostat"].includes(node.nodeDefId);
127
111
  }
128
112
  export function create(isy: ISY, nodeInfo: NodeInfo) {
129
113
  return new ThermostatNode(isy, nodeInfo);
@@ -1,24 +1,29 @@
1
-
2
1
  import type { Family } from '../Definitions/index.js';
3
- import {Insteon} from "./Insteon/index.js";
4
- import { ZWaveBaseDevice } from "./ZWave/ZWaveBaseDevice.js";
2
+ import * as Insteon from './Insteon/index.js';
3
+ import { NodeFactory } from './NodeFactory.js';
4
+ import { ZWaveBaseDevice } from './ZWave/ZWaveBaseDevice.js';
5
+ import * as ZWave from './ZWave/index.js';
5
6
 
6
7
  export const Devices = {
7
- Insteon: Insteon,
8
- ZWave: { Base: ZWaveBaseDevice },
9
- ZigBee: {},
8
+ Insteon: Insteon,
9
+ ZWave: { Base: ZWaveBaseDevice },
10
+ ZigBee: {}
11
+ };
12
+ Insteon.AlertModuleArmed.Node
13
+
14
+ export * as Insteon from './Insteon/index.js';
15
+ export * as ZWave from './ZWave/index.js';
10
16
 
11
- }
12
17
 
13
18
  export namespace Devices {
14
- export type Insteon = typeof Insteon;
15
- export type ZWave = { Base: ZWaveBaseDevice };
16
- export type ZigBee = {};
19
+ export type Insteon = typeof Insteon;
20
+ export type ZWave = typeof ZWave;
21
+ export type ZigBee = {};
17
22
  }
18
23
 
19
-
20
24
  export type Devices<T extends Family.Insteon | Family.ZWave | Family.ZigBee> = (typeof Devices)[`Insteon`];
21
25
 
22
- export type ToDevice<T extends keyof Devices<any>> = T extends keyof Devices<infer B> ? Devices<B>[`${T}`] : never;
26
+ /*export type ToDevice<T extends keyof Devices<any>> = T extends keyof Devices<infer B> ? Devices<B>[`${T}`] : never;*/
23
27
 
28
+ NodeFactory.sortImplementsRegistry();
24
29
  export default Devices;
package/src/ISY.ts CHANGED
@@ -470,12 +470,18 @@ export class ISY extends EventEmitter implements Disposable {
470
470
  }
471
471
 
472
472
  public async loadVariables(type: VariableType): Promise<any> {
473
+ try
474
+ {
473
475
  const that = this;
474
476
  this.logger.info(`Loading ISY Variables of type: ${type}`);
475
477
  return this.sendRequest(`vars/definitions/${type}`)
476
478
  .then((result) => that.#createVariables(type, result))
477
479
  .then(() => that.sendRequest(`vars/get/${type}`))
478
480
  .then(that.#setVariableValues.bind(that));
481
+ }
482
+ catch{
483
+ this.logger.warn('error loading variables');
484
+ }
479
485
  }
480
486
 
481
487
  public nodeChangedHandler(node: ELKAlarmPanelDevice | ElkAlarmSensorDevice, propertyName = null) {
@@ -531,12 +537,12 @@ export class ISY extends EventEmitter implements Disposable {
531
537
  if (parameters !== null && parameters !== undefined) {
532
538
  if (typeof parameters == 'object') {
533
539
  var q = parameters as Record<P, string | number>;
534
- for (const paramName of Object.getOwnPropertyNames(q)) {
540
+ for (const paramName in q) {
535
541
  if (paramName === 'value') {
536
542
  uriToUse += `/${q[paramName]}`;
537
543
  continue;
538
544
  }
539
- if (typeof q[paramName] === 'string' || typeof q[paramName] === 'number') uriToUse += `/${paramName}/${q[paramName]}`;
545
+ else if (typeof q[paramName] === 'string' || typeof q[paramName] === 'number') uriToUse += `/${paramName}/${q[paramName]}`;
540
546
  }
541
547
 
542
548
  //uriToUse += `/${q[((p : Record<string,number|number>) => `${p[]}/${p.paramValue}` ).join('/')}`;
package/src/ISYDevice.ts CHANGED
@@ -1,67 +1,78 @@
1
1
  import type { Command } from './Definitions/Global/Commands.js';
2
2
  import type { Driver } from './Definitions/Global/Drivers.js';
3
3
  import type { UnitOfMeasure } from './Definitions/Global/UOM.js';
4
- import type { Family } from './Definitions/index.js';
4
+ import type { Category, Family } from './Definitions/index.js';
5
+ import { ISYDeviceNode } from './Devices/ISYDeviceNode.js';
5
6
  import type { ISY } from './ISY.js';
6
7
  import type { ISYNode } from './ISYNode.js';
7
8
  import type { ISYScene } from './ISYScene.js';
8
9
  import type { DriverState } from './Model/DriverState.js';
9
10
  import type { StringKeys } from './Utils.js';
10
11
 
11
- export interface ISYDevice<T extends Family, D extends ISYNode.DriverSignatures, C extends ISYNode.CommandSignatures, E extends string = string> {
12
- // #region Properties (22)
13
-
14
- _parentDevice: ISYDevice<T, any, any, any>;
15
- address: string;
16
- category: number;
17
- children: Array<ISYNode<any, any, any, any>>;
18
- commands: Command.ForAll<C>;
19
- deviceClass: any;
20
- drivers: Driver.ForAll<D>;
21
- enabled: boolean;
22
- family: T;
23
- hidden: boolean;
24
- isDimmable: boolean;
25
- label: string;
26
- model: string;
27
- modelNumber: string;
28
- name: any;
29
- parentAddress: any;
30
- productName: string;
31
- scenes: ISYScene[];
32
- subCategory: number;
33
- type: any;
34
- typeCode: string;
35
- version: string;
36
-
37
- // #endregion Properties (22)
38
-
39
- // #region Public Methods (18)
40
-
41
- addChild(childDevice: ISYNode<any, any, any, any>): void;
42
- addLink(isyScene: ISYScene): void;
43
- convertFrom(value: any, uom: number): any;
44
- convertFrom(value: any, uom: number, propertyName: keyof D): any;
45
- convertTo(value: any, uom: number): any;
46
- convertTo(value: any, uom: number, propertyName: keyof D): any;
47
- handleControlTrigger(controlName: E): boolean;
48
- handleEvent(evt: any): unknown;
49
- handlePropertyChange(
50
- propertyName: keyof D & string,
51
- value: any,
52
- uom: UnitOfMeasure,
53
- prec: number,
54
- formattedValue: string
55
- ) : boolean;
56
- logger(arg0: string): unknown;
57
- on(arg0: string, arg1: any): unknown;
58
- parseResult(node: { property: DriverState | DriverState[]; }): void;
59
- readProperties(): Promise<DriverState[]>;
60
- readProperty(propertyName: keyof D): Promise<DriverState>;
61
- refresh(): Promise<any>;
62
- refreshNotes(): Promise<void>;
63
- sendCommand(command: StringKeys<C>, parameters?: Record<string | symbol, string | number> | string | number): Promise<any>;
64
- updateProperty(propertyName: StringKeys<D>, value: string): Promise<any>;
65
-
66
- // #endregion Public Methods (18)
12
+ export interface ISYDevice<T extends Family, D extends ISYNode.DriverSignatures, C extends ISYNode.CommandSignatures, E extends ISYNode.EventSignatures> extends ISYDeviceInfo {
13
+ // #region Properties (22)
14
+
15
+ address: string;
16
+ category: Category;
17
+ commands: Command.ForAll<C>;
18
+ deviceClass: any;
19
+ drivers: Driver.ForAll<D>;
20
+
21
+ events: E;
22
+ enabled: boolean;
23
+ family: T;
24
+ hidden: boolean;
25
+ isDimmable: boolean;
26
+ label: string;
27
+ model: string;
28
+ modelNumber: string;
29
+ name: any;
30
+ parentAddress: any;
31
+ productName: string;
32
+ scenes: ISYScene[];
33
+ subCategory: number;
34
+ type: any;
35
+ typeCode: string;
36
+ version: string;
37
+
38
+ vendorName: string;
39
+
40
+ // #endregion Properties (22)
41
+
42
+ // #region Public Methods (18)
43
+
44
+ // #endregion Public Methods (18)
45
+ }
46
+
47
+ export function isDevice<T extends Family, D extends ISYNode.DriverSignatures, C extends ISYNode.CommandSignatures, E extends ISYNode.EventSignatures>(
48
+ device: ISYNode<T, D, C, E>
49
+ ): device is ISYDevice<T, D, C, E> & ISYNode<T, D, C, E> {
50
+ return device instanceof ISYDeviceNode;
51
+ }
52
+
53
+ export function isDeviceClass<T extends Family, D extends ISYNode.DriverSignatures, C extends ISYNode.CommandSignatures, E extends ISYNode.EventSignatures>(
54
+ device: typeof ISYNode<T, D, C, E>
55
+ ): device is (new (...args) => ISYDevice<T, D, C, E>) & typeof ISYNode<T, D, C, E> {
56
+ return device.prototype instanceof ISYDeviceNode;
57
+ }
58
+
59
+ export interface ISYDeviceInfo {
60
+ type: string;
61
+ deviceClass: any;
62
+
63
+ productName: string;
64
+
65
+ productId: string | number;
66
+
67
+ modelName: string;
68
+
69
+ modelNumber: string;
70
+
71
+ version: string;
72
+
73
+ category: Category;
74
+
75
+ subCategory: number;
76
+
77
+ manufacturer: string;
67
78
  }
package/src/ISYNode.ts CHANGED
@@ -13,10 +13,10 @@ import type { Constructor } from './Devices/Constructor.js';
13
13
  import type { DriverState } from './Model/DriverState.js';
14
14
  import { NodeInfo } from './Model/NodeInfo.js';
15
15
  import type { NodeNotes } from './Model/NodeNotes.js';
16
- import { type StringKeys } from './Utils.js';
16
+ import { type ObjectToUnion, type StringKeys } from './Utils.js';
17
17
  import { NodeType } from './ISYConstants.js';
18
18
  import type { ISYScene } from './ISYScene.js';
19
- import type { UnionToIntersection } from '@matter/general';
19
+ import type { Merge, UnionToIntersection } from '@matter/general';
20
20
 
21
21
  //type DriverValues<DK extends string | number | symbol,V = any> = {[x in DK]?:V};
22
22
 
@@ -41,6 +41,8 @@ export class ISYNode<
41
41
  public static family: Family;
42
42
  public static nodeDefId = 'Unknown';
43
43
 
44
+ public static implements: string[] = [];
45
+
44
46
  public baseName: any;
45
47
  public commands: Command.ForAll<C>;
46
48
  //public readonly formatted: DriverValues<keyof D,string> = {};
@@ -50,7 +52,7 @@ export class ISYNode<
50
52
  public drivers: Driver.ForAll<D> = {} as Driver.ForAll<D>;
51
53
  public enabled: boolean;
52
54
  //TODO: add signature for non-command/non-driver events
53
- public events: Event.FunctionSigFor<E, Event.NodeEventEmitter<this>> & Omit<Event.NodeEventEmitter<this>, 'on'>;
55
+ public events: Merge<Event.NodeEventEmitter<this>,Event.FunctionSigFor<E, Event.NodeEventEmitter<this>>>;
54
56
  //Event.FunctionSigFor<Event.ForAll<E,typeof this>> & Omit<EventEmitter,'on'>
55
57
  /*{
56
58
  [x in E]: x extends keyof D ? {name:`${D[x]["name"]}Changed`, driver: x, value: D[x]["value"], formatted: string, uom: UnitOfMeasure}
@@ -125,6 +127,7 @@ export class ISYNode<
125
127
  }
126
128
  this.events = Event.createEmitter(this);
127
129
 
130
+
128
131
  //this.logger(this.nodeDefId);
129
132
  this.lastChanged = new Date();
130
133
  }
@@ -222,7 +225,13 @@ export class ISYNode<
222
225
 
223
226
  public async getNotes(): Promise<NodeNotes> {
224
227
  try {
225
- const result = await this.isy.sendRequest(`nodes/${this.address}/notes`, { trailingSlash: false, errorLogLevel: 'debug', validateStatus(status) { return true; }});
228
+ const result = await this.isy.sendRequest(`nodes/${this.address}/notes`, {
229
+ trailingSlash: false,
230
+ errorLogLevel: 'debug',
231
+ validateStatus(status) {
232
+ return true;
233
+ }
234
+ });
226
235
  if (result !== null && result !== undefined) {
227
236
  return result.NodeProperties;
228
237
  } else {
@@ -235,7 +244,7 @@ export class ISYNode<
235
244
 
236
245
  public handleControlTrigger(controlName: keyof E & keyof C): boolean {
237
246
  //this.lastChanged = new Date();
238
- this.events.emit('controlTriggered', controlName);
247
+ //this.events.emit(`${this.commands[controlName].name}`, controlName);
239
248
  return true;
240
249
  }
241
250
 
@@ -343,9 +352,13 @@ export class ISYNode<
343
352
  that.logger(e);
344
353
  }
345
354
  }
346
-
347
- public async sendCommand(command: StringKeys<C>, parameters?: Record<string | symbol, string | number | undefined> | string | number): Promise<any> {
348
- //@
355
+ public async sendCommand(command: StringKeys<C>): Promise<any>;
356
+ public async sendCommand(command: StringKeys<C>, value: string | number, parameters: Record<string | symbol, string | number | undefined>);
357
+ public async sendCommand(command: StringKeys<C>, parameters: Record<string | symbol, string | number | undefined> | string | number): Promise<any>;
358
+ async sendCommand(command: StringKeys<C>, value?: string | number, parameters?: Record<string | symbol, string | number | undefined> | string | number): Promise<any> {
359
+ if (value !== undefined && typeof parameters === 'object') {
360
+ return this.isy.sendNodeCommand(this, command, { default: value, ...parameters });
361
+ }
349
362
  return this.isy.sendNodeCommand(this, command, parameters);
350
363
  }
351
364
 
@@ -515,6 +528,17 @@ export namespace ISYNode {
515
528
  export type EventsOf<T> = T extends ISYNode<any, any, any, infer E> ? E : never;
516
529
  export type FamilyOf<T> = T extends ISYNode<infer F, any, any, any> ? F : never;
517
530
 
531
+ export type DriverTypesOf<T extends ISYNode> = ObjectToUnion<DriversOf<T>>;
532
+
533
+ export type CommandTypesOf<T extends ISYNode> = ObjectToUnion<CommandsOf<T>>;
534
+
535
+ export type EventTypesOf<T extends ISYNode> = ObjectToUnion<EventsOf<T>>;
536
+
537
+ export type EventNamesOf<T extends ISYNode> = EventTypesOf<T> extends { name: infer U } ? U : never;
538
+
539
+ export type DriverNamesOf<T extends ISYNode> = DriverTypesOf<T> extends { name: infer U } ? U : never;
540
+
541
+ export type CommandNamesOf<T extends ISYNode> = CommandTypesOf<T> extends { name: infer U } ? U : never;
518
542
  export type List = NodeList;
519
543
 
520
544
  export type DriverMap<T extends NodeList> = Flatten<{
package/src/ISYScene.ts CHANGED
@@ -1,20 +1,19 @@
1
- import { Insteon } from './Devices/Insteon/index.js';
1
+ import type { Command } from './Definitions/Global/Commands.js';
2
+ import type { Driver } from './Definitions/Global/Drivers.js';
2
3
  import { Family } from './Definitions/Global/Families.js';
4
+ import {Insteon} from './Devices/index.js';
5
+ import type { ISY } from './ISY.js';
3
6
  import { Commands, LinkType } from './ISYConstants.js';
7
+ import { ISYDevice } from './ISYDevice.js';
4
8
  import { ISYNode } from './ISYNode.js';
5
- import { ISYDevice } from './ISYDevice.js';
6
- import type { ISY } from './ISY.js';
7
- import type { Driver } from './Definitions/Global/Drivers.js';
8
- import type { Command } from './Definitions/Global/Commands.js';
9
9
  import type { NodeInfo, StaticNodeInfo } from './Model/NodeInfo.js';
10
10
 
11
- interface SceneInfo extends StaticNodeInfo
12
- {
11
+ interface SceneInfo extends StaticNodeInfo {
13
12
  members?: {
14
13
  link: any;
15
14
  };
16
15
  flag?: any;
17
- nodeDefId?: string;
16
+ nodeDefId?: 'InsteonDimmer';
18
17
  address: string;
19
18
  name: string;
20
19
  family?: Family;
@@ -23,13 +22,12 @@ interface SceneInfo extends StaticNodeInfo
23
22
  startDelay: number;
24
23
  }
25
24
 
26
- export class ISYScene extends ISYNode<Family.Scene, Driver.Signatures<'ST'>,Command.Signatures<'DON' | 'DOF'>> {
27
-
25
+ export class ISYScene extends ISYNode<Family.Scene, Driver.Signatures<'ST'>, Command.Signatures<'DON' | 'DOF'>> {
28
26
  public connectionType: string;
29
27
  public batteryOperated: boolean;
30
28
  public deviceType: any;
31
29
  public deviceFriendlyName: string;
32
- public members: ISYDevice<any,any,any>[];
30
+ public members: ISYNode<any, any, any,any>[];
33
31
  public typeCode: string;
34
32
  constructor(isy: ISY, scene: SceneInfo) {
35
33
  super(isy, scene as NodeInfo);
@@ -47,11 +45,15 @@ export class ISYScene extends ISYNode<Family.Scene, Driver.Signatures<'ST'>,Comm
47
45
  // childDevices.push(node._);
48
46
  // childDevices.push(object)
49
47
  const s = node._;
50
- const d = isy.getDevice(s);
48
+ const d = isy.getNode(s);
51
49
 
52
- if (d !== null && d !== undefined) { d.addLink(this); }
50
+ if (d !== null && d !== undefined) {
51
+ //d.addLink(this);
52
+ }
53
53
 
54
- if (d instanceof Insteon.Dimmer && node.type !== LinkType.Controller) { this.isDimmable = true; }
54
+ if (d instanceof Insteon.DimmerLamp.Node && node.type !== LinkType.Controller) {
55
+ this.isDimmable = true;
56
+ }
55
57
  this.members.push(d);
56
58
  }
57
59
  }
@@ -62,11 +64,14 @@ export class ISYScene extends ISYNode<Family.Scene, Driver.Signatures<'ST'>,Comm
62
64
  // childDevices.push(node._);
63
65
  // childDevices.push(object)
64
66
  const s = scene.members.link._;
65
- const d = isy.getDevice(s);
66
- if (d) { d.addLink(this);
67
- // tslint:disable-next-line: triple-equals
68
- if ((d.isDimmable && node.type != LinkType.Controller) || this.isDimmable) { this.isDimmable = true; }
69
- this.members.push(d);
67
+ const d = isy.getNode(s);
68
+ if (d) {
69
+ //d.addLink(this);
70
+ // tslint:disable-next-line: triple-equals
71
+ if ((d.isDimmable && node.type != LinkType.Controller) || this.isDimmable) {
72
+ this.isDimmable = true;
73
+ }
74
+ this.members.push(d);
70
75
  }
71
76
  }
72
77
  }
@@ -76,11 +81,12 @@ export class ISYScene extends ISYNode<Family.Scene, Driver.Signatures<'ST'>,Comm
76
81
  // Get the current light state
77
82
  get isOn() {
78
83
  for (const device of this.members) {
79
- if (device instanceof Insteon.Relay) {
80
- if (device.drivers.ST?.value) {
84
+ let d = device as unknown as ISYNode;
85
+ /*if (Insteon.RelayLamp.isImplementedBy(d)) {
86
+ if (d.status > 0) {
81
87
  return true;
82
88
  }
83
- }
89
+ }*/
84
90
  }
85
91
  return false;
86
92
  }
@@ -89,10 +95,10 @@ export class ISYScene extends ISYNode<Family.Scene, Driver.Signatures<'ST'>,Comm
89
95
  let lightDeviceCount = 0;
90
96
  let blevel = 0;
91
97
  for (const device of this.members) {
92
- if (device instanceof Insteon.Dimmer) {
98
+ if (device instanceof Insteon.DimmerSwitch.Node) {
93
99
  lightDeviceCount++;
94
100
  //blevel += device.brightnessLevel;
95
- } else if (device instanceof Insteon.Relay) {
101
+ } else if (device instanceof Insteon.RelayLampSwitch.Node) {
96
102
  lightDeviceCount++;
97
103
  blevel += device.drivers.ST ? 100 : 0;
98
104
  }
@@ -114,7 +120,6 @@ export class ISYScene extends ISYNode<Family.Scene, Driver.Signatures<'ST'>,Comm
114
120
 
115
121
  if (this.isDimmable) {
116
122
  this.emit('propertyChanged', 'brightnesslevel', this.brightnessLevel, this.brightnessLevel, this.brightnessLevel + '%');
117
-
118
123
  }
119
124
  }
120
125
  public async updateIsOn(lightState: boolean) {
@@ -125,7 +130,7 @@ export class ISYScene extends ISYNode<Family.Scene, Driver.Signatures<'ST'>,Comm
125
130
  }
126
131
  public getAreAllLightsInSpecifiedState(state) {
127
132
  for (const device of this.members) {
128
- if (device instanceof Insteon.Relay) {
133
+ if (device instanceof Insteon.RelayLampSwitch.Node) {
129
134
  if (device.drivers.ST !== state) {
130
135
  return false;
131
136
  }
@@ -133,6 +138,4 @@ export class ISYScene extends ISYNode<Family.Scene, Driver.Signatures<'ST'>,Comm
133
138
  }
134
139
  return true;
135
140
  }
136
-
137
-
138
141
  }
@@ -0,0 +1,26 @@
1
+ import { ClusterBehavior, type Behavior } from '@matter/node';
2
+ import type { RelaxTypes } from '../../Utils.js';
3
+ import type { Constructor } from '../../Devices/Constructor.js';
4
+
5
+
6
+
7
+ export namespace BehaviorRegistry
8
+ {
9
+
10
+
11
+ const registry: {[x:string]: Constructor<ClusterBehavior>} = {};
12
+
13
+ type ClusterBehaviorType = RelaxTypes<Omit<typeof ClusterBehavior, "withInterface" | "unimplemented">>;
14
+
15
+ export function register<T extends Behavior.Type>(behavior: {cluster: {name: string}} & Constructor<ClusterBehavior>): void
16
+ {
17
+ registry[behavior.cluster.name.toLowerCase()] = behavior;
18
+ }
19
+
20
+ export function get(cluster: string): Constructor<ClusterBehavior>
21
+ {
22
+ return registry[cluster.toLowerCase()];
23
+ }
24
+
25
+
26
+ }
@@ -12,6 +12,8 @@ import { MappingRegistry } from '../../../Model/ClusterMap.js';
12
12
  import { ClusterForBehavior, ISYClusterBehavior, type PropertyChange } from '../ISYClusterBehavior.js';
13
13
 
14
14
  import { Converter } from '../../../Converters.js';
15
+ import { BehaviorRegistry } from '../BehaviorRegistry.js';
16
+ import type { ClusterBehavior } from '@matter/node';
15
17
 
16
18
  export class ISYOnOffBehavior extends ISYClusterBehavior(OnOffLightRequirements.OnOffServer, InsteonRelayDevice) {
17
19
  override async initialize(_options?: {}) {
@@ -38,6 +40,8 @@ export class ISYOnOffBehavior extends ISYClusterBehavior(OnOffLightRequirements.
38
40
  }
39
41
  }
40
42
 
43
+ BehaviorRegistry.register(ISYOnOffBehavior);
44
+
41
45
  export class ISYDimmableBehavior extends ISYClusterBehavior(DimmableLightRequirements.LevelControlServer, InsteonDimmableDevice) {
42
46
  override async initialize(_options?: {}) {
43
47
  await super.initialize(_options);
@@ -57,3 +61,5 @@ export class ISYDimmableBehavior extends ISYClusterBehavior(DimmableLightRequire
57
61
 
58
62
  }
59
63
  }
64
+
65
+ BehaviorRegistry.register(ISYDimmableBehavior);