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
@@ -72,12 +72,19 @@ function buildNodeClassDefinitions<T extends Family>(nodeDefs: NodeDef[], family
72
72
  if (id.includes(id2)) {
73
73
  node.implements.push(id2, ...node2.implements);
74
74
  node.equivalentTo.push(id2);
75
+ node2.equivalents.push(id);
76
+
75
77
  } else {
76
78
  node2.implements.push(id, ...node.implements);
77
79
  node2.equivalentTo.push(id);
80
+ node.equivalents.push(id2);
78
81
  }
79
82
  } else if (ext) {
80
83
  node.implements.push(id2, ...node2.implements);
84
+ if(id.includes(id2))
85
+ {
86
+ node.extends.push(id2);
87
+ }
81
88
  }
82
89
 
83
90
  // if (Object.keys(d.).length == 0) {
@@ -113,10 +120,19 @@ function buildNodeClassDefinitions<T extends Family>(nodeDefs: NodeDef[], family
113
120
  e = i;
114
121
  }
115
122
  }
116
- node.extends = e;
123
+
117
124
  }
118
125
  map[node.id] = node;
119
126
  }
127
+ for (const node of Object.values(map).filter((p) => p.implements.length > 0))
128
+ {
129
+ for (const i of node.implements)
130
+ {
131
+ let superNode = map[i];
132
+ if(superNode)
133
+ superNode.implementedBy?.push(node.id);
134
+ }
135
+ }
120
136
  return map;
121
137
  }
122
138
 
@@ -127,11 +143,17 @@ export class NodeClassDefinition<T extends Family> {
127
143
  public drivers: { [x in Driver.Type]?: DriverDefinition } = {};
128
144
  public dynamic: boolean = false;
129
145
  public equivalentTo: string[] = [];
146
+
147
+ public equivalents: string[] = [];
148
+
149
+
130
150
  public events: { [x: string]: EventDefinition } = {};
131
- public extends?: string;
151
+ public extends?: string[] = [];
132
152
  public family: T;
133
153
  public id: string;
134
154
  public implements: string[] = [];
155
+
156
+ public implementedBy: string[] = [];
135
157
  public label: string;
136
158
  public nlsId: string;
137
159
 
@@ -262,7 +284,9 @@ export class NodeClassDefinition<T extends Family> {
262
284
  dynamic: this.family in [Family.ZWave, Family.ZigBee],
263
285
  implements: this.implements.length > 0 ? this.implements : undefined,
264
286
  equivalentTo: this.equivalentTo.length > 0 ? this.equivalentTo : undefined,
265
- extends: this.extends
287
+ extends: this.extends.length > 0 ? this.extends : undefined,
288
+ equivalents: this.equivalents.length > 0 ? this.equivalents : undefined,
289
+ implementedBy: this.implementedBy.length > 0 ? this.implementedBy : undefined
266
290
  };
267
291
  }
268
292
 
