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

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 (422) hide show
  1. package/dist/esm/CodeGeneration/CodeFactory.js +245 -0
  2. package/dist/esm/CodeGeneration/CodeFactory.js.map +1 -0
  3. package/dist/esm/CodeGeneration/NodeClassFactory.js +182 -129
  4. package/dist/esm/CodeGeneration/NodeClassFactory.js.map +1 -1
  5. package/dist/esm/CodeGeneration/NodeFactory.js +245 -0
  6. package/dist/esm/CodeGeneration/NodeFactory.js.map +1 -0
  7. package/dist/esm/Converters.js +15 -1
  8. package/dist/esm/Converters.js.map +1 -1
  9. package/dist/esm/Definitions/Global/Drivers.js.map +1 -1
  10. package/dist/esm/Definitions/Global/Events.js.map +1 -1
  11. package/dist/esm/Devices/ISYDevice.js +0 -33
  12. package/dist/esm/Devices/ISYDevice.js.map +1 -1
  13. package/dist/esm/Devices/ISYDeviceNode.js +2 -2
  14. package/dist/esm/Devices/ISYDeviceNode.js.map +1 -1
  15. package/dist/esm/Devices/Insteon/Generated/AlertModuleArmed.js +49 -0
  16. package/dist/esm/Devices/Insteon/Generated/AlertModuleArmed.js.map +1 -0
  17. package/dist/esm/Devices/Insteon/Generated/AlertModuleSiren.js +54 -0
  18. package/dist/esm/Devices/Insteon/Generated/AlertModuleSiren.js.map +1 -0
  19. package/dist/esm/Devices/Insteon/Generated/BallastRelayLampSwitch.js +54 -0
  20. package/dist/esm/Devices/Insteon/Generated/BallastRelayLampSwitch.js.map +1 -0
  21. package/dist/esm/Devices/Insteon/Generated/BinaryAlarm.js +46 -0
  22. package/dist/esm/Devices/Insteon/Generated/BinaryAlarm.js.map +1 -0
  23. package/dist/esm/Devices/Insteon/Generated/BinaryControl.js +46 -0
  24. package/dist/esm/Devices/Insteon/Generated/BinaryControl.js.map +1 -0
  25. package/dist/esm/Devices/Insteon/Generated/DimmerLamp.js +75 -0
  26. package/dist/esm/Devices/Insteon/Generated/DimmerLamp.js.map +1 -0
  27. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitch.js +78 -0
  28. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitch.js.map +1 -0
  29. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitchLed.js +80 -0
  30. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitchLed.js.map +1 -0
  31. package/dist/esm/Devices/Insteon/Generated/DimmerMotorSwitch.js +74 -0
  32. package/dist/esm/Devices/Insteon/Generated/DimmerMotorSwitch.js.map +1 -0
  33. package/dist/esm/Devices/Insteon/Generated/DimmerSwitch.js +40 -0
  34. package/dist/esm/Devices/Insteon/Generated/DimmerSwitch.js.map +1 -0
  35. package/dist/esm/Devices/Insteon/Generated/DoorLock.js +45 -0
  36. package/dist/esm/Devices/Insteon/Generated/DoorLock.js.map +1 -0
  37. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Input.js +42 -0
  38. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Input.js.map +1 -0
  39. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Output.js +47 -0
  40. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Output.js.map +1 -0
  41. package/dist/esm/Devices/Insteon/Generated/EzrainInput.js +42 -0
  42. package/dist/esm/Devices/Insteon/Generated/EzrainInput.js.map +1 -0
  43. package/dist/esm/Devices/Insteon/Generated/EzrainOutput.js +49 -0
  44. package/dist/esm/Devices/Insteon/Generated/EzrainOutput.js.map +1 -0
  45. package/dist/esm/Devices/Insteon/Generated/FanLincMotor.js +53 -0
  46. package/dist/esm/Devices/Insteon/Generated/FanLincMotor.js.map +1 -0
  47. package/dist/esm/Devices/Insteon/Generated/I3KeypadFlags.js +93 -0
  48. package/dist/esm/Devices/Insteon/Generated/I3KeypadFlags.js.map +1 -0
  49. package/dist/esm/Devices/Insteon/Generated/I3PaddleFlags.js +81 -0
  50. package/dist/esm/Devices/Insteon/Generated/I3PaddleFlags.js.map +1 -0
  51. package/dist/esm/Devices/Insteon/Generated/ImeterSolo.js +49 -0
  52. package/dist/esm/Devices/Insteon/Generated/ImeterSolo.js.map +1 -0
  53. package/dist/esm/Devices/Insteon/Generated/IrLincTx.js +39 -0
  54. package/dist/esm/Devices/Insteon/Generated/IrLincTx.js.map +1 -0
  55. package/dist/esm/Devices/Insteon/Generated/KeypadButton.js +46 -0
  56. package/dist/esm/Devices/Insteon/Generated/KeypadButton.js.map +1 -0
  57. package/dist/esm/Devices/Insteon/Generated/KeypadDimmer.js +78 -0
  58. package/dist/esm/Devices/Insteon/Generated/KeypadDimmer.js.map +1 -0
  59. package/dist/esm/Devices/Insteon/Generated/KeypadRelay.js +56 -0
  60. package/dist/esm/Devices/Insteon/Generated/KeypadRelay.js.map +1 -0
  61. package/dist/esm/Devices/Insteon/Generated/OnOffControl.js +39 -0
  62. package/dist/esm/Devices/Insteon/Generated/OnOffControl.js.map +1 -0
  63. package/dist/esm/Devices/Insteon/Generated/Pir2844.js +64 -0
  64. package/dist/esm/Devices/Insteon/Generated/Pir2844.js.map +1 -0
  65. package/dist/esm/Devices/Insteon/Generated/Pir2844OnOff.js +50 -0
  66. package/dist/esm/Devices/Insteon/Generated/Pir2844OnOff.js.map +1 -0
  67. package/dist/esm/Devices/Insteon/Generated/Pir2844c.js +64 -0
  68. package/dist/esm/Devices/Insteon/Generated/Pir2844c.js.map +1 -0
  69. package/dist/esm/Devices/Insteon/Generated/RelayLamp.js +54 -0
  70. package/dist/esm/Devices/Insteon/Generated/RelayLamp.js.map +1 -0
  71. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js +56 -0
  72. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js.map +1 -0
  73. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitchLed.js +58 -0
  74. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitchLed.js.map +1 -0
  75. package/dist/esm/Devices/Insteon/Generated/RelaySwitch.js +42 -0
  76. package/dist/esm/Devices/Insteon/Generated/RelaySwitch.js.map +1 -0
  77. package/dist/esm/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.js +44 -0
  78. package/dist/esm/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.js.map +1 -0
  79. package/dist/esm/Devices/Insteon/Generated/RemoteLinc2.js +42 -0
  80. package/dist/esm/Devices/Insteon/Generated/RemoteLinc2.js.map +1 -0
  81. package/dist/esm/Devices/Insteon/Generated/Siren.js +66 -0
  82. package/dist/esm/Devices/Insteon/Generated/Siren.js.map +1 -0
  83. package/dist/esm/Devices/Insteon/Generated/SirenAlert.js +35 -0
  84. package/dist/esm/Devices/Insteon/Generated/SirenAlert.js.map +1 -0
  85. package/dist/esm/Devices/Insteon/Generated/TempLinc.js +83 -0
  86. package/dist/esm/Devices/Insteon/Generated/TempLinc.js.map +1 -0
  87. package/dist/esm/Devices/Insteon/Generated/Thermostat.js +83 -0
  88. package/dist/esm/Devices/Insteon/Generated/Thermostat.js.map +1 -0
  89. package/dist/esm/Devices/Insteon/Generated/X10.js +49 -0
  90. package/dist/esm/Devices/Insteon/Generated/X10.js.map +1 -0
  91. package/dist/esm/Devices/Insteon/Generated/index.js +39 -0
  92. package/dist/esm/Devices/Insteon/Generated/index.js.map +1 -0
  93. package/dist/esm/Devices/Insteon/InsteonBaseDevice.js +3 -4
  94. package/dist/esm/Devices/Insteon/InsteonBaseDevice.js.map +1 -1
  95. package/dist/esm/Devices/Insteon/InsteonFanDevice.js +2 -2
  96. package/dist/esm/Devices/Insteon/InsteonFanDevice.js.map +1 -1
  97. package/dist/esm/Devices/Insteon/InsteonRelayDevice.js.map +1 -1
  98. package/dist/esm/Devices/Insteon/KeypadButton.js +11 -11
  99. package/dist/esm/Devices/Insteon/KeypadButton.js.map +1 -1
  100. package/dist/esm/Devices/Insteon/index.js +16 -29
  101. package/dist/esm/Devices/Insteon/index.js.map +1 -1
  102. package/dist/esm/Devices/Lutron/Generated/LoadShed.js +45 -0
  103. package/dist/esm/Devices/Lutron/Generated/LoadShed.js.map +1 -0
  104. package/dist/esm/Devices/NodeFactory.js +45 -8
  105. package/dist/esm/Devices/NodeFactory.js.map +1 -1
  106. package/dist/esm/Devices/Scene/index.js +2 -2
  107. package/dist/esm/Devices/Scene/index.js.map +1 -1
  108. package/dist/esm/Devices/UDI/Generated/Channel.js +42 -0
  109. package/dist/esm/Devices/UDI/Generated/Channel.js.map +1 -0
  110. package/dist/esm/Devices/UDI/Generated/Em3MainChannel.js +54 -0
  111. package/dist/esm/Devices/UDI/Generated/Em3MainChannel.js.map +1 -0
  112. package/dist/esm/Devices/UDI/Generated/Main.js +45 -0
  113. package/dist/esm/Devices/UDI/Generated/Main.js.map +1 -0
  114. package/dist/esm/Devices/UDI/Generated/PulseCounter.js +46 -0
  115. package/dist/esm/Devices/UDI/Generated/PulseCounter.js.map +1 -0
  116. package/dist/esm/Devices/UDI/Generated/Relay.js +45 -0
  117. package/dist/esm/Devices/UDI/Generated/Relay.js.map +1 -0
  118. package/dist/esm/Devices/UDI/Generated/TemperatureSensor.js +38 -0
  119. package/dist/esm/Devices/UDI/Generated/TemperatureSensor.js.map +1 -0
  120. package/dist/esm/Devices/ZWave/Generated/ColorSwitch.js +57 -0
  121. package/dist/esm/Devices/ZWave/Generated/ColorSwitch.js.map +1 -0
  122. package/dist/esm/Devices/ZWave/Generated/DimmerSwitch.js +65 -0
  123. package/dist/esm/Devices/ZWave/Generated/DimmerSwitch.js.map +1 -0
  124. package/dist/esm/Devices/ZWave/Generated/index.js +3 -0
  125. package/dist/esm/Devices/ZWave/Generated/index.js.map +1 -0
  126. package/dist/esm/Devices/ZWave/index.js +1 -0
  127. package/dist/esm/Devices/ZWave/index.js.map +1 -1
  128. package/dist/esm/Devices/index.js +9 -3
  129. package/dist/esm/Devices/index.js.map +1 -1
  130. package/dist/esm/ISY.js +14 -9
  131. package/dist/esm/ISY.js.map +1 -1
  132. package/dist/esm/ISYDevice.js +7 -1
  133. package/dist/esm/ISYDevice.js.map +1 -1
  134. package/dist/esm/ISYNode.js +13 -4
  135. package/dist/esm/ISYNode.js.map +1 -1
  136. package/dist/esm/ISYScene.js +13 -12
  137. package/dist/esm/ISYScene.js.map +1 -1
  138. package/dist/esm/Matter/Behaviors/BehaviorRegistry.js +13 -0
  139. package/dist/esm/Matter/Behaviors/BehaviorRegistry.js.map +1 -0
  140. package/dist/esm/Matter/Behaviors/Insteon/ISYOnOffBehavior.js +3 -0
  141. package/dist/esm/Matter/Behaviors/Insteon/ISYOnOffBehavior.js.map +1 -1
  142. package/dist/esm/Matter/Bridge/Server.js +65 -56
  143. package/dist/esm/Matter/Bridge/Server.js.map +1 -1
  144. package/dist/esm/Matter/Mappings/Insteon.js +28 -9
  145. package/dist/esm/Matter/Mappings/Insteon.js.map +1 -1
  146. package/dist/esm/Model/ClassDefinition.js +22 -3
  147. package/dist/esm/Model/ClassDefinition.js.map +1 -1
  148. package/dist/esm/Model/ClusterMap.js +45 -19
  149. package/dist/esm/Model/ClusterMap.js.map +1 -1
  150. package/dist/esm/Model/NodeInfo.js +1 -1
  151. package/dist/esm/Model/NodeInfo.js.map +1 -1
  152. package/dist/esm/Utils.js.map +1 -1
  153. package/dist/esm/types/CodeGeneration/CodeFactory.d.ts +75 -0
  154. package/dist/esm/types/CodeGeneration/CodeFactory.d.ts.map +1 -0
  155. package/dist/esm/types/CodeGeneration/EnumFactory.d.ts +1 -1
  156. package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts +22 -3
  157. package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts.map +1 -1
  158. package/dist/esm/types/CodeGeneration/NodeFactory.d.ts +75 -0
  159. package/dist/esm/types/CodeGeneration/NodeFactory.d.ts.map +1 -0
  160. package/dist/esm/types/Converters.d.ts +9 -3
  161. package/dist/esm/types/Converters.d.ts.map +1 -1
  162. package/dist/esm/types/Definitions/Global/Drivers.d.ts.map +1 -1
  163. package/dist/esm/types/Definitions/Global/Events.d.ts +2 -2
  164. package/dist/esm/types/Definitions/Global/Events.d.ts.map +1 -1
  165. package/dist/esm/types/Devices/DeviceMap.d.ts +1 -1
  166. package/dist/esm/types/Devices/DeviceMap.d.ts.map +1 -1
  167. package/dist/esm/types/Devices/EndpointFor.d.ts +7 -5
  168. package/dist/esm/types/Devices/EndpointFor.d.ts.map +1 -1
  169. package/dist/esm/types/Devices/ISYDevice.d.ts.map +1 -1
  170. package/dist/esm/types/Devices/ISYDeviceNode.d.ts +5 -13
  171. package/dist/esm/types/Devices/ISYDeviceNode.d.ts.map +1 -1
  172. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleArmed.d.ts +76 -0
  173. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleArmed.d.ts.map +1 -0
  174. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleSiren.d.ts +88 -0
  175. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleSiren.d.ts.map +1 -0
  176. package/dist/esm/types/Devices/Insteon/Generated/BallastRelayLampSwitch.d.ts +88 -0
  177. package/dist/esm/types/Devices/Insteon/Generated/BallastRelayLampSwitch.d.ts.map +1 -0
  178. package/dist/esm/types/Devices/Insteon/Generated/BinaryAlarm.d.ts +64 -0
  179. package/dist/esm/types/Devices/Insteon/Generated/BinaryAlarm.d.ts.map +1 -0
  180. package/dist/esm/types/Devices/Insteon/Generated/BinaryControl.d.ts +64 -0
  181. package/dist/esm/types/Devices/Insteon/Generated/BinaryControl.d.ts.map +1 -0
  182. package/dist/esm/types/Devices/Insteon/Generated/DimmerLamp.d.ts +144 -0
  183. package/dist/esm/types/Devices/Insteon/Generated/DimmerLamp.d.ts.map +1 -0
  184. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitch.d.ts +150 -0
  185. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitch.d.ts.map +1 -0
  186. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitchLed.d.ts +156 -0
  187. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitchLed.d.ts.map +1 -0
  188. package/dist/esm/types/Devices/Insteon/Generated/DimmerMotorSwitch.d.ts +138 -0
  189. package/dist/esm/types/Devices/Insteon/Generated/DimmerMotorSwitch.d.ts.map +1 -0
  190. package/dist/esm/types/Devices/Insteon/Generated/DimmerSwitch.d.ts +51 -0
  191. package/dist/esm/types/Devices/Insteon/Generated/DimmerSwitch.d.ts.map +1 -0
  192. package/dist/esm/types/Devices/Insteon/Generated/DoorLock.d.ts +64 -0
  193. package/dist/esm/types/Devices/Insteon/Generated/DoorLock.d.ts.map +1 -0
  194. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Input.d.ts +52 -0
  195. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Input.d.ts.map +1 -0
  196. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Output.d.ts +70 -0
  197. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Output.d.ts.map +1 -0
  198. package/dist/esm/types/Devices/Insteon/Generated/EzrainInput.d.ts +52 -0
  199. package/dist/esm/types/Devices/Insteon/Generated/EzrainInput.d.ts.map +1 -0
  200. package/dist/esm/types/Devices/Insteon/Generated/EzrainOutput.d.ts +76 -0
  201. package/dist/esm/types/Devices/Insteon/Generated/EzrainOutput.d.ts.map +1 -0
  202. package/dist/esm/types/Devices/Insteon/Generated/FanLincMotor.d.ts +88 -0
  203. package/dist/esm/types/Devices/Insteon/Generated/FanLincMotor.d.ts.map +1 -0
  204. package/dist/esm/types/Devices/Insteon/Generated/I3KeypadFlags.d.ts +168 -0
  205. package/dist/esm/types/Devices/Insteon/Generated/I3KeypadFlags.d.ts.map +1 -0
  206. package/dist/esm/types/Devices/Insteon/Generated/I3PaddleFlags.d.ts +142 -0
  207. package/dist/esm/types/Devices/Insteon/Generated/I3PaddleFlags.d.ts.map +1 -0
  208. package/dist/esm/types/Devices/Insteon/Generated/ImeterSolo.d.ts +71 -0
  209. package/dist/esm/types/Devices/Insteon/Generated/ImeterSolo.d.ts.map +1 -0
  210. package/dist/esm/types/Devices/Insteon/Generated/IrLincTx.d.ts +51 -0
  211. package/dist/esm/types/Devices/Insteon/Generated/IrLincTx.d.ts.map +1 -0
  212. package/dist/esm/types/Devices/Insteon/Generated/KeypadButton.d.ts +64 -0
  213. package/dist/esm/types/Devices/Insteon/Generated/KeypadButton.d.ts.map +1 -0
  214. package/dist/esm/types/Devices/Insteon/Generated/KeypadDimmer.d.ts +150 -0
  215. package/dist/esm/types/Devices/Insteon/Generated/KeypadDimmer.d.ts.map +1 -0
  216. package/dist/esm/types/Devices/Insteon/Generated/KeypadRelay.d.ts +94 -0
  217. package/dist/esm/types/Devices/Insteon/Generated/KeypadRelay.d.ts.map +1 -0
  218. package/dist/esm/types/Devices/Insteon/Generated/OnOffControl.d.ts +44 -0
  219. package/dist/esm/types/Devices/Insteon/Generated/OnOffControl.d.ts.map +1 -0
  220. package/dist/esm/types/Devices/Insteon/Generated/Pir2844.d.ts +98 -0
  221. package/dist/esm/types/Devices/Insteon/Generated/Pir2844.d.ts.map +1 -0
  222. package/dist/esm/types/Devices/Insteon/Generated/Pir2844OnOff.d.ts +76 -0
  223. package/dist/esm/types/Devices/Insteon/Generated/Pir2844OnOff.d.ts.map +1 -0
  224. package/dist/esm/types/Devices/Insteon/Generated/Pir2844c.d.ts +98 -0
  225. package/dist/esm/types/Devices/Insteon/Generated/Pir2844c.d.ts.map +1 -0
  226. package/dist/esm/types/Devices/Insteon/Generated/RelayLamp.d.ts +88 -0
  227. package/dist/esm/types/Devices/Insteon/Generated/RelayLamp.d.ts.map +1 -0
  228. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts +94 -0
  229. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts.map +1 -0
  230. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitchLed.d.ts +100 -0
  231. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitchLed.d.ts.map +1 -0
  232. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitch.d.ts +57 -0
  233. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitch.d.ts.map +1 -0
  234. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.d.ts +63 -0
  235. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.d.ts.map +1 -0
  236. package/dist/esm/types/Devices/Insteon/Generated/RemoteLinc2.d.ts +52 -0
  237. package/dist/esm/types/Devices/Insteon/Generated/RemoteLinc2.d.ts.map +1 -0
  238. package/dist/esm/types/Devices/Insteon/Generated/Siren.d.ts +109 -0
  239. package/dist/esm/types/Devices/Insteon/Generated/Siren.d.ts.map +1 -0
  240. package/dist/esm/types/Devices/Insteon/Generated/SirenAlert.d.ts +37 -0
  241. package/dist/esm/types/Devices/Insteon/Generated/SirenAlert.d.ts.map +1 -0
  242. package/dist/esm/types/Devices/Insteon/Generated/TempLinc.d.ts +148 -0
  243. package/dist/esm/types/Devices/Insteon/Generated/TempLinc.d.ts.map +1 -0
  244. package/dist/esm/types/Devices/Insteon/Generated/Thermostat.d.ts +148 -0
  245. package/dist/esm/types/Devices/Insteon/Generated/Thermostat.d.ts.map +1 -0
  246. package/dist/esm/types/Devices/Insteon/Generated/X10.d.ts +76 -0
  247. package/dist/esm/types/Devices/Insteon/Generated/X10.d.ts.map +1 -0
  248. package/dist/esm/types/Devices/Insteon/Generated/index.d.ts +39 -0
  249. package/dist/esm/types/Devices/Insteon/Generated/index.d.ts.map +1 -0
  250. package/dist/esm/types/Devices/Insteon/InsteonBaseDevice.d.ts +4 -10
  251. package/dist/esm/types/Devices/Insteon/InsteonBaseDevice.d.ts.map +1 -1
  252. package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts +22 -28
  253. package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts.map +1 -1
  254. package/dist/esm/types/Devices/Insteon/InsteonFanDevice.d.ts +3 -3
  255. package/dist/esm/types/Devices/Insteon/InsteonFanDevice.d.ts.map +1 -1
  256. package/dist/esm/types/Devices/Insteon/InsteonLeakSensorDevice.d.ts +1 -1
  257. package/dist/esm/types/Devices/Insteon/InsteonLeakSensorDevice.d.ts.map +1 -1
  258. package/dist/esm/types/Devices/Insteon/InsteonRelayDevice.d.ts.map +1 -1
  259. package/dist/esm/types/Devices/Insteon/KeypadButton.d.ts +19 -19
  260. package/dist/esm/types/Devices/Insteon/KeypadButton.d.ts.map +1 -1
  261. package/dist/esm/types/Devices/Insteon/index.d.ts +6 -42
  262. package/dist/esm/types/Devices/Insteon/index.d.ts.map +1 -1
  263. package/dist/esm/types/Devices/Lutron/Generated/LoadShed.d.ts +64 -0
  264. package/dist/esm/types/Devices/Lutron/Generated/LoadShed.d.ts.map +1 -0
  265. package/dist/esm/types/Devices/NodeFactory.d.ts +18 -7
  266. package/dist/esm/types/Devices/NodeFactory.d.ts.map +1 -1
  267. package/dist/esm/types/Devices/Scene/index.d.ts +2 -1
  268. package/dist/esm/types/Devices/Scene/index.d.ts.map +1 -1
  269. package/dist/esm/types/Devices/UDI/Generated/Channel.d.ts +51 -0
  270. package/dist/esm/types/Devices/UDI/Generated/Channel.d.ts.map +1 -0
  271. package/dist/esm/types/Devices/UDI/Generated/Em3MainChannel.d.ts +72 -0
  272. package/dist/esm/types/Devices/UDI/Generated/Em3MainChannel.d.ts.map +1 -0
  273. package/dist/esm/types/Devices/UDI/Generated/Main.d.ts +59 -0
  274. package/dist/esm/types/Devices/UDI/Generated/Main.d.ts.map +1 -0
  275. package/dist/esm/types/Devices/UDI/Generated/PulseCounter.d.ts +58 -0
  276. package/dist/esm/types/Devices/UDI/Generated/PulseCounter.d.ts.map +1 -0
  277. package/dist/esm/types/Devices/UDI/Generated/Relay.d.ts +64 -0
  278. package/dist/esm/types/Devices/UDI/Generated/Relay.d.ts.map +1 -0
  279. package/dist/esm/types/Devices/UDI/Generated/TemperatureSensor.d.ts +44 -0
  280. package/dist/esm/types/Devices/UDI/Generated/TemperatureSensor.d.ts.map +1 -0
  281. package/dist/esm/types/Devices/ZWave/Generated/ColorSwitch.d.ts +90 -0
  282. package/dist/esm/types/Devices/ZWave/Generated/ColorSwitch.d.ts.map +1 -0
  283. package/dist/esm/types/Devices/ZWave/Generated/DimmerSwitch.d.ts +124 -0
  284. package/dist/esm/types/Devices/ZWave/Generated/DimmerSwitch.d.ts.map +1 -0
  285. package/dist/esm/types/Devices/ZWave/Generated/index.d.ts +3 -0
  286. package/dist/esm/types/Devices/ZWave/Generated/index.d.ts.map +1 -0
  287. package/dist/esm/types/Devices/ZWave/index.d.ts.map +1 -1
  288. package/dist/esm/types/Devices/index.d.ts +7 -21
  289. package/dist/esm/types/Devices/index.d.ts.map +1 -1
  290. package/dist/esm/types/ISY.d.ts.map +1 -1
  291. package/dist/esm/types/ISYDevice.d.ts +19 -28
  292. package/dist/esm/types/ISYDevice.d.ts.map +1 -1
  293. package/dist/esm/types/ISYNode.d.ts +25 -8
  294. package/dist/esm/types/ISYNode.d.ts.map +1 -1
  295. package/dist/esm/types/ISYScene.d.ts +5 -6
  296. package/dist/esm/types/ISYScene.d.ts.map +1 -1
  297. package/dist/esm/types/Matter/Behaviors/BehaviorRegistry.d.ts +11 -0
  298. package/dist/esm/types/Matter/Behaviors/BehaviorRegistry.d.ts.map +1 -0
  299. package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts +1 -4
  300. package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts.map +1 -1
  301. package/dist/esm/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts +5 -4
  302. package/dist/esm/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts.map +1 -1
  303. package/dist/esm/types/Matter/Bridge/Server.d.ts +1 -1
  304. package/dist/esm/types/Matter/Bridge/Server.d.ts.map +1 -1
  305. package/dist/esm/types/Model/ClassDefinition.d.ts +6 -2
  306. package/dist/esm/types/Model/ClassDefinition.d.ts.map +1 -1
  307. package/dist/esm/types/Model/ClusterMap.d.ts +12 -21
  308. package/dist/esm/types/Model/ClusterMap.d.ts.map +1 -1
  309. package/dist/esm/types/Model/EnumDefinition.d.ts +1 -1
  310. package/dist/esm/types/Utils.d.ts +18 -0
  311. package/dist/esm/types/Utils.d.ts.map +1 -1
  312. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  313. package/package.json +2 -2
  314. package/src/CodeGeneration/CodeFactory.ts +341 -0
  315. package/src/CodeGeneration/NodeClassFactory.ts +362 -233
  316. package/src/Converters.ts +23 -3
  317. package/src/Definitions/Global/Drivers.ts +1 -0
  318. package/src/Definitions/Global/Events.ts +3 -3
  319. package/src/Devices/Brultech/Generated/Channel.ts +8 -6
  320. package/src/Devices/Brultech/Generated/Main.ts +9 -9
  321. package/src/Devices/DeviceMap.ts +1 -1
  322. package/src/Devices/ISYDevice.ts +8 -57
  323. package/src/Devices/ISYDeviceNode.ts +143 -166
  324. package/src/Devices/Insteon/Generated/AlertModuleArmed.ts +13 -21
  325. package/src/Devices/Insteon/Generated/AlertModuleSiren.ts +18 -29
  326. package/src/Devices/Insteon/Generated/BallastRelayLampSwitch.ts +18 -29
  327. package/src/Devices/Insteon/Generated/BinaryAlarm.ts +14 -17
  328. package/src/Devices/Insteon/Generated/BinaryControl.ts +14 -17
  329. package/src/Devices/Insteon/Generated/DimmerLamp.ts +25 -51
  330. package/src/Devices/Insteon/Generated/DimmerLampSwitch.ts +36 -64
  331. package/src/Devices/Insteon/Generated/DimmerLampSwitchLed.ts +31 -60
  332. package/src/Devices/Insteon/Generated/DimmerMotorSwitch.ts +24 -47
  333. package/src/Devices/Insteon/Generated/DimmerSwitch.ts +13 -14
  334. package/src/Devices/Insteon/Generated/DoorLock.ts +11 -15
  335. package/src/Devices/Insteon/Generated/Ezio2x4Input.ts +12 -11
  336. package/src/Devices/Insteon/Generated/Ezio2x4Output.ts +12 -18
  337. package/src/Devices/Insteon/Generated/EzrainInput.ts +12 -11
  338. package/src/Devices/Insteon/Generated/EzrainOutput.ts +13 -21
  339. package/src/Devices/Insteon/Generated/FanLincMotor.ts +15 -27
  340. package/src/Devices/Insteon/Generated/I3KeypadFlags.ts +19 -39
  341. package/src/Devices/Insteon/Generated/I3PaddleFlags.ts +17 -33
  342. package/src/Devices/Insteon/Generated/ImeterSolo.ts +11 -15
  343. package/src/Devices/Insteon/Generated/IrLincTx.ts +10 -12
  344. package/src/Devices/Insteon/Generated/{KeypadButtonAdv.ts → KeypadButton.ts} +23 -26
  345. package/src/Devices/Insteon/Generated/KeypadDimmer.ts +30 -57
  346. package/src/Devices/Insteon/Generated/KeypadRelay.ts +30 -43
  347. package/src/Devices/Insteon/Generated/OnOffControl.ts +15 -12
  348. package/src/Devices/Insteon/Generated/Pir2844.ts +15 -20
  349. package/src/Devices/Insteon/Generated/Pir2844OnOff.ts +16 -23
  350. package/src/Devices/Insteon/Generated/Pir2844c.ts +15 -20
  351. package/src/Devices/Insteon/Generated/RelayLamp.ts +29 -41
  352. package/src/Devices/Insteon/Generated/RelayLampSwitch.ts +29 -42
  353. package/src/Devices/Insteon/Generated/RelayLampSwitchLed.ts +24 -39
  354. package/src/Devices/Insteon/Generated/RelaySwitch.ts +14 -17
  355. package/src/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.ts +15 -20
  356. package/src/Devices/Insteon/Generated/RemoteLinc2.ts +12 -11
  357. package/src/Devices/Insteon/Generated/Siren.ts +18 -29
  358. package/src/Devices/Insteon/Generated/SirenAlert.ts +11 -8
  359. package/src/Devices/Insteon/Generated/TempLinc.ts +18 -36
  360. package/src/Devices/Insteon/Generated/Thermostat.ts +18 -36
  361. package/src/Devices/Insteon/Generated/X10.ts +13 -21
  362. package/src/Devices/Insteon/Generated/index.ts +38 -0
  363. package/src/Devices/Insteon/InsteonBaseDevice.ts +5 -4
  364. package/src/Devices/Insteon/InsteonFanDevice.ts +3 -4
  365. package/src/Devices/Insteon/InsteonRelayDevice.ts +1 -0
  366. package/src/Devices/Insteon/KeypadButton.ts +31 -31
  367. package/src/Devices/Insteon/index.ts +18 -26
  368. package/src/Devices/Lutron/Generated/LoadShed.ts +11 -15
  369. package/src/Devices/NCD/Generated/Relay.ts +12 -18
  370. package/src/Devices/NodeFactory.ts +67 -13
  371. package/src/Devices/Poly/Generated/MatterBridge.ts +84 -0
  372. package/src/Devices/Scene/Generated/Scene.ts +33 -65
  373. package/src/Devices/Scene/index.ts +2 -1
  374. package/src/Devices/UDI/Generated/Channel.ts +8 -6
  375. package/src/Devices/UDI/Generated/Em3MainChannel.ts +8 -6
  376. package/src/Devices/UDI/Generated/Main.ts +9 -9
  377. package/src/Devices/UDI/Generated/PulseCounter.ts +8 -6
  378. package/src/Devices/UDI/Generated/Relay.ts +11 -15
  379. package/src/Devices/UDI/Generated/TemperatureSensor.ts +8 -6
  380. package/src/Devices/ZWave/Generated/ColorSwitch.ts +16 -24
  381. package/src/Devices/ZWave/Generated/DimmerSwitch.ts +25 -49
  382. package/src/Devices/ZWave/Generated/index.ts +2 -0
  383. package/src/Devices/ZWave/index.ts +5 -1
  384. package/src/Devices/ZigBeeLegacy/Generated/Relay.ts +12 -18
  385. package/src/Devices/ZigBeeLegacy/Generated/Thermostat.ts +17 -33
  386. package/src/Devices/index.ts +17 -12
  387. package/src/ISY.ts +9 -3
  388. package/src/ISYDevice.ts +68 -57
  389. package/src/ISYNode.ts +32 -8
  390. package/src/ISYScene.ts +31 -28
  391. package/src/Matter/Behaviors/BehaviorRegistry.ts +26 -0
  392. package/src/Matter/Behaviors/Insteon/ISYOnOffBehavior.ts +6 -0
  393. package/src/Matter/Bridge/Server.ts +39 -15
  394. package/src/Matter/Mappings/Insteon.ts +37 -20
  395. package/src/Model/ClassDefinition.ts +34 -4
  396. package/src/Model/ClusterMap.ts +73 -57
  397. package/src/Model/NodeInfo.ts +1 -1
  398. package/src/Utils.ts +38 -0
  399. package/tsconfig.json +7 -1
  400. package/src/Devices/Insteon/Generated/AlertModuleSirenAdv.ts +0 -123
  401. package/src/Devices/Insteon/Generated/BallastRelayLampSwitchAdv.ts +0 -123
  402. package/src/Devices/Insteon/Generated/BinaryAlarmAdv.ts +0 -91
  403. package/src/Devices/Insteon/Generated/BinaryControlAdv.ts +0 -91
  404. package/src/Devices/Insteon/Generated/DimmerLampSwitchAdv.ts +0 -207
  405. package/src/Devices/Insteon/Generated/DimmerLampSwitchLedAdv.ts +0 -215
  406. package/src/Devices/Insteon/Generated/DimmerMotorSwitchAdv.ts +0 -191
  407. package/src/Devices/Insteon/Generated/DimmerSwitchOnlyAdv.ts +0 -73
  408. package/src/Devices/Insteon/Generated/Ezio2x4InputAdv.ts +0 -75
  409. package/src/Devices/Insteon/Generated/EzrainInputAdv.ts +0 -75
  410. package/src/Devices/Insteon/Generated/KeypadDimmerAdv.ts +0 -207
  411. package/src/Devices/Insteon/Generated/KeypadRelayAdv.ts +0 -131
  412. package/src/Devices/Insteon/Generated/OnOffControlAdv.ts +0 -65
  413. package/src/Devices/Insteon/Generated/Pir2844Adv.ts +0 -139
  414. package/src/Devices/Insteon/Generated/Pir2844OnOffAdv.ts +0 -107
  415. package/src/Devices/Insteon/Generated/Pir2844cAdv.ts +0 -139
  416. package/src/Devices/Insteon/Generated/RelayLampOnlyAdv.ts +0 -123
  417. package/src/Devices/Insteon/Generated/RelayLampSwitchAdv.ts +0 -131
  418. package/src/Devices/Insteon/Generated/RelayLampSwitchLedAdv.ts +0 -139
  419. package/src/Devices/Insteon/Generated/RelaySwitchOnlyAdv.ts +0 -81
  420. package/src/Devices/Insteon/Generated/RelaySwitchOnlyPlusQueryAdv.ts +0 -89
  421. package/src/Devices/Insteon/Generated/RemoteLinc2Adv.ts +0 -75
  422. package/src/Devices/Insteon/Generated/SirenArm.ts +0 -55
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);
@@ -1,6 +1,6 @@
1
- import { Endpoint, EndpointServer, Environment, ServerNode, StorageService, Time, VendorId } from '@matter/main';
1
+ import { Endpoint, EndpointServer, Environment, MutableEndpoint, ServerNode, StorageService, Time, VendorId, type SupportedBehaviors } from '@matter/main';
2
2
  import { StorageBackendDisk } from '@project-chip/matter-node.js/storage';
