isy-nodejs 1.0.6-alpha.2 → 1.0.8-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (445) hide show
  1. package/dist/esm/CodeGeneration/CodeFactory.js +12 -6
  2. package/dist/esm/CodeGeneration/CodeFactory.js.map +1 -1
  3. package/dist/esm/CodeGeneration/NodeClassFactory.js +16 -7
  4. package/dist/esm/CodeGeneration/NodeClassFactory.js.map +1 -1
  5. package/dist/esm/Definitions/Global/Commands.js +6 -7
  6. package/dist/esm/Definitions/Global/Commands.js.map +1 -1
  7. package/dist/esm/Definitions/Global/Drivers.js +36 -23
  8. package/dist/esm/Definitions/Global/Drivers.js.map +1 -1
  9. package/dist/esm/Definitions/Insteon/generated/Boolean.js +10 -0
  10. package/dist/esm/Definitions/Insteon/generated/Boolean.js.map +1 -1
  11. package/dist/esm/Definitions/Insteon/generated/Error.js +10 -0
  12. package/dist/esm/Definitions/Insteon/generated/Error.js.map +1 -1
  13. package/dist/esm/Definitions/Insteon/generated/Lock.js +26 -0
  14. package/dist/esm/Definitions/Insteon/generated/Lock.js.map +1 -1
  15. package/dist/esm/Definitions/Insteon/generated/OnLevelRelay.js +10 -0
  16. package/dist/esm/Definitions/Insteon/generated/OnLevelRelay.js.map +1 -1
  17. package/{src/Devices/ISYMultiNodeDevice.ts → dist/esm/Devices/CompositeDevice.js} +108 -9
  18. package/dist/esm/Devices/CompositeDevice.js.map +1 -0
  19. package/dist/esm/Devices/DeviceFactory.js +1 -1
  20. package/dist/esm/Devices/DeviceFactory.js.map +1 -1
  21. package/dist/esm/Devices/ISYDeviceNode.js +1 -0
  22. package/dist/esm/Devices/ISYDeviceNode.js.map +1 -1
  23. package/dist/esm/Devices/ISYMultiNodeDevice.js +25 -1
  24. package/dist/esm/Devices/ISYMultiNodeDevice.js.map +1 -1
  25. package/dist/esm/Devices/Insteon/Generated/AlertModuleArmed.js +6 -6
  26. package/dist/esm/Devices/Insteon/Generated/AlertModuleArmed.js.map +1 -1
  27. package/dist/esm/Devices/Insteon/Generated/AlertModuleSiren.js +6 -6
  28. package/dist/esm/Devices/Insteon/Generated/AlertModuleSiren.js.map +1 -1
  29. package/dist/esm/Devices/Insteon/Generated/BallastRelayLampSwitch.js +6 -6
  30. package/dist/esm/Devices/Insteon/Generated/BallastRelayLampSwitch.js.map +1 -1
  31. package/dist/esm/Devices/Insteon/Generated/BinaryAlarm.js +6 -6
  32. package/dist/esm/Devices/Insteon/Generated/BinaryAlarm.js.map +1 -1
  33. package/dist/esm/Devices/Insteon/Generated/BinaryControl.js +6 -6
  34. package/dist/esm/Devices/Insteon/Generated/BinaryControl.js.map +1 -1
  35. package/dist/esm/Devices/Insteon/Generated/DimmerLamp.js +8 -8
  36. package/dist/esm/Devices/Insteon/Generated/DimmerLamp.js.map +1 -1
  37. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitch.js +8 -8
  38. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitch.js.map +1 -1
  39. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitchLed.js +8 -8
  40. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitchLed.js.map +1 -1
  41. package/dist/esm/Devices/Insteon/Generated/DimmerMotorSwitch.js +8 -8
  42. package/dist/esm/Devices/Insteon/Generated/DimmerMotorSwitch.js.map +1 -1
  43. package/dist/esm/Devices/Insteon/Generated/DimmerSwitch.js +5 -5
  44. package/dist/esm/Devices/Insteon/Generated/DimmerSwitch.js.map +1 -1
  45. package/dist/esm/Devices/Insteon/Generated/DoorLock.js +6 -6
  46. package/dist/esm/Devices/Insteon/Generated/DoorLock.js.map +1 -1
  47. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Input.js +6 -6
  48. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Input.js.map +1 -1
  49. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Output.js +6 -6
  50. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Output.js.map +1 -1
  51. package/dist/esm/Devices/Insteon/Generated/EzrainInput.js +6 -6
  52. package/dist/esm/Devices/Insteon/Generated/EzrainInput.js.map +1 -1
  53. package/dist/esm/Devices/Insteon/Generated/EzrainOutput.js +6 -6
  54. package/dist/esm/Devices/Insteon/Generated/EzrainOutput.js.map +1 -1
  55. package/dist/esm/Devices/Insteon/Generated/FanLincMotor.js +6 -6
  56. package/dist/esm/Devices/Insteon/Generated/FanLincMotor.js.map +1 -1
  57. package/dist/esm/Devices/Insteon/Generated/I3KeypadFlags.js +14 -14
  58. package/dist/esm/Devices/Insteon/Generated/I3KeypadFlags.js.map +1 -1
  59. package/dist/esm/Devices/Insteon/Generated/I3PaddleFlags.js +12 -12
  60. package/dist/esm/Devices/Insteon/Generated/I3PaddleFlags.js.map +1 -1
  61. package/dist/esm/Devices/Insteon/Generated/ImeterSolo.js +7 -7
  62. package/dist/esm/Devices/Insteon/Generated/ImeterSolo.js.map +1 -1
  63. package/dist/esm/Devices/Insteon/Generated/IrLincTx.js +5 -5
  64. package/dist/esm/Devices/Insteon/Generated/IrLincTx.js.map +1 -1
  65. package/dist/esm/Devices/Insteon/Generated/KeypadButton.js +6 -6
  66. package/dist/esm/Devices/Insteon/Generated/KeypadButton.js.map +1 -1
  67. package/dist/esm/Devices/Insteon/Generated/KeypadDimmer.js +8 -8
  68. package/dist/esm/Devices/Insteon/Generated/KeypadDimmer.js.map +1 -1
  69. package/dist/esm/Devices/Insteon/Generated/KeypadRelay.js +6 -6
  70. package/dist/esm/Devices/Insteon/Generated/KeypadRelay.js.map +1 -1
  71. package/dist/esm/Devices/Insteon/Generated/OnOffControl.js +6 -6
  72. package/dist/esm/Devices/Insteon/Generated/OnOffControl.js.map +1 -1
  73. package/dist/esm/Devices/Insteon/Generated/Pir2844.js +10 -10
  74. package/dist/esm/Devices/Insteon/Generated/Pir2844.js.map +1 -1
  75. package/dist/esm/Devices/Insteon/Generated/Pir2844OnOff.js +6 -6
  76. package/dist/esm/Devices/Insteon/Generated/Pir2844OnOff.js.map +1 -1
  77. package/dist/esm/Devices/Insteon/Generated/Pir2844c.js +10 -10
  78. package/dist/esm/Devices/Insteon/Generated/Pir2844c.js.map +1 -1
  79. package/dist/esm/Devices/Insteon/Generated/RelayLamp.js +6 -6
  80. package/dist/esm/Devices/Insteon/Generated/RelayLamp.js.map +1 -1
  81. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js +6 -6
  82. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js.map +1 -1
  83. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitchLed.js +6 -6
  84. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitchLed.js.map +1 -1
  85. package/dist/esm/Devices/Insteon/Generated/RelaySwitch.js +5 -5
  86. package/dist/esm/Devices/Insteon/Generated/RelaySwitch.js.map +1 -1
  87. package/dist/esm/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.js +5 -5
  88. package/dist/esm/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.js.map +1 -1
  89. package/dist/esm/Devices/Insteon/Generated/RemoteLinc2.js +6 -6
  90. package/dist/esm/Devices/Insteon/Generated/RemoteLinc2.js.map +1 -1
  91. package/dist/esm/Devices/Insteon/Generated/Siren.js +9 -9
  92. package/dist/esm/Devices/Insteon/Generated/Siren.js.map +1 -1
  93. package/dist/esm/Devices/Insteon/Generated/SirenAlert.js +5 -5
  94. package/dist/esm/Devices/Insteon/Generated/SirenAlert.js.map +1 -1
  95. package/dist/esm/Devices/Insteon/Generated/TempLinc.js +12 -12
  96. package/dist/esm/Devices/Insteon/Generated/TempLinc.js.map +1 -1
  97. package/dist/esm/Devices/Insteon/Generated/Thermostat.js +12 -12
  98. package/dist/esm/Devices/Insteon/Generated/Thermostat.js.map +1 -1
  99. package/dist/esm/Devices/Insteon/Generated/X10.js +6 -6
  100. package/dist/esm/Devices/Insteon/Generated/X10.js.map +1 -1
  101. package/dist/esm/Devices/Insteon/InsteonDeviceFactory.js +20 -11
  102. package/dist/esm/Devices/Insteon/InsteonDeviceFactory.js.map +1 -1
  103. package/dist/esm/Devices/Insteon/InsteonDimmableDevice.js +2 -4
  104. package/dist/esm/Devices/Insteon/InsteonDimmableDevice.js.map +1 -1
  105. package/dist/esm/Devices/Insteon/InsteonDimmerOutletDevice.js +2 -2
  106. package/dist/esm/Devices/Insteon/InsteonDimmerOutletDevice.js.map +1 -1
  107. package/dist/esm/Devices/Insteon/InsteonDoorWindowSensorDevice.js +20 -7
  108. package/dist/esm/Devices/Insteon/InsteonDoorWindowSensorDevice.js.map +1 -1
  109. package/dist/esm/Devices/Insteon/InsteonFanDevice.js +17 -34
  110. package/dist/esm/Devices/Insteon/InsteonFanDevice.js.map +1 -1
  111. package/dist/esm/Devices/Insteon/InsteonOnOffOutletDevice.js +3 -13
  112. package/dist/esm/Devices/Insteon/InsteonOnOffOutletDevice.js.map +1 -1
  113. package/dist/esm/Devices/Insteon/InsteonRelayDevice.js +0 -16
  114. package/dist/esm/Devices/Insteon/InsteonRelayDevice.js.map +1 -1
  115. package/dist/esm/Devices/Insteon/index.js +10 -11
  116. package/dist/esm/Devices/Insteon/index.js.map +1 -1
  117. package/dist/esm/Devices/Lutron/Generated/LoadShed.js +6 -6
  118. package/dist/esm/Devices/Lutron/Generated/LoadShed.js.map +1 -1
  119. package/dist/esm/Devices/NodeFactory.js.map +1 -1
  120. package/dist/esm/Devices/UDI/Generated/Channel.js +7 -7
  121. package/dist/esm/Devices/UDI/Generated/Channel.js.map +1 -1
  122. package/dist/esm/Devices/UDI/Generated/Em3MainChannel.js +10 -10
  123. package/dist/esm/Devices/UDI/Generated/Em3MainChannel.js.map +1 -1
  124. package/dist/esm/Devices/UDI/Generated/Main.js +7 -7
  125. package/dist/esm/Devices/UDI/Generated/Main.js.map +1 -1
  126. package/dist/esm/Devices/UDI/Generated/PulseCounter.js +8 -8
  127. package/dist/esm/Devices/UDI/Generated/PulseCounter.js.map +1 -1
  128. package/dist/esm/Devices/UDI/Generated/Relay.js +6 -6
  129. package/dist/esm/Devices/UDI/Generated/Relay.js.map +1 -1
  130. package/dist/esm/Devices/UDI/Generated/TemperatureSensor.js +6 -6
  131. package/dist/esm/Devices/UDI/Generated/TemperatureSensor.js.map +1 -1
  132. package/dist/esm/Devices/ZWave/Generated/ColorSwitch.js +9 -9
  133. package/dist/esm/Devices/ZWave/Generated/ColorSwitch.js.map +1 -1
  134. package/dist/esm/Devices/ZWave/Generated/DimmerSwitch.js +6 -6
  135. package/dist/esm/Devices/ZWave/Generated/DimmerSwitch.js.map +1 -1
  136. package/dist/esm/Devices/ZigBee/ZWaveBaseDevice.js +9 -0
  137. package/dist/esm/Devices/ZigBee/ZWaveBaseDevice.js.map +1 -0
  138. package/dist/esm/Devices/ZigBee/ZigBeeBase.js +9 -0
  139. package/dist/esm/Devices/ZigBee/ZigBeeBase.js.map +1 -0
  140. package/dist/esm/Devices/ZigBee/index.js +3 -0
  141. package/dist/esm/Devices/ZigBee/index.js.map +1 -0
  142. package/dist/esm/ISY.js +19 -3
  143. package/dist/esm/ISY.js.map +1 -1
  144. package/dist/esm/ISYNode.js +7 -6
  145. package/dist/esm/ISYNode.js.map +1 -1
  146. package/dist/esm/Matter/Behaviors/BehaviorRegistry.js +37 -5
  147. package/dist/esm/Matter/Behaviors/BehaviorRegistry.js.map +1 -1
  148. package/dist/esm/Matter/Behaviors/ISYClusterBehavior.js +10 -3
  149. package/dist/esm/Matter/Behaviors/ISYClusterBehavior.js.map +1 -1
  150. package/dist/esm/Matter/Behaviors/Insteon/DimmerLevelControlBehavior.js +24 -0
  151. package/dist/esm/Matter/Behaviors/Insteon/DimmerLevelControlBehavior.js.map +1 -0
  152. package/dist/esm/Matter/Behaviors/Insteon/ISYDimmableBehavior.js +23 -0
  153. package/dist/esm/Matter/Behaviors/Insteon/ISYDimmableBehavior.js.map +1 -0
  154. package/dist/esm/Matter/Behaviors/Insteon/ISYOnOffBehavior.js +4 -4
  155. package/dist/esm/Matter/Behaviors/Insteon/ISYOnOffBehavior.js.map +1 -1
  156. package/dist/esm/Matter/Behaviors/Insteon/IdentifyBehavior.js +23 -0
  157. package/dist/esm/Matter/Behaviors/Insteon/IdentifyBehavior.js.map +1 -0
  158. package/dist/esm/Matter/Behaviors/Insteon/RelayOnOffBehavior.js +24 -0
  159. package/dist/esm/Matter/Behaviors/Insteon/RelayOnOffBehavior.js.map +1 -0
  160. package/dist/esm/Matter/Behaviors/Insteon/index.js +4 -0
  161. package/dist/esm/Matter/Behaviors/Insteon/index.js.map +1 -0
  162. package/dist/esm/Matter/Bridge/Server.js +22 -11
  163. package/dist/esm/Matter/Bridge/Server.js.map +1 -1
  164. package/dist/esm/Matter/Mappings/Insteon.js.map +1 -1
  165. package/dist/esm/Matter/Mappings/MappingRegistry.js +5 -4
  166. package/dist/esm/Matter/Mappings/MappingRegistry.js.map +1 -1
  167. package/dist/esm/Registry.js +77 -0
  168. package/dist/esm/Registry.js.map +1 -0
  169. package/dist/esm/Utils.js +12 -0
  170. package/dist/esm/Utils.js.map +1 -1
  171. package/dist/esm/types/CodeGeneration/CodeFactory.d.ts +6 -5
  172. package/dist/esm/types/CodeGeneration/CodeFactory.d.ts.map +1 -1
  173. package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts.map +1 -1
  174. package/dist/esm/types/Definitions/Global/Commands.d.ts +4 -4
  175. package/dist/esm/types/Definitions/Global/Commands.d.ts.map +1 -1
  176. package/dist/esm/types/Definitions/Global/Drivers.d.ts +11 -8
  177. package/dist/esm/types/Definitions/Global/Drivers.d.ts.map +1 -1
  178. package/dist/esm/types/Definitions/Global/Events.d.ts +3 -3
  179. package/dist/esm/types/Definitions/Global/Events.d.ts.map +1 -1
  180. package/dist/esm/types/Definitions/Insteon/generated/Boolean.d.ts +4 -0
  181. package/dist/esm/types/Definitions/Insteon/generated/Boolean.d.ts.map +1 -1
  182. package/dist/esm/types/Definitions/Insteon/generated/Error.d.ts +4 -0
  183. package/dist/esm/types/Definitions/Insteon/generated/Error.d.ts.map +1 -1
  184. package/dist/esm/types/Definitions/Insteon/generated/Lock.d.ts +6 -0
  185. package/dist/esm/types/Definitions/Insteon/generated/Lock.d.ts.map +1 -1
  186. package/dist/esm/types/Definitions/Insteon/generated/OnLevelRelay.d.ts +4 -0
  187. package/dist/esm/types/Definitions/Insteon/generated/OnLevelRelay.d.ts.map +1 -1
  188. package/dist/esm/types/Devices/CompositeDevice.d.ts +64 -0
  189. package/dist/esm/types/Devices/CompositeDevice.d.ts.map +1 -0
  190. package/dist/esm/types/Devices/EndpointFor.d.ts +3 -2
  191. package/dist/esm/types/Devices/EndpointFor.d.ts.map +1 -1
  192. package/dist/esm/types/Devices/ISYDeviceNode.d.ts +4 -1
  193. package/dist/esm/types/Devices/ISYDeviceNode.d.ts.map +1 -1
  194. package/dist/esm/types/Devices/ISYMultiNodeDevice.d.ts +25 -1
  195. package/dist/esm/types/Devices/ISYMultiNodeDevice.d.ts.map +1 -1
  196. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleArmed.d.ts +2 -3
  197. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleArmed.d.ts.map +1 -1
  198. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleSiren.d.ts +2 -3
  199. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleSiren.d.ts.map +1 -1
  200. package/dist/esm/types/Devices/Insteon/Generated/BallastRelayLampSwitch.d.ts +2 -3
  201. package/dist/esm/types/Devices/Insteon/Generated/BallastRelayLampSwitch.d.ts.map +1 -1
  202. package/dist/esm/types/Devices/Insteon/Generated/BinaryAlarm.d.ts +2 -3
  203. package/dist/esm/types/Devices/Insteon/Generated/BinaryAlarm.d.ts.map +1 -1
  204. package/dist/esm/types/Devices/Insteon/Generated/BinaryControl.d.ts +2 -3
  205. package/dist/esm/types/Devices/Insteon/Generated/BinaryControl.d.ts.map +1 -1
  206. package/dist/esm/types/Devices/Insteon/Generated/DimmerLamp.d.ts +2 -3
  207. package/dist/esm/types/Devices/Insteon/Generated/DimmerLamp.d.ts.map +1 -1
  208. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitch.d.ts +2 -3
  209. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitch.d.ts.map +1 -1
  210. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitchLed.d.ts +2 -3
  211. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitchLed.d.ts.map +1 -1
  212. package/dist/esm/types/Devices/Insteon/Generated/DimmerMotorSwitch.d.ts +2 -3
  213. package/dist/esm/types/Devices/Insteon/Generated/DimmerMotorSwitch.d.ts.map +1 -1
  214. package/dist/esm/types/Devices/Insteon/Generated/DimmerSwitch.d.ts +2 -3
  215. package/dist/esm/types/Devices/Insteon/Generated/DimmerSwitch.d.ts.map +1 -1
  216. package/dist/esm/types/Devices/Insteon/Generated/DoorLock.d.ts +2 -3
  217. package/dist/esm/types/Devices/Insteon/Generated/DoorLock.d.ts.map +1 -1
  218. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Input.d.ts +2 -3
  219. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Input.d.ts.map +1 -1
  220. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Output.d.ts +2 -3
  221. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Output.d.ts.map +1 -1
  222. package/dist/esm/types/Devices/Insteon/Generated/EzrainInput.d.ts +2 -3
  223. package/dist/esm/types/Devices/Insteon/Generated/EzrainInput.d.ts.map +1 -1
  224. package/dist/esm/types/Devices/Insteon/Generated/EzrainOutput.d.ts +2 -3
  225. package/dist/esm/types/Devices/Insteon/Generated/EzrainOutput.d.ts.map +1 -1
  226. package/dist/esm/types/Devices/Insteon/Generated/FanLincMotor.d.ts +2 -3
  227. package/dist/esm/types/Devices/Insteon/Generated/FanLincMotor.d.ts.map +1 -1
  228. package/dist/esm/types/Devices/Insteon/Generated/I3KeypadFlags.d.ts +2 -3
  229. package/dist/esm/types/Devices/Insteon/Generated/I3KeypadFlags.d.ts.map +1 -1
  230. package/dist/esm/types/Devices/Insteon/Generated/I3PaddleFlags.d.ts +2 -3
  231. package/dist/esm/types/Devices/Insteon/Generated/I3PaddleFlags.d.ts.map +1 -1
  232. package/dist/esm/types/Devices/Insteon/Generated/ImeterSolo.d.ts +2 -3
  233. package/dist/esm/types/Devices/Insteon/Generated/ImeterSolo.d.ts.map +1 -1
  234. package/dist/esm/types/Devices/Insteon/Generated/IrLincTx.d.ts +2 -3
  235. package/dist/esm/types/Devices/Insteon/Generated/IrLincTx.d.ts.map +1 -1
  236. package/dist/esm/types/Devices/Insteon/Generated/KeypadButton.d.ts +2 -3
  237. package/dist/esm/types/Devices/Insteon/Generated/KeypadButton.d.ts.map +1 -1
  238. package/dist/esm/types/Devices/Insteon/Generated/KeypadDimmer.d.ts +2 -3
  239. package/dist/esm/types/Devices/Insteon/Generated/KeypadDimmer.d.ts.map +1 -1
  240. package/dist/esm/types/Devices/Insteon/Generated/KeypadRelay.d.ts +2 -3
  241. package/dist/esm/types/Devices/Insteon/Generated/KeypadRelay.d.ts.map +1 -1
  242. package/dist/esm/types/Devices/Insteon/Generated/OnOffControl.d.ts +2 -3
  243. package/dist/esm/types/Devices/Insteon/Generated/OnOffControl.d.ts.map +1 -1
  244. package/dist/esm/types/Devices/Insteon/Generated/Pir2844.d.ts +2 -3
  245. package/dist/esm/types/Devices/Insteon/Generated/Pir2844.d.ts.map +1 -1
  246. package/dist/esm/types/Devices/Insteon/Generated/Pir2844OnOff.d.ts +2 -3
  247. package/dist/esm/types/Devices/Insteon/Generated/Pir2844OnOff.d.ts.map +1 -1
  248. package/dist/esm/types/Devices/Insteon/Generated/Pir2844c.d.ts +2 -3
  249. package/dist/esm/types/Devices/Insteon/Generated/Pir2844c.d.ts.map +1 -1
  250. package/dist/esm/types/Devices/Insteon/Generated/RelayLamp.d.ts +2 -3
  251. package/dist/esm/types/Devices/Insteon/Generated/RelayLamp.d.ts.map +1 -1
  252. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts +2 -3
  253. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts.map +1 -1
  254. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitchLed.d.ts +2 -3
  255. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitchLed.d.ts.map +1 -1
  256. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitch.d.ts +2 -3
  257. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitch.d.ts.map +1 -1
  258. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.d.ts +2 -3
  259. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.d.ts.map +1 -1
  260. package/dist/esm/types/Devices/Insteon/Generated/RemoteLinc2.d.ts +2 -3
  261. package/dist/esm/types/Devices/Insteon/Generated/RemoteLinc2.d.ts.map +1 -1
  262. package/dist/esm/types/Devices/Insteon/Generated/Siren.d.ts +2 -3
  263. package/dist/esm/types/Devices/Insteon/Generated/Siren.d.ts.map +1 -1
  264. package/dist/esm/types/Devices/Insteon/Generated/SirenAlert.d.ts +2 -3
  265. package/dist/esm/types/Devices/Insteon/Generated/SirenAlert.d.ts.map +1 -1
  266. package/dist/esm/types/Devices/Insteon/Generated/TempLinc.d.ts +2 -3
  267. package/dist/esm/types/Devices/Insteon/Generated/TempLinc.d.ts.map +1 -1
  268. package/dist/esm/types/Devices/Insteon/Generated/Thermostat.d.ts +2 -3
  269. package/dist/esm/types/Devices/Insteon/Generated/Thermostat.d.ts.map +1 -1
  270. package/dist/esm/types/Devices/Insteon/Generated/X10.d.ts +2 -3
  271. package/dist/esm/types/Devices/Insteon/Generated/X10.d.ts.map +1 -1
  272. package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts +8 -6
  273. package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts.map +1 -1
  274. package/dist/esm/types/Devices/Insteon/InsteonDeviceFactory.d.ts +7 -2
  275. package/dist/esm/types/Devices/Insteon/InsteonDeviceFactory.d.ts.map +1 -1
  276. package/dist/esm/types/Devices/Insteon/InsteonDimmableDevice.d.ts +2 -2
  277. package/dist/esm/types/Devices/Insteon/InsteonDimmableDevice.d.ts.map +1 -1
  278. package/dist/esm/types/Devices/Insteon/InsteonDimmerOutletDevice.d.ts +2 -2
  279. package/dist/esm/types/Devices/Insteon/InsteonDimmerOutletDevice.d.ts.map +1 -1
  280. package/dist/esm/types/Devices/Insteon/InsteonDoorWindowSensorDevice.d.ts +17 -5
  281. package/dist/esm/types/Devices/Insteon/InsteonDoorWindowSensorDevice.d.ts.map +1 -1
  282. package/dist/esm/types/Devices/Insteon/InsteonFanDevice.d.ts +18 -16
  283. package/dist/esm/types/Devices/Insteon/InsteonFanDevice.d.ts.map +1 -1
  284. package/dist/esm/types/Devices/Insteon/InsteonLeakSensorDevice.d.ts +1 -1
  285. package/dist/esm/types/Devices/Insteon/InsteonLeakSensorDevice.d.ts.map +1 -1
  286. package/dist/esm/types/Devices/Insteon/InsteonOnOffOutletDevice.d.ts +8 -7
  287. package/dist/esm/types/Devices/Insteon/InsteonOnOffOutletDevice.d.ts.map +1 -1
  288. package/dist/esm/types/Devices/Insteon/InsteonRelayDevice.d.ts +0 -1
  289. package/dist/esm/types/Devices/Insteon/InsteonRelayDevice.d.ts.map +1 -1
  290. package/dist/esm/types/Devices/Insteon/index.d.ts +10 -11
  291. package/dist/esm/types/Devices/Insteon/index.d.ts.map +1 -1
  292. package/dist/esm/types/Devices/Lutron/Generated/LoadShed.d.ts +2 -3
  293. package/dist/esm/types/Devices/Lutron/Generated/LoadShed.d.ts.map +1 -1
  294. package/dist/esm/types/Devices/NodeFactory.d.ts +1 -1
  295. package/dist/esm/types/Devices/NodeFactory.d.ts.map +1 -1
  296. package/dist/esm/types/Devices/UDI/Generated/Channel.d.ts +2 -3
  297. package/dist/esm/types/Devices/UDI/Generated/Channel.d.ts.map +1 -1
  298. package/dist/esm/types/Devices/UDI/Generated/Em3MainChannel.d.ts +2 -3
  299. package/dist/esm/types/Devices/UDI/Generated/Em3MainChannel.d.ts.map +1 -1
  300. package/dist/esm/types/Devices/UDI/Generated/Main.d.ts +2 -3
  301. package/dist/esm/types/Devices/UDI/Generated/Main.d.ts.map +1 -1
  302. package/dist/esm/types/Devices/UDI/Generated/PulseCounter.d.ts +2 -3
  303. package/dist/esm/types/Devices/UDI/Generated/PulseCounter.d.ts.map +1 -1
  304. package/dist/esm/types/Devices/UDI/Generated/Relay.d.ts +2 -3
  305. package/dist/esm/types/Devices/UDI/Generated/Relay.d.ts.map +1 -1
  306. package/dist/esm/types/Devices/UDI/Generated/TemperatureSensor.d.ts +2 -3
  307. package/dist/esm/types/Devices/UDI/Generated/TemperatureSensor.d.ts.map +1 -1
  308. package/dist/esm/types/Devices/ZWave/Generated/ColorSwitch.d.ts +2 -3
  309. package/dist/esm/types/Devices/ZWave/Generated/ColorSwitch.d.ts.map +1 -1
  310. package/dist/esm/types/Devices/ZWave/Generated/DimmerSwitch.d.ts +2 -3
  311. package/dist/esm/types/Devices/ZWave/Generated/DimmerSwitch.d.ts.map +1 -1
  312. package/dist/esm/types/Devices/ZigBee/ZWaveBaseDevice.d.ts +10 -0
  313. package/dist/esm/types/Devices/ZigBee/ZWaveBaseDevice.d.ts.map +1 -0
  314. package/dist/esm/types/Devices/ZigBee/ZigBeeBase.d.ts +10 -0
  315. package/dist/esm/types/Devices/ZigBee/ZigBeeBase.d.ts.map +1 -0
  316. package/dist/esm/types/Devices/ZigBee/index.d.ts +2 -0
  317. package/dist/esm/types/Devices/ZigBee/index.d.ts.map +1 -0
  318. package/dist/esm/types/ISY.d.ts.map +1 -1
  319. package/dist/esm/types/ISYDevice.d.ts +3 -5
  320. package/dist/esm/types/ISYDevice.d.ts.map +1 -1
  321. package/dist/esm/types/ISYNode.d.ts +33 -28
  322. package/dist/esm/types/ISYNode.d.ts.map +1 -1
  323. package/dist/esm/types/Matter/Behaviors/BehaviorRegistry.d.ts +9 -5
  324. package/dist/esm/types/Matter/Behaviors/BehaviorRegistry.d.ts.map +1 -1
  325. package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts +1 -1
  326. package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts.map +1 -1
  327. package/dist/esm/types/Matter/Behaviors/ISYClusterBehavior.d.ts +8 -5
  328. package/dist/esm/types/Matter/Behaviors/ISYClusterBehavior.d.ts.map +1 -1
  329. package/dist/esm/types/Matter/Behaviors/Insteon/DimmerLevelControlBehavior.d.ts +321 -0
  330. package/dist/esm/types/Matter/Behaviors/Insteon/DimmerLevelControlBehavior.d.ts.map +1 -0
  331. package/dist/esm/types/Matter/Behaviors/Insteon/ISYDimmableBehavior.d.ts +42 -0
  332. package/dist/esm/types/Matter/Behaviors/Insteon/ISYDimmableBehavior.d.ts.map +1 -0
  333. package/dist/esm/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts +4 -4
  334. package/dist/esm/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts.map +1 -1
  335. package/dist/esm/types/Matter/Behaviors/Insteon/IdentifyBehavior.d.ts +24 -0
  336. package/dist/esm/types/Matter/Behaviors/Insteon/IdentifyBehavior.d.ts.map +1 -0
  337. package/dist/esm/types/Matter/Behaviors/Insteon/RelayOnOffBehavior.d.ts +241 -0
  338. package/dist/esm/types/Matter/Behaviors/Insteon/RelayOnOffBehavior.d.ts.map +1 -0
  339. package/dist/esm/types/Matter/Behaviors/Insteon/index.d.ts +4 -0
  340. package/dist/esm/types/Matter/Behaviors/Insteon/index.d.ts.map +1 -0
  341. package/dist/esm/types/Matter/Bridge/Server.d.ts.map +1 -1
  342. package/dist/esm/types/Matter/Mappings/MappingRegistry.d.ts +4173 -42
  343. package/dist/esm/types/Matter/Mappings/MappingRegistry.d.ts.map +1 -1
  344. package/dist/esm/types/Registry.d.ts +37 -0
  345. package/dist/esm/types/Registry.d.ts.map +1 -0
  346. package/dist/esm/types/Utils.d.ts +13 -0
  347. package/dist/esm/types/Utils.d.ts.map +1 -1
  348. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  349. package/package.json +2 -2
  350. package/src/CodeGeneration/CodeFactory.ts +16 -8
  351. package/src/CodeGeneration/NodeClassFactory.ts +7 -9
  352. package/src/Definitions/Global/Commands.ts +16 -13
  353. package/src/Definitions/Global/Drivers.ts +57 -36
  354. package/src/Definitions/Global/Events.ts +4 -4
  355. package/src/Definitions/Insteon/generated/Boolean.ts +9 -0
  356. package/src/Definitions/Insteon/generated/Error.ts +9 -0
  357. package/src/Definitions/Insteon/generated/Lock.ts +28 -0
  358. package/src/Definitions/Insteon/generated/OnLevelRelay.ts +11 -0
  359. package/src/Devices/Brultech/Generated/Channel.ts +8 -9
  360. package/src/Devices/Brultech/Generated/Main.ts +11 -12
  361. package/src/Devices/CompositeDevice.ts +277 -0
  362. package/src/Devices/DeviceFactory.ts +1 -1
  363. package/src/Devices/ISYDeviceNode.ts +8 -2
  364. package/src/Devices/Insteon/Generated/AlertModuleArmed.ts +7 -8
  365. package/src/Devices/Insteon/Generated/AlertModuleSiren.ts +7 -8
  366. package/src/Devices/Insteon/Generated/BallastRelayLampSwitch.ts +7 -8
  367. package/src/Devices/Insteon/Generated/BinaryAlarm.ts +7 -8
  368. package/src/Devices/Insteon/Generated/BinaryControl.ts +7 -8
  369. package/src/Devices/Insteon/Generated/DimmerLamp.ts +9 -10
  370. package/src/Devices/Insteon/Generated/DimmerLampSwitch.ts +9 -10
  371. package/src/Devices/Insteon/Generated/DimmerLampSwitchLed.ts +9 -10
  372. package/src/Devices/Insteon/Generated/DimmerMotorSwitch.ts +9 -10
  373. package/src/Devices/Insteon/Generated/DimmerSwitch.ts +6 -7
  374. package/src/Devices/Insteon/Generated/DoorLock.ts +7 -8
  375. package/src/Devices/Insteon/Generated/Ezio2x4Input.ts +7 -8
  376. package/src/Devices/Insteon/Generated/Ezio2x4Output.ts +7 -8
  377. package/src/Devices/Insteon/Generated/EzrainInput.ts +7 -8
  378. package/src/Devices/Insteon/Generated/EzrainOutput.ts +7 -8
  379. package/src/Devices/Insteon/Generated/FanLincMotor.ts +7 -8
  380. package/src/Devices/Insteon/Generated/I3KeypadFlags.ts +15 -16
  381. package/src/Devices/Insteon/Generated/I3PaddleFlags.ts +13 -14
  382. package/src/Devices/Insteon/Generated/ImeterSolo.ts +8 -9
  383. package/src/Devices/Insteon/Generated/IrLincTx.ts +6 -7
  384. package/src/Devices/Insteon/Generated/KeypadButton.ts +7 -8
  385. package/src/Devices/Insteon/Generated/KeypadDimmer.ts +9 -10
  386. package/src/Devices/Insteon/Generated/KeypadRelay.ts +7 -8
  387. package/src/Devices/Insteon/Generated/OnOffControl.ts +7 -8
  388. package/src/Devices/Insteon/Generated/Pir2844.ts +11 -12
  389. package/src/Devices/Insteon/Generated/Pir2844OnOff.ts +7 -8
  390. package/src/Devices/Insteon/Generated/Pir2844c.ts +11 -12
  391. package/src/Devices/Insteon/Generated/RelayLamp.ts +7 -8
  392. package/src/Devices/Insteon/Generated/RelayLampSwitch.ts +7 -8
  393. package/src/Devices/Insteon/Generated/RelayLampSwitchLed.ts +7 -8
  394. package/src/Devices/Insteon/Generated/RelaySwitch.ts +6 -7
  395. package/src/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.ts +6 -7
  396. package/src/Devices/Insteon/Generated/RemoteLinc2.ts +7 -8
  397. package/src/Devices/Insteon/Generated/Siren.ts +10 -11
  398. package/src/Devices/Insteon/Generated/SirenAlert.ts +6 -7
  399. package/src/Devices/Insteon/Generated/TempLinc.ts +13 -14
  400. package/src/Devices/Insteon/Generated/Thermostat.ts +13 -14
  401. package/src/Devices/Insteon/Generated/X10.ts +7 -8
  402. package/src/Devices/Insteon/InsteonDeviceFactory.ts +26 -12
  403. package/src/Devices/Insteon/InsteonDimmableDevice.ts +4 -4
  404. package/src/Devices/Insteon/InsteonDimmerOutletDevice.ts +3 -2
  405. package/src/Devices/Insteon/InsteonDoorWindowSensorDevice.ts +30 -7
  406. package/src/Devices/Insteon/InsteonFanDevice.ts +21 -36
  407. package/src/Devices/Insteon/InsteonOnOffOutletDevice.ts +5 -17
  408. package/src/Devices/Insteon/InsteonRelayDevice.ts +2 -3
  409. package/src/Devices/Insteon/index.ts +10 -14
  410. package/src/Devices/Lutron/Generated/LoadShed.ts +7 -8
  411. package/src/Devices/NCD/Generated/Relay.ts +19 -23
  412. package/src/Devices/NodeFactory.ts +1 -1
  413. package/src/Devices/Poly/Generated/MatterBridge.ts +6 -7
  414. package/src/Devices/Scene/Generated/Scene.ts +5 -6
  415. package/src/Devices/UDI/Generated/Channel.ts +8 -9
  416. package/src/Devices/UDI/Generated/Em3MainChannel.ts +11 -12
  417. package/src/Devices/UDI/Generated/Main.ts +8 -9
  418. package/src/Devices/UDI/Generated/PulseCounter.ts +9 -10
  419. package/src/Devices/UDI/Generated/Relay.ts +7 -8
  420. package/src/Devices/UDI/Generated/TemperatureSensor.ts +7 -8
  421. package/src/Devices/ZWave/Generated/ColorSwitch.ts +17 -18
  422. package/src/Devices/ZWave/Generated/DimmerSwitch.ts +7 -8
  423. package/src/Devices/ZigBee/ZigBeeBase.ts +22 -0
  424. package/src/Devices/ZigBee/index.ts +13 -0
  425. package/src/Devices/ZigBeeLegacy/Generated/Relay.ts +22 -20
  426. package/src/Devices/ZigBeeLegacy/Generated/Thermostat.ts +92 -76
  427. package/src/ISY.ts +27 -5
  428. package/src/ISYDevice.ts +4 -3
  429. package/src/ISYNode.ts +56 -39
  430. package/src/Matter/Behaviors/BehaviorRegistry.ts +44 -8
  431. package/src/Matter/Behaviors/ISYBridgedDeviceBehavior.ts +2 -2
  432. package/src/Matter/Behaviors/ISYClusterBehavior.ts +20 -9
  433. package/src/Matter/Behaviors/Insteon/DimmerLevelControlBehavior.ts +30 -0
  434. package/src/Matter/Behaviors/Insteon/IdentifyBehavior.ts +26 -0
  435. package/src/Matter/Behaviors/Insteon/RelayOnOffBehavior.ts +34 -0
  436. package/src/Matter/Behaviors/Insteon/index.ts +3 -0
  437. package/src/Matter/Bridge/Server.ts +93 -85
  438. package/src/Matter/Mappings/Insteon.ts +3 -3
  439. package/src/Matter/Mappings/MappingRegistry.ts +29 -40
  440. package/src/Registry.ts +112 -0
  441. package/src/Utils.ts +29 -0
  442. package/src/Devices/Insteon/DimmerLampSwitch.ts +0 -207
  443. package/src/Devices/Insteon/InsteonRelaySwitchDevice.ts +0 -11
  444. package/src/Devices/Insteon/RelayLampSwitch.ts +0 -132
  445. package/src/Matter/Behaviors/Insteon/ISYOnOffBehavior.ts +0 -66