@@ -409,7 +433,7 @@ export abstract class NodeMemberDefinition<TId extends string> {
409
433
  var d = {};
410
434
  for (const rangeDef of toArray(e.range)) {
411
435
  if ('subset' in rangeDef) {
412
- d[rangeDef.uom] = { uom: rangeDef.uom, indexId: rangeDef.nls, ...this.#parseSubset(e) };
436
+ d[rangeDef.uom]= { uom: rangeDef.uom, indexId: rangeDef.nls, ...this.#parseSubset(e) };
413
437
  } else {
414
438
  d[rangeDef.uom] = {
415
439
  uom: rangeDef.uom,
@@ -422,8 +446,14 @@ export abstract class NodeMemberDefinition<TId extends string> {
422
446
  returnType: rangeDef.nls ? EnumDefinition.get(this.classDef.family, rangeDef.nls, rangeDef.uom, this.classDef.id)?.name : undefined
423
447
  };
424
448
  }
449
+ if(rangeDef.uom === UnitOfMeasure.Index)
450
+ {
451
+ d[rangeDef.uom].enum = true;
452
+ }
453
+
425
454
  }
426
455
  this.dataType = d;
456
+
427
457
  }
428
458
  }
429
459
 
@@ -1,16 +1,20 @@
1
- import { ClusterBehavior } from '@project-chip/matter.js/behavior/cluster';
2
1
  import * as Clusters from '@project-chip/matter.js/cluster';
3
- import { OnOffLightDevice } from '@project-chip/matter.js/devices/OnOffLightDevice';
4
- import { SupportedBehaviors } from '@project-chip/matter.js/endpoint/properties';
5
- import type { MutableEndpoint } from '@project-chip/matter.js/endpoint/type';
2
+
6
3
  import type { Converter } from '../Converters.js';
7
4
  import { DriverType } from '../Definitions/Global/Drivers.js';
8
- import { Devices } from '../Devices/index.js';
9
- import { Insteon } from '../Devices/Insteon/index.js';
10
-
5
+ import { Devices, Insteon } from '../Devices/index.js';
6
+
7
+ import { ClusterBehavior, MutableEndpoint, SupportedBehaviors } from '@matter/main';
8
+ import type { OnOffLightDevice } from '@matter/main/devices';
9
+ import { BridgedDeviceBasicInformationBehavior } from '@matter/node/behaviors';
10
+ import type { DeviceTypeDefinition } from '@project-chip/matter.js/device';
11
+ import { Family } from '../Definitions/index.js';
12
+ import { NodeFactory } from '../Devices/NodeFactory.js';
11
13
  import { CommandsOf, DriversOf, ISYNode } from '../ISYNode.js';
14
+ import { ISYBridgedDeviceBehavior } from '../Matter/Behaviors/ISYBridgedDeviceBehavior.js';
15
+ import { ISYOnOffBehavior } from '../Matter/Behaviors/Insteon/ISYOnOffBehavior.js';
16
+ import type { PickOfType, Remove } from '../Utils.js';
12
17
  import { ClusterType } from './ClusterType.js';
13
- import type { Family } from '../Definitions/index.js';
14
18
 
15
19
  // #region Type aliases (16)
16
20
 
@@ -84,15 +88,12 @@ export type CommandMapping<B, D> =
84
88
  // behavior?: typeof ClusterBehavior;
85
89
 
86
90
  // }
87
- export type DeviceToClusterMap<T extends ISYNode<Family, any, any, any>, D extends { behaviors: SupportedBehaviors; deviceType: string }> =
88
- D extends { behaviors: SupportedBehaviors; deviceType: string } ?
89
- {
90
- deviceType: D;
91
- mapping: EndpointMapping<D, T>;
92
- }
93
- : never;
94
- export type EndpointMapping<A extends { behaviors: any }, D extends ISYNode<Family, any, any, any>> = {
95
- [K in Capitalize<StringKeys<A['behaviors']>>]?: BehaviorMapping<A['behaviors'][Uncapitalize<K>], D>; //{
91
+ export type DeviceToClusterMap<T extends ISYNode<Family, any, any, any>, D extends MutableEndpoint> = {
92
+ deviceType: D;
93
+ mapping: EndpointMapping<D, T>;
94
+ };
95
+ export type EndpointMapping<A extends MutableEndpoint, D extends ISYNode<Family, any, any, any>> = {
96
+ [K in StringKeys<PickOfType<A['behaviors'], ClusterBehavior>> as Capitalize<K>]?: A['behaviors'][K] extends ClusterBehavior ? BehaviorMapping<A['behaviors'][K], D> : undefined; //{
96
97
  /*attributes?: AttributeMapping<A['behaviors'][Uncapitalize<K>], D>;
97
98
  commands?: CommandMapping<A['behaviors'][Uncapitalize<K>], D>;*/
98
99
  //};
@@ -115,8 +116,9 @@ export type EndpointMapping1<A extends MutableEndpoint, K> = {
115
116
  attributes?: SBAttributeMapping<A['behaviors'], K>;
116
117
  commands?: SBCommandMapping<A['behaviors'], K>;
117
118
  };
119
+ //@ts-ignore
118
120
  export type FamilyToClusterMap<T extends Family.Insteon | Family.ZWave | Family.ZigBee> = { Family: T } & {
119
- [Type in keyof Devices.Insteon]?: DeviceToClusterMap<InstanceType<Devices.Insteon[Type]>, any>;
121
+ [Type in Extract<keyof Devices.Insteon, `${string}Node`> as Remove<Type, 'Node'>]?: DeviceToClusterMap<InstanceType<Devices.Insteon[Type]>, MutableEndpoint>;
120
122
  };
121
123
  export type SBAttributeMapping<SB extends SupportedBehaviors, D> = {
122
124
  [K in keyof SB]: Partial<Record<any, DriversOf<D> | { driver: DriversOf<D>; converter?: string }>>;
@@ -139,32 +141,43 @@ export type parameterMapping = {
139
141
  export class MappingRegistry {
140
142
  // #region Properties (1)
141
143
 
142
- public static map: Map<Family,Map<string, DeviceToClusterMap<any, any>>> = new Map();
144
+ public static map: Map<Family, Map<string, DeviceToClusterMap<ISYNode, MutableEndpoint>>> = new Map();
145
+
146
+ public static cache: { [x: string]: DeviceToClusterMap<ISYNode, MutableEndpoint> } = {};
143
147
 
144
148
  // #endregion Properties (1)
145
149
 
146
150
  // #region Public Static Methods (3)
147
151
 
148
- public static getMapping<T extends ISYNode<any,any,any,any>>(device: ISYNode<any,any,any,any>) {
149
- if(MappingRegistry.map.has(device.family))
150
- {
151
- let g = MappingRegistry.map.get(device.family);
152
- if(g.has(device.constructor.name))
153
- {
154
- return g.get(device.constructor.name);
155
- }
156
- else if(g.has(device.nodeDefId))
157
- {
158
- return g.get(device.nodeDefId);
159
- }
160
- else if(g.has(device.type))
161
- {
162
- return g.get(device.type);
152
+ public static getMapping<T extends ISYNode<any, any, any, any>>(device: T): DeviceToClusterMap<T, MutableEndpoint> {
153
+ let m = this.cache[device.address];
154
+ if (!m) {
155
+ if (MappingRegistry.map.has(device.family)) {
156
+ let g = MappingRegistry.map.get(device.family);
157
+ //let m: DeviceToClusterMap<T,MutableEndpoint>;
158
+ if (g.has(device.constructor.name)) {
159
+ m = g.get(device.constructor.name);
160
+ } else if (g.has(device.nodeDefId)) {
161
+ m = g.get(device.nodeDefId);
162
+ } else if (g.has(device.type)) {
163
+ m = g.get(device.type);
164
+ }
165
+ if (!m) {
166
+ for (var nodeDefId of NodeFactory.getImplements(device)) {
167
+ if (g.has(nodeDefId)) {
168
+ device.logger(`Mapping found to ${Family[device.family]}.${nodeDefId}`, 'info');
169
+ m = g.get(nodeDefId);
170
+ g.set(device.nodeDefId, m);
171
+
172
+ break;
173
+ }
174
+ }
175
+ }
176
+ if (m !== null) this.cache[device.address] = m;
163
177
  }
164
-
165
178
  }
166
- return null;
167
179
 
180
+ return m;
168
181
  }
169
182
 
170
183
  public static getMappingForBehavior<T extends ISYNode<any, any, any, any>, B extends ClusterBehavior>(device: T, behavior: B): BehaviorMapping<B, T> {
@@ -176,40 +189,43 @@ export class MappingRegistry {
176
189
  }
177
190
  }
178
191
  //@ts-ignore
179
- public static register(map: Partial<FamilyToClusterMap<any>> | {[x in Paths<typeof Devices>]: DeviceToClusterMap<any,any>}) {
180
- if("Family" in map)
181
- {
182
- let regMap : Map<string, DeviceToClusterMap<any, any>>;
183
- if(!MappingRegistry.map.has(map.Family))
184
- {
192
+ public static register(map: Partial<FamilyToClusterMap<any>> | { [x in Paths<typeof Devices>]: DeviceToClusterMap<any, any> }) {
193
+ if ('Family' in map) {
194
+ let regMap: Map<string, DeviceToClusterMap<any, any>>;
195
+ if (!MappingRegistry.map.has(map.Family)) {
185
196
  MappingRegistry.map.set(map.Family, new Map());
186
197
  }
198
+
187
199
  regMap = MappingRegistry.map.get(map.Family);
188
200
  for (var key in map) {
189
201
  if (key !== 'Family') {
190
- regMap.set(key, map[key]);
191
- regMap.set(Insteon[key]?.name, map[key]); //TODO: This is a hack to allow for the Insteon devices to be registered by name
202
+ let m = map[key] as DeviceToClusterMap<ISYNode, MutableEndpoint>;
203
+
204
+ m = { deviceType: m.deviceType.with(BridgedDeviceBasicInformationBehavior, ISYBridgedDeviceBehavior), mapping: m.mapping };
205
+ regMap.set(key, m);
206
+ regMap.set(Insteon[key]?.name, m);
207
+ regMap.set(Insteon[key].nodeDefId, m);
208
+
209
+ //TODO: This is a hack to allow for the Insteon devices to be registered by name
192
210
  }
193
211
  }
194
- }
195
- else
196
- {
197
- let regMap : Map<string, DeviceToClusterMap<any, any>>;
212
+ } else {
213
+ let regMap: Map<string, DeviceToClusterMap<any, any>>;
198
214
  for (var key in map) {
199
- const keys = key.split(".");
215
+ const keys = key.split('.');
200
216
  let x = Devices[keys[0]][keys[1]] as typeof ISYNode<any, any, any, any>;
201
- if(!MappingRegistry.map.has(x.family))
202
- {
217
+ if (!MappingRegistry.map.has(x.family)) {
203
218
  MappingRegistry.map.set(x.family, new Map());
204
219
  }
205
- //{family, key} = key.split(".")[0]
206
-
207
- regMap = MappingRegistry.map.get(x.family);
220
+ //{family, key} = key.split(".")[0]
208
221
 
209
- regMap.set(keys[1],map[key]);
210
- regMap.set(x.name, map[key]);
222
+ regMap = MappingRegistry.map.get(x.family);
223
+ let m = map[key] as DeviceToClusterMap<ISYNode, MutableEndpoint>;
224
+ m = { deviceType: m.deviceType.with(BridgedDeviceBasicInformationBehavior, ISYBridgedDeviceBehavior), mapping: m.mapping };
211
225
 
212
- }
226
+ regMap.set(keys[1], m);
227
+ regMap.set(x.name, m);
228
+ }
213
229
  }
214
230
  }
215
231
 
@@ -131,7 +131,7 @@ export function family<F extends Family>(nodeInfo: NodeInfo<any>): nodeInfo is N
131
131
  }
132
132
 
133
133
  export function isDynamic(nodeInfo: NodeInfo<any>): nodeInfo is DynamicNodeInfo {
134
- return nodeInfo.family in [Family.ZWave, Family.ZigBee];
134
+ return [Family.ZWave, Family.ZigBee].includes(nodeInfo.family);
135
135
  }
136
136
 
137
137
  export function isStatic(nodeInfo: NodeInfo<any>): nodeInfo is StaticNodeInfo {
package/src/Utils.ts CHANGED
@@ -20,10 +20,48 @@ export type PickOfType<T, U> = { [K in keyof T]: T[K] extends U ? (any extends T
20
20
 
21
21
  export type Paths<T> = T extends object ? { [K in keyof T]: `${Exclude<K, symbol>}${'' | `.${Paths<T[K]>}`}` }[keyof T] : never;
22
22
 
23
+ export type Prev = [never, 0,1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
24
+
25
+
26
+ export type RelaxTypes<V> =
27
+ V extends number ? number
28
+ : V extends bigint ? bigint
29
+ : V extends object ?
30
+ V extends (...args: any[]) => any ?
31
+ V
32
+ : {
33
+ [K in keyof V]: RelaxTypes<V[K]>;
34
+ }
35
+ : V;
36
+
37
+ type p = Prev[10];
38
+ export type Join<K, P> =
39
+ K extends string | number ?
40
+ P extends string | number ?
41
+ `${K}${'' extends P ? '' : '.'}${P}`
42
+ : never
43
+ : never;
44
+ export type PathsWithLimit<T, D extends number = 10> =
45
+ [D] extends [never] ? never
46
+ : T extends object ? { [K in keyof T]-?: K extends string | number ? `${K}` | Join<K, PathsWithLimit<T[K], Prev[D]>> : never }[keyof T]
47
+ : '';
48
+
49
+ export type Leaves<T, D extends number = 10> =
50
+ [D] extends [never] ? never
51
+ : T extends object ? { [K in keyof T]-?: Join<K, Leaves<T[K], Prev[D]>> }[keyof T]
52
+ : '';
53
+
23
54
  export function getEnumValueByEnumKey<E extends { [index: string]: number }, T extends keyof E>(enumType: E, enumKey: T): E[T] {
24
55
  return enumType[enumKey];
25
56
  }
26
57
 
58
+ export type Replace<K extends string, T extends string, U extends string> = K extends `${infer L}${T}${infer R}` ? `${L}${U}${R}` : K;
59
+
60
+ export type Remove<K extends string, T extends string> = K extends `${infer L}${T}${infer R}` ? `${L}${R}` : K;
61
+
62
+ export type ReplaceAll<K extends string, T extends string, U extends string> = K extends `${infer L}${T}${infer R}` ? `${L}${U}${ReplaceAll<R, T, U>}` : K;
63
+
64
+
27
65
  export function getEnumKeyByEnumValue<E extends { [index: string]: number }, T extends E[keyof E]>(enumType: E, enumValue: E[T]): T {
28
66
  return Object.keys(enumType).find((key) => enumType[key] === enumValue) as unknown as T;
29
67
  }
package/tsconfig.json CHANGED
@@ -27,6 +27,12 @@
27
27
  "src/Definitions/Global/*.ts",
28
28
  ],
29
29
  "exclude": [
30
- "src/Devices/*/Generated/*",
30
+
31
+ "src/Devices/ZigBeeLegacy/Generated/*",
32
+ "src/Devices/Poly/Generated/*",
33
+ "src/Devices/Brultech/Generated/*",
34
+
35
+ "src/Devices/NCD/Generated/*",
36
+ "src/Devices/Scene/Generated/*",
31
37
  ]
32
38
  }
@@ -1,123 +0,0 @@
1
- /* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT DIRECTLY. */
2
-
3
- import { UnitOfMeasure } from "../../../Definitions/Global/UOM.js";
4
- import { Family } from "../../../Definitions/Global/Families.js";
5
- import type { NodeInfo } from "../../../Model/NodeInfo.js";
6
- import type { ISY } from "../../../ISY.js";
7
- import type { ISYNode } from "../../../ISYNode.js";
8
- import { Base } from "../index.js";
9
- import { ISYDeviceNode } from "../../ISYDeviceNode.js";
10
- import { Driver } from "../../../Definitions/Global/Drivers.js";
11
- import { Insteon } from "../../../Definitions/index.js";
12
- import type { DriverState } from "../../../Model/DriverState.js";
13
- import { NodeFactory } from "../../NodeFactory.js";
14
-
15
- export const nodeDefId = "AlertModuleSiren_ADV";
16
-
17
- type Commands = AlertModuleSirenAdv.Commands;
18
- type Drivers = AlertModuleSirenAdv.Drivers;
19
-
20
- export class AlertModuleSirenAdvNode extends Base<Drivers, Commands> implements AlertModuleSirenAdv.Interface {
21
- public readonly commands = {
22
- DON: this.on,
23
- DOF: this.off,
24
- DFOF: this.fastOff,
25
- DFON: this.fastOn,
26
- QUERY: this.query,
27
- BEEP: this.beep,
28
- WDU: this.writeChanges
29
- };
30
- static nodeDefId = "AlertModuleSiren_ADV";
31
- declare readonly nodeDefId: "AlertModuleSiren_ADV";
32
- constructor (isy: ISY, nodeInfo: NodeInfo) {
33
- super(isy, nodeInfo);
34
- this.drivers.ST = Driver.create("ST", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Percent, label: "Status", name: "status" });
35
- this.drivers.ERR = Driver.create("ERR", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Index, label: "Responding", name: "responding" });
36
- }
37
- async on(onLevel?: number) {
38
- return this.sendCommand("DON", { OL: onLevel });
39
- }
40
- async off() {
41
- return this.sendCommand("DOF");
42
- }
43
- async fastOff() {
44
- return this.sendCommand("DFOF");
45
- }
46
- async fastOn() {
47
- return this.sendCommand("DFON");
48
- }
49
- async query() {
50
- return this.sendCommand("QUERY");
51
- }
52
- async beep(value?: number) {
53
- return this.sendCommand("BEEP", { value: value });
54
- }
55
- async writeChanges() {
56
- return this.sendCommand("WDU");
57
- }
58
- public get status(): Insteon.OnLevelRelay {
59
- return this.drivers.ST?.value;
60
- }
61
- public get responding(): Insteon.Error {
62
- return this.drivers.ERR?.value;
63
- }
64
- }
65
-
66
- NodeFactory.register(AlertModuleSirenAdvNode);
67
-
68
- export namespace AlertModuleSirenAdv {
69
- export interface Interface extends Omit<InstanceType<typeof AlertModuleSirenAdvNode>, keyof ISYDeviceNode<any, any, any, any>> {
70
- nodeDefId: "AlertModuleSiren_ADV";
71
- }
72
- export function is(node: ISYNode<any, any, any, any>): node is AlertModuleSirenAdvNode {
73
- return node.nodeDefId === nodeDefId;
74
- }
75
- export function create(isy: ISY, nodeInfo: NodeInfo) {
76
- return new AlertModuleSirenAdvNode(isy, nodeInfo);
77
- }
78
- export const Node = AlertModuleSirenAdvNode;
79
- export type Commands = {
80
- DON: ((OL?: number) => Promise<boolean>) & {
81
- label: "On";
82
- name: "on";
83
- };
84
- DOF: (() => Promise<boolean>) & {
85
- label: "Off";
86
- name: "off";
87
- };
88
- DFOF: (() => Promise<boolean>) & {
89
- label: "Fast Off";
90
- name: "fastOff";
91
- };
92
- DFON: (() => Promise<boolean>) & {
93
- label: "Fast On";
94
- name: "fastOn";
95
- };
96
- QUERY: (() => Promise<boolean>) & {
97
- label: "Query";
98
- name: "query";
99
- };
100
- BEEP: ((value?: number) => Promise<boolean>) & {
101
- label: "Beep";
102
- name: "beep";
103
- };
104
- WDU: (() => Promise<boolean>) & {
105
- label: "Write Changes";
106
- name: "writeChanges";
107
- };
108
- };
109
- export type Drivers = {
110
- ST: {
111
- uom: UnitOfMeasure.Percent;
112
- value: Insteon.OnLevelRelay;
113
- label: "Status";
114
- name: "status";
115
- };
116
- ERR: {
117
- uom: UnitOfMeasure.Index;
118
- value: Insteon.Error;
119
- label: "Responding";
120
- name: "responding";
121
- };
122
- };
123
- }
@@ -1,123 +0,0 @@
1
- /* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT DIRECTLY. */
2
-
3
- import { UnitOfMeasure } from "../../../Definitions/Global/UOM.js";
4
- import { Family } from "../../../Definitions/Global/Families.js";
5
- import type { NodeInfo } from "../../../Model/NodeInfo.js";
6
- import type { ISY } from "../../../ISY.js";
7
- import type { ISYNode } from "../../../ISYNode.js";
8
- import { Base } from "../index.js";
9
- import { ISYDeviceNode } from "../../ISYDeviceNode.js";
10
- import { Driver } from "../../../Definitions/Global/Drivers.js";
11
- import { Insteon } from "../../../Definitions/index.js";
12
- import type { DriverState } from "../../../Model/DriverState.js";
13
- import { NodeFactory } from "../../NodeFactory.js";
14
-
15
- export const nodeDefId = "BallastRelayLampSwitch_ADV";
16
-
17
- type Commands = BallastRelayLampSwitchAdv.Commands;
18
- type Drivers = BallastRelayLampSwitchAdv.Drivers;
19
-
20
- export class BallastRelayLampSwitchAdvNode extends Base<Drivers, Commands> implements BallastRelayLampSwitchAdv.Interface {
21
- public readonly commands = {
22
- DON: this.on,
23
- DOF: this.off,
24
- DFOF: this.fastOff,
25
- DFON: this.fastOn,
26
- QUERY: this.query,
27
- BEEP: this.beep,
28
- WDU: this.writeChanges
29
- };
30
- static nodeDefId = "BallastRelayLampSwitch_ADV";
31
- declare readonly nodeDefId: "BallastRelayLampSwitch_ADV";
32
- constructor (isy: ISY, nodeInfo: NodeInfo) {
33
- super(isy, nodeInfo);
34
- this.drivers.ST = Driver.create("ST", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Percent, label: "Status", name: "status" });
35
- this.drivers.ERR = Driver.create("ERR", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Index, label: "Responding", name: "responding" });
36
- }
37
- async on(value?: (0 | 100)) {
38
- return this.sendCommand("DON", { value: value });
39
- }
40
- async off() {
41
- return this.sendCommand("DOF");
42
- }
43
- async fastOff() {
44
- return this.sendCommand("DFOF");
45
- }
46
- async fastOn() {
47
- return this.sendCommand("DFON");
48
- }
49
- async query() {
50
- return this.sendCommand("QUERY");
51
- }
52
- async beep(value?: number) {
53
- return this.sendCommand("BEEP", { value: value });
54
- }
55
- async writeChanges() {
56
- return this.sendCommand("WDU");
57
- }
58
- public get status(): Insteon.Sml {
59
- return this.drivers.ST?.value;
60
- }
61
- public get responding(): Insteon.Error {
62
- return this.drivers.ERR?.value;
63
- }
64
- }
65
-
66
- NodeFactory.register(BallastRelayLampSwitchAdvNode);
67
-
68
- export namespace BallastRelayLampSwitchAdv {
69
- export interface Interface extends Omit<InstanceType<typeof BallastRelayLampSwitchAdvNode>, keyof ISYDeviceNode<any, any, any, any>> {
70
- nodeDefId: "BallastRelayLampSwitch_ADV";
71
- }
72
- export function is(node: ISYNode<any, any, any, any>): node is BallastRelayLampSwitchAdvNode {
73
- return node.nodeDefId === nodeDefId;
74
- }
75
- export function create(isy: ISY, nodeInfo: NodeInfo) {
76
- return new BallastRelayLampSwitchAdvNode(isy, nodeInfo);
77
- }
78
- export const Node = BallastRelayLampSwitchAdvNode;
79
- export type Commands = {
80
- DON: ((value?: (0 | 100)) => Promise<boolean>) & {
81
- label: "On";
82
- name: "on";
83
- };
84
- DOF: (() => Promise<boolean>) & {
85
- label: "Off";
86
- name: "off";
87
- };
88
- DFOF: (() => Promise<boolean>) & {
89
- label: "Fast Off";
90
- name: "fastOff";
91
- };
92
- DFON: (() => Promise<boolean>) & {
93
- label: "Fast On";
94
- name: "fastOn";
95
- };
96
- QUERY: (() => Promise<boolean>) & {
97
- label: "Query";
98
- name: "query";
99
- };
100
- BEEP: ((value?: number) => Promise<boolean>) & {
101
- label: "Beep";
102
- name: "beep";
103
- };
104
- WDU: (() => Promise<boolean>) & {
105
- label: "Write Changes";
106
- name: "writeChanges";
107
- };
108
- };
109
- export type Drivers = {
110
- ST: {
111
- uom: UnitOfMeasure.Percent;
112
- value: Insteon.Sml;
113
- label: "Status";
114
- name: "status";
115
- };
116
- ERR: {
117
- uom: UnitOfMeasure.Index;
118
- value: Insteon.Error;
119
- label: "Responding";
120
- name: "responding";
121
- };
122
- };
123
- }