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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. package/dist/esm/CodeGeneration/NodeClassFactory.js +76 -33
  2. package/dist/esm/CodeGeneration/NodeClassFactory.js.map +1 -1
  3. package/dist/esm/CodeGeneration/NodeFactory.js +245 -0
  4. package/dist/esm/CodeGeneration/NodeFactory.js.map +1 -0
  5. package/dist/esm/Converters.js +15 -1
  6. package/dist/esm/Converters.js.map +1 -1
  7. package/dist/esm/Definitions/Global/Drivers.js.map +1 -1
  8. package/dist/esm/Definitions/Global/Events.js.map +1 -1
  9. package/dist/esm/Devices/ISYDevice.js +0 -33
  10. package/dist/esm/Devices/ISYDevice.js.map +1 -1
  11. package/dist/esm/Devices/ISYDeviceNode.js +2 -2
  12. package/dist/esm/Devices/ISYDeviceNode.js.map +1 -1
  13. package/dist/esm/Devices/Insteon/Generated/AlertModuleArmed.js +49 -0
  14. package/dist/esm/Devices/Insteon/Generated/AlertModuleArmed.js.map +1 -0
  15. package/dist/esm/Devices/Insteon/Generated/AlertModuleSiren.js +54 -0
  16. package/dist/esm/Devices/Insteon/Generated/AlertModuleSiren.js.map +1 -0
  17. package/dist/esm/Devices/Insteon/Generated/BallastRelayLampSwitch.js +54 -0
  18. package/dist/esm/Devices/Insteon/Generated/BallastRelayLampSwitch.js.map +1 -0
  19. package/dist/esm/Devices/Insteon/Generated/BinaryAlarm.js +46 -0
  20. package/dist/esm/Devices/Insteon/Generated/BinaryAlarm.js.map +1 -0
  21. package/dist/esm/Devices/Insteon/Generated/BinaryControl.js +46 -0
  22. package/dist/esm/Devices/Insteon/Generated/BinaryControl.js.map +1 -0
  23. package/dist/esm/Devices/Insteon/Generated/DimmerLamp.js +75 -0
  24. package/dist/esm/Devices/Insteon/Generated/DimmerLamp.js.map +1 -0
  25. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitch.js +78 -0
  26. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitch.js.map +1 -0
  27. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitchLed.js +80 -0
  28. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitchLed.js.map +1 -0
  29. package/dist/esm/Devices/Insteon/Generated/DimmerMotorSwitch.js +74 -0
  30. package/dist/esm/Devices/Insteon/Generated/DimmerMotorSwitch.js.map +1 -0
  31. package/dist/esm/Devices/Insteon/Generated/DimmerSwitch.js +40 -0
  32. package/dist/esm/Devices/Insteon/Generated/DimmerSwitch.js.map +1 -0
  33. package/dist/esm/Devices/Insteon/Generated/DoorLock.js +45 -0
  34. package/dist/esm/Devices/Insteon/Generated/DoorLock.js.map +1 -0
  35. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Input.js +42 -0
  36. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Input.js.map +1 -0
  37. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Output.js +47 -0
  38. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Output.js.map +1 -0
  39. package/dist/esm/Devices/Insteon/Generated/EzrainInput.js +42 -0
  40. package/dist/esm/Devices/Insteon/Generated/EzrainInput.js.map +1 -0
  41. package/dist/esm/Devices/Insteon/Generated/EzrainOutput.js +49 -0
  42. package/dist/esm/Devices/Insteon/Generated/EzrainOutput.js.map +1 -0
  43. package/dist/esm/Devices/Insteon/Generated/FanLincMotor.js +53 -0
  44. package/dist/esm/Devices/Insteon/Generated/FanLincMotor.js.map +1 -0
  45. package/dist/esm/Devices/Insteon/Generated/I3KeypadFlags.js +93 -0
  46. package/dist/esm/Devices/Insteon/Generated/I3KeypadFlags.js.map +1 -0
  47. package/dist/esm/Devices/Insteon/Generated/I3PaddleFlags.js +81 -0
  48. package/dist/esm/Devices/Insteon/Generated/I3PaddleFlags.js.map +1 -0
  49. package/dist/esm/Devices/Insteon/Generated/ImeterSolo.js +49 -0
  50. package/dist/esm/Devices/Insteon/Generated/ImeterSolo.js.map +1 -0
  51. package/dist/esm/Devices/Insteon/Generated/IrLincTx.js +39 -0
  52. package/dist/esm/Devices/Insteon/Generated/IrLincTx.js.map +1 -0
  53. package/dist/esm/Devices/Insteon/Generated/KeypadButton.js +46 -0
  54. package/dist/esm/Devices/Insteon/Generated/KeypadButton.js.map +1 -0
  55. package/dist/esm/Devices/Insteon/Generated/KeypadDimmer.js +78 -0
  56. package/dist/esm/Devices/Insteon/Generated/KeypadDimmer.js.map +1 -0
  57. package/dist/esm/Devices/Insteon/Generated/KeypadRelay.js +56 -0
  58. package/dist/esm/Devices/Insteon/Generated/KeypadRelay.js.map +1 -0
  59. package/dist/esm/Devices/Insteon/Generated/OnOffControl.js +39 -0
  60. package/dist/esm/Devices/Insteon/Generated/OnOffControl.js.map +1 -0
  61. package/dist/esm/Devices/Insteon/Generated/Pir2844.js +64 -0
  62. package/dist/esm/Devices/Insteon/Generated/Pir2844.js.map +1 -0
  63. package/dist/esm/Devices/Insteon/Generated/Pir2844OnOff.js +50 -0
  64. package/dist/esm/Devices/Insteon/Generated/Pir2844OnOff.js.map +1 -0
  65. package/dist/esm/Devices/Insteon/Generated/Pir2844c.js +64 -0
  66. package/dist/esm/Devices/Insteon/Generated/Pir2844c.js.map +1 -0
  67. package/dist/esm/Devices/Insteon/Generated/RelayLamp.js +54 -0
  68. package/dist/esm/Devices/Insteon/Generated/RelayLamp.js.map +1 -0
  69. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js +56 -0
  70. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js.map +1 -0
  71. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitchLed.js +58 -0
  72. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitchLed.js.map +1 -0
  73. package/dist/esm/Devices/Insteon/Generated/RelaySwitch.js +42 -0
  74. package/dist/esm/Devices/Insteon/Generated/RelaySwitch.js.map +1 -0
  75. package/dist/esm/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.js +44 -0
  76. package/dist/esm/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.js.map +1 -0
  77. package/dist/esm/Devices/Insteon/Generated/RemoteLinc2.js +42 -0
  78. package/dist/esm/Devices/Insteon/Generated/RemoteLinc2.js.map +1 -0
  79. package/dist/esm/Devices/Insteon/Generated/Siren.js +66 -0
  80. package/dist/esm/Devices/Insteon/Generated/Siren.js.map +1 -0
  81. package/dist/esm/Devices/Insteon/Generated/SirenAlert.js +35 -0
  82. package/dist/esm/Devices/Insteon/Generated/SirenAlert.js.map +1 -0
  83. package/dist/esm/Devices/Insteon/Generated/TempLinc.js +83 -0
  84. package/dist/esm/Devices/Insteon/Generated/TempLinc.js.map +1 -0
  85. package/dist/esm/Devices/Insteon/Generated/Thermostat.js +83 -0
  86. package/dist/esm/Devices/Insteon/Generated/Thermostat.js.map +1 -0
  87. package/dist/esm/Devices/Insteon/Generated/X10.js +49 -0
  88. package/dist/esm/Devices/Insteon/Generated/X10.js.map +1 -0
  89. package/dist/esm/Devices/Insteon/Generated/index.js +39 -0
  90. package/dist/esm/Devices/Insteon/Generated/index.js.map +1 -0
  91. package/dist/esm/Devices/Insteon/InsteonBaseDevice.js +3 -4
  92. package/dist/esm/Devices/Insteon/InsteonBaseDevice.js.map +1 -1
  93. package/dist/esm/Devices/Insteon/InsteonFanDevice.js +2 -2
  94. package/dist/esm/Devices/Insteon/InsteonFanDevice.js.map +1 -1
  95. package/dist/esm/Devices/Insteon/InsteonRelayDevice.js.map +1 -1
  96. package/dist/esm/Devices/Insteon/KeypadButton.js +11 -11
  97. package/dist/esm/Devices/Insteon/KeypadButton.js.map +1 -1
  98. package/dist/esm/Devices/Insteon/index.js +16 -29
  99. package/dist/esm/Devices/Insteon/index.js.map +1 -1
  100. package/dist/esm/Devices/Lutron/Generated/LoadShed.js +45 -0
  101. package/dist/esm/Devices/Lutron/Generated/LoadShed.js.map +1 -0
  102. package/dist/esm/Devices/NodeFactory.js +45 -8
  103. package/dist/esm/Devices/NodeFactory.js.map +1 -1
  104. package/dist/esm/Devices/Scene/index.js +2 -2
  105. package/dist/esm/Devices/Scene/index.js.map +1 -1
  106. package/dist/esm/Devices/UDI/Generated/Channel.js +42 -0
  107. package/dist/esm/Devices/UDI/Generated/Channel.js.map +1 -0
  108. package/dist/esm/Devices/UDI/Generated/Em3MainChannel.js +54 -0
  109. package/dist/esm/Devices/UDI/Generated/Em3MainChannel.js.map +1 -0
  110. package/dist/esm/Devices/UDI/Generated/Main.js +45 -0
  111. package/dist/esm/Devices/UDI/Generated/Main.js.map +1 -0
  112. package/dist/esm/Devices/UDI/Generated/PulseCounter.js +46 -0
  113. package/dist/esm/Devices/UDI/Generated/PulseCounter.js.map +1 -0
  114. package/dist/esm/Devices/UDI/Generated/Relay.js +45 -0
  115. package/dist/esm/Devices/UDI/Generated/Relay.js.map +1 -0
  116. package/dist/esm/Devices/UDI/Generated/TemperatureSensor.js +38 -0
  117. package/dist/esm/Devices/UDI/Generated/TemperatureSensor.js.map +1 -0
  118. package/dist/esm/Devices/ZWave/Generated/ColorSwitch.js +57 -0
  119. package/dist/esm/Devices/ZWave/Generated/ColorSwitch.js.map +1 -0
  120. package/dist/esm/Devices/ZWave/Generated/DimmerSwitch.js +65 -0
  121. package/dist/esm/Devices/ZWave/Generated/DimmerSwitch.js.map +1 -0
  122. package/dist/esm/Devices/ZWave/Generated/index.js +3 -0
  123. package/dist/esm/Devices/ZWave/Generated/index.js.map +1 -0
  124. package/dist/esm/Devices/ZWave/index.js +1 -0
  125. package/dist/esm/Devices/ZWave/index.js.map +1 -1
  126. package/dist/esm/Devices/index.js +9 -3
  127. package/dist/esm/Devices/index.js.map +1 -1
  128. package/dist/esm/ISY.js +13 -8
  129. package/dist/esm/ISY.js.map +1 -1
  130. package/dist/esm/ISYDevice.js +7 -1
  131. package/dist/esm/ISYDevice.js.map +1 -1
  132. package/dist/esm/ISYNode.js +13 -4
  133. package/dist/esm/ISYNode.js.map +1 -1
  134. package/dist/esm/ISYScene.js +13 -12
  135. package/dist/esm/ISYScene.js.map +1 -1
  136. package/dist/esm/Matter/Behaviors/BehaviorRegistry.js +13 -0
  137. package/dist/esm/Matter/Behaviors/BehaviorRegistry.js.map +1 -0
  138. package/dist/esm/Matter/Behaviors/Insteon/ISYOnOffBehavior.js +3 -0
  139. package/dist/esm/Matter/Behaviors/Insteon/ISYOnOffBehavior.js.map +1 -1
  140. package/dist/esm/Matter/Bridge/Server.js +65 -56
  141. package/dist/esm/Matter/Bridge/Server.js.map +1 -1
  142. package/dist/esm/Matter/Mappings/Insteon.js +28 -10
  143. package/dist/esm/Matter/Mappings/Insteon.js.map +1 -1
  144. package/dist/esm/Model/ClassDefinition.js +22 -3
  145. package/dist/esm/Model/ClassDefinition.js.map +1 -1
  146. package/dist/esm/Model/ClusterMap.js +45 -19
  147. package/dist/esm/Model/ClusterMap.js.map +1 -1
  148. package/dist/esm/Model/NodeInfo.js +1 -1
  149. package/dist/esm/Model/NodeInfo.js.map +1 -1
  150. package/dist/esm/Utils.js.map +1 -1
  151. package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts +6 -3
  152. package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts.map +1 -1
  153. package/dist/esm/types/CodeGeneration/NodeFactory.d.ts +75 -0
  154. package/dist/esm/types/CodeGeneration/NodeFactory.d.ts.map +1 -0
  155. package/dist/esm/types/Converters.d.ts +9 -3
  156. package/dist/esm/types/Converters.d.ts.map +1 -1
  157. package/dist/esm/types/Definitions/Global/Drivers.d.ts.map +1 -1
  158. package/dist/esm/types/Definitions/Global/Events.d.ts +2 -2
  159. package/dist/esm/types/Definitions/Global/Events.d.ts.map +1 -1
  160. package/dist/esm/types/Devices/DeviceMap.d.ts +1 -1
  161. package/dist/esm/types/Devices/DeviceMap.d.ts.map +1 -1
  162. package/dist/esm/types/Devices/EndpointFor.d.ts +7 -5
  163. package/dist/esm/types/Devices/EndpointFor.d.ts.map +1 -1
  164. package/dist/esm/types/Devices/ISYDevice.d.ts.map +1 -1
  165. package/dist/esm/types/Devices/ISYDeviceNode.d.ts +5 -13
  166. package/dist/esm/types/Devices/ISYDeviceNode.d.ts.map +1 -1
  167. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleArmed.d.ts +76 -0
  168. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleArmed.d.ts.map +1 -0
  169. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleSiren.d.ts +88 -0
  170. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleSiren.d.ts.map +1 -0
  171. package/dist/esm/types/Devices/Insteon/Generated/BallastRelayLampSwitch.d.ts +88 -0
  172. package/dist/esm/types/Devices/Insteon/Generated/BallastRelayLampSwitch.d.ts.map +1 -0
  173. package/dist/esm/types/Devices/Insteon/Generated/BinaryAlarm.d.ts +64 -0
  174. package/dist/esm/types/Devices/Insteon/Generated/BinaryAlarm.d.ts.map +1 -0
  175. package/dist/esm/types/Devices/Insteon/Generated/BinaryControl.d.ts +64 -0
  176. package/dist/esm/types/Devices/Insteon/Generated/BinaryControl.d.ts.map +1 -0
  177. package/dist/esm/types/Devices/Insteon/Generated/DimmerLamp.d.ts +144 -0
  178. package/dist/esm/types/Devices/Insteon/Generated/DimmerLamp.d.ts.map +1 -0
  179. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitch.d.ts +150 -0
  180. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitch.d.ts.map +1 -0
  181. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitchLed.d.ts +156 -0
  182. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitchLed.d.ts.map +1 -0
  183. package/dist/esm/types/Devices/Insteon/Generated/DimmerMotorSwitch.d.ts +138 -0
  184. package/dist/esm/types/Devices/Insteon/Generated/DimmerMotorSwitch.d.ts.map +1 -0
  185. package/dist/esm/types/Devices/Insteon/Generated/DimmerSwitch.d.ts +51 -0
  186. package/dist/esm/types/Devices/Insteon/Generated/DimmerSwitch.d.ts.map +1 -0
  187. package/dist/esm/types/Devices/Insteon/Generated/DoorLock.d.ts +64 -0
  188. package/dist/esm/types/Devices/Insteon/Generated/DoorLock.d.ts.map +1 -0
  189. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Input.d.ts +52 -0
  190. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Input.d.ts.map +1 -0
  191. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Output.d.ts +70 -0
  192. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Output.d.ts.map +1 -0
  193. package/dist/esm/types/Devices/Insteon/Generated/EzrainInput.d.ts +52 -0
  194. package/dist/esm/types/Devices/Insteon/Generated/EzrainInput.d.ts.map +1 -0
  195. package/dist/esm/types/Devices/Insteon/Generated/EzrainOutput.d.ts +76 -0
  196. package/dist/esm/types/Devices/Insteon/Generated/EzrainOutput.d.ts.map +1 -0
  197. package/dist/esm/types/Devices/Insteon/Generated/FanLincMotor.d.ts +88 -0
  198. package/dist/esm/types/Devices/Insteon/Generated/FanLincMotor.d.ts.map +1 -0
  199. package/dist/esm/types/Devices/Insteon/Generated/I3KeypadFlags.d.ts +168 -0
  200. package/dist/esm/types/Devices/Insteon/Generated/I3KeypadFlags.d.ts.map +1 -0
  201. package/dist/esm/types/Devices/Insteon/Generated/I3PaddleFlags.d.ts +142 -0
  202. package/dist/esm/types/Devices/Insteon/Generated/I3PaddleFlags.d.ts.map +1 -0
  203. package/dist/esm/types/Devices/Insteon/Generated/ImeterSolo.d.ts +71 -0
  204. package/dist/esm/types/Devices/Insteon/Generated/ImeterSolo.d.ts.map +1 -0
  205. package/dist/esm/types/Devices/Insteon/Generated/IrLincTx.d.ts +51 -0
  206. package/dist/esm/types/Devices/Insteon/Generated/IrLincTx.d.ts.map +1 -0
  207. package/dist/esm/types/Devices/Insteon/Generated/KeypadButton.d.ts +64 -0
  208. package/dist/esm/types/Devices/Insteon/Generated/KeypadButton.d.ts.map +1 -0
  209. package/dist/esm/types/Devices/Insteon/Generated/KeypadDimmer.d.ts +150 -0
  210. package/dist/esm/types/Devices/Insteon/Generated/KeypadDimmer.d.ts.map +1 -0
  211. package/dist/esm/types/Devices/Insteon/Generated/KeypadRelay.d.ts +94 -0
  212. package/dist/esm/types/Devices/Insteon/Generated/KeypadRelay.d.ts.map +1 -0
  213. package/dist/esm/types/Devices/Insteon/Generated/OnOffControl.d.ts +44 -0
  214. package/dist/esm/types/Devices/Insteon/Generated/OnOffControl.d.ts.map +1 -0
  215. package/dist/esm/types/Devices/Insteon/Generated/Pir2844.d.ts +98 -0
  216. package/dist/esm/types/Devices/Insteon/Generated/Pir2844.d.ts.map +1 -0
  217. package/dist/esm/types/Devices/Insteon/Generated/Pir2844OnOff.d.ts +76 -0
  218. package/dist/esm/types/Devices/Insteon/Generated/Pir2844OnOff.d.ts.map +1 -0
  219. package/dist/esm/types/Devices/Insteon/Generated/Pir2844c.d.ts +98 -0
  220. package/dist/esm/types/Devices/Insteon/Generated/Pir2844c.d.ts.map +1 -0
  221. package/dist/esm/types/Devices/Insteon/Generated/RelayLamp.d.ts +88 -0
  222. package/dist/esm/types/Devices/Insteon/Generated/RelayLamp.d.ts.map +1 -0
  223. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts +94 -0
  224. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts.map +1 -0
  225. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitchLed.d.ts +100 -0
  226. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitchLed.d.ts.map +1 -0
  227. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitch.d.ts +57 -0
  228. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitch.d.ts.map +1 -0
  229. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.d.ts +63 -0
  230. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.d.ts.map +1 -0
  231. package/dist/esm/types/Devices/Insteon/Generated/RemoteLinc2.d.ts +52 -0
  232. package/dist/esm/types/Devices/Insteon/Generated/RemoteLinc2.d.ts.map +1 -0
  233. package/dist/esm/types/Devices/Insteon/Generated/Siren.d.ts +109 -0
  234. package/dist/esm/types/Devices/Insteon/Generated/Siren.d.ts.map +1 -0
  235. package/dist/esm/types/Devices/Insteon/Generated/SirenAlert.d.ts +37 -0
  236. package/dist/esm/types/Devices/Insteon/Generated/SirenAlert.d.ts.map +1 -0
  237. package/dist/esm/types/Devices/Insteon/Generated/TempLinc.d.ts +148 -0
  238. package/dist/esm/types/Devices/Insteon/Generated/TempLinc.d.ts.map +1 -0
  239. package/dist/esm/types/Devices/Insteon/Generated/Thermostat.d.ts +148 -0
  240. package/dist/esm/types/Devices/Insteon/Generated/Thermostat.d.ts.map +1 -0
  241. package/dist/esm/types/Devices/Insteon/Generated/X10.d.ts +76 -0
  242. package/dist/esm/types/Devices/Insteon/Generated/X10.d.ts.map +1 -0
  243. package/dist/esm/types/Devices/Insteon/Generated/index.d.ts +39 -0
  244. package/dist/esm/types/Devices/Insteon/Generated/index.d.ts.map +1 -0
  245. package/dist/esm/types/Devices/Insteon/InsteonBaseDevice.d.ts +4 -10
  246. package/dist/esm/types/Devices/Insteon/InsteonBaseDevice.d.ts.map +1 -1
  247. package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts +22 -28
  248. package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts.map +1 -1
  249. package/dist/esm/types/Devices/Insteon/InsteonFanDevice.d.ts +3 -3
  250. package/dist/esm/types/Devices/Insteon/InsteonFanDevice.d.ts.map +1 -1
  251. package/dist/esm/types/Devices/Insteon/InsteonLeakSensorDevice.d.ts +1 -1
  252. package/dist/esm/types/Devices/Insteon/InsteonLeakSensorDevice.d.ts.map +1 -1
  253. package/dist/esm/types/Devices/Insteon/InsteonRelayDevice.d.ts.map +1 -1
  254. package/dist/esm/types/Devices/Insteon/KeypadButton.d.ts +19 -19
  255. package/dist/esm/types/Devices/Insteon/KeypadButton.d.ts.map +1 -1
  256. package/dist/esm/types/Devices/Insteon/index.d.ts +6 -42
  257. package/dist/esm/types/Devices/Insteon/index.d.ts.map +1 -1
  258. package/dist/esm/types/Devices/Lutron/Generated/LoadShed.d.ts +64 -0
  259. package/dist/esm/types/Devices/Lutron/Generated/LoadShed.d.ts.map +1 -0
  260. package/dist/esm/types/Devices/NodeFactory.d.ts +18 -7
  261. package/dist/esm/types/Devices/NodeFactory.d.ts.map +1 -1
  262. package/dist/esm/types/Devices/Scene/index.d.ts +2 -1
  263. package/dist/esm/types/Devices/Scene/index.d.ts.map +1 -1
  264. package/dist/esm/types/Devices/UDI/Generated/Channel.d.ts +51 -0
  265. package/dist/esm/types/Devices/UDI/Generated/Channel.d.ts.map +1 -0
  266. package/dist/esm/types/Devices/UDI/Generated/Em3MainChannel.d.ts +72 -0
  267. package/dist/esm/types/Devices/UDI/Generated/Em3MainChannel.d.ts.map +1 -0
  268. package/dist/esm/types/Devices/UDI/Generated/Main.d.ts +59 -0
  269. package/dist/esm/types/Devices/UDI/Generated/Main.d.ts.map +1 -0
  270. package/dist/esm/types/Devices/UDI/Generated/PulseCounter.d.ts +58 -0
  271. package/dist/esm/types/Devices/UDI/Generated/PulseCounter.d.ts.map +1 -0
  272. package/dist/esm/types/Devices/UDI/Generated/Relay.d.ts +64 -0
  273. package/dist/esm/types/Devices/UDI/Generated/Relay.d.ts.map +1 -0
  274. package/dist/esm/types/Devices/UDI/Generated/TemperatureSensor.d.ts +44 -0
  275. package/dist/esm/types/Devices/UDI/Generated/TemperatureSensor.d.ts.map +1 -0
  276. package/dist/esm/types/Devices/ZWave/Generated/ColorSwitch.d.ts +90 -0
  277. package/dist/esm/types/Devices/ZWave/Generated/ColorSwitch.d.ts.map +1 -0
  278. package/dist/esm/types/Devices/ZWave/Generated/DimmerSwitch.d.ts +124 -0
  279. package/dist/esm/types/Devices/ZWave/Generated/DimmerSwitch.d.ts.map +1 -0
  280. package/dist/esm/types/Devices/ZWave/Generated/index.d.ts +3 -0
  281. package/dist/esm/types/Devices/ZWave/Generated/index.d.ts.map +1 -0
  282. package/dist/esm/types/Devices/ZWave/index.d.ts.map +1 -1
  283. package/dist/esm/types/Devices/index.d.ts +7 -21
  284. package/dist/esm/types/Devices/index.d.ts.map +1 -1
  285. package/dist/esm/types/ISY.d.ts.map +1 -1
  286. package/dist/esm/types/ISYDevice.d.ts +19 -28
  287. package/dist/esm/types/ISYDevice.d.ts.map +1 -1
  288. package/dist/esm/types/ISYNode.d.ts +25 -8
  289. package/dist/esm/types/ISYNode.d.ts.map +1 -1
  290. package/dist/esm/types/ISYScene.d.ts +5 -6
  291. package/dist/esm/types/ISYScene.d.ts.map +1 -1
  292. package/dist/esm/types/Matter/Behaviors/BehaviorRegistry.d.ts +11 -0
  293. package/dist/esm/types/Matter/Behaviors/BehaviorRegistry.d.ts.map +1 -0
  294. package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts +1 -4
  295. package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts.map +1 -1
  296. package/dist/esm/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts +5 -4
  297. package/dist/esm/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts.map +1 -1
  298. package/dist/esm/types/Matter/Bridge/Server.d.ts +1 -1
  299. package/dist/esm/types/Matter/Bridge/Server.d.ts.map +1 -1
  300. package/dist/esm/types/Model/ClassDefinition.d.ts +6 -2
  301. package/dist/esm/types/Model/ClassDefinition.d.ts.map +1 -1
  302. package/dist/esm/types/Model/ClusterMap.d.ts +12 -21
  303. package/dist/esm/types/Model/ClusterMap.d.ts.map +1 -1
  304. package/dist/esm/types/Model/EnumDefinition.d.ts +1 -1
  305. package/dist/esm/types/Utils.d.ts +18 -0
  306. package/dist/esm/types/Utils.d.ts.map +1 -1
  307. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  308. package/package.json +2 -2
  309. package/src/CodeGeneration/NodeClassFactory.ts +144 -39
  310. package/src/CodeGeneration/NodeFactory.ts +341 -0
  311. package/src/Converters.ts +23 -3
  312. package/src/Definitions/Global/Drivers.ts +1 -0
  313. package/src/Definitions/Global/Events.ts +3 -3
  314. package/src/Devices/Brultech/Generated/Channel.ts +8 -6
  315. package/src/Devices/Brultech/Generated/Main.ts +9 -9
  316. package/src/Devices/DeviceMap.ts +1 -1
  317. package/src/Devices/ISYDevice.ts +8 -57
  318. package/src/Devices/ISYDeviceNode.ts +143 -166
  319. package/src/Devices/Insteon/Generated/AlertModuleArmed.ts +13 -21
  320. package/src/Devices/Insteon/Generated/AlertModuleSiren.ts +18 -29
  321. package/src/Devices/Insteon/Generated/BallastRelayLampSwitch.ts +18 -29
  322. package/src/Devices/Insteon/Generated/BinaryAlarm.ts +14 -17
  323. package/src/Devices/Insteon/Generated/BinaryControl.ts +14 -17
  324. package/src/Devices/Insteon/Generated/DimmerLamp.ts +25 -51
  325. package/src/Devices/Insteon/Generated/DimmerLampSwitch.ts +36 -64
  326. package/src/Devices/Insteon/Generated/DimmerLampSwitchLed.ts +31 -60
  327. package/src/Devices/Insteon/Generated/DimmerMotorSwitch.ts +24 -47
  328. package/src/Devices/Insteon/Generated/DimmerSwitch.ts +13 -14
  329. package/src/Devices/Insteon/Generated/DoorLock.ts +11 -15
  330. package/src/Devices/Insteon/Generated/Ezio2x4Input.ts +12 -11
  331. package/src/Devices/Insteon/Generated/Ezio2x4Output.ts +12 -18
  332. package/src/Devices/Insteon/Generated/EzrainInput.ts +12 -11
  333. package/src/Devices/Insteon/Generated/EzrainOutput.ts +20 -28
  334. package/src/Devices/Insteon/Generated/FanLincMotor.ts +15 -27
  335. package/src/Devices/Insteon/Generated/I3KeypadFlags.ts +19 -39
  336. package/src/Devices/Insteon/Generated/I3PaddleFlags.ts +17 -33
  337. package/src/Devices/Insteon/Generated/ImeterSolo.ts +11 -15
  338. package/src/Devices/Insteon/Generated/IrLincTx.ts +10 -12
  339. package/src/Devices/Insteon/Generated/{KeypadButtonAdv.ts → KeypadButton.ts} +23 -26
  340. package/src/Devices/Insteon/Generated/KeypadDimmer.ts +30 -57
  341. package/src/Devices/Insteon/Generated/KeypadRelay.ts +30 -43
  342. package/src/Devices/Insteon/Generated/OnOffControl.ts +15 -12
  343. package/src/Devices/Insteon/Generated/Pir2844.ts +15 -20
  344. package/src/Devices/Insteon/Generated/Pir2844OnOff.ts +16 -23
  345. package/src/Devices/Insteon/Generated/Pir2844c.ts +15 -20
  346. package/src/Devices/Insteon/Generated/RelayLamp.ts +29 -41
  347. package/src/Devices/Insteon/Generated/RelayLampSwitch.ts +29 -42
  348. package/src/Devices/Insteon/Generated/RelayLampSwitchLed.ts +24 -39
  349. package/src/Devices/Insteon/Generated/RelaySwitch.ts +14 -17
  350. package/src/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.ts +15 -20
  351. package/src/Devices/Insteon/Generated/RemoteLinc2.ts +12 -11
  352. package/src/Devices/Insteon/Generated/Siren.ts +18 -29
  353. package/src/Devices/Insteon/Generated/SirenAlert.ts +11 -8
  354. package/src/Devices/Insteon/Generated/TempLinc.ts +18 -36
  355. package/src/Devices/Insteon/Generated/Thermostat.ts +18 -36
  356. package/src/Devices/Insteon/Generated/X10.ts +13 -21
  357. package/src/Devices/Insteon/Generated/index.ts +38 -0
  358. package/src/Devices/Insteon/InsteonBaseDevice.ts +5 -4
  359. package/src/Devices/Insteon/InsteonFanDevice.ts +3 -4
  360. package/src/Devices/Insteon/InsteonRelayDevice.ts +1 -0
  361. package/src/Devices/Insteon/KeypadButton.ts +31 -31
  362. package/src/Devices/Insteon/index.ts +18 -26
  363. package/src/Devices/Lutron/Generated/LoadShed.ts +11 -15
  364. package/src/Devices/NCD/Generated/Relay.ts +12 -18
  365. package/src/Devices/NodeFactory.ts +67 -13
  366. package/src/Devices/Poly/Generated/MatterBridge.ts +84 -0
  367. package/src/Devices/Scene/Generated/Scene.ts +33 -65
  368. package/src/Devices/Scene/index.ts +2 -1
  369. package/src/Devices/UDI/Generated/Channel.ts +8 -6
  370. package/src/Devices/UDI/Generated/Em3MainChannel.ts +8 -6
  371. package/src/Devices/UDI/Generated/Main.ts +9 -9
  372. package/src/Devices/UDI/Generated/PulseCounter.ts +8 -6
  373. package/src/Devices/UDI/Generated/Relay.ts +11 -15
  374. package/src/Devices/UDI/Generated/TemperatureSensor.ts +8 -6
  375. package/src/Devices/ZWave/Generated/ColorSwitch.ts +16 -24
  376. package/src/Devices/ZWave/Generated/DimmerSwitch.ts +25 -49
  377. package/src/Devices/ZWave/Generated/index.ts +2 -0
  378. package/src/Devices/ZWave/index.ts +5 -1
  379. package/src/Devices/ZigBeeLegacy/Generated/Relay.ts +12 -18
  380. package/src/Devices/ZigBeeLegacy/Generated/Thermostat.ts +17 -33
  381. package/src/Devices/index.ts +17 -12
  382. package/src/ISY.ts +8 -2
  383. package/src/ISYDevice.ts +68 -57
  384. package/src/ISYNode.ts +32 -8
  385. package/src/ISYScene.ts +31 -28
  386. package/src/Matter/Behaviors/BehaviorRegistry.ts +26 -0
  387. package/src/Matter/Behaviors/Insteon/ISYOnOffBehavior.ts +6 -0
  388. package/src/Matter/Bridge/Server.ts +39 -15
  389. package/src/Matter/Mappings/Insteon.ts +39 -14
  390. package/src/Model/ClassDefinition.ts +34 -4
  391. package/src/Model/ClusterMap.ts +73 -57
  392. package/src/Model/NodeInfo.ts +1 -1
  393. package/src/Utils.ts +38 -0
  394. package/tsconfig.json +7 -1
  395. package/src/Devices/Insteon/Generated/AlertModuleSirenAdv.ts +0 -123
  396. package/src/Devices/Insteon/Generated/BallastRelayLampSwitchAdv.ts +0 -123
  397. package/src/Devices/Insteon/Generated/BinaryAlarmAdv.ts +0 -91
  398. package/src/Devices/Insteon/Generated/BinaryControlAdv.ts +0 -91
  399. package/src/Devices/Insteon/Generated/DimmerLampSwitchAdv.ts +0 -207
  400. package/src/Devices/Insteon/Generated/DimmerLampSwitchLedAdv.ts +0 -215
  401. package/src/Devices/Insteon/Generated/DimmerMotorSwitchAdv.ts +0 -191
  402. package/src/Devices/Insteon/Generated/DimmerSwitchOnlyAdv.ts +0 -73
  403. package/src/Devices/Insteon/Generated/Ezio2x4InputAdv.ts +0 -75
  404. package/src/Devices/Insteon/Generated/EzrainInputAdv.ts +0 -75
  405. package/src/Devices/Insteon/Generated/KeypadDimmerAdv.ts +0 -207
  406. package/src/Devices/Insteon/Generated/KeypadRelayAdv.ts +0 -131
  407. package/src/Devices/Insteon/Generated/OnOffControlAdv.ts +0 -65
  408. package/src/Devices/Insteon/Generated/Pir2844Adv.ts +0 -139
  409. package/src/Devices/Insteon/Generated/Pir2844OnOffAdv.ts +0 -107
  410. package/src/Devices/Insteon/Generated/Pir2844cAdv.ts +0 -139
  411. package/src/Devices/Insteon/Generated/RelayLampOnlyAdv.ts +0 -123
  412. package/src/Devices/Insteon/Generated/RelayLampSwitchAdv.ts +0 -131
  413. package/src/Devices/Insteon/Generated/RelayLampSwitchLedAdv.ts +0 -139
  414. package/src/Devices/Insteon/Generated/RelaySwitchOnlyAdv.ts +0 -81
  415. package/src/Devices/Insteon/Generated/RelaySwitchOnlyPlusQueryAdv.ts +0 -89
  416. package/src/Devices/Insteon/Generated/RemoteLinc2Adv.ts +0 -75
  417. package/src/Devices/Insteon/Generated/SirenArm.ts +0 -55
