@zwave-js/cc 14.3.10 → 15.0.0-beta.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 (461) hide show
  1. package/build/cjs/cc/AlarmSensorCC.d.ts +139 -57
  2. package/build/cjs/cc/AlarmSensorCC.js.map +2 -2
  3. package/build/cjs/cc/AssociationCC.d.ts +178 -43
  4. package/build/cjs/cc/AssociationCC.js +0 -4
  5. package/build/cjs/cc/AssociationCC.js.map +2 -2
  6. package/build/cjs/cc/AssociationGroupInfoCC.d.ts +138 -38
  7. package/build/cjs/cc/AssociationGroupInfoCC.js.map +2 -2
  8. package/build/cjs/cc/BarrierOperatorCC.d.ts +275 -73
  9. package/build/cjs/cc/BarrierOperatorCC.js.map +2 -2
  10. package/build/cjs/cc/BasicCC.d.ts +316 -71
  11. package/build/cjs/cc/BasicCC.js.map +2 -2
  12. package/build/cjs/cc/BatteryCC.d.ts +759 -164
  13. package/build/cjs/cc/BatteryCC.js.map +2 -2
  14. package/build/cjs/cc/BinarySensorCC.d.ts +91 -26
  15. package/build/cjs/cc/BinarySensorCC.js.map +2 -2
  16. package/build/cjs/cc/BinarySwitchCC.d.ts +190 -38
  17. package/build/cjs/cc/BinarySwitchCC.js.map +2 -2
  18. package/build/cjs/cc/CRC16CC.d.ts +4 -8
  19. package/build/cjs/cc/CRC16CC.js +4 -27
  20. package/build/cjs/cc/CRC16CC.js.map +2 -2
  21. package/build/cjs/cc/CentralSceneCC.d.ts +272 -53
  22. package/build/cjs/cc/CentralSceneCC.js.map +2 -2
  23. package/build/cjs/cc/ClimateControlScheduleCC.d.ts +150 -37
  24. package/build/cjs/cc/ClimateControlScheduleCC.js.map +2 -2
  25. package/build/cjs/cc/ClockCC.d.ts +3 -3
  26. package/build/cjs/cc/ClockCC.js.map +2 -2
  27. package/build/cjs/cc/ColorSwitchCC.d.ts +423 -96
  28. package/build/cjs/cc/ColorSwitchCC.js.map +2 -2
  29. package/build/cjs/cc/ConfigurationCC._validateArgs.js +1 -1
  30. package/build/cjs/cc/ConfigurationCC._validateArgs.js.map +1 -1
  31. package/build/cjs/cc/ConfigurationCC.d.ts +101 -37
  32. package/build/cjs/cc/ConfigurationCC.js +0 -8
  33. package/build/cjs/cc/ConfigurationCC.js.map +2 -2
  34. package/build/cjs/cc/DeviceResetLocallyCC.d.ts +1 -1
  35. package/build/cjs/cc/DeviceResetLocallyCC.js.map +2 -2
  36. package/build/cjs/cc/DoorLockCC._validateArgs.js +1 -1
  37. package/build/cjs/cc/DoorLockCC._validateArgs.js.map +1 -1
  38. package/build/cjs/cc/DoorLockCC.d.ts +1731 -419
  39. package/build/cjs/cc/DoorLockCC.js.map +2 -2
  40. package/build/cjs/cc/DoorLockLoggingCC.d.ts +64 -12
  41. package/build/cjs/cc/DoorLockLoggingCC.js.map +2 -2
  42. package/build/cjs/cc/EnergyProductionCC.d.ts +29 -14
  43. package/build/cjs/cc/EnergyProductionCC.js.map +2 -2
  44. package/build/cjs/cc/EntryControlCC.d.ts +308 -57
  45. package/build/cjs/cc/EntryControlCC.js.map +2 -2
  46. package/build/cjs/cc/FirmwareUpdateMetaDataCC._validateArgs.d.ts +2 -0
  47. package/build/cjs/cc/FirmwareUpdateMetaDataCC._validateArgs.js +26 -0
  48. package/build/cjs/cc/FirmwareUpdateMetaDataCC._validateArgs.js.map +1 -1
  49. package/build/cjs/cc/FirmwareUpdateMetaDataCC.d.ts +389 -64
  50. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js +154 -8
  51. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js.map +2 -2
  52. package/build/cjs/cc/HumidityControlModeCC.d.ts +125 -27
  53. package/build/cjs/cc/HumidityControlModeCC.js.map +2 -2
  54. package/build/cjs/cc/HumidityControlOperatingStateCC.d.ts +64 -18
  55. package/build/cjs/cc/HumidityControlOperatingStateCC.js.map +2 -2
  56. package/build/cjs/cc/HumidityControlSetpointCC.d.ts +116 -39
  57. package/build/cjs/cc/HumidityControlSetpointCC.js.map +2 -2
  58. package/build/cjs/cc/InclusionControllerCC.d.ts +4 -4
  59. package/build/cjs/cc/InclusionControllerCC.js.map +2 -2
  60. package/build/cjs/cc/IndicatorCC.d.ts +325 -83
  61. package/build/cjs/cc/IndicatorCC.js.map +2 -2
  62. package/build/cjs/cc/IrrigationCC.d.ts +2170 -683
  63. package/build/cjs/cc/IrrigationCC.js.map +2 -2
  64. package/build/cjs/cc/LanguageCC.d.ts +128 -26
  65. package/build/cjs/cc/LanguageCC.js.map +2 -2
  66. package/build/cjs/cc/LockCC.d.ts +64 -14
  67. package/build/cjs/cc/LockCC.js.map +2 -2
  68. package/build/cjs/cc/ManufacturerProprietaryCC.d.ts +2 -2
  69. package/build/cjs/cc/ManufacturerProprietaryCC.js.map +2 -2
  70. package/build/cjs/cc/ManufacturerSpecificCC.d.ts +219 -57
  71. package/build/cjs/cc/ManufacturerSpecificCC.js.map +2 -2
  72. package/build/cjs/cc/MeterCC.d.ts +364 -89
  73. package/build/cjs/cc/MeterCC.js.map +2 -2
  74. package/build/cjs/cc/MultiChannelAssociationCC.d.ts +138 -40
  75. package/build/cjs/cc/MultiChannelAssociationCC.js +0 -5
  76. package/build/cjs/cc/MultiChannelAssociationCC.js.map +2 -2
  77. package/build/cjs/cc/MultiChannelCC.d.ts +469 -99
  78. package/build/cjs/cc/MultiChannelCC.js +8 -72
  79. package/build/cjs/cc/MultiChannelCC.js.map +2 -2
  80. package/build/cjs/cc/MultiCommandCC.d.ts +4 -8
  81. package/build/cjs/cc/MultiCommandCC.js +4 -37
  82. package/build/cjs/cc/MultiCommandCC.js.map +2 -2
  83. package/build/cjs/cc/MultilevelSensorCC.d.ts +118 -33
  84. package/build/cjs/cc/MultilevelSensorCC.js.map +2 -2
  85. package/build/cjs/cc/MultilevelSwitchCC.d.ts +490 -125
  86. package/build/cjs/cc/MultilevelSwitchCC.js.map +2 -2
  87. package/build/cjs/cc/NodeNamingCC.d.ts +128 -26
  88. package/build/cjs/cc/NodeNamingCC.js.map +2 -2
  89. package/build/cjs/cc/NotificationCC.d.ts +603 -161
  90. package/build/cjs/cc/NotificationCC.js +12 -1
  91. package/build/cjs/cc/NotificationCC.js.map +2 -2
  92. package/build/cjs/cc/PowerlevelCC.d.ts +6 -6
  93. package/build/cjs/cc/PowerlevelCC.js.map +2 -2
  94. package/build/cjs/cc/ProtectionCC.d.ts +496 -94
  95. package/build/cjs/cc/ProtectionCC.js.map +2 -2
  96. package/build/cjs/cc/SceneActivationCC.d.ts +127 -28
  97. package/build/cjs/cc/SceneActivationCC.js.map +2 -2
  98. package/build/cjs/cc/SceneActuatorConfigurationCC.d.ts +52 -25
  99. package/build/cjs/cc/SceneActuatorConfigurationCC.js.map +2 -2
  100. package/build/cjs/cc/SceneControllerConfigurationCC.d.ts +53 -25
  101. package/build/cjs/cc/SceneControllerConfigurationCC.js.map +2 -2
  102. package/build/cjs/cc/ScheduleEntryLockCC.d.ts +268 -64
  103. package/build/cjs/cc/ScheduleEntryLockCC.js.map +2 -2
  104. package/build/cjs/cc/Security2CC.d.ts +15 -21
  105. package/build/cjs/cc/Security2CC.js +32 -347
  106. package/build/cjs/cc/Security2CC.js.map +3 -3
  107. package/build/cjs/cc/SecurityCC.d.ts +12 -19
  108. package/build/cjs/cc/SecurityCC.js +12 -106
  109. package/build/cjs/cc/SecurityCC.js.map +2 -2
  110. package/build/cjs/cc/SoundSwitchCC.d.ts +253 -64
  111. package/build/cjs/cc/SoundSwitchCC.js.map +2 -2
  112. package/build/cjs/cc/SupervisionCC.d.ts +28 -16
  113. package/build/cjs/cc/SupervisionCC.js +4 -29
  114. package/build/cjs/cc/SupervisionCC.js.map +2 -2
  115. package/build/cjs/cc/ThermostatFanModeCC.d.ts +187 -38
  116. package/build/cjs/cc/ThermostatFanModeCC.js.map +2 -2
  117. package/build/cjs/cc/ThermostatFanStateCC.d.ts +64 -18
  118. package/build/cjs/cc/ThermostatFanStateCC.js.map +2 -2
  119. package/build/cjs/cc/ThermostatModeCC.d.ts +189 -40
  120. package/build/cjs/cc/ThermostatModeCC.js.map +2 -2
  121. package/build/cjs/cc/ThermostatOperatingStateCC.d.ts +65 -19
  122. package/build/cjs/cc/ThermostatOperatingStateCC.js.map +2 -2
  123. package/build/cjs/cc/ThermostatSetbackCC.d.ts +4 -4
  124. package/build/cjs/cc/ThermostatSetbackCC.js.map +2 -2
  125. package/build/cjs/cc/ThermostatSetpointCC.d.ts +116 -36
  126. package/build/cjs/cc/ThermostatSetpointCC.js.map +2 -2
  127. package/build/cjs/cc/TimeCC.d.ts +6 -6
  128. package/build/cjs/cc/TimeCC.js.map +2 -2
  129. package/build/cjs/cc/TimeParametersCC.d.ts +63 -12
  130. package/build/cjs/cc/TimeParametersCC.js.map +2 -2
  131. package/build/cjs/cc/TransportServiceCC.d.ts +7 -12
  132. package/build/cjs/cc/TransportServiceCC.js +3 -20
  133. package/build/cjs/cc/TransportServiceCC.js.map +2 -2
  134. package/build/cjs/cc/UserCodeCC._validateArgs.js +1 -1
  135. package/build/cjs/cc/UserCodeCC._validateArgs.js.map +1 -1
  136. package/build/cjs/cc/UserCodeCC.d.ts +931 -176
  137. package/build/cjs/cc/UserCodeCC.js.map +2 -2
  138. package/build/cjs/cc/VersionCC.d.ts +897 -185
  139. package/build/cjs/cc/VersionCC.js.map +2 -2
  140. package/build/cjs/cc/WakeUpCC.d.ts +190 -38
  141. package/build/cjs/cc/WakeUpCC.js.map +2 -2
  142. package/build/cjs/cc/WindowCoveringCC.d.ts +193 -103
  143. package/build/cjs/cc/WindowCoveringCC.js.map +2 -2
  144. package/build/cjs/cc/ZWavePlusCC.d.ts +311 -51
  145. package/build/cjs/cc/ZWavePlusCC.js.map +2 -2
  146. package/build/cjs/cc/ZWaveProtocolCC.d.ts +28 -28
  147. package/build/cjs/cc/ZWaveProtocolCC.js.map +2 -2
  148. package/build/cjs/cc/manufacturerProprietary/FibaroCC.d.ts +4 -4
  149. package/build/cjs/cc/manufacturerProprietary/FibaroCC.js.map +2 -2
  150. package/build/cjs/index.d.ts +1 -0
  151. package/build/cjs/index.js.map +1 -1
  152. package/build/cjs/index_browser.d.ts +9 -0
  153. package/build/cjs/index_browser.js +41 -1
  154. package/build/cjs/index_browser.js.map +2 -2
  155. package/build/cjs/lib/API.d.ts +7 -5
  156. package/build/cjs/lib/API.js +1 -1
  157. package/build/cjs/lib/API.js.map +2 -2
  158. package/build/cjs/lib/CommandClass.d.ts +10 -21
  159. package/build/cjs/lib/CommandClass.js +51 -106
  160. package/build/cjs/lib/CommandClass.js.map +3 -3
  161. package/build/cjs/lib/CommandClassDecorators.d.ts +1 -1
  162. package/build/cjs/lib/CommandClassDecorators.js +3 -3
  163. package/build/cjs/lib/CommandClassDecorators.js.map +2 -2
  164. package/build/cjs/lib/Values.d.ts +2 -2
  165. package/build/cjs/lib/Values.js.map +2 -2
  166. package/build/cjs/lib/traits.d.ts +94 -0
  167. package/build/cjs/lib/traits.js +17 -0
  168. package/build/cjs/lib/traits.js.map +7 -0
  169. package/build/cjs/lib/utils.d.ts +2 -2
  170. package/build/cjs/lib/utils.js.map +2 -2
  171. package/build/esm/cc/AlarmSensorCC.d.ts +139 -57
  172. package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
  173. package/build/esm/cc/AlarmSensorCC.js +0 -1
  174. package/build/esm/cc/AlarmSensorCC.js.map +1 -1
  175. package/build/esm/cc/AssociationCC.d.ts +178 -43
  176. package/build/esm/cc/AssociationCC.d.ts.map +1 -1
  177. package/build/esm/cc/AssociationCC.js +0 -13
  178. package/build/esm/cc/AssociationCC.js.map +1 -1
  179. package/build/esm/cc/AssociationGroupInfoCC.d.ts +138 -38
  180. package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
  181. package/build/esm/cc/AssociationGroupInfoCC.js +0 -6
  182. package/build/esm/cc/AssociationGroupInfoCC.js.map +1 -1
  183. package/build/esm/cc/BarrierOperatorCC.d.ts +275 -73
  184. package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
  185. package/build/esm/cc/BarrierOperatorCC.js +0 -3
  186. package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
  187. package/build/esm/cc/BasicCC.d.ts +316 -71
  188. package/build/esm/cc/BasicCC.d.ts.map +1 -1
  189. package/build/esm/cc/BasicCC.js +0 -2
  190. package/build/esm/cc/BasicCC.js.map +1 -1
  191. package/build/esm/cc/BatteryCC.d.ts +759 -164
  192. package/build/esm/cc/BatteryCC.d.ts.map +1 -1
  193. package/build/esm/cc/BatteryCC.js +1 -2
  194. package/build/esm/cc/BatteryCC.js.map +1 -1
  195. package/build/esm/cc/BinarySensorCC.d.ts +91 -26
  196. package/build/esm/cc/BinarySensorCC.d.ts.map +1 -1
  197. package/build/esm/cc/BinarySensorCC.js +0 -3
  198. package/build/esm/cc/BinarySensorCC.js.map +1 -1
  199. package/build/esm/cc/BinarySwitchCC.d.ts +190 -38
  200. package/build/esm/cc/BinarySwitchCC.d.ts.map +1 -1
  201. package/build/esm/cc/BinarySwitchCC.js +0 -2
  202. package/build/esm/cc/BinarySwitchCC.js.map +1 -1
  203. package/build/esm/cc/CRC16CC.d.ts +4 -8
  204. package/build/esm/cc/CRC16CC.d.ts.map +1 -1
  205. package/build/esm/cc/CRC16CC.js +4 -34
  206. package/build/esm/cc/CRC16CC.js.map +1 -1
  207. package/build/esm/cc/CentralSceneCC.d.ts +272 -53
  208. package/build/esm/cc/CentralSceneCC.d.ts.map +1 -1
  209. package/build/esm/cc/CentralSceneCC.js +0 -1
  210. package/build/esm/cc/CentralSceneCC.js.map +1 -1
  211. package/build/esm/cc/ClimateControlScheduleCC.d.ts +150 -37
  212. package/build/esm/cc/ClimateControlScheduleCC.d.ts.map +1 -1
  213. package/build/esm/cc/ClimateControlScheduleCC.js +0 -3
  214. package/build/esm/cc/ClimateControlScheduleCC.js.map +1 -1
  215. package/build/esm/cc/ClockCC.d.ts +3 -3
  216. package/build/esm/cc/ClockCC.d.ts.map +1 -1
  217. package/build/esm/cc/ClockCC.js +0 -1
  218. package/build/esm/cc/ClockCC.js.map +1 -1
  219. package/build/esm/cc/ColorSwitchCC.d.ts +423 -96
  220. package/build/esm/cc/ColorSwitchCC.d.ts.map +1 -1
  221. package/build/esm/cc/ColorSwitchCC.js +0 -6
  222. package/build/esm/cc/ColorSwitchCC.js.map +1 -1
  223. package/build/esm/cc/ConfigurationCC._validateArgs.js +1 -1
  224. package/build/esm/cc/ConfigurationCC._validateArgs.js.map +1 -1
  225. package/build/esm/cc/ConfigurationCC.d.ts +101 -37
  226. package/build/esm/cc/ConfigurationCC.d.ts.map +1 -1
  227. package/build/esm/cc/ConfigurationCC.js +0 -25
  228. package/build/esm/cc/ConfigurationCC.js.map +1 -1
  229. package/build/esm/cc/DeviceResetLocallyCC.d.ts +1 -1
  230. package/build/esm/cc/DeviceResetLocallyCC.d.ts.map +1 -1
  231. package/build/esm/cc/DeviceResetLocallyCC.js.map +1 -1
  232. package/build/esm/cc/DoorLockCC._validateArgs.js +1 -1
  233. package/build/esm/cc/DoorLockCC._validateArgs.js.map +1 -1
  234. package/build/esm/cc/DoorLockCC.d.ts +1731 -419
  235. package/build/esm/cc/DoorLockCC.d.ts.map +1 -1
  236. package/build/esm/cc/DoorLockCC.js +0 -2
  237. package/build/esm/cc/DoorLockCC.js.map +1 -1
  238. package/build/esm/cc/DoorLockLoggingCC.d.ts +64 -12
  239. package/build/esm/cc/DoorLockLoggingCC.d.ts.map +1 -1
  240. package/build/esm/cc/DoorLockLoggingCC.js +0 -1
  241. package/build/esm/cc/DoorLockLoggingCC.js.map +1 -1
  242. package/build/esm/cc/EnergyProductionCC.d.ts +29 -14
  243. package/build/esm/cc/EnergyProductionCC.d.ts.map +1 -1
  244. package/build/esm/cc/EnergyProductionCC.js +0 -2
  245. package/build/esm/cc/EnergyProductionCC.js.map +1 -1
  246. package/build/esm/cc/EntryControlCC.d.ts +308 -57
  247. package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
  248. package/build/esm/cc/EntryControlCC.js +0 -1
  249. package/build/esm/cc/EntryControlCC.js.map +1 -1
  250. package/build/esm/cc/FirmwareUpdateMetaDataCC._validateArgs.d.ts +2 -0
  251. package/build/esm/cc/FirmwareUpdateMetaDataCC._validateArgs.d.ts.map +1 -1
  252. package/build/esm/cc/FirmwareUpdateMetaDataCC._validateArgs.js +20 -0
  253. package/build/esm/cc/FirmwareUpdateMetaDataCC._validateArgs.js.map +1 -1
  254. package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts +389 -64
  255. package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts.map +1 -1
  256. package/build/esm/cc/FirmwareUpdateMetaDataCC.js +158 -30
  257. package/build/esm/cc/FirmwareUpdateMetaDataCC.js.map +1 -1
  258. package/build/esm/cc/HumidityControlModeCC.d.ts +125 -27
  259. package/build/esm/cc/HumidityControlModeCC.d.ts.map +1 -1
  260. package/build/esm/cc/HumidityControlModeCC.js +0 -1
  261. package/build/esm/cc/HumidityControlModeCC.js.map +1 -1
  262. package/build/esm/cc/HumidityControlOperatingStateCC.d.ts +64 -18
  263. package/build/esm/cc/HumidityControlOperatingStateCC.d.ts.map +1 -1
  264. package/build/esm/cc/HumidityControlOperatingStateCC.js.map +1 -1
  265. package/build/esm/cc/HumidityControlSetpointCC.d.ts +116 -39
  266. package/build/esm/cc/HumidityControlSetpointCC.d.ts.map +1 -1
  267. package/build/esm/cc/HumidityControlSetpointCC.js +0 -4
  268. package/build/esm/cc/HumidityControlSetpointCC.js.map +1 -1
  269. package/build/esm/cc/InclusionControllerCC.d.ts +4 -4
  270. package/build/esm/cc/InclusionControllerCC.d.ts.map +1 -1
  271. package/build/esm/cc/InclusionControllerCC.js +0 -2
  272. package/build/esm/cc/InclusionControllerCC.js.map +1 -1
  273. package/build/esm/cc/IndicatorCC.d.ts +325 -83
  274. package/build/esm/cc/IndicatorCC.d.ts.map +1 -1
  275. package/build/esm/cc/IndicatorCC.js +0 -7
  276. package/build/esm/cc/IndicatorCC.js.map +1 -1
  277. package/build/esm/cc/IrrigationCC.d.ts +2170 -683
  278. package/build/esm/cc/IrrigationCC.d.ts.map +1 -1
  279. package/build/esm/cc/IrrigationCC.js +0 -9
  280. package/build/esm/cc/IrrigationCC.js.map +1 -1
  281. package/build/esm/cc/LanguageCC.d.ts +128 -26
  282. package/build/esm/cc/LanguageCC.d.ts.map +1 -1
  283. package/build/esm/cc/LanguageCC.js +0 -1
  284. package/build/esm/cc/LanguageCC.js.map +1 -1
  285. package/build/esm/cc/LockCC.d.ts +64 -14
  286. package/build/esm/cc/LockCC.d.ts.map +1 -1
  287. package/build/esm/cc/LockCC.js +0 -1
  288. package/build/esm/cc/LockCC.js.map +1 -1
  289. package/build/esm/cc/ManufacturerProprietaryCC.d.ts +2 -2
  290. package/build/esm/cc/ManufacturerProprietaryCC.d.ts.map +1 -1
  291. package/build/esm/cc/ManufacturerProprietaryCC.js +0 -1
  292. package/build/esm/cc/ManufacturerProprietaryCC.js.map +1 -1
  293. package/build/esm/cc/ManufacturerSpecificCC.d.ts +219 -57
  294. package/build/esm/cc/ManufacturerSpecificCC.d.ts.map +1 -1
  295. package/build/esm/cc/ManufacturerSpecificCC.js +0 -2
  296. package/build/esm/cc/ManufacturerSpecificCC.js.map +1 -1
  297. package/build/esm/cc/MeterCC.d.ts +364 -89
  298. package/build/esm/cc/MeterCC.d.ts.map +1 -1
  299. package/build/esm/cc/MeterCC.js +0 -4
  300. package/build/esm/cc/MeterCC.js.map +1 -1
  301. package/build/esm/cc/MultiChannelAssociationCC.d.ts +138 -40
  302. package/build/esm/cc/MultiChannelAssociationCC.d.ts.map +1 -1
  303. package/build/esm/cc/MultiChannelAssociationCC.js +0 -16
  304. package/build/esm/cc/MultiChannelAssociationCC.js.map +1 -1
  305. package/build/esm/cc/MultiChannelCC.d.ts +469 -99
  306. package/build/esm/cc/MultiChannelCC.d.ts.map +1 -1
  307. package/build/esm/cc/MultiChannelCC.js +8 -101
  308. package/build/esm/cc/MultiChannelCC.js.map +1 -1
  309. package/build/esm/cc/MultiCommandCC.d.ts +4 -8
  310. package/build/esm/cc/MultiCommandCC.d.ts.map +1 -1
  311. package/build/esm/cc/MultiCommandCC.js +4 -38
  312. package/build/esm/cc/MultiCommandCC.js.map +1 -1
  313. package/build/esm/cc/MultilevelSensorCC.d.ts +118 -33
  314. package/build/esm/cc/MultilevelSensorCC.d.ts.map +1 -1
  315. package/build/esm/cc/MultilevelSensorCC.js +0 -5
  316. package/build/esm/cc/MultilevelSensorCC.js.map +1 -1
  317. package/build/esm/cc/MultilevelSwitchCC.d.ts +490 -125
  318. package/build/esm/cc/MultilevelSwitchCC.d.ts.map +1 -1
  319. package/build/esm/cc/MultilevelSwitchCC.js +0 -4
  320. package/build/esm/cc/MultilevelSwitchCC.js.map +1 -1
  321. package/build/esm/cc/NodeNamingCC.d.ts +128 -26
  322. package/build/esm/cc/NodeNamingCC.d.ts.map +1 -1
  323. package/build/esm/cc/NodeNamingCC.js +0 -2
  324. package/build/esm/cc/NodeNamingCC.js.map +1 -1
  325. package/build/esm/cc/NotificationCC.d.ts +603 -161
  326. package/build/esm/cc/NotificationCC.d.ts.map +1 -1
  327. package/build/esm/cc/NotificationCC.js +18 -12
  328. package/build/esm/cc/NotificationCC.js.map +1 -1
  329. package/build/esm/cc/PowerlevelCC.d.ts +6 -6
  330. package/build/esm/cc/PowerlevelCC.d.ts.map +1 -1
  331. package/build/esm/cc/PowerlevelCC.js +0 -4
  332. package/build/esm/cc/PowerlevelCC.js.map +1 -1
  333. package/build/esm/cc/ProtectionCC.d.ts +496 -94
  334. package/build/esm/cc/ProtectionCC.d.ts.map +1 -1
  335. package/build/esm/cc/ProtectionCC.js +0 -3
  336. package/build/esm/cc/ProtectionCC.js.map +1 -1
  337. package/build/esm/cc/SceneActivationCC.d.ts +127 -28
  338. package/build/esm/cc/SceneActivationCC.d.ts.map +1 -1
  339. package/build/esm/cc/SceneActivationCC.js +0 -1
  340. package/build/esm/cc/SceneActivationCC.js.map +1 -1
  341. package/build/esm/cc/SceneActuatorConfigurationCC.d.ts +52 -25
  342. package/build/esm/cc/SceneActuatorConfigurationCC.d.ts.map +1 -1
  343. package/build/esm/cc/SceneActuatorConfigurationCC.js +0 -2
  344. package/build/esm/cc/SceneActuatorConfigurationCC.js.map +1 -1
  345. package/build/esm/cc/SceneControllerConfigurationCC.d.ts +53 -25
  346. package/build/esm/cc/SceneControllerConfigurationCC.d.ts.map +1 -1
  347. package/build/esm/cc/SceneControllerConfigurationCC.js +0 -2
  348. package/build/esm/cc/SceneControllerConfigurationCC.js.map +1 -1
  349. package/build/esm/cc/ScheduleEntryLockCC.d.ts +268 -64
  350. package/build/esm/cc/ScheduleEntryLockCC.d.ts.map +1 -1
  351. package/build/esm/cc/ScheduleEntryLockCC.js +0 -14
  352. package/build/esm/cc/ScheduleEntryLockCC.js.map +1 -1
  353. package/build/esm/cc/Security2CC.d.ts +15 -21
  354. package/build/esm/cc/Security2CC.d.ts.map +1 -1
  355. package/build/esm/cc/Security2CC.js +27 -475
  356. package/build/esm/cc/Security2CC.js.map +1 -1
  357. package/build/esm/cc/SecurityCC.d.ts +12 -19
  358. package/build/esm/cc/SecurityCC.d.ts.map +1 -1
  359. package/build/esm/cc/SecurityCC.js +13 -138
  360. package/build/esm/cc/SecurityCC.js.map +1 -1
  361. package/build/esm/cc/SoundSwitchCC.d.ts +253 -64
  362. package/build/esm/cc/SoundSwitchCC.d.ts.map +1 -1
  363. package/build/esm/cc/SoundSwitchCC.js +0 -7
  364. package/build/esm/cc/SoundSwitchCC.js.map +1 -1
  365. package/build/esm/cc/SupervisionCC.d.ts +28 -16
  366. package/build/esm/cc/SupervisionCC.d.ts.map +1 -1
  367. package/build/esm/cc/SupervisionCC.js +4 -34
  368. package/build/esm/cc/SupervisionCC.js.map +1 -1
  369. package/build/esm/cc/ThermostatFanModeCC.d.ts +187 -38
  370. package/build/esm/cc/ThermostatFanModeCC.d.ts.map +1 -1
  371. package/build/esm/cc/ThermostatFanModeCC.js +0 -1
  372. package/build/esm/cc/ThermostatFanModeCC.js.map +1 -1
  373. package/build/esm/cc/ThermostatFanStateCC.d.ts +64 -18
  374. package/build/esm/cc/ThermostatFanStateCC.d.ts.map +1 -1
  375. package/build/esm/cc/ThermostatFanStateCC.js.map +1 -1
  376. package/build/esm/cc/ThermostatModeCC.d.ts +189 -40
  377. package/build/esm/cc/ThermostatModeCC.d.ts.map +1 -1
  378. package/build/esm/cc/ThermostatModeCC.js +0 -3
  379. package/build/esm/cc/ThermostatModeCC.js.map +1 -1
  380. package/build/esm/cc/ThermostatOperatingStateCC.d.ts +65 -19
  381. package/build/esm/cc/ThermostatOperatingStateCC.d.ts.map +1 -1
  382. package/build/esm/cc/ThermostatOperatingStateCC.js.map +1 -1
  383. package/build/esm/cc/ThermostatSetbackCC.d.ts +4 -4
  384. package/build/esm/cc/ThermostatSetbackCC.d.ts.map +1 -1
  385. package/build/esm/cc/ThermostatSetbackCC.js +0 -2
  386. package/build/esm/cc/ThermostatSetbackCC.js.map +1 -1
  387. package/build/esm/cc/ThermostatSetpointCC.d.ts +116 -36
  388. package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
  389. package/build/esm/cc/ThermostatSetpointCC.js +0 -6
  390. package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
  391. package/build/esm/cc/TimeCC.d.ts +6 -6
  392. package/build/esm/cc/TimeCC.d.ts.map +1 -1
  393. package/build/esm/cc/TimeCC.js +0 -4
  394. package/build/esm/cc/TimeCC.js.map +1 -1
  395. package/build/esm/cc/TimeParametersCC.d.ts +63 -12
  396. package/build/esm/cc/TimeParametersCC.d.ts.map +1 -1
  397. package/build/esm/cc/TimeParametersCC.js +0 -1
  398. package/build/esm/cc/TimeParametersCC.js.map +1 -1
  399. package/build/esm/cc/TransportServiceCC.d.ts +7 -12
  400. package/build/esm/cc/TransportServiceCC.d.ts.map +1 -1
  401. package/build/esm/cc/TransportServiceCC.js +5 -38
  402. package/build/esm/cc/TransportServiceCC.js.map +1 -1
  403. package/build/esm/cc/UserCodeCC._validateArgs.js +1 -1
  404. package/build/esm/cc/UserCodeCC._validateArgs.js.map +1 -1
  405. package/build/esm/cc/UserCodeCC.d.ts +931 -176
  406. package/build/esm/cc/UserCodeCC.d.ts.map +1 -1
  407. package/build/esm/cc/UserCodeCC.js +0 -12
  408. package/build/esm/cc/UserCodeCC.js.map +1 -1
  409. package/build/esm/cc/VersionCC.d.ts +897 -185
  410. package/build/esm/cc/VersionCC.d.ts.map +1 -1
  411. package/build/esm/cc/VersionCC.js +0 -4
  412. package/build/esm/cc/VersionCC.js.map +1 -1
  413. package/build/esm/cc/WakeUpCC.d.ts +190 -38
  414. package/build/esm/cc/WakeUpCC.d.ts.map +1 -1
  415. package/build/esm/cc/WakeUpCC.js +0 -1
  416. package/build/esm/cc/WakeUpCC.js.map +1 -1
  417. package/build/esm/cc/WindowCoveringCC.d.ts +193 -103
  418. package/build/esm/cc/WindowCoveringCC.d.ts.map +1 -1
  419. package/build/esm/cc/WindowCoveringCC.js +0 -5
  420. package/build/esm/cc/WindowCoveringCC.js.map +1 -1
  421. package/build/esm/cc/ZWavePlusCC.d.ts +311 -51
  422. package/build/esm/cc/ZWavePlusCC.d.ts.map +1 -1
  423. package/build/esm/cc/ZWavePlusCC.js +0 -1
  424. package/build/esm/cc/ZWavePlusCC.js.map +1 -1
  425. package/build/esm/cc/ZWaveProtocolCC.d.ts +28 -28
  426. package/build/esm/cc/ZWaveProtocolCC.d.ts.map +1 -1
  427. package/build/esm/cc/ZWaveProtocolCC.js +0 -27
  428. package/build/esm/cc/ZWaveProtocolCC.js.map +1 -1
  429. package/build/esm/cc/manufacturerProprietary/FibaroCC.d.ts +4 -4
  430. package/build/esm/cc/manufacturerProprietary/FibaroCC.d.ts.map +1 -1
  431. package/build/esm/cc/manufacturerProprietary/FibaroCC.js +0 -3
  432. package/build/esm/cc/manufacturerProprietary/FibaroCC.js.map +1 -1
  433. package/build/esm/index.d.ts +1 -0
  434. package/build/esm/index.d.ts.map +1 -1
  435. package/build/esm/index_browser.d.ts +9 -0
  436. package/build/esm/index_browser.d.ts.map +1 -1
  437. package/build/esm/index_browser.js +8 -1
  438. package/build/esm/index_browser.js.map +1 -1
  439. package/build/esm/lib/API.d.ts +7 -5
  440. package/build/esm/lib/API.d.ts.map +1 -1
  441. package/build/esm/lib/API.js +1 -1
  442. package/build/esm/lib/API.js.map +1 -1
  443. package/build/esm/lib/CommandClass.d.ts +10 -21
  444. package/build/esm/lib/CommandClass.d.ts.map +1 -1
  445. package/build/esm/lib/CommandClass.js +8 -101
  446. package/build/esm/lib/CommandClass.js.map +1 -1
  447. package/build/esm/lib/CommandClassDecorators.d.ts +1 -1
  448. package/build/esm/lib/CommandClassDecorators.d.ts.map +1 -1
  449. package/build/esm/lib/CommandClassDecorators.js +1 -1
  450. package/build/esm/lib/CommandClassDecorators.js.map +1 -1
  451. package/build/esm/lib/Values.d.ts +2 -2
  452. package/build/esm/lib/Values.d.ts.map +1 -1
  453. package/build/esm/lib/Values.js.map +1 -1
  454. package/build/esm/lib/traits.d.ts +94 -0
  455. package/build/esm/lib/traits.d.ts.map +1 -0
  456. package/build/esm/lib/traits.js +2 -0
  457. package/build/esm/lib/traits.js.map +1 -0
  458. package/build/esm/lib/utils.d.ts +2 -2
  459. package/build/esm/lib/utils.d.ts.map +1 -1
  460. package/build/esm/lib/utils.js.map +1 -1
  461. package/package.json +13 -13
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cc/SceneActuatorConfigurationCC.ts"],
4
- "sourcesContent": ["import {\n\tCommandClasses,\n\tDuration,\n\ttype MaybeNotKnown,\n\ttype MessageOrCCLogEntry,\n\ttype MessageRecord,\n\ttype SupervisionResult,\n\tValueMetadata,\n\ttype WithAddress,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tgetCCName,\n\tvalidatePayload,\n} from \"@zwave-js/core/safe\";\nimport type {\n\tCCEncodingContext,\n\tCCParsingContext,\n\tGetValueDB,\n} from \"@zwave-js/host/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport { pick } from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport {\n\tCCAPI,\n\tPOLL_VALUE,\n\ttype PollValueImplementation,\n\tSET_VALUE,\n\ttype SetValueImplementation,\n\tthrowMissingPropertyKey,\n\tthrowUnsupportedProperty,\n\tthrowUnsupportedPropertyKey,\n\tthrowWrongValueType,\n} from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\n\ttype PersistValuesContext,\n} from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValues,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n\tuseSupervision,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { SceneActuatorConfigurationCommand } from \"../lib/_Types.js\";\n\nexport const SceneActuatorConfigurationCCValues = Object.freeze({\n\t...V.defineDynamicCCValues(CommandClasses[\"Scene Actuator Configuration\"], {\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"level\",\n\t\t\t\"level\",\n\t\t\t(sceneId: number) => sceneId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"level\" && typeof propertyKey === \"number\",\n\t\t\t(sceneId: number) => ({\n\t\t\t\t...ValueMetadata.UInt8,\n\t\t\t\tlabel: `Level (${sceneId})`,\n\t\t\t\tvalueChangeOptions: [\"transitionDuration\"],\n\t\t\t} as const),\n\t\t),\n\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"dimmingDuration\",\n\t\t\t\"dimmingDuration\",\n\t\t\t(sceneId: number) => sceneId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"dimmingDuration\"\n\t\t\t\t&& typeof propertyKey === \"number\",\n\t\t\t(sceneId: number) => ({\n\t\t\t\t...ValueMetadata.Duration,\n\t\t\t\tlabel: `Dimming duration (${sceneId})`,\n\t\t\t} as const),\n\t\t),\n\t}),\n});\n\n@API(CommandClasses[\"Scene Actuator Configuration\"])\nexport class SceneActuatorConfigurationCCAPI extends CCAPI {\n\tpublic supportsCommand(\n\t\tcmd: SceneActuatorConfigurationCommand,\n\t): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase SceneActuatorConfigurationCommand.Get:\n\t\t\t\treturn this.isSinglecast();\n\t\t\tcase SceneActuatorConfigurationCommand.Set:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\tprotected override get [SET_VALUE](): SetValueImplementation {\n\t\treturn async function(\n\t\t\tthis: SceneActuatorConfigurationCCAPI,\n\t\t\t{ property, propertyKey },\n\t\t\tvalue,\n\t\t\toptions,\n\t\t) {\n\t\t\tif (propertyKey == undefined) {\n\t\t\t\tthrowMissingPropertyKey(this.ccId, property);\n\t\t\t} else if (typeof propertyKey !== \"number\") {\n\t\t\t\tthrowUnsupportedPropertyKey(this.ccId, property, propertyKey);\n\t\t\t}\n\t\t\tif (property === \"level\") {\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// We need to set the dimming duration along with the level.\n\t\t\t\t// Dimming duration is chosen with the following precedence:\n\t\t\t\t// 1. options.transitionDuration\n\t\t\t\t// 2. current stored value\n\t\t\t\t// 3. default\n\t\t\t\tconst dimmingDuration =\n\t\t\t\t\tDuration.from(options?.transitionDuration)\n\t\t\t\t\t\t?? this.tryGetValueDB()?.getValue<Duration>(\n\t\t\t\t\t\t\tSceneActuatorConfigurationCCValues.dimmingDuration(\n\t\t\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t\t\t).endpoint(this.endpoint.index),\n\t\t\t\t\t\t);\n\t\t\t\treturn this.set(propertyKey, dimmingDuration, value);\n\t\t\t} else if (property === \"dimmingDuration\") {\n\t\t\t\tif (typeof value !== \"string\" && !Duration.isDuration(value)) {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"duration\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst dimmingDuration = Duration.from(value);\n\t\t\t\tif (dimmingDuration == undefined) {\n\t\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t\t`${\n\t\t\t\t\t\t\tgetCCName(\n\t\t\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}: \"${property}\" could not be set. ${\n\t\t\t\t\t\t\tJSON.stringify(\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t} is not a valid duration.`,\n\t\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Must set the level along with the dimmingDuration,\n\t\t\t\t// Use saved value, if it's defined. Otherwise the default\n\t\t\t\t// will be used.\n\t\t\t\tconst level = this.tryGetValueDB()?.getValue<number>(\n\t\t\t\t\tSceneActuatorConfigurationCCValues.level(\n\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t).endpoint(this.endpoint.index),\n\t\t\t\t);\n\n\t\t\t\treturn this.set(propertyKey, dimmingDuration, level);\n\t\t\t} else {\n\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n\n\tprotected get [POLL_VALUE](): PollValueImplementation {\n\t\treturn async function(\n\t\t\tthis: SceneActuatorConfigurationCCAPI,\n\t\t\t{ property, propertyKey },\n\t\t) {\n\t\t\tswitch (property) {\n\t\t\t\tcase \"level\":\n\t\t\t\tcase \"dimmingDuration\": {\n\t\t\t\t\tif (propertyKey == undefined) {\n\t\t\t\t\t\tthrowMissingPropertyKey(this.ccId, property);\n\t\t\t\t\t} else if (typeof propertyKey !== \"number\") {\n\t\t\t\t\t\tthrowUnsupportedPropertyKey(\n\t\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn (await this.get(propertyKey))?.[property];\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n\n\t@validateArgs()\n\tpublic async set(\n\t\tsceneId: number,\n\t\tdimmingDuration?: Duration | string,\n\t\tlevel?: number,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSceneActuatorConfigurationCommand,\n\t\t\tSceneActuatorConfigurationCommand.Set,\n\t\t);\n\n\t\t// Undefined `dimmingDuration` defaults to 0 seconds to simplify the call\n\t\t// for actuators that don't support non-instant `dimmingDuration`\n\t\t// Undefined `level` uses the actuator's current value (override = 0).\n\t\tconst cc = new SceneActuatorConfigurationCCSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tsceneId,\n\t\t\tdimmingDuration: Duration.from(dimmingDuration)\n\t\t\t\t?? new Duration(0, \"seconds\"),\n\t\t\tlevel,\n\t\t});\n\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\tpublic async getActive(): Promise<\n\t\tMaybeNotKnown<\n\t\t\tPick<\n\t\t\t\tSceneActuatorConfigurationCCReport,\n\t\t\t\t\"sceneId\" | \"level\" | \"dimmingDuration\"\n\t\t\t>\n\t\t>\n\t> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSceneActuatorConfigurationCommand,\n\t\t\tSceneActuatorConfigurationCommand.Get,\n\t\t);\n\n\t\tconst cc = new SceneActuatorConfigurationCCGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tsceneId: 0,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tSceneActuatorConfigurationCCReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\n\t\tif (response) {\n\t\t\treturn pick(response, [\"sceneId\", \"level\", \"dimmingDuration\"]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async get(\n\t\tsceneId: number,\n\t): Promise<\n\t\tMaybeNotKnown<\n\t\t\tPick<\n\t\t\t\tSceneActuatorConfigurationCCReport,\n\t\t\t\t\"level\" | \"dimmingDuration\"\n\t\t\t>\n\t\t>\n\t> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSceneActuatorConfigurationCommand,\n\t\t\tSceneActuatorConfigurationCommand.Get,\n\t\t);\n\n\t\tif (sceneId === 0) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`Invalid scene ID 0. To get the currently active scene, use getActive() instead.`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\n\t\tconst cc = new SceneActuatorConfigurationCCGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tsceneId: sceneId,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tSceneActuatorConfigurationCCReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\n\t\tif (response) {\n\t\t\treturn pick(response, [\"level\", \"dimmingDuration\"]);\n\t\t}\n\t}\n}\n\n@commandClass(CommandClasses[\"Scene Actuator Configuration\"])\n@implementedVersion(1)\n@ccValues(SceneActuatorConfigurationCCValues)\nexport class SceneActuatorConfigurationCC extends CommandClass {\n\tdeclare ccCommand: SceneActuatorConfigurationCommand;\n\n\t// eslint-disable-next-line @typescript-eslint/require-await\n\tpublic async interview(\n\t\tctx: InterviewContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\n\t\tctx.logNode(node.id, {\n\t\t\tmessage: `${this.constructor.name}: setting metadata`,\n\t\t\tdirection: \"none\",\n\t\t});\n\n\t\t// Create Metadata for all scenes\n\t\tfor (let sceneId = 1; sceneId <= 255; sceneId++) {\n\t\t\tconst levelValue = SceneActuatorConfigurationCCValues.level(\n\t\t\t\tsceneId,\n\t\t\t);\n\t\t\tthis.ensureMetadata(ctx, levelValue);\n\n\t\t\tconst dimmingDurationValue = SceneActuatorConfigurationCCValues\n\t\t\t\t.dimmingDuration(sceneId);\n\t\t\tthis.ensureMetadata(ctx, dimmingDurationValue);\n\t\t}\n\n\t\tthis.setInterviewComplete(ctx, true);\n\t}\n\n\t// `refreshValues()` would create 255 `Get` commands to be issued to the node\n\t// Therefore, I think we should not implement it. Here is how it would be implemented\n\t//\n\t// public async refreshValues(ctx: RefreshValuesContext): Promise<void> {\n\t// \tconst node = this.getNode(ctx)!;\n\t// \tconst endpoint = this.getEndpoint(ctx)!;\n\t// \tconst api = endpoint.commandClasses[\n\t// \t\t\"Scene Actuator Configuration\"\n\t// \t].withOptions({\n\t// \t\tpriority: MessagePriority.NodeQuery,\n\t// \t});\n\t// \tctx.logNode(node.id, {\n\t// \t\tmessage: \"querying all scene actuator configs...\",\n\t// \t\tdirection: \"outbound\",\n\t// \t});\n\t// \tfor (let sceneId = 1; sceneId <= 255; sceneId++) {\n\t// \t\tawait api.get(sceneId);\n\t// \t}\n\t// }\n}\n\n// @publicAPI\nexport interface SceneActuatorConfigurationCCSetOptions {\n\tsceneId: number;\n\tdimmingDuration: Duration;\n\tlevel?: number;\n}\n\n@CCCommand(SceneActuatorConfigurationCommand.Set)\n@useSupervision()\nexport class SceneActuatorConfigurationCCSet\n\textends SceneActuatorConfigurationCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<SceneActuatorConfigurationCCSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tif (options.sceneId < 1 || options.sceneId > 255) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`The scene id ${options.sceneId} must be between 1 and 255!`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.sceneId = options.sceneId;\n\t\tthis.dimmingDuration = options.dimmingDuration;\n\t\tthis.level = options.level;\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): SceneActuatorConfigurationCCSet {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new SceneActuatorConfigurationCCSet({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic sceneId: number;\n\tpublic dimmingDuration: Duration;\n\tpublic level?: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.sceneId,\n\t\t\tthis.dimmingDuration.serializeSet(),\n\t\t\tthis.level != undefined ? 0b1000_0000 : 0,\n\t\t\tthis.level ?? 0xff,\n\t\t]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\tsceneId: this.sceneId,\n\t\t\tdimmingDuration: this.dimmingDuration.toString(),\n\t\t};\n\t\tif (this.level != undefined) {\n\t\t\tmessage.level = this.level;\n\t\t}\n\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface SceneActuatorConfigurationCCReportOptions {\n\tsceneId: number;\n\tlevel?: number;\n\tdimmingDuration?: Duration;\n}\n\n@CCCommand(SceneActuatorConfigurationCommand.Report)\nexport class SceneActuatorConfigurationCCReport\n\textends SceneActuatorConfigurationCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<SceneActuatorConfigurationCCReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.sceneId = options.sceneId;\n\t\tthis.level = options.level;\n\t\tthis.dimmingDuration = options.dimmingDuration;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): SceneActuatorConfigurationCCReport {\n\t\tvalidatePayload(raw.payload.length >= 3);\n\t\tconst sceneId = raw.payload[0];\n\n\t\tlet level: number | undefined;\n\t\tlet dimmingDuration: Duration | undefined;\n\t\tif (sceneId !== 0) {\n\t\t\tlevel = raw.payload[1];\n\t\t\tdimmingDuration = Duration.parseReport(raw.payload[2])\n\t\t\t\t?? Duration.unknown();\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsceneId,\n\t\t\tlevel,\n\t\t\tdimmingDuration,\n\t\t});\n\t}\n\n\tpublic readonly sceneId: number;\n\tpublic readonly level?: number;\n\tpublic readonly dimmingDuration?: Duration;\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\n\t\t// Do not persist values for an inactive scene\n\t\tif (\n\t\t\tthis.sceneId === 0\n\t\t\t|| this.level == undefined\n\t\t\t|| this.dimmingDuration == undefined\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst levelValue = SceneActuatorConfigurationCCValues.level(\n\t\t\tthis.sceneId,\n\t\t);\n\t\tthis.ensureMetadata(ctx, levelValue);\n\n\t\tconst dimmingDurationValue = SceneActuatorConfigurationCCValues\n\t\t\t.dimmingDuration(this.sceneId);\n\t\tthis.ensureMetadata(ctx, dimmingDurationValue);\n\n\t\tthis.setValue(ctx, levelValue, this.level);\n\t\tthis.setValue(ctx, dimmingDurationValue, this.dimmingDuration);\n\n\t\treturn true;\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\tsceneId: this.sceneId,\n\t\t};\n\t\tif (this.dimmingDuration != undefined) {\n\t\t\tmessage.dimmingDuration = this.dimmingDuration.toString();\n\t\t}\n\t\tif (this.level != undefined) {\n\t\t\tmessage.level = this.level;\n\t\t}\n\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\nfunction testResponseForSceneActuatorConfigurationGet(\n\tsent: SceneActuatorConfigurationCCGet,\n\treceived: SceneActuatorConfigurationCCReport,\n) {\n\t// We expect a Scene Actuator Configuration Report that matches\n\t// the requested sceneId, unless groupId 0 was requested\n\treturn sent.sceneId === 0 || received.sceneId === sent.sceneId;\n}\n\n// @publicAPI\nexport interface SceneActuatorConfigurationCCGetOptions {\n\tsceneId: number;\n}\n\n@CCCommand(SceneActuatorConfigurationCommand.Get)\n@expectedCCResponse(\n\tSceneActuatorConfigurationCCReport,\n\ttestResponseForSceneActuatorConfigurationGet,\n)\nexport class SceneActuatorConfigurationCCGet\n\textends SceneActuatorConfigurationCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<SceneActuatorConfigurationCCGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.sceneId = options.sceneId;\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): SceneActuatorConfigurationCCGet {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new SceneActuatorConfigurationCCGet({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic sceneId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.sceneId]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: { \"scene id\": this.sceneId },\n\t\t};\n\t}\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { type CCEncodingContext, type CCParsingContext } from \"@zwave-js/cc\";\nimport {\n\tCommandClasses,\n\tDuration,\n\ttype GetValueDB,\n\ttype MaybeNotKnown,\n\ttype MessageOrCCLogEntry,\n\ttype MessageRecord,\n\ttype SupervisionResult,\n\tValueMetadata,\n\ttype WithAddress,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tgetCCName,\n\tvalidatePayload,\n} from \"@zwave-js/core/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport { pick } from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport {\n\tCCAPI,\n\tPOLL_VALUE,\n\ttype PollValueImplementation,\n\tSET_VALUE,\n\ttype SetValueImplementation,\n\tthrowMissingPropertyKey,\n\tthrowUnsupportedProperty,\n\tthrowUnsupportedPropertyKey,\n\tthrowWrongValueType,\n} from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\n\ttype PersistValuesContext,\n} from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValues,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n\tuseSupervision,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { SceneActuatorConfigurationCommand } from \"../lib/_Types.js\";\n\nexport const SceneActuatorConfigurationCCValues = Object.freeze({\n\t...V.defineDynamicCCValues(CommandClasses[\"Scene Actuator Configuration\"], {\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"level\",\n\t\t\t\"level\",\n\t\t\t(sceneId: number) => sceneId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"level\" && typeof propertyKey === \"number\",\n\t\t\t(sceneId: number) => ({\n\t\t\t\t...ValueMetadata.UInt8,\n\t\t\t\tlabel: `Level (${sceneId})`,\n\t\t\t\tvalueChangeOptions: [\"transitionDuration\"],\n\t\t\t} as const),\n\t\t),\n\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"dimmingDuration\",\n\t\t\t\"dimmingDuration\",\n\t\t\t(sceneId: number) => sceneId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"dimmingDuration\"\n\t\t\t\t&& typeof propertyKey === \"number\",\n\t\t\t(sceneId: number) => ({\n\t\t\t\t...ValueMetadata.Duration,\n\t\t\t\tlabel: `Dimming duration (${sceneId})`,\n\t\t\t} as const),\n\t\t),\n\t}),\n});\n\n@API(CommandClasses[\"Scene Actuator Configuration\"])\nexport class SceneActuatorConfigurationCCAPI extends CCAPI {\n\tpublic supportsCommand(\n\t\tcmd: SceneActuatorConfigurationCommand,\n\t): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase SceneActuatorConfigurationCommand.Get:\n\t\t\t\treturn this.isSinglecast();\n\t\t\tcase SceneActuatorConfigurationCommand.Set:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\tprotected override get [SET_VALUE](): SetValueImplementation {\n\t\treturn async function(\n\t\t\tthis: SceneActuatorConfigurationCCAPI,\n\t\t\t{ property, propertyKey },\n\t\t\tvalue,\n\t\t\toptions,\n\t\t) {\n\t\t\tif (propertyKey == undefined) {\n\t\t\t\tthrowMissingPropertyKey(this.ccId, property);\n\t\t\t} else if (typeof propertyKey !== \"number\") {\n\t\t\t\tthrowUnsupportedPropertyKey(this.ccId, property, propertyKey);\n\t\t\t}\n\t\t\tif (property === \"level\") {\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// We need to set the dimming duration along with the level.\n\t\t\t\t// Dimming duration is chosen with the following precedence:\n\t\t\t\t// 1. options.transitionDuration\n\t\t\t\t// 2. current stored value\n\t\t\t\t// 3. default\n\t\t\t\tconst dimmingDuration =\n\t\t\t\t\tDuration.from(options?.transitionDuration)\n\t\t\t\t\t\t?? this.tryGetValueDB()?.getValue<Duration>(\n\t\t\t\t\t\t\tSceneActuatorConfigurationCCValues.dimmingDuration(\n\t\t\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t\t\t).endpoint(this.endpoint.index),\n\t\t\t\t\t\t);\n\t\t\t\treturn this.set(propertyKey, dimmingDuration, value);\n\t\t\t} else if (property === \"dimmingDuration\") {\n\t\t\t\tif (typeof value !== \"string\" && !Duration.isDuration(value)) {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"duration\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst dimmingDuration = Duration.from(value);\n\t\t\t\tif (dimmingDuration == undefined) {\n\t\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t\t`${\n\t\t\t\t\t\t\tgetCCName(\n\t\t\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}: \"${property}\" could not be set. ${\n\t\t\t\t\t\t\tJSON.stringify(\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t} is not a valid duration.`,\n\t\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Must set the level along with the dimmingDuration,\n\t\t\t\t// Use saved value, if it's defined. Otherwise the default\n\t\t\t\t// will be used.\n\t\t\t\tconst level = this.tryGetValueDB()?.getValue<number>(\n\t\t\t\t\tSceneActuatorConfigurationCCValues.level(\n\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t).endpoint(this.endpoint.index),\n\t\t\t\t);\n\n\t\t\t\treturn this.set(propertyKey, dimmingDuration, level);\n\t\t\t} else {\n\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n\n\tprotected get [POLL_VALUE](): PollValueImplementation {\n\t\treturn async function(\n\t\t\tthis: SceneActuatorConfigurationCCAPI,\n\t\t\t{ property, propertyKey },\n\t\t) {\n\t\t\tswitch (property) {\n\t\t\t\tcase \"level\":\n\t\t\t\tcase \"dimmingDuration\": {\n\t\t\t\t\tif (propertyKey == undefined) {\n\t\t\t\t\t\tthrowMissingPropertyKey(this.ccId, property);\n\t\t\t\t\t} else if (typeof propertyKey !== \"number\") {\n\t\t\t\t\t\tthrowUnsupportedPropertyKey(\n\t\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn (await this.get(propertyKey))?.[property];\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n\n\t@validateArgs()\n\tpublic async set(\n\t\tsceneId: number,\n\t\tdimmingDuration?: Duration | string,\n\t\tlevel?: number,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSceneActuatorConfigurationCommand,\n\t\t\tSceneActuatorConfigurationCommand.Set,\n\t\t);\n\n\t\t// Undefined `dimmingDuration` defaults to 0 seconds to simplify the call\n\t\t// for actuators that don't support non-instant `dimmingDuration`\n\t\t// Undefined `level` uses the actuator's current value (override = 0).\n\t\tconst cc = new SceneActuatorConfigurationCCSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tsceneId,\n\t\t\tdimmingDuration: Duration.from(dimmingDuration)\n\t\t\t\t?? new Duration(0, \"seconds\"),\n\t\t\tlevel,\n\t\t});\n\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\tpublic async getActive(): Promise<\n\t\tMaybeNotKnown<\n\t\t\tPick<\n\t\t\t\tSceneActuatorConfigurationCCReport,\n\t\t\t\t\"sceneId\" | \"level\" | \"dimmingDuration\"\n\t\t\t>\n\t\t>\n\t> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSceneActuatorConfigurationCommand,\n\t\t\tSceneActuatorConfigurationCommand.Get,\n\t\t);\n\n\t\tconst cc = new SceneActuatorConfigurationCCGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tsceneId: 0,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tSceneActuatorConfigurationCCReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\n\t\tif (response) {\n\t\t\treturn pick(response, [\"sceneId\", \"level\", \"dimmingDuration\"]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async get(\n\t\tsceneId: number,\n\t): Promise<\n\t\tMaybeNotKnown<\n\t\t\tPick<\n\t\t\t\tSceneActuatorConfigurationCCReport,\n\t\t\t\t\"level\" | \"dimmingDuration\"\n\t\t\t>\n\t\t>\n\t> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSceneActuatorConfigurationCommand,\n\t\t\tSceneActuatorConfigurationCommand.Get,\n\t\t);\n\n\t\tif (sceneId === 0) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`Invalid scene ID 0. To get the currently active scene, use getActive() instead.`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\n\t\tconst cc = new SceneActuatorConfigurationCCGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tsceneId: sceneId,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tSceneActuatorConfigurationCCReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\n\t\tif (response) {\n\t\t\treturn pick(response, [\"level\", \"dimmingDuration\"]);\n\t\t}\n\t}\n}\n\n@commandClass(CommandClasses[\"Scene Actuator Configuration\"])\n@implementedVersion(1)\n@ccValues(SceneActuatorConfigurationCCValues)\nexport class SceneActuatorConfigurationCC extends CommandClass {\n\tdeclare ccCommand: SceneActuatorConfigurationCommand;\n\n\t// eslint-disable-next-line @typescript-eslint/require-await\n\tpublic async interview(\n\t\tctx: InterviewContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\n\t\tctx.logNode(node.id, {\n\t\t\tmessage: `${this.constructor.name}: setting metadata`,\n\t\t\tdirection: \"none\",\n\t\t});\n\n\t\t// Create Metadata for all scenes\n\t\tfor (let sceneId = 1; sceneId <= 255; sceneId++) {\n\t\t\tconst levelValue = SceneActuatorConfigurationCCValues.level(\n\t\t\t\tsceneId,\n\t\t\t);\n\t\t\tthis.ensureMetadata(ctx, levelValue);\n\n\t\t\tconst dimmingDurationValue = SceneActuatorConfigurationCCValues\n\t\t\t\t.dimmingDuration(sceneId);\n\t\t\tthis.ensureMetadata(ctx, dimmingDurationValue);\n\t\t}\n\n\t\tthis.setInterviewComplete(ctx, true);\n\t}\n\n\t// `refreshValues()` would create 255 `Get` commands to be issued to the node\n\t// Therefore, I think we should not implement it. Here is how it would be implemented\n\t//\n\t// public async refreshValues(ctx: RefreshValuesContext): Promise<void> {\n\t// \tconst node = this.getNode(ctx)!;\n\t// \tconst endpoint = this.getEndpoint(ctx)!;\n\t// \tconst api = endpoint.commandClasses[\n\t// \t\t\"Scene Actuator Configuration\"\n\t// \t].withOptions({\n\t// \t\tpriority: MessagePriority.NodeQuery,\n\t// \t});\n\t// \tctx.logNode(node.id, {\n\t// \t\tmessage: \"querying all scene actuator configs...\",\n\t// \t\tdirection: \"outbound\",\n\t// \t});\n\t// \tfor (let sceneId = 1; sceneId <= 255; sceneId++) {\n\t// \t\tawait api.get(sceneId);\n\t// \t}\n\t// }\n}\n\n// @publicAPI\nexport interface SceneActuatorConfigurationCCSetOptions {\n\tsceneId: number;\n\tdimmingDuration: Duration;\n\tlevel?: number;\n}\n\n@CCCommand(SceneActuatorConfigurationCommand.Set)\n@useSupervision()\nexport class SceneActuatorConfigurationCCSet\n\textends SceneActuatorConfigurationCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<SceneActuatorConfigurationCCSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tif (options.sceneId < 1 || options.sceneId > 255) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`The scene id ${options.sceneId} must be between 1 and 255!`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.sceneId = options.sceneId;\n\t\tthis.dimmingDuration = options.dimmingDuration;\n\t\tthis.level = options.level;\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): SceneActuatorConfigurationCCSet {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new SceneActuatorConfigurationCCSet({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic sceneId: number;\n\tpublic dimmingDuration: Duration;\n\tpublic level?: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.sceneId,\n\t\t\tthis.dimmingDuration.serializeSet(),\n\t\t\tthis.level != undefined ? 0b1000_0000 : 0,\n\t\t\tthis.level ?? 0xff,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\tsceneId: this.sceneId,\n\t\t\tdimmingDuration: this.dimmingDuration.toString(),\n\t\t};\n\t\tif (this.level != undefined) {\n\t\t\tmessage.level = this.level;\n\t\t}\n\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface SceneActuatorConfigurationCCReportOptions {\n\tsceneId: number;\n\tlevel?: number;\n\tdimmingDuration?: Duration;\n}\n\n@CCCommand(SceneActuatorConfigurationCommand.Report)\nexport class SceneActuatorConfigurationCCReport\n\textends SceneActuatorConfigurationCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<SceneActuatorConfigurationCCReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.sceneId = options.sceneId;\n\t\tthis.level = options.level;\n\t\tthis.dimmingDuration = options.dimmingDuration;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): SceneActuatorConfigurationCCReport {\n\t\tvalidatePayload(raw.payload.length >= 3);\n\t\tconst sceneId = raw.payload[0];\n\n\t\tlet level: number | undefined;\n\t\tlet dimmingDuration: Duration | undefined;\n\t\tif (sceneId !== 0) {\n\t\t\tlevel = raw.payload[1];\n\t\t\tdimmingDuration = Duration.parseReport(raw.payload[2])\n\t\t\t\t?? Duration.unknown();\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsceneId,\n\t\t\tlevel,\n\t\t\tdimmingDuration,\n\t\t});\n\t}\n\n\tpublic readonly sceneId: number;\n\tpublic readonly level?: number;\n\tpublic readonly dimmingDuration?: Duration;\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\n\t\t// Do not persist values for an inactive scene\n\t\tif (\n\t\t\tthis.sceneId === 0\n\t\t\t|| this.level == undefined\n\t\t\t|| this.dimmingDuration == undefined\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst levelValue = SceneActuatorConfigurationCCValues.level(\n\t\t\tthis.sceneId,\n\t\t);\n\t\tthis.ensureMetadata(ctx, levelValue);\n\n\t\tconst dimmingDurationValue = SceneActuatorConfigurationCCValues\n\t\t\t.dimmingDuration(this.sceneId);\n\t\tthis.ensureMetadata(ctx, dimmingDurationValue);\n\n\t\tthis.setValue(ctx, levelValue, this.level);\n\t\tthis.setValue(ctx, dimmingDurationValue, this.dimmingDuration);\n\n\t\treturn true;\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\tsceneId: this.sceneId,\n\t\t};\n\t\tif (this.dimmingDuration != undefined) {\n\t\t\tmessage.dimmingDuration = this.dimmingDuration.toString();\n\t\t}\n\t\tif (this.level != undefined) {\n\t\t\tmessage.level = this.level;\n\t\t}\n\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\nfunction testResponseForSceneActuatorConfigurationGet(\n\tsent: SceneActuatorConfigurationCCGet,\n\treceived: SceneActuatorConfigurationCCReport,\n) {\n\t// We expect a Scene Actuator Configuration Report that matches\n\t// the requested sceneId, unless groupId 0 was requested\n\treturn sent.sceneId === 0 || received.sceneId === sent.sceneId;\n}\n\n// @publicAPI\nexport interface SceneActuatorConfigurationCCGetOptions {\n\tsceneId: number;\n}\n\n@CCCommand(SceneActuatorConfigurationCommand.Get)\n@expectedCCResponse(\n\tSceneActuatorConfigurationCCReport,\n\ttestResponseForSceneActuatorConfigurationGet,\n)\nexport class SceneActuatorConfigurationCCGet\n\textends SceneActuatorConfigurationCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<SceneActuatorConfigurationCCGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.sceneId = options.sceneId;\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): SceneActuatorConfigurationCCGet {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new SceneActuatorConfigurationCCGet({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic sceneId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.sceneId]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: { \"scene id\": this.sceneId },\n\t\t};\n\t}\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["import_safe"]
7
7
  }
@@ -1,22 +1,38 @@
1
- import { CommandClasses, Duration, type EndpointId, type MaybeNotKnown, type MessageOrCCLogEntry, type SupervisionResult, type WithAddress } from "@zwave-js/core/safe";
2
- import type { CCEncodingContext, CCParsingContext, GetDeviceConfig, GetValueDB } from "@zwave-js/host/safe";
1
+ import { type CCEncodingContext, type CCParsingContext } from "@zwave-js/cc";
2
+ import { type GetDeviceConfig } from "@zwave-js/config";
3
+ import { CommandClasses, Duration, type EndpointId, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, type SupervisionResult, ValueMetadata, type WithAddress } from "@zwave-js/core/safe";
3
4
  import { Bytes } from "@zwave-js/shared/safe";
4
5
  import { CCAPI, POLL_VALUE, type PollValueImplementation, SET_VALUE, type SetValueImplementation } from "../lib/API.js";
5
6
  import { type CCRaw, CommandClass, type InterviewContext, type PersistValuesContext, type RefreshValuesContext } from "../lib/CommandClass.js";
6
7
  import { SceneControllerConfigurationCommand } from "../lib/_Types.js";
7
8
  export declare const SceneControllerConfigurationCCValues: Readonly<{
8
9
  dimmingDuration: ((groupId: number) => {
9
- readonly meta: {
10
- readonly label: `Dimming duration (${number})`;
11
- readonly type: "duration";
10
+ readonly meta: Readonly<(ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
11
+ readonly type: "any";
12
12
  readonly readable: true;
13
13
  readonly writeable: true;
14
- };
15
- readonly id: {
16
- commandClass: (typeof CommandClasses)["Scene Controller Configuration"];
17
- property: "dimmingDuration";
18
- propertyKey: number;
19
- };
14
+ }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
15
+ readonly type: "any";
16
+ readonly readable: true;
17
+ readonly writeable: true;
18
+ }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>) extends infer T ? { [K in keyof T as [undefined] extends [(ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
19
+ readonly type: "any";
20
+ readonly readable: true;
21
+ readonly writeable: true;
22
+ }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
23
+ readonly type: "any";
24
+ readonly readable: true;
25
+ readonly writeable: true;
26
+ }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]] ? never : K]: (ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
27
+ readonly type: "any";
28
+ readonly readable: true;
29
+ readonly writeable: true;
30
+ }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
31
+ readonly type: "any";
32
+ readonly readable: true;
33
+ readonly writeable: true;
34
+ }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]; } : never>;
35
+ readonly id: ValueIDBase;
20
36
  readonly endpoint: (endpoint?: number | undefined) => {
21
37
  readonly commandClass: (typeof CommandClasses)["Scene Controller Configuration"];
22
38
  readonly endpoint: number;
@@ -35,20 +51,32 @@ export declare const SceneControllerConfigurationCCValues: Readonly<{
35
51
  };
36
52
  };