3
- import { BridgedDeviceBasicInformationServer } from '@project-chip/matter.js/behaviors/bridged-device-basic-information';
3
+ import { BridgedDeviceBasicInformationServer, type BridgedDeviceBasicInformationBehavior } from '@project-chip/matter.js/behaviors/bridged-device-basic-information';
4
4
  import { logEndpoint } from '@matter/main/protocol';
5
5
  import { DimmableLightDevice, OnOffLightDevice } from '@matter/main/devices';
6
6
  import { AggregatorEndpoint } from '@matter/main/endpoints/aggregator';
@@ -17,9 +17,14 @@ import { ISYBridgedDeviceBehavior } from '../Behaviors/ISYBridgedDeviceBehavior.
17
17
  import { ISYDimmableBehavior, ISYOnOffBehavior } from '../Behaviors/Insteon/ISYOnOffBehavior.js';
18
18
  import '../Mappings/Insteon.js';
19
19
  import type { ISYNode } from '../../ISYNode.js';
20
- import type { DeviceToClusterMap } from '../../Model/ClusterMap.js';
20
+ import { MappingRegistry, type DeviceToClusterMap } from '../../Model/ClusterMap.js';
21
21
  import { Options } from '../../Definitions/ZWave/index.js';
22
22
  import { InsteonBaseDevice } from '../../Devices/Insteon/InsteonBaseDevice.js';