@@ -1,22 +1,23 @@
1
+ import * as Cluster from '@matter/types/cluster';
1
2
  import type * as Clusters from '@matter/types/clusters';
2
- import * as Cluster from '@matter/types/cluster'
3
3
 
4
- import type { Converter } from '../../Converters.js';
5
- import { DriverType } from '../../Definitions/Global/Drivers.js';
6
- import { Devices, Insteon } from '../../Devices/index.js';
7
- import type {Simplify, SimplifyDeep} from 'type-fest';
8
4
  import { ClusterBehavior, MutableEndpoint, SupportedBehaviors } from '@matter/main';
9
5
  import { DimmableLightDevice, OnOffLightDevice } from '@matter/main/devices';
10
6
  import { BridgedDeviceBasicInformationBehavior } from '@matter/node/behaviors';
11
7
  import type { DeviceTypeDefinition } from '@project-chip/matter.js/device';
8
+ import type { Simplify, SimplifyDeep } from 'type-fest';
9
+ import type { Converter } from '../../Converters.js';
10
+ import { DriverType } from '../../Definitions/Global/Drivers.js';
12
11
  import { Family } from '../../Definitions/index.js';
13
12
  import type { Constructor } from '../../Devices/Constructor.js';
14
13
  import { NodeFactory } from '../../Devices/NodeFactory.js';