@@ -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,73 @@
1
1
 
2
-
3
- import { OnOffLightDevice } from '@project-chip/matter.js/devices/OnOffLightDevice';
4
2
  import { DriverType } from '../../Definitions/Global/Drivers.js';
5
3
  import { Family, type t } from '../../Definitions/Global/Families.js';
6
- import { Insteon } from '../../Devices/Insteon/index.js';
4
+ import * as Insteon from '../../Devices/Insteon/index.js';
7
5
  import { Devices } from '../../Devices/index.js';
8
6
  import { MappingRegistry, type DeviceToClusterMap, type EndpointMapping, type FamilyToClusterMap } from '../../Model/ClusterMap.js';
9
7
 
10
8
  //import InsteonMap from "./Insteon.json";
11
- import { DimmableLightDevice } from '@project-chip/matter.js/devices/DimmableLightDevice';
9
+
12
10
  import { Converter } from '../../Converters.js';
13
11
  import type { InsteonRelaySwitchDevice } from '../../Devices/Insteon/InsteonRelaySwitchDevice.js';
12
+ import { DimmerSwitchDevice, GenericSwitchDevice, OnOffLightSwitchDevice, OnOffLightDevice, DimmableLightDevice } from '@matter/node/devices';
13
+ import type { Identity } from '@matter/general';
14
+ import { SwitchServer } from '@matter/node/behaviors';
15
+ import type { Device } from '@project-chip/matter.js/device';
16
+ import type { MutableEndpoint } from '@matter/node';
14
17
 