23
+ import { DimmerLamp } from '../../Devices/Insteon/Generated/DimmerLamp.js';
24
+ import { Family } from '../../Definitions/index.js';
25
+ import { RelayLamp } from '../../Devices/Insteon/index.js';
26
+ import type { DeviceTypeDefinition } from '@project-chip/matter.js/device';
27
+ import type { BridgedISYNodeInformationServer } from '../../Devices/EndpointFor.js';
23
28
 
24
29
 
25
30
  // #region Interfaces (1)
@@ -70,6 +75,10 @@ export interface DeviceOptions {
70
75
 
71
76
  // #region Functions (3)
72
77
 
78
+ let t : MutableEndpoint;
79
+
80
+
81
+
73
82
  export function create(isy?: ISY, config?: Config): Promise<ServerNode> {
74
83
  return createMatterServer(isy, config);
75
84
  }
@@ -187,7 +196,7 @@ export async function createMatterServer(isy?: ISY, config?: Config): Promise<Se
187
196
  }
188
197
  });
189
198
 
190
- logger.info(`Bridge Server Added`);
199
+ logger.info(`Bridge server added`);
191
200
 
192
201
  /**
193
202
  * Matter Nodes are a composition of endpoints. Create and add a single multiple endpoint to the node to make it a
@@ -203,10 +212,12 @@ export async function createMatterServer(isy?: ISY, config?: Config): Promise<Se
203
212
 
204
213
  await server.add(aggregator);
205
214
 
206
- logger.info(`Bridge Aggregator Added`);
207
-
215
+ logger.info(`Bridge aggregator added`);
216
+ let endpoints = 0;
208
217
  for (const node of isy.nodeMap.values()) {
209
218
  let device = node as ISYDeviceNode<any, any, any>;
219
+ try
220
+ {
210
221
  let deviceOptions = getDeviceOptions(node, config.DeviceOptions);
211
222
  if(deviceOptions?.label)
212
223
  {
@@ -220,16 +231,21 @@ export async function createMatterServer(isy?: ISY, config?: Config): Promise<Se
220
231
  //const name = `OnOff ${isASocket ? "Socket" : "Light"} ${i}`;
221
232
 
222
233
  //@ts-ignore
223
- let baseBehavior: any; /*typeof (DimmableLightDevice.with(BridgedDeviceBasicInformationServer, ISYBridgedDeviceBehavior, ISYOnOffBehavior, ISYDimmableBehavior)) | typeof (OnOffLightDevice.with(BridgedDeviceBasicInformationServer, ISYBridgedDeviceBehavior, ISYOnOffBehavior));*/
234
+ //of (DimmableLightDevice.with(BridgedDeviceBasicInformationServer, ISYBridgedDeviceBehavior, ISYOnOffBehavior, ISYDimmableBehavior)) | typeof (OnOffLightDevice.with(BridgedDeviceBasicInformationServer, ISYBridgedDeviceBehavior, ISYOnOffBehavior));*/
235
+ let deviceType = MappingRegistry.getMapping(device)?.deviceType;
236
+
237
+
224
238
 