37
53
  sceneId: ((groupId: number) => {
38
- readonly meta: {
39
- readonly label: `Associated Scene ID (${number})`;
40
- readonly valueChangeOptions: readonly ["transitionDuration"];
41
- readonly min: 0;
42
- readonly max: 255;
43
- readonly type: "number";
54
+ readonly meta: Readonly<(ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
55
+ readonly type: "any";
44
56
  readonly readable: true;
45
57
  readonly writeable: true;
46
- };
47
- readonly id: {
48
- commandClass: (typeof CommandClasses)["Scene Controller Configuration"];
49
- property: "sceneId";
50
- propertyKey: number;
51
- };
58
+ }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
59
+ readonly type: "any";
60
+ readonly readable: true;
61
+ readonly writeable: true;
62
+ }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>) extends infer T ? { [K in keyof T as [undefined] extends [(ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
63
+ readonly type: "any";
64
+ readonly readable: true;
65
+ readonly writeable: true;
66
+ }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
67
+ readonly type: "any";
68
+ readonly readable: true;
69
+ readonly writeable: true;
70
+ }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]] ? never : K]: (ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
71
+ readonly type: "any";
72
+ readonly readable: true;
73
+ readonly writeable: true;
74
+ }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
75
+ readonly type: "any";
76
+ readonly readable: true;
77
+ readonly writeable: true;
78
+ }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]; } : never>;
79
+ readonly id: ValueIDBase;
52
80
  readonly endpoint: (endpoint?: number | undefined) => {
53
81
  readonly commandClass: (typeof CommandClasses)["Scene Controller Configuration"];
54
82
  readonly endpoint: number;
@@ -99,7 +127,7 @@ export declare class SceneControllerConfigurationCCSet extends SceneControllerCo
99
127
  groupId: number;
100
128
  sceneId: number;
101
129
  dimmingDuration: Duration;
102
- serialize(ctx: CCEncodingContext): Bytes;
130
+ serialize(ctx: CCEncodingContext): Promise<Bytes>;
103
131
  toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
104
132
  }