15
18
  const map: FamilyToClusterMap<Family.Insteon> = {
16
19
  Family: Family.Insteon,
17
- Relay: {
20
+
21
+ RelayLamp: {
18
22
  deviceType: OnOffLightDevice,
19
23
  mapping: {
20
24
  OnOff: {
21
25
  attributes: {
22
- onOff: 'ST'
26
+ onOff: { driver: 'ST', converter: 'LevelFrom0To255.Boolean' }
23
27
  },
24
28
  commands: { on: 'DON' }
25
29
  }
26
- } as EndpointMapping<OnOffLightDevice, Insteon.Relay>
30
+
31
+ }
27
32
  },
28
- RelaySwitch: {
33
+ RelayLampSwitch: {
29
34
  deviceType: OnOffLightDevice,
30
35
  mapping: {
31
36
  OnOff: {
32
37
  attributes: {
33
- onOff: 'ST'
38
+ onOff: { driver: 'ST', converter: 'LevelFrom0To255.Boolean' }
34
39
  },
35
40
  commands: { on: 'DON' }
36
41
  }
37
42
  }
43
+ ,},
44
+ DimmerLamp: {
45
+ deviceType: DimmableLightDevice,
46
+ // @ts-ignore
47
+ mapping: {
48
+ // @ts-ignore
49
+ OnOff: {
50
+ attributes: {
51
+ onOff: { driver: 'ST', converter: 'LevelFrom0To255.Boolean' }
52
+ },
53
+ commands: { on: 'DON' }
54
+ },
55
+ LevelControl: {
56
+ // @ts-ignore
57
+ attributes: {
58
+ currentLevel: { driver: 'ST', converter: 'LevelFrom0To255.LightingLevel' },
59
+ startUpCurrentLevel: { driver: 'OL', converter: 'LevelFrom0To255.LightingLevel' },
60
+ onLevel: { driver: 'OL', converter: 'LevelFrom0To255.LightingLevel' }
61
+ },
62
+ commands: { setLevel: { command: 'DON' } }
63
+ }
64
+ } as EndpointMapping<DimmableLightDevice, Insteon.DimmerLampNode>
38
65
  },
39
- Dimmer: {
40
-
66
+ DimmerLampSwitch: {
41
67
  deviceType: DimmableLightDevice,
42
68
  // @ts-ignore
43
69
  mapping: {
70
+
44
71
  // @ts-ignore
45
72
  OnOff: {
46
73
  attributes: {
@@ -57,11 +84,9 @@ const map: FamilyToClusterMap<Family.Insteon> = {
57
84
  },
58
85
  commands: { setLevel: { command: 'DON' } }
59
86
  }
60
- } as EndpointMapping<DimmableLightDevice, Insteon.Dimmer>
87
+ } as EndpointMapping<DimmableLightDevice, Insteon.DimmerLampNode>
61
88
  }
62
89
  };
63
90
 
64
- map.KeypadDimmer = map.Dimmer;
65
- map.DimmerSwitch = map.Dimmer;
66
91
 
67
92
  MappingRegistry.register(map);
@@ -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
  }