225
- if (device instanceof Devices.Insteon.Dimmer || device instanceof Devices.Insteon.DimmerSwitch || device instanceof Devices.Insteon.KeypadDimmer) {
226
- baseBehavior = DimmableLightDevice.with(BridgedDeviceBasicInformationServer, ISYBridgedDeviceBehavior, ISYOnOffBehavior, ISYDimmableBehavior);
239
+ let baseBehavior = deviceType;
240
+ if (DimmerLamp.isImplementedBy(device)) {
241
+
242
+ baseBehavior = deviceType?.with(ISYOnOffBehavior, ISYDimmableBehavior);
227
243
  // if(device instanceof InsteonSwitchDevice)
228
244
  // {
229
245
  // baseBehavior = DimmerSwitchDevice.with(BridgedDeviceBasicInformationServer);
230
- // }
231
- } else if (device instanceof Devices.Insteon.Relay || device instanceof Devices.Insteon.RelaySwitch) {
232
- baseBehavior = OnOffLightDevice.with(BridgedDeviceBasicInformationServer, ISYBridgedDeviceBehavior, ISYOnOffBehavior);
246
+ }
247
+ else if (RelayLamp.isImplementedBy(device)) {
248
+ baseBehavior = deviceType?.with(ISYOnOffBehavior);
233
249
  // if(device instanceof InsteonSwitchDevice)
234
250
  // {
235
251
  // baseBehavior = OnOffLightSwitchDevice.with(BridgedDeviceBasicInformationServer);
@@ -237,6 +253,8 @@ export async function createMatterServer(isy?: ISY, config?: Config): Promise<Se
237
253
  }
238
254
 
239
255
  if (baseBehavior !== undefined) {
256
+
257
+ logger.info(`Device ${device.label} (${device.address}) with NodeDefId = ${device.nodeDefId} mapped to ${deviceType.name}`);
240
258
  //@ts-ignore
241
259
  const endpoint = new Endpoint(baseBehavior, {
242
260
  id: serialNumber,
@@ -246,7 +264,7 @@ export async function createMatterServer(isy?: ISY, config?: Config): Promise<Se
246
264
 
247
265
  bridgedDeviceBasicInformation: {
248
266
  nodeLabel: device.label.rightWithToken(32),
249
- vendorName: device instanceof InsteonBaseDevice ? InsteonBaseDevice.vendorName : isy.vendorName,
267
+ vendorName: device instanceof ISYDeviceNode ? device.manufacturer : isy.vendorName,
250
268
  vendorId: VendorId(config.vendorId),
251
269
  productName: device.productName.leftWithToken(32),
252
270
  productLabel: device.model.leftWithToken(64),
@@ -263,10 +281,15 @@ export async function createMatterServer(isy?: ISY, config?: Config): Promise<Se
263
281
  });
264
282
 
265
283
  await aggregator.add(endpoint);
266
- logger.info(`Endpoint Added ${JSON.stringify(endpoint.id)} for ${device.label} (${device.address})`);
284
+ logger.info(`Endpoint added ${JSON.stringify(endpoint.id)} for ${device.label} (${device.address})`);
285
+ endpoints++;
267
286
  //endpoints.push({0:endpoint,1:device});
268
287
  }
269
288
  //endpoint.lifecycle.ready.on(()=> device.initialize(endpoint as any));
289
+ }}
290
+ catch(e)
291
+ {
292
+ logger.error(`Error adding endpoint for ${device.label} (${device.address}): ${e.message}`);
270
293
  }