14
+ import { Devices, Insteon } from '../../Devices/index.js';
15
15
  import { CommandsOf, DriversOf, ISYNode } from '../../ISYNode.js';
16
16
  import { ClusterType } from '../../Model/ClusterType.js';
17
17
  import type { PathsWithLimit, PickOfType, Remove } from '../../Utils.js';
18
18
  import { ISYBridgedDeviceBehavior } from '../Behaviors/ISYBridgedDeviceBehavior.js';
19
- import { ISYOnOffBehavior } from '../Behaviors/Insteon/ISYOnOffBehavior.js';
19
+ import { BehaviorRegistry } from '../Behaviors/BehaviorRegistry.js';
20
+
20
21
 
21
22
  // #region Type aliases (16)
22
23
 
@@ -27,7 +28,6 @@ export type AttributeMapping<B, D> =
27
28
  export type ClusterMapping<B, T extends ISYNode<any, any, any, any>> = {
28
29
  attributes?: ClusterAttributeMapping<B, T>;
29
30
  commands?: ClusterCommandMapping<B, T>;
30
-
31
31
  };
32
32
  export type ClusterAttributeMapping<A, K> = {
33
33
  [key in keyof Cluster.ClusterType.AttributesOf<A>]: { driver: Extract<keyof DriversOf<K>, string>; converter?: Converter.KnownConverters } | Extract<keyof DriversOf<K>, string>;
@@ -91,43 +91,33 @@ export type CommandMapping<B, D> =
91
91
  // behavior?: typeof ClusterBehavior;
92
92
 
93
93
  // }
94
- export interface DeviceToClusterMap<T extends ISYNode<Family, any, any, any>, D extends MutableEndpoint> {
94
+ export interface DeviceToClusterMap<T extends ISYNode<Family, any, any, any>, D extends MutableEndpoint> {
95
95
  deviceType: D;
96
96
  mapping: EndpointMapping<D, T>;
97
- };
98
-
99
-
100
-
97
+ }
101
98
 
102
99
  export interface Mapping<T extends ISYNode, D extends MutableEndpoint> {
103
100
  deviceType: D;
104
101
 
105
102
  nodeType?: T;
106
103
  mapping?: {
107
- [K in keyof D['behaviors']]?:
108
- {attributes?: {
109
- [K2 in keyof Cluster.ClusterType.AttributesOf<D['behaviors'][K]>]: { driver: keyof DriversOf<T>; converter?: Converter.KnownConverters } | keyof DriversOf<T>;
110
- },
111
- commands?: {
112
- [K2 in keyof Cluster.ClusterType.CommandsOf<D['behaviors'][K]>]: { command: keyof CommandsOf<T>; converter?: Converter.KnownConverters } | keyof CommandsOf<T>;
113
- }
114
- }
115
- }
116
-
117
-
118
-
104
+ [K in keyof D['behaviors']]?: {
105
+ attributes?: {
106
+ [K2 in keyof Cluster.ClusterType.AttributesOf<D['behaviors'][K]>]: { driver: keyof DriversOf<T>; converter?: Converter.KnownConverters } | keyof DriversOf<T>;
107
+ };
108
+ commands?: {
109
+ [K2 in keyof Cluster.ClusterType.CommandsOf<D['behaviors'][K]>]: { command: keyof CommandsOf<T>; converter?: Converter.KnownConverters } | keyof CommandsOf<T>;
110
+ };
111
+ };
112
+ };
119
113
  }