105
133
  export interface SceneControllerConfigurationCCReportOptions {
@@ -123,7 +151,7 @@ export declare class SceneControllerConfigurationCCGet extends SceneControllerCo
123
151
  constructor(options: WithAddress<SceneControllerConfigurationCCGetOptions>);
124
152
  static from(_raw: CCRaw, _ctx: CCParsingContext): SceneControllerConfigurationCCGet;
125
153
  groupId: number;
126
- serialize(ctx: CCEncodingContext): Bytes;
154
+ serialize(ctx: CCEncodingContext): Promise<Bytes>;
127
155
  toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
128
156
  }
129
157
  //# sourceMappingURL=SceneControllerConfigurationCC.d.ts.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cc/SceneControllerConfigurationCC.ts"],
4
- "sourcesContent": ["import {\n\tCommandClasses,\n\tDuration,\n\ttype EndpointId,\n\ttype MaybeNotKnown,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\ttype SupervisionResult,\n\tValueMetadata,\n\ttype WithAddress,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tgetCCName,\n\tvalidatePayload,\n} from \"@zwave-js/core/safe\";\nimport type {\n\tCCEncodingContext,\n\tCCParsingContext,\n\tGetDeviceConfig,\n\tGetValueDB,\n} from \"@zwave-js/host/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport { pick } from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport {\n\tCCAPI,\n\tPOLL_VALUE,\n\ttype PollValueImplementation,\n\tSET_VALUE,\n\ttype SetValueImplementation,\n\tthrowMissingPropertyKey,\n\tthrowUnsupportedProperty,\n\tthrowUnsupportedPropertyKey,\n\tthrowWrongValueType,\n} from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\n\ttype PersistValuesContext,\n\ttype RefreshValuesContext,\n} from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValues,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n\tuseSupervision,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { SceneControllerConfigurationCommand } from \"../lib/_Types.js\";\nimport { AssociationCC } from \"./AssociationCC.js\";\n\nexport const SceneControllerConfigurationCCValues = Object.freeze({\n\t...V.defineDynamicCCValues(\n\t\tCommandClasses[\"Scene Controller Configuration\"],\n\t\t{\n\t\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\t\"sceneId\",\n\t\t\t\t\"sceneId\",\n\t\t\t\t(groupId: number) => groupId,\n\t\t\t\t({ property, propertyKey }) =>\n\t\t\t\t\tproperty === \"sceneId\" && typeof propertyKey === \"number\",\n\t\t\t\t(groupId: number) => ({\n\t\t\t\t\t...ValueMetadata.UInt8,\n\t\t\t\t\tlabel: `Associated Scene ID (${groupId})`,\n\t\t\t\t\tvalueChangeOptions: [\"transitionDuration\"],\n\t\t\t\t} as const),\n\t\t\t),\n\n\t\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\t\"dimmingDuration\",\n\t\t\t\t\"dimmingDuration\",\n\t\t\t\t(groupId: number) => groupId,\n\t\t\t\t({ property, propertyKey }) =>\n\t\t\t\t\tproperty === \"dimmingDuration\"\n\t\t\t\t\t&& typeof propertyKey === \"number\",\n\t\t\t\t(groupId: number) => ({\n\t\t\t\t\t...ValueMetadata.Duration,\n\t\t\t\t\tlabel: `Dimming duration (${groupId})`,\n\t\t\t\t} as const),\n\t\t\t),\n\t\t},\n\t),\n});\n\n@API(CommandClasses[\"Scene Controller Configuration\"])\nexport class SceneControllerConfigurationCCAPI extends CCAPI {\n\tpublic supportsCommand(\n\t\tcmd: SceneControllerConfigurationCommand,\n\t): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase SceneControllerConfigurationCommand.Get:\n\t\t\t\treturn this.isSinglecast();\n\t\t\tcase SceneControllerConfigurationCommand.Set:\n\t\t\t\treturn true; // This is mandatory\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\tprotected override get [SET_VALUE](): SetValueImplementation {\n\t\treturn async function(\n\t\t\tthis: SceneControllerConfigurationCCAPI,\n\t\t\t{ property, propertyKey },\n\t\t\tvalue,\n\t\t\toptions,\n\t\t) {\n\t\t\tif (propertyKey == undefined) {\n\t\t\t\tthrowMissingPropertyKey(this.ccId, property);\n\t\t\t} else if (typeof propertyKey !== \"number\") {\n\t\t\t\tthrowUnsupportedPropertyKey(this.ccId, property, propertyKey);\n\t\t\t}\n\t\t\tif (property === \"sceneId\") {\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\t// Disable Group ID / Scene ID\n\t\t\t\t\treturn this.disable(propertyKey);\n\t\t\t\t} else {\n\t\t\t\t\t// We need to set the dimming duration along with the scene ID\n\t\t\t\t\t// Dimming duration is chosen with the following precedence:\n\t\t\t\t\t// 1. options.transitionDuration\n\t\t\t\t\t// 2. current stored value\n\t\t\t\t\t// 3. default value\n\t\t\t\t\tconst dimmingDuration =\n\t\t\t\t\t\tDuration.from(options?.transitionDuration)\n\t\t\t\t\t\t\t?? this.tryGetValueDB()?.getValue<Duration>(\n\t\t\t\t\t\t\t\tSceneControllerConfigurationCCValues\n\t\t\t\t\t\t\t\t\t.dimmingDuration(\n\t\t\t\t\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t\t\t\t\t).endpoint(this.endpoint.index),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t?? Duration.default();\n\t\t\t\t\treturn this.set(propertyKey, value, dimmingDuration);\n\t\t\t\t}\n\t\t\t} else if (property === \"dimmingDuration\") {\n\t\t\t\tif (typeof value !== \"string\" && !Duration.isDuration(value)) {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"duration\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst dimmingDuration = Duration.from(value);\n\t\t\t\tif (dimmingDuration == undefined) {\n\t\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t\t`${\n\t\t\t\t\t\t\tgetCCName(\n\t\t\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}: \"${property}\" could not be set. ${\n\t\t\t\t\t\t\tJSON.stringify(\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t} is not a valid duration.`,\n\t\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst valueDB = this.tryGetValueDB();\n\t\t\t\tconst sceneId = valueDB?.getValue<number>(\n\t\t\t\t\tSceneControllerConfigurationCCValues.sceneId(\n\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t).endpoint(this.endpoint.index),\n\t\t\t\t);\n\t\t\t\tif (sceneId == undefined || sceneId === 0) {\n\t\t\t\t\tif (valueDB) {\n\t\t\t\t\t\t// Can't actually send dimmingDuration without valid sceneId\n\t\t\t\t\t\t// So we save it in the valueDB without sending it to the node\n\t\t\t\t\t\tconst dimmingDurationValueId =\n\t\t\t\t\t\t\tSceneControllerConfigurationCCValues\n\t\t\t\t\t\t\t\t.dimmingDuration(\n\t\t\t\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t\t\t\t).endpoint(this.endpoint.index);\n\t\t\t\t\t\tvalueDB.setValue(\n\t\t\t\t\t\t\tdimmingDurationValueId,\n\t\t\t\t\t\t\tdimmingDuration,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\treturn this.set(propertyKey, sceneId, dimmingDuration);\n\t\t\t} else {\n\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n\n\tprotected get [POLL_VALUE](): PollValueImplementation {\n\t\treturn async function(\n\t\t\tthis: SceneControllerConfigurationCCAPI,\n\t\t\t{ property, propertyKey },\n\t\t) {\n\t\t\tswitch (property) {\n\t\t\t\tcase \"sceneId\":\n\t\t\t\tcase \"dimmingDuration\": {\n\t\t\t\t\tif (propertyKey == undefined) {\n\t\t\t\t\t\tthrowMissingPropertyKey(this.ccId, property);\n\t\t\t\t\t} else if (typeof propertyKey !== \"number\") {\n\t\t\t\t\t\tthrowUnsupportedPropertyKey(\n\t\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn (await this.get(propertyKey))?.[property];\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n\n\t@validateArgs()\n\tpublic async disable(\n\t\tgroupId: number,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSceneControllerConfigurationCommand,\n\t\t\tSceneControllerConfigurationCommand.Set,\n\t\t);\n\n\t\treturn this.set(groupId, 0, new Duration(0, \"seconds\"));\n\t}\n\n\t@validateArgs()\n\tpublic async set(\n\t\tgroupId: number,\n\t\tsceneId: number,\n\t\tdimmingDuration?: Duration | string,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSceneControllerConfigurationCommand,\n\t\t\tSceneControllerConfigurationCommand.Set,\n\t\t);\n\n\t\tif (!this.endpoint.virtual) {\n\t\t\tconst groupCount = SceneControllerConfigurationCC\n\t\t\t\t.getGroupCountCached(\n\t\t\t\t\tthis.host,\n\t\t\t\t\tthis.endpoint,\n\t\t\t\t);\n\n\t\t\t// The client SHOULD NOT specify group 1 (the life-line group).\n\t\t\t// We don't block it here, because the specs don't forbid it,\n\t\t\t// and it may be needed for some devices.\n\t\t\tif (groupId < 1 || groupId > groupCount) {\n\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t`${this.constructor.name}: The group ID must be between 1 and the number of supported groups ${groupCount}.`,\n\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (groupId < 1) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`The group ID must be greater than 0.`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\n\t\tconst cc = new SceneControllerConfigurationCCSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId,\n\t\t\tsceneId,\n\t\t\tdimmingDuration,\n\t\t});\n\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\tpublic async getLastActivated(): Promise<\n\t\tMaybeNotKnown<\n\t\t\tPick<\n\t\t\t\tSceneControllerConfigurationCCReport,\n\t\t\t\t\"groupId\" | \"sceneId\" | \"dimmingDuration\"\n\t\t\t>\n\t\t>\n\t> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSceneControllerConfigurationCommand,\n\t\t\tSceneControllerConfigurationCommand.Get,\n\t\t);\n\n\t\tconst cc = new SceneControllerConfigurationCCGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId: 0,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tSceneControllerConfigurationCCReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\n\t\t// Return value includes \"groupId\", because\n\t\t// the returned report will include the actual groupId of the\n\t\t// last activated groupId / sceneId\n\t\tif (response) {\n\t\t\treturn pick(response, [\"groupId\", \"sceneId\", \"dimmingDuration\"]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async get(\n\t\tgroupId: number,\n\t): Promise<\n\t\tMaybeNotKnown<\n\t\t\tPick<\n\t\t\t\tSceneControllerConfigurationCCReport,\n\t\t\t\t\"sceneId\" | \"dimmingDuration\"\n\t\t\t>\n\t\t>\n\t> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSceneControllerConfigurationCommand,\n\t\t\tSceneControllerConfigurationCommand.Get,\n\t\t);\n\n\t\tif (groupId === 0) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`Invalid group ID 0. To get the last activated group / scene, use getLastActivated() instead.`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t} else if (groupId < 0) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`The group ID must be greater than 0.`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\n\t\tconst cc = new SceneControllerConfigurationCCGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tSceneControllerConfigurationCCReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\n\t\t// Since groupId is not allowed to be 0, only Reports with\n\t\t// groupId equal to the requested groupId will be accepted,\n\t\t// so we can omit groupId from the return.\n\t\tif (response) {\n\t\t\treturn pick(response, [\"sceneId\", \"dimmingDuration\"]);\n\t\t}\n\t}\n}\n\n@commandClass(CommandClasses[\"Scene Controller Configuration\"])\n@implementedVersion(1)\n@ccValues(SceneControllerConfigurationCCValues)\nexport class SceneControllerConfigurationCC extends CommandClass {\n\tdeclare ccCommand: SceneControllerConfigurationCommand;\n\n\tpublic determineRequiredCCInterviews(): readonly CommandClasses[] {\n\t\t// AssociationCC is required and MUST be interviewed\n\t\t// before SceneControllerConfigurationCC to supply groupCount\n\t\treturn [\n\t\t\t...super.determineRequiredCCInterviews(),\n\t\t\tCommandClasses.Association,\n\t\t];\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/require-await\n\tpublic async interview(\n\t\tctx: InterviewContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: `Interviewing ${this.ccName}...`,\n\t\t\tdirection: \"none\",\n\t\t});\n\n\t\tconst groupCount = SceneControllerConfigurationCC.getGroupCountCached(\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t);\n\t\tif (groupCount === 0) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t`skipping Scene Controller Configuration interview because Association group count is unknown`,\n\t\t\t\tdirection: \"none\",\n\t\t\t\tlevel: \"warn\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\t// Create metadata for each scene, but don't query their actual configuration\n\t\t// since some devices only support setting scenes\n\t\tfor (let groupId = 1; groupId <= groupCount; groupId++) {\n\t\t\tconst sceneIdValue = SceneControllerConfigurationCCValues.sceneId(\n\t\t\t\tgroupId,\n\t\t\t);\n\t\t\tthis.ensureMetadata(ctx, sceneIdValue);\n\n\t\t\tconst dimmingDurationValue = SceneControllerConfigurationCCValues\n\t\t\t\t.dimmingDuration(groupId);\n\t\t\tthis.ensureMetadata(ctx, dimmingDurationValue);\n\t\t}\n\n\t\t// Remember that the interview is complete\n\t\tthis.setInterviewComplete(ctx, true);\n\t}\n\n\tpublic async refreshValues(\n\t\tctx: RefreshValuesContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\t\tconst api = CCAPI.create(\n\t\t\tCommandClasses[\"Scene Controller Configuration\"],\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\n\n\t\tconst groupCount = SceneControllerConfigurationCC.getGroupCountCached(\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t);\n\n\t\tctx.logNode(node.id, {\n\t\t\tmessage: \"querying all scene controller configurations...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tfor (let groupId = 1; groupId <= groupCount; groupId++) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t`querying scene configuration for group #${groupId}...`,\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst group = await api.get(groupId);\n\t\t\tif (group != undefined) {\n\t\t\t\tconst logMessage =\n\t\t\t\t\t`received scene configuration for group #${groupId}:\nscene ID: ${group.sceneId}\ndimming duration: ${group.dimmingDuration.toString()}`;\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\tmessage: logMessage,\n\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Returns the number of association groups reported by the node.\n\t * This only works AFTER the node has been interviewed by this CC\n\t * or the AssociationCC.\n\t */\n\tpublic static getGroupCountCached(\n\t\tctx: GetValueDB & GetDeviceConfig,\n\t\tendpoint: EndpointId,\n\t): number {\n\t\treturn ctx.getDeviceConfig?.(endpoint.nodeId)?.compat\n\t\t\t?.forceSceneControllerGroupCount\n\t\t\t?? AssociationCC.getGroupCountCached(ctx, endpoint)\n\t\t\t?? 0;\n\t}\n}\n\n// @publicAPI\nexport interface SceneControllerConfigurationCCSetOptions {\n\tgroupId: number;\n\tsceneId: number;\n\tdimmingDuration?: Duration | string;\n}\n\n@CCCommand(SceneControllerConfigurationCommand.Set)\n@useSupervision()\nexport class SceneControllerConfigurationCCSet\n\textends SceneControllerConfigurationCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<SceneControllerConfigurationCCSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.groupId = options.groupId;\n\t\tthis.sceneId = options.sceneId;\n\t\t// if dimmingDuration was missing, use default duration.\n\t\tthis.dimmingDuration = Duration.from(options.dimmingDuration)\n\t\t\t?? Duration.default();\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): SceneControllerConfigurationCCSet {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new SceneControllerConfigurationCCSet({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic groupId: number;\n\tpublic sceneId: number;\n\tpublic dimmingDuration: Duration;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.groupId,\n\t\t\tthis.sceneId,\n\t\t\tthis.dimmingDuration.serializeSet(),\n\t\t]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"group id\": this.groupId,\n\t\t\t\t\"scene id\": this.sceneId,\n\t\t\t\t\"dimming duration\": this.dimmingDuration.toString(),\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface SceneControllerConfigurationCCReportOptions {\n\tgroupId: number;\n\tsceneId: number;\n\tdimmingDuration: Duration;\n}\n\n@CCCommand(SceneControllerConfigurationCommand.Report)\nexport class SceneControllerConfigurationCCReport\n\textends SceneControllerConfigurationCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<SceneControllerConfigurationCCReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.groupId = options.groupId;\n\t\tthis.sceneId = options.sceneId;\n\t\tthis.dimmingDuration = options.dimmingDuration;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): SceneControllerConfigurationCCReport {\n\t\tvalidatePayload(raw.payload.length >= 3);\n\t\tconst groupId = raw.payload[0];\n\t\tconst sceneId = raw.payload[1];\n\t\tconst dimmingDuration: Duration = Duration.parseReport(raw.payload[2])\n\t\t\t?? Duration.unknown();\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tsceneId,\n\t\t\tdimmingDuration,\n\t\t});\n\t}\n\n\tpublic readonly groupId: number;\n\tpublic readonly sceneId: number;\n\tpublic readonly dimmingDuration: Duration;\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\n\t\t// If groupId = 0, values are meaningless\n\t\tif (this.groupId === 0) return false;\n\n\t\tconst sceneIdValue = SceneControllerConfigurationCCValues.sceneId(\n\t\t\tthis.groupId,\n\t\t);\n\t\tthis.ensureMetadata(ctx, sceneIdValue);\n\t\tconst dimmingDurationValue = SceneControllerConfigurationCCValues\n\t\t\t.dimmingDuration(this.groupId);\n\t\tthis.ensureMetadata(ctx, dimmingDurationValue);\n\n\t\tthis.setValue(ctx, sceneIdValue, this.sceneId);\n\t\tthis.setValue(ctx, dimmingDurationValue, this.dimmingDuration);\n\n\t\treturn true;\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"group id\": this.groupId,\n\t\t\t\t\"scene id\": this.sceneId,\n\t\t\t\t\"dimming duration\": this.dimmingDuration.toString(),\n\t\t\t},\n\t\t};\n\t}\n}\n\nfunction testResponseForSceneControllerConfigurationGet(\n\tsent: SceneControllerConfigurationCCGet,\n\treceived: SceneControllerConfigurationCCReport,\n) {\n\t// We expect a Scene Controller Configuration Report that matches\n\t// the requested groupId, unless groupId 0 was requested\n\treturn sent.groupId === 0 || received.groupId === sent.groupId;\n}\n\n// @publicAPI\nexport interface SceneControllerConfigurationCCGetOptions {\n\tgroupId: number;\n}\n\n@CCCommand(SceneControllerConfigurationCommand.Get)\n@expectedCCResponse(\n\tSceneControllerConfigurationCCReport,\n\ttestResponseForSceneControllerConfigurationGet,\n)\nexport class SceneControllerConfigurationCCGet\n\textends SceneControllerConfigurationCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<SceneControllerConfigurationCCGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.groupId = options.groupId;\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): SceneControllerConfigurationCCGet {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new SceneControllerConfigurationCCGet({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic groupId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.groupId]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: { \"group id\": this.groupId },\n\t\t};\n\t}\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { type CCEncodingContext, type CCParsingContext } from \"@zwave-js/cc\";\nimport { type GetDeviceConfig } from \"@zwave-js/config\";\nimport {\n\tCommandClasses,\n\tDuration,\n\ttype EndpointId,\n\ttype GetValueDB,\n\ttype MaybeNotKnown,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\ttype SupervisionResult,\n\tValueMetadata,\n\ttype WithAddress,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tgetCCName,\n\tvalidatePayload,\n} from \"@zwave-js/core/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport { pick } from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport {\n\tCCAPI,\n\tPOLL_VALUE,\n\ttype PollValueImplementation,\n\tSET_VALUE,\n\ttype SetValueImplementation,\n\tthrowMissingPropertyKey,\n\tthrowUnsupportedProperty,\n\tthrowUnsupportedPropertyKey,\n\tthrowWrongValueType,\n} from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\n\ttype PersistValuesContext,\n\ttype RefreshValuesContext,\n} from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValues,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n\tuseSupervision,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { SceneControllerConfigurationCommand } from \"../lib/_Types.js\";\nimport { AssociationCC } from \"./AssociationCC.js\";\n\nexport const SceneControllerConfigurationCCValues = Object.freeze({\n\t...V.defineDynamicCCValues(\n\t\tCommandClasses[\"Scene Controller Configuration\"],\n\t\t{\n\t\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\t\"sceneId\",\n\t\t\t\t\"sceneId\",\n\t\t\t\t(groupId: number) => groupId,\n\t\t\t\t({ property, propertyKey }) =>\n\t\t\t\t\tproperty === \"sceneId\" && typeof propertyKey === \"number\",\n\t\t\t\t(groupId: number) => ({\n\t\t\t\t\t...ValueMetadata.UInt8,\n\t\t\t\t\tlabel: `Associated Scene ID (${groupId})`,\n\t\t\t\t\tvalueChangeOptions: [\"transitionDuration\"],\n\t\t\t\t} as const),\n\t\t\t),\n\n\t\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\t\"dimmingDuration\",\n\t\t\t\t\"dimmingDuration\",\n\t\t\t\t(groupId: number) => groupId,\n\t\t\t\t({ property, propertyKey }) =>\n\t\t\t\t\tproperty === \"dimmingDuration\"\n\t\t\t\t\t&& typeof propertyKey === \"number\",\n\t\t\t\t(groupId: number) => ({\n\t\t\t\t\t...ValueMetadata.Duration,\n\t\t\t\t\tlabel: `Dimming duration (${groupId})`,\n\t\t\t\t} as const),\n\t\t\t),\n\t\t},\n\t),\n});\n\n@API(CommandClasses[\"Scene Controller Configuration\"])\nexport class SceneControllerConfigurationCCAPI extends CCAPI {\n\tpublic supportsCommand(\n\t\tcmd: SceneControllerConfigurationCommand,\n\t): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase SceneControllerConfigurationCommand.Get:\n\t\t\t\treturn this.isSinglecast();\n\t\t\tcase SceneControllerConfigurationCommand.Set:\n\t\t\t\treturn true; // This is mandatory\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\tprotected override get [SET_VALUE](): SetValueImplementation {\n\t\treturn async function(\n\t\t\tthis: SceneControllerConfigurationCCAPI,\n\t\t\t{ property, propertyKey },\n\t\t\tvalue,\n\t\t\toptions,\n\t\t) {\n\t\t\tif (propertyKey == undefined) {\n\t\t\t\tthrowMissingPropertyKey(this.ccId, property);\n\t\t\t} else if (typeof propertyKey !== \"number\") {\n\t\t\t\tthrowUnsupportedPropertyKey(this.ccId, property, propertyKey);\n\t\t\t}\n\t\t\tif (property === \"sceneId\") {\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\t// Disable Group ID / Scene ID\n\t\t\t\t\treturn this.disable(propertyKey);\n\t\t\t\t} else {\n\t\t\t\t\t// We need to set the dimming duration along with the scene ID\n\t\t\t\t\t// Dimming duration is chosen with the following precedence:\n\t\t\t\t\t// 1. options.transitionDuration\n\t\t\t\t\t// 2. current stored value\n\t\t\t\t\t// 3. default value\n\t\t\t\t\tconst dimmingDuration =\n\t\t\t\t\t\tDuration.from(options?.transitionDuration)\n\t\t\t\t\t\t\t?? this.tryGetValueDB()?.getValue<Duration>(\n\t\t\t\t\t\t\t\tSceneControllerConfigurationCCValues\n\t\t\t\t\t\t\t\t\t.dimmingDuration(\n\t\t\t\t\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t\t\t\t\t).endpoint(this.endpoint.index),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t?? Duration.default();\n\t\t\t\t\treturn this.set(propertyKey, value, dimmingDuration);\n\t\t\t\t}\n\t\t\t} else if (property === \"dimmingDuration\") {\n\t\t\t\tif (typeof value !== \"string\" && !Duration.isDuration(value)) {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"duration\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst dimmingDuration = Duration.from(value);\n\t\t\t\tif (dimmingDuration == undefined) {\n\t\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t\t`${\n\t\t\t\t\t\t\tgetCCName(\n\t\t\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}: \"${property}\" could not be set. ${\n\t\t\t\t\t\t\tJSON.stringify(\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t} is not a valid duration.`,\n\t\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst valueDB = this.tryGetValueDB();\n\t\t\t\tconst sceneId = valueDB?.getValue<number>(\n\t\t\t\t\tSceneControllerConfigurationCCValues.sceneId(\n\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t).endpoint(this.endpoint.index),\n\t\t\t\t);\n\t\t\t\tif (sceneId == undefined || sceneId === 0) {\n\t\t\t\t\tif (valueDB) {\n\t\t\t\t\t\t// Can't actually send dimmingDuration without valid sceneId\n\t\t\t\t\t\t// So we save it in the valueDB without sending it to the node\n\t\t\t\t\t\tconst dimmingDurationValueId =\n\t\t\t\t\t\t\tSceneControllerConfigurationCCValues\n\t\t\t\t\t\t\t\t.dimmingDuration(\n\t\t\t\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t\t\t\t).endpoint(this.endpoint.index);\n\t\t\t\t\t\tvalueDB.setValue(\n\t\t\t\t\t\t\tdimmingDurationValueId,\n\t\t\t\t\t\t\tdimmingDuration,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\treturn this.set(propertyKey, sceneId, dimmingDuration);\n\t\t\t} else {\n\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n\n\tprotected get [POLL_VALUE](): PollValueImplementation {\n\t\treturn async function(\n\t\t\tthis: SceneControllerConfigurationCCAPI,\n\t\t\t{ property, propertyKey },\n\t\t) {\n\t\t\tswitch (property) {\n\t\t\t\tcase \"sceneId\":\n\t\t\t\tcase \"dimmingDuration\": {\n\t\t\t\t\tif (propertyKey == undefined) {\n\t\t\t\t\t\tthrowMissingPropertyKey(this.ccId, property);\n\t\t\t\t\t} else if (typeof propertyKey !== \"number\") {\n\t\t\t\t\t\tthrowUnsupportedPropertyKey(\n\t\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn (await this.get(propertyKey))?.[property];\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n\n\t@validateArgs()\n\tpublic async disable(\n\t\tgroupId: number,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSceneControllerConfigurationCommand,\n\t\t\tSceneControllerConfigurationCommand.Set,\n\t\t);\n\n\t\treturn this.set(groupId, 0, new Duration(0, \"seconds\"));\n\t}\n\n\t@validateArgs()\n\tpublic async set(\n\t\tgroupId: number,\n\t\tsceneId: number,\n\t\tdimmingDuration?: Duration | string,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSceneControllerConfigurationCommand,\n\t\t\tSceneControllerConfigurationCommand.Set,\n\t\t);\n\n\t\tif (!this.endpoint.virtual) {\n\t\t\tconst groupCount = SceneControllerConfigurationCC\n\t\t\t\t.getGroupCountCached(\n\t\t\t\t\tthis.host,\n\t\t\t\t\tthis.endpoint,\n\t\t\t\t);\n\n\t\t\t// The client SHOULD NOT specify group 1 (the life-line group).\n\t\t\t// We don't block it here, because the specs don't forbid it,\n\t\t\t// and it may be needed for some devices.\n\t\t\tif (groupId < 1 || groupId > groupCount) {\n\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t`${this.constructor.name}: The group ID must be between 1 and the number of supported groups ${groupCount}.`,\n\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (groupId < 1) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`The group ID must be greater than 0.`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\n\t\tconst cc = new SceneControllerConfigurationCCSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId,\n\t\t\tsceneId,\n\t\t\tdimmingDuration,\n\t\t});\n\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\tpublic async getLastActivated(): Promise<\n\t\tMaybeNotKnown<\n\t\t\tPick<\n\t\t\t\tSceneControllerConfigurationCCReport,\n\t\t\t\t\"groupId\" | \"sceneId\" | \"dimmingDuration\"\n\t\t\t>\n\t\t>\n\t> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSceneControllerConfigurationCommand,\n\t\t\tSceneControllerConfigurationCommand.Get,\n\t\t);\n\n\t\tconst cc = new SceneControllerConfigurationCCGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId: 0,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tSceneControllerConfigurationCCReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\n\t\t// Return value includes \"groupId\", because\n\t\t// the returned report will include the actual groupId of the\n\t\t// last activated groupId / sceneId\n\t\tif (response) {\n\t\t\treturn pick(response, [\"groupId\", \"sceneId\", \"dimmingDuration\"]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async get(\n\t\tgroupId: number,\n\t): Promise<\n\t\tMaybeNotKnown<\n\t\t\tPick<\n\t\t\t\tSceneControllerConfigurationCCReport,\n\t\t\t\t\"sceneId\" | \"dimmingDuration\"\n\t\t\t>\n\t\t>\n\t> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSceneControllerConfigurationCommand,\n\t\t\tSceneControllerConfigurationCommand.Get,\n\t\t);\n\n\t\tif (groupId === 0) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`Invalid group ID 0. To get the last activated group / scene, use getLastActivated() instead.`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t} else if (groupId < 0) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`The group ID must be greater than 0.`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\n\t\tconst cc = new SceneControllerConfigurationCCGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tSceneControllerConfigurationCCReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\n\t\t// Since groupId is not allowed to be 0, only Reports with\n\t\t// groupId equal to the requested groupId will be accepted,\n\t\t// so we can omit groupId from the return.\n\t\tif (response) {\n\t\t\treturn pick(response, [\"sceneId\", \"dimmingDuration\"]);\n\t\t}\n\t}\n}\n\n@commandClass(CommandClasses[\"Scene Controller Configuration\"])\n@implementedVersion(1)\n@ccValues(SceneControllerConfigurationCCValues)\nexport class SceneControllerConfigurationCC extends CommandClass {\n\tdeclare ccCommand: SceneControllerConfigurationCommand;\n\n\tpublic determineRequiredCCInterviews(): readonly CommandClasses[] {\n\t\t// AssociationCC is required and MUST be interviewed\n\t\t// before SceneControllerConfigurationCC to supply groupCount\n\t\treturn [\n\t\t\t...super.determineRequiredCCInterviews(),\n\t\t\tCommandClasses.Association,\n\t\t];\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/require-await\n\tpublic async interview(\n\t\tctx: InterviewContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: `Interviewing ${this.ccName}...`,\n\t\t\tdirection: \"none\",\n\t\t});\n\n\t\tconst groupCount = SceneControllerConfigurationCC.getGroupCountCached(\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t);\n\t\tif (groupCount === 0) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t`skipping Scene Controller Configuration interview because Association group count is unknown`,\n\t\t\t\tdirection: \"none\",\n\t\t\t\tlevel: \"warn\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\t// Create metadata for each scene, but don't query their actual configuration\n\t\t// since some devices only support setting scenes\n\t\tfor (let groupId = 1; groupId <= groupCount; groupId++) {\n\t\t\tconst sceneIdValue = SceneControllerConfigurationCCValues.sceneId(\n\t\t\t\tgroupId,\n\t\t\t);\n\t\t\tthis.ensureMetadata(ctx, sceneIdValue);\n\n\t\t\tconst dimmingDurationValue = SceneControllerConfigurationCCValues\n\t\t\t\t.dimmingDuration(groupId);\n\t\t\tthis.ensureMetadata(ctx, dimmingDurationValue);\n\t\t}\n\n\t\t// Remember that the interview is complete\n\t\tthis.setInterviewComplete(ctx, true);\n\t}\n\n\tpublic async refreshValues(\n\t\tctx: RefreshValuesContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\t\tconst api = CCAPI.create(\n\t\t\tCommandClasses[\"Scene Controller Configuration\"],\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\n\n\t\tconst groupCount = SceneControllerConfigurationCC.getGroupCountCached(\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t);\n\n\t\tctx.logNode(node.id, {\n\t\t\tmessage: \"querying all scene controller configurations...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tfor (let groupId = 1; groupId <= groupCount; groupId++) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t`querying scene configuration for group #${groupId}...`,\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst group = await api.get(groupId);\n\t\t\tif (group != undefined) {\n\t\t\t\tconst logMessage =\n\t\t\t\t\t`received scene configuration for group #${groupId}:\nscene ID: ${group.sceneId}\ndimming duration: ${group.dimmingDuration.toString()}`;\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\tmessage: logMessage,\n\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Returns the number of association groups reported by the node.\n\t * This only works AFTER the node has been interviewed by this CC\n\t * or the AssociationCC.\n\t */\n\tpublic static getGroupCountCached(\n\t\tctx: GetValueDB & GetDeviceConfig,\n\t\tendpoint: EndpointId,\n\t): number {\n\t\treturn ctx.getDeviceConfig?.(endpoint.nodeId)?.compat\n\t\t\t?.forceSceneControllerGroupCount\n\t\t\t?? AssociationCC.getGroupCountCached(ctx, endpoint)\n\t\t\t?? 0;\n\t}\n}\n\n// @publicAPI\nexport interface SceneControllerConfigurationCCSetOptions {\n\tgroupId: number;\n\tsceneId: number;\n\tdimmingDuration?: Duration | string;\n}\n\n@CCCommand(SceneControllerConfigurationCommand.Set)\n@useSupervision()\nexport class SceneControllerConfigurationCCSet\n\textends SceneControllerConfigurationCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<SceneControllerConfigurationCCSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.groupId = options.groupId;\n\t\tthis.sceneId = options.sceneId;\n\t\t// if dimmingDuration was missing, use default duration.\n\t\tthis.dimmingDuration = Duration.from(options.dimmingDuration)\n\t\t\t?? Duration.default();\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): SceneControllerConfigurationCCSet {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new SceneControllerConfigurationCCSet({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic groupId: number;\n\tpublic sceneId: number;\n\tpublic dimmingDuration: Duration;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.groupId,\n\t\t\tthis.sceneId,\n\t\t\tthis.dimmingDuration.serializeSet(),\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"group id\": this.groupId,\n\t\t\t\t\"scene id\": this.sceneId,\n\t\t\t\t\"dimming duration\": this.dimmingDuration.toString(),\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface SceneControllerConfigurationCCReportOptions {\n\tgroupId: number;\n\tsceneId: number;\n\tdimmingDuration: Duration;\n}\n\n@CCCommand(SceneControllerConfigurationCommand.Report)\nexport class SceneControllerConfigurationCCReport\n\textends SceneControllerConfigurationCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<SceneControllerConfigurationCCReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.groupId = options.groupId;\n\t\tthis.sceneId = options.sceneId;\n\t\tthis.dimmingDuration = options.dimmingDuration;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): SceneControllerConfigurationCCReport {\n\t\tvalidatePayload(raw.payload.length >= 3);\n\t\tconst groupId = raw.payload[0];\n\t\tconst sceneId = raw.payload[1];\n\t\tconst dimmingDuration: Duration = Duration.parseReport(raw.payload[2])\n\t\t\t?? Duration.unknown();\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tsceneId,\n\t\t\tdimmingDuration,\n\t\t});\n\t}\n\n\tpublic readonly groupId: number;\n\tpublic readonly sceneId: number;\n\tpublic readonly dimmingDuration: Duration;\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\n\t\t// If groupId = 0, values are meaningless\n\t\tif (this.groupId === 0) return false;\n\n\t\tconst sceneIdValue = SceneControllerConfigurationCCValues.sceneId(\n\t\t\tthis.groupId,\n\t\t);\n\t\tthis.ensureMetadata(ctx, sceneIdValue);\n\t\tconst dimmingDurationValue = SceneControllerConfigurationCCValues\n\t\t\t.dimmingDuration(this.groupId);\n\t\tthis.ensureMetadata(ctx, dimmingDurationValue);\n\n\t\tthis.setValue(ctx, sceneIdValue, this.sceneId);\n\t\tthis.setValue(ctx, dimmingDurationValue, this.dimmingDuration);\n\n\t\treturn true;\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"group id\": this.groupId,\n\t\t\t\t\"scene id\": this.sceneId,\n\t\t\t\t\"dimming duration\": this.dimmingDuration.toString(),\n\t\t\t},\n\t\t};\n\t}\n}\n\nfunction testResponseForSceneControllerConfigurationGet(\n\tsent: SceneControllerConfigurationCCGet,\n\treceived: SceneControllerConfigurationCCReport,\n) {\n\t// We expect a Scene Controller Configuration Report that matches\n\t// the requested groupId, unless groupId 0 was requested\n\treturn sent.groupId === 0 || received.groupId === sent.groupId;\n}\n\n// @publicAPI\nexport interface SceneControllerConfigurationCCGetOptions {\n\tgroupId: number;\n}\n\n@CCCommand(SceneControllerConfigurationCommand.Get)\n@expectedCCResponse(\n\tSceneControllerConfigurationCCReport,\n\ttestResponseForSceneControllerConfigurationGet,\n)\nexport class SceneControllerConfigurationCCGet\n\textends SceneControllerConfigurationCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<SceneControllerConfigurationCCGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.groupId = options.groupId;\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): SceneControllerConfigurationCCGet {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new SceneControllerConfigurationCCGet({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic groupId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.groupId]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: { \"group id\": this.groupId },\n\t\t};\n\t}\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["import_safe", "SceneControllerConfigurationCC"]
7
7
  }