271
294
 
272
295
  /**
@@ -275,8 +298,9 @@ export async function createMatterServer(isy?: ISY, config?: Config): Promise<Se
275
298
  * If the code in these change handlers fail then the change is also rolled back and not executed and an error is
276
299
  * reported back to the controller.
277
300
  */
278
- }
279
301
 
302
+ }
303
+ logger.info(`${endpoints} endpoints added to bridge.`);
280
304
  /**
281
305
  * In order to start the node and announce it into the network we use the run method which resolves when the node goes
282
306
  * offline again because we do not need anything more here. See the Full example for other starting options.
@@ -1,46 +1,65 @@
1
1
 
2
-
3
- import { OnOffLightDevice } from '@project-chip/matter.js/devices/OnOffLightDevice';
4
- import { DriverType } from '../../Definitions/Global/Drivers.js';
5
- import { Family, type t } from '../../Definitions/Global/Families.js';
6
- import { Insteon } from '../../Devices/Insteon/index.js';
7
- import { Devices } from '../../Devices/index.js';
8
- import { MappingRegistry, type DeviceToClusterMap, type EndpointMapping, type FamilyToClusterMap } from '../../Model/ClusterMap.js';
2
+ import { Family } from '../../Definitions/Global/Families.js';
3
+ import * as Insteon from '../../Devices/Insteon/index.js';
4
+ import { MappingRegistry, type EndpointMapping, type FamilyToClusterMap } from '../../Model/ClusterMap.js';
9
5
 
10
6
  //import InsteonMap from "./Insteon.json";
11
- import { DimmableLightDevice } from '@project-chip/matter.js/devices/DimmableLightDevice';
12
- import { Converter } from '../../Converters.js';
13
- import type { InsteonRelaySwitchDevice } from '../../Devices/Insteon/InsteonRelaySwitchDevice.js';
7
+
8
+ import { OnOffLightDevice, DimmableLightDevice } from '@matter/node/devices';
14
9
 
15
10
  const map: FamilyToClusterMap<Family.Insteon> = {
16
11
  Family: Family.Insteon,
17
- Relay: {
12
+
13
+ RelayLamp: {
18
14
  deviceType: OnOffLightDevice,
19
15
  mapping: {
20
16
  OnOff: {
21
17
  attributes: {
22
- onOff: 'ST'
18
+ onOff: { driver: 'ST', converter: 'LevelFrom0To255.Boolean' }
23
19
  },
24
20
  commands: { on: 'DON' }
25
21
  }
26
- } as EndpointMapping<OnOffLightDevice, Insteon.Relay>
22
+
23
+ }
27
24
  },
28
- RelaySwitch: {
25
+ RelayLampSwitch: {
29
26
  deviceType: OnOffLightDevice,
30
27
  mapping: {
31
28
  OnOff: {
32
29
  attributes: {
33
- onOff: 'ST'
30
+ onOff: { driver: 'ST', converter: 'LevelFrom0To255.Boolean' }
34
31
  },
35
32
  commands: { on: 'DON' }
36
33
  }
37
34
  }
35
+ ,},
36
+ DimmerLamp: {
37
+ deviceType: DimmableLightDevice,
38
+ // @ts-ignore
39
+ mapping: {
40
+ // @ts-ignore
41
+ OnOff: {
42
+ attributes: {
43
+ onOff: { driver: 'ST', converter: 'LevelFrom0To255.Boolean' }
44
+ },
45
+ commands: { on: 'DON' }
46
+ },
47
+ LevelControl: {
48
+ // @ts-ignore
49
+ attributes: {
50
+ currentLevel: { driver: 'ST', converter: 'LevelFrom0To255.LightingLevel' },
51
+ startUpCurrentLevel: { driver: 'OL', converter: 'LevelFrom0To255.LightingLevel' },
52
+ onLevel: { driver: 'OL', converter: 'LevelFrom0To255.LightingLevel' }
53
+ },
54
+ commands: { setLevel: { command: 'DON' } }
55
+ }
56
+ } as EndpointMapping<DimmableLightDevice, Insteon.DimmerLampNode>
38
57
  },
39
- Dimmer: {
40
-
58
+ DimmerLampSwitch: {
41
59
  deviceType: DimmableLightDevice,
42
60
  // @ts-ignore
43
61
  mapping: {
62
+
44
63
  // @ts-ignore
45
64
  OnOff: {
46
65
  attributes: {
@@ -57,11 +76,9 @@ const map: FamilyToClusterMap<Family.Insteon> = {
57
76
  },
58
77
  commands: { setLevel: { command: 'DON' } }
59
78
  }
60
- } as EndpointMapping<DimmableLightDevice, Insteon.Dimmer>
79
+ } as EndpointMapping<DimmableLightDevice, Insteon.DimmerLampNode>
61
80
  }
62
81
  };
63
82
 
64
- map.KeypadDimmer = map.Dimmer;
65
- map.DimmerSwitch = map.Dimmer;
66
83
 
67
84
  MappingRegistry.register(map);