120
114
 
121
- function addA<T extends ISYNode<any,any,any,any>,D extends MutableEndpoint>(mapping1: Mapping<T,D>, mapping2: Mapping<T,D>) : Mapping<T,D> {
122
- return {deviceType: mapping1.deviceType, nodeType: mapping1.nodeType, mapping: {...mapping1.mapping, ...mapping2.mapping}};
123
-
124
- }
125
-
126
-
127
-
115
+ function addA<T extends ISYNode<any, any, any, any>, D extends MutableEndpoint>(mapping1: Mapping<T, D>, mapping2: Mapping<T, D>): Mapping<T, D> {
116
+ return { deviceType: mapping1.deviceType, nodeType: mapping1.nodeType, mapping: { ...mapping1.mapping, ...mapping2.mapping } };
117
+ }
128
118
 
129
119
  export type EndpointMapping<A extends MutableEndpoint, D extends ISYNode<Family, any, any, any>> = {
130
- [K in StringKeys<A['behaviors']>]?: ClusterMapping<A['behaviors'][K],D> //{
120
+ [K in StringKeys<A['behaviors']>]?: ClusterMapping<A['behaviors'][K], D>; //{
131
121
  /*attributes?: AttributeMapping<A['behaviors'][Uncapitalize<K>], D>;
132
122
  commands?: CommandMapping<A['behaviors'][Uncapitalize<K>], D>;*/
133
123
  //};
@@ -154,13 +144,10 @@ export type EndpointMapping1<A extends MutableEndpoint, K> = {
154
144
 
155
145
  type SupportedFamily = Family.Insteon | Family.ZWave | Family.ZigBee;
156
146
  export type FamilyToClusterMap<T extends SupportedFamily> = { Family: T } & {
157
- [Type in Extract<keyof Devices.Insteon, `${string}Node`> as Remove<Type, 'Node'>]?: DeviceToClusterMap<InstanceType<Devices.Insteon[Type]>, MutableEndpoint>;
147
+ [Type in keyof Devices.Insteon]?: Devices.Insteon[Type] extends {Node: Constructor<ISYNode<any,any,any,any>>} ?DeviceToClusterMap<InstanceType<Devices.Insteon[Type]["Node"]>, MutableEndpoint> : undefined;
158
148
  };
159
149
 
160
- interface ISYtoMatterMapping<N extends ISYNode, M extends MutableEndpoint> extends DeviceToClusterMap<N, M> {
161
-
162
-
163
- }
150
+ interface ISYtoMatterMapping<N extends ISYNode, M extends MutableEndpoint> extends DeviceToClusterMap<N, M> {}
164
151
 
165
152
  export function add<const F extends SupportedFamily, const T extends ISYNode<F>, const D extends MutableEndpoint>(
166
153
  familyToClusterMap: FamilyToClusterMap<F>,
@@ -275,7 +262,10 @@ export class MappingRegistry {
275
262
 
276
263
  regMap = MappingRegistry.map.get(x.family);
277
264
  let m = map[key] as DeviceToClusterMap<ISYNode, MutableEndpoint>;
278
- m = { deviceType: m.deviceType.with(BridgedDeviceBasicInformationBehavior, ISYBridgedDeviceBehavior), mapping: m.mapping };
265
+ let deviceType = m.deviceType;
266
+ deviceType = deviceType.with(BridgedDeviceBasicInformationBehavior, ISYBridgedDeviceBehavior);
267
+
268
+ m = { deviceType: deviceType, mapping: m.mapping };
279
269
 
280
270
  regMap.set(keys[1], m);
281
271
  regMap.set(x.name, m);
@@ -299,8 +289,7 @@ var clusterMap = {
299
289
  }
300
290
  };
301
291
 
302
-
303
- interface SimplyEndpointMapping<T extends ISYNode<Family, any, any, any>,K extends MutableEndpoint> extends SimplifyDeep<ISYtoMatterMapping<T,K>> {}
292
+ interface SimplyEndpointMapping<T extends ISYNode<Family, any, any, any>, K extends MutableEndpoint> extends SimplifyDeep<ISYtoMatterMapping<T, K>> {}
304
293
 
305
294
  /*
306
295
  const map = {
@@ -0,0 +1,112 @@
1
+ import { Family } from './Definitions/index.js';
2
+ import { nodeDefId } from './Devices/Insteon/KeypadButton.js';
3
+ import { NodeFactory } from './Devices/NodeFactory.js';
4
+ import type { ISYDeviceInfo } from './ISYDevice.js';
5
+ import { ISYNode } from './ISYNode.js';
6
+ import type { StringKeys } from './Utils.js';
7
+
8
+ export class Registry<K extends keyof any,T> {
9
+
10
+ Global: { [x in K]?: T } = {};
11
+ FamilyLevel: { [x in StringKeys<typeof Family>]?: { [y in K]?: T } } = {};
12
+
13
+ DeviceLevel: { [x: string]: { [y in K]?: T } } = {};
14
+ NodeLevel: { [x: string]: { [y in K]?: T } } = {};
15
+
16
+
17
+ registerGlobal(key: K, value: T): void {
18
+ this.Global[key] = value;
19
+ }
20
+
21
+ registerFamilyLevel<F extends Family>(family: F & number, key: K, value: T): void {
22
+ this.FamilyLevel[Family[family] as string] = this.FamilyLevel[Family[family] as string] ?? {};
23
+ this.FamilyLevel[Family[family] as string]![key] = value;
24
+ }
25
+
26
+ registerDeviceLevel(device: string, key: K, value: T): void {
27
+ this.DeviceLevel[device] = this.DeviceLevel[device] ?? {};
28
+ this.DeviceLevel[device]![key] = value;
29
+ }
30
+
31
+ registerNodeLevel(nodeDefId: string, key: K, value: T): void {
32
+ this.NodeLevel[nodeDefId] = this.NodeLevel[nodeDefId] ?? {};
33
+ this.NodeLevel[nodeDefId]![key] = value;
34
+ }
35
+
36
+ register(key: K, value: T): void
37
+ register(key: K, value: T, deviceType: string): void
38
+ register(key: K, value: T, nodeClass: typeof ISYNode): void
39
+ register(key: K, value: T, discriminant?: string | typeof ISYNode | Family ): void
40
+ {
41
+ if(discriminant === undefined)
42
+ {
43
+ this.registerGlobal(key, value);
44
+ return;
45
+ }
46
+ if(typeof discriminant === 'string')
47
+ {
48
+ this.registerDeviceLevel(discriminant, key, value);
49
+ return;
50
+ }
51
+ if(discriminant instanceof ISYNode.constructor)
52
+ {
53
+ this.registerNodeLevel(discriminant.nodeDefId, key, value);
54
+ for (const nodeDefId in NodeFactory.getImplements(discriminant))
55
+ {
56
+ this.registerNodeLevel(nodeDefId, key, value);
57
+ }
58
+ this.registerFamilyLevel(discriminant.family, key, value);
59
+ return;
60
+ }
61
+
62
+ }
63
+
64
+ getGlobal(key: K): T | undefined {
65
+ return this.Global[key];
66
+ }
67
+
68
+ getFamilyLevel<F extends Family>(family: F & number, key: K): T | undefined {
69
+ return this.FamilyLevel[Family[family] as string]?.[key];
70
+ }
71
+
72
+ getDeviceLevel(device: string, key: K): T | undefined {
73
+ return this.DeviceLevel[device]?.[key];
74
+ }
75
+
76
+ getNodeLevel(nodeDefId: string, key: K): T | undefined {
77
+ return this.NodeLevel[nodeDefId]?.[key];
78
+ }
79
+
80
+ get(device: ISYDeviceInfo & ISYNode, key: K): T | undefined
81
+ {
82
+ if(device.type)
83
+ {
84
+ let d = this.getDeviceLevel(device.type, key);
85
+ if(d)
86
+ return d;
87
+ }
88
+
89
+ let d = this.getNodeLevel(device.nodeDefId, key);
90
+ if(d)
91
+ {
92
+ return d;
93
+ }
94
+ else
95
+ {
96
+ for (const nodeDefId in NodeFactory.getImplements(device))
97
+ {
98
+ let d = this.getNodeLevel(nodeDefId, key);
99
+ if(d)
100
+ return d;
101
+ }
102
+ }
103
+ let f = this.getFamilyLevel(device.family, key);
104
+ if(f)
105
+ return f;
106
+ return this.getGlobal(key);
107
+
108
+ }
109
+
110
+
111
+
112
+ }
package/src/Utils.ts CHANGED
@@ -12,6 +12,35 @@ import { readFile } from 'fs/promises';
12
12
  import path from 'path';
13
13
  import { Family } from './Definitions/index.js';
14
14
  import { EventType } from './Events/EventType.js';
15
+ import type { Constructor } from 'type-fest';
16
+
17
+
18
+ export type Factory<T extends object> =
19
+ {
20
+ create?: (...args: any[]) => T;
21
+ is?<K extends T>(obj: object): obj is T;
22
+ isImplementedBy?(obj: object): obj is T;
23
+
24
+
25
+ } & {Node: Constructor<T>} | {Device: Constructor<T>};
26
+
27
+ export function isFactory(obj: any): obj is Factory<any> {
28
+ return obj.Node !== undefined || obj.Device !== undefined;
29
+ }
30
+
31
+ export function getConstructor<T extends object>(obj: Factory<T> | Constructor<T>): Constructor<T> {
32
+ if(isFactory(obj)) {
33
+ if('Node' in obj) {
34
+ return obj.Node;
35
+ }
36
+ return obj.Device;
37
+ }
38
+ return obj;
39
+ }
40
+
41
+
42
+ export type ConstructorOf<T> = T extends Factory<infer U> ? Constructor<U> : T extends Constructor<infer U> ? U : Constructor<T> ;
43
+
15
44
 
16
45
  export type StringKeys<T> = Extract<keyof T, string>;
17
46
 
@@ -1,207 +0,0 @@
1
- /* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT DIRECTLY. */
2
-
3
- import { Driver } from '../../Definitions/Global/Drivers.js';
4
- import { Family } from '../../Definitions/Global/Families.js';
5
- import { UnitOfMeasure } from '../../Definitions/Global/UOM.js';
6
- import { Insteon } from '../../Definitions/index.js';
7
- import type { ISY } from '../../ISY.js';
8
- import type { ISYNode } from '../../ISYNode.js';
9
- import type { DriverState } from '../../Model/DriverState.js';
10
- import type { NodeInfo } from '../../Model/NodeInfo.js';
11
- import { ISYDeviceNode } from '../ISYDeviceNode.js';
12
- import { NodeFactory } from '../NodeFactory.js';
13
- import { InsteonBaseDevice as Base } from './InsteonBaseDevice.js';
14
-
15
- export const nodeDefId = 'DimmerLampSwitch';
16
-
17
- type Commands = DimmerLampSwitch.Commands;
18
- type Drivers = DimmerLampSwitch.Drivers;
19
-
20
- export class DimmerLampSwitchNode extends Base<Drivers, Commands> implements DimmerLampSwitch.Interface {
21
- public override readonly commands = {
22
- DON: this.on,
23
- DOF: this.off,
24
- DFOF: this.fastOff,
25
- DFON: this.fastOn,
26
- BRT: this.brighten,
27
- DIM: this.dim,
28
- FDUP: this.fadeUp,
29
- FDDOWN: this.fadeDown,
30
- FDSTOP: this.fadeStop,
31
- QUERY: this.query,
32
- BEEP: this.beep,
33
- OL: this.updateOnLevel,
34
- RR: this.updateRampRate,
35
- BL: this.backlight,
36
- WDU: this.writeChanges
37
- };
38
- static override nodeDefId = 'DimmerLampSwitch';
39
- declare readonly nodeDefId: 'DimmerLampSwitch';
40
- constructor(isy: ISY, nodeInfo: NodeInfo) {
41
- super(isy, nodeInfo);
42
- this.drivers.ST = Driver.create('ST', this, nodeInfo.state['ST'], { uom: UnitOfMeasure.LevelFrom0To255, label: 'Status', name: 'status' });
43
- this.drivers.OL = Driver.create('OL', this, nodeInfo.state['OL'] as DriverState, { uom: UnitOfMeasure.Percent, label: 'On Level', name: 'onLevel' });
44
- this.drivers.RR = Driver.create('RR', this, nodeInfo.state['RR'] as DriverState, { uom: UnitOfMeasure.Index, label: 'Ramp Rate', name: 'rampRate' });
45
- this.drivers.ERR = Driver.create('ERR', this, nodeInfo.state['ERR'] as DriverState, { uom: UnitOfMeasure.Index, label: 'Responding', name: 'responding' });
46
- }
47
- async on(value?: number) {
48
- return this.sendCommand('DON', value);
49
- }
50
- async off() {
51
- return this.sendCommand('DOF');
52
- }
53
- async fastOff() {
54
- return this.sendCommand('DFOF');
55
- }
56
- async fastOn() {
57
- return this.sendCommand('DFON');
58
- }
59
- async brighten() {
60
- return this.sendCommand('BRT');
61
- }
62
- async dim() {
63
- return this.sendCommand('DIM');
64
- }
65
- async fadeUp() {
66
- return this.sendCommand('FDUP');
67
- }
68
- async fadeDown() {
69
- return this.sendCommand('FDDOWN');
70
- }
71
- async fadeStop() {
72
- return this.sendCommand('FDSTOP');
73
- }
74
- async query() {
75
- return this.sendCommand('QUERY');
76
- }
77
- async beep(value?: number) {
78
- return this.sendCommand('BEEP', { value: value });
79
- }
80
- async updateOnLevel(value: number) {
81
- return this.sendCommand('OL', { value: value });
82
- }
83
- async updateRampRate(value: number) {
84
- return this.sendCommand('RR', { value: value });
85
- }
86
- async backlight(value: number) {
87
- return this.sendCommand('BL', { value: value });
88
- }
89
- async writeChanges() {
90
- return this.sendCommand('WDU');
91
- }
92
- public get status(): number {
93
- return this.drivers.ST?.value;
94
- }
95
- public get onLevel(): number {
96
- return this.drivers.OL?.value;
97
- }
98
- public get rampRate(): number {
99
- return this.drivers.RR?.value;
100
- }
101
- public get responding(): Insteon.Error {
102
- return this.drivers.ERR?.value;
103
- }
104
- }
105
-
106
- NodeFactory.register(DimmerLampSwitchNode);
107
-
108
- export namespace DimmerLampSwitch {
109
- export interface Interface extends Omit<InstanceType<typeof DimmerLampSwitchNode>, keyof ISYDeviceNode<any, any, any, any>> {
110
- nodeDefId: 'DimmerLampSwitch';
111
- }
112
- export function is(node: ISYNode<any, any, any, any>): node is DimmerLampSwitchNode {
113
- return node.nodeDefId === nodeDefId;
114
- }
115
- export function create(isy: ISY, nodeInfo: NodeInfo) {
116
- return new DimmerLampSwitchNode(isy, nodeInfo);
117
- }
118
- export const Node = DimmerLampSwitchNode;
119
- export type Commands = {
120
- DON: ((value?: number) => Promise<boolean>) & {
121
- label: 'On';
122
- name: 'on';
123
- };
124
- DOF: (() => Promise<boolean>) & {
125
- label: 'Off';
126
- name: 'off';
127
- };
128
- DFOF: (() => Promise<boolean>) & {
129
- label: 'Fast Off';
130
- name: 'fastOff';
131
- };
132
- DFON: (() => Promise<boolean>) & {
133
- label: 'Fast On';
134
- name: 'fastOn';
135
- };
136
- BRT: (() => Promise<boolean>) & {
137
- label: 'Brighten';
138
- name: 'brighten';
139
- };
140
- DIM: (() => Promise<boolean>) & {
141
- label: 'Dim';
142
- name: 'dim';
143
- };
144
- FDUP: (() => Promise<boolean>) & {
145
- label: 'Fade Up';
146
- name: 'fadeUp';
147
- };
148
- FDDOWN: (() => Promise<boolean>) & {
149
- label: 'Fade Down';
150
- name: 'fadeDown';
151
- };
152
- FDSTOP: (() => Promise<boolean>) & {
153
- label: 'Fade Stop';
154
- name: 'fadeStop';
155
- };
156
- QUERY: (() => Promise<boolean>) & {
157
- label: 'Query';
158
- name: 'query';
159
- };
160
- BEEP: ((value?: number) => Promise<boolean>) & {
161
- label: 'Beep';
162
- name: 'beep';
163
- };
164
- OL: ((value: number) => Promise<boolean>) & {
165
- label: 'On Level';
166
- name: 'updateOnLevel';
167
- };
168
- RR: ((value: number) => Promise<boolean>) & {
169
- label: 'Ramp Rate';
170
- name: 'updateRampRate';
171
- };
172
- BL: ((value: number) => Promise<boolean>) & {
173
- label: 'Backlight';
174
- name: 'backlight';
175
- };
176
- WDU: (() => Promise<boolean>) & {
177
- label: 'Write Changes';
178
- name: 'writeChanges';
179
- };
180
- };
181
- export type Drivers = {
182
- ST: {
183
- uom: UnitOfMeasure.LevelFrom0To255;
184
- value: number;
185
- label: 'Status';
186
- name: 'status';
187
- };
188
- OL: {
189
- uom: UnitOfMeasure.Percent;
190
- value: number;
191
- label: 'On Level';
192
- name: 'onLevel';
193
- };
194
- RR: {
195
- uom: UnitOfMeasure.Index;
196
- value: number;
197
- label: 'Ramp Rate';
198
- name: 'rampRate';
199
- };
200
- ERR: {
201
- uom: UnitOfMeasure.Index;
202
- value: Insteon.Error;
203
- label: 'Responding';
204
- name: 'responding';
205
- };
206
- };
207
- }
@@ -1,11 +0,0 @@
1
- import type { NodeInfo } from '../../Model/NodeInfo.js';
2
- import type { ISY } from '../../ISY.js';
3
-
4
- import { InsteonRelayDevice } from './InsteonRelayDevice.js';
5
- import 'winston';
6
-
7
- export class InsteonRelaySwitchDevice extends InsteonRelayDevice {
8
- constructor (isy: ISY, deviceNode: NodeInfo ) {
9
- super(isy, deviceNode);
10
- }
11
- }
@@ -1,132 +0,0 @@
1
- /* THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT DIRECTLY. */
2
-
3
- import { Driver } from '../../Definitions/Global/Drivers.js';
4
- import { Command } from '../../Definitions/index.js';
5
- import { Family } from '../../Definitions/Global/Families.js';
6
- import { UnitOfMeasure } from '../../Definitions/Global/UOM.js';
7
- import { Insteon } from '../../Definitions/index.js';
8
- import type { ISY } from '../../ISY.js';
9
- import type { ISYNode } from '../../ISYNode.js';
10
- import type { DriverState } from '../../Model/DriverState.js';
11
- import type { NodeInfo } from '../../Model/NodeInfo.js';
12
- import { ISYDeviceNode } from '../ISYDeviceNode.js';
13
- import { NodeFactory } from '../NodeFactory.js';
14
- import { InsteonBaseDevice } from './InsteonBaseDevice.js';
15
-
16
- export const nodeDefId = 'RelayLampSwitch';
17
-
18
- type Commands = RelayLampSwitch.Commands;
19
- type Drivers = RelayLampSwitch.Drivers;
20
-
21
- export class RelayLampSwitchNode extends InsteonBaseDevice<Drivers, Commands> implements RelayLampSwitch.Interface {
22
- public override readonly commands = {
23
- DON: this.on,
24
- DOF: this.off,
25
- DFOF: this.fastOff,
26
- DFON: this.fastOn,
27
- QUERY: this.query,
28
- BEEP: this.beep,
29
- BL: this.backlight,
30
- WDU: this.writeChanges
31
- };
32
- static override nodeDefId = 'RelayLampSwitch';
33
- declare readonly nodeDefId: 'RelayLampSwitch';
34
- constructor(isy: ISY, nodeInfo: NodeInfo) {
35
- super(isy, nodeInfo);
36
- this.drivers.ST = Driver.create('ST', this, nodeInfo.state['ST'], { uom: UnitOfMeasure.Boolean, label: 'Status', name: 'status' });
37
- this.drivers.ERR = Driver.create('ERR', this, nodeInfo.state['ERR'], { uom: UnitOfMeasure.Index, label: 'Responding', name: 'responding' });
38
- }
39
- async on(value?: 0 | 100) {
40
- return this.sendCommand('DOF');
41
- }
42
- async off() {
43
- return this.sendCommand('DOF');
44
- }
45
- async fastOff() {
46
- return this.sendCommand('DFOF');
47
- }
48
- async fastOn() {
49
- return this.sendCommand('DFON');
50
- }
51
- async query() {
52
- return this.sendCommand('QUERY');
53
- }
54
- async beep(value?: number) {
55
- return this.sendCommand('BEEP', { value: value });
56
- }
57
- async backlight(value: number) {
58
- return this.sendCommand('BL', { value: value });
59
- }
60
- async writeChanges() {
61
- return this.sendCommand('WDU');
62
- }
63
- public get status(): boolean {
64
- return this.drivers.ST?.value;
65
- }
66
- public get responding(): Insteon.Error {
67
- return this.drivers.ERR?.value;
68
- }
69
- }
70
-
71
- NodeFactory.register(RelayLampSwitchNode);
72
-
73
- export namespace RelayLampSwitch {
74
- export interface Interface extends Omit<InstanceType<typeof RelayLampSwitchNode>, keyof ISYDeviceNode<any, any, any, any>> {
75
- nodeDefId: 'RelayLampSwitch';
76
- }
77
- export function is(node: ISYNode<any, any, any, any>): node is RelayLampSwitchNode {
78
- return node.nodeDefId === nodeDefId;
79
- }
80
- export function create(isy: ISY, nodeInfo: NodeInfo) {
81
- return new RelayLampSwitchNode(isy, nodeInfo);
82
- }
83
- export const Node = RelayLampSwitchNode;
84
- export type Commands = {
85
- DON: ((value?: 0 | 100) => Promise<boolean>) & {
86
- label: 'On';
87
- name: 'on';
88
- };
89
- DOF: (() => Promise<boolean>) & {
90
- label: 'Off';
91
- name: 'off';
92
- };
93
- DFOF: (() => Promise<boolean>) & {
94
- label: 'Fast Off';
95
- name: 'fastOff';
96
- };
97
- DFON: (() => Promise<boolean>) & {
98
- label: 'Fast On';
99
- name: 'fastOn';
100
- };
101
- QUERY: (() => Promise<boolean>) & {
102
- label: 'Query';
103
- name: 'query';
104
- };
105
- BEEP: ((value?: number) => Promise<boolean>) & {
106
- label: 'Beep';
107
- name: 'beep';
108
- };
109
- BL: ((value: number) => Promise<boolean>) & {
110
- label: 'Backlight';
111
- name: 'backlight';
112
- };
113
- WDU: (() => Promise<boolean>) & {
114
- label: 'Write Changes';
115
- name: 'writeChanges';
116
- };
117
- };
118
- export type Drivers = {
119
- ST: {
120
- uom: UnitOfMeasure.Boolean;
121
- value: boolean;
122
- label: 'Status';
123
- name: 'status';
124
- };
125
- ERR: {
126
- uom: UnitOfMeasure.Index;
127
- value: Insteon.Error;
128
- label: 'Responding';
129
- name: 'responding';
130
- };
131
- };
132
- }