@zwave-js/cc 15.25.1 → 15.25.3

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 (314) hide show
  1. package/build/cjs/cc/AlarmSensorCC.js +15 -17
  2. package/build/cjs/cc/AlarmSensorCC.js.map +2 -2
  3. package/build/cjs/cc/AssociationCC.d.ts +1 -1
  4. package/build/cjs/cc/AssociationCC.js +5 -2
  5. package/build/cjs/cc/AssociationCC.js.map +2 -2
  6. package/build/cjs/cc/AssociationGroupInfoCC.js +23 -18
  7. package/build/cjs/cc/AssociationGroupInfoCC.js.map +2 -2
  8. package/build/cjs/cc/BarrierOperatorCC.js +9 -7
  9. package/build/cjs/cc/BarrierOperatorCC.js.map +2 -2
  10. package/build/cjs/cc/BasicCC.js +3 -2
  11. package/build/cjs/cc/BasicCC.js.map +2 -2
  12. package/build/cjs/cc/BatteryCC.js +3 -2
  13. package/build/cjs/cc/BatteryCC.js.map +2 -2
  14. package/build/cjs/cc/BinarySensorCC.js +8 -6
  15. package/build/cjs/cc/BinarySensorCC.js.map +2 -2
  16. package/build/cjs/cc/BinarySwitchCC.js +3 -2
  17. package/build/cjs/cc/BinarySwitchCC.js.map +2 -2
  18. package/build/cjs/cc/CentralSceneCC.js +9 -7
  19. package/build/cjs/cc/CentralSceneCC.js.map +2 -2
  20. package/build/cjs/cc/ClockCC.js +3 -2
  21. package/build/cjs/cc/ClockCC.js.map +2 -2
  22. package/build/cjs/cc/ColorSwitchCC.js +9 -6
  23. package/build/cjs/cc/ColorSwitchCC.js.map +2 -2
  24. package/build/cjs/cc/ConfigurationCC.js +27 -27
  25. package/build/cjs/cc/ConfigurationCC.js.map +2 -2
  26. package/build/cjs/cc/DoorLockCC.js +49 -63
  27. package/build/cjs/cc/DoorLockCC.js.map +2 -2
  28. package/build/cjs/cc/DoorLockLoggingCC.js +3 -2
  29. package/build/cjs/cc/DoorLockLoggingCC.js.map +2 -2
  30. package/build/cjs/cc/EnergyProductionCC.js +3 -2
  31. package/build/cjs/cc/EnergyProductionCC.js.map +2 -2
  32. package/build/cjs/cc/EntryControlCC.js +5 -3
  33. package/build/cjs/cc/EntryControlCC.js.map +2 -2
  34. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js +2 -1
  35. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js.map +2 -2
  36. package/build/cjs/cc/HumidityControlModeCC.js +9 -8
  37. package/build/cjs/cc/HumidityControlModeCC.js.map +2 -2
  38. package/build/cjs/cc/HumidityControlOperatingStateCC.js +3 -2
  39. package/build/cjs/cc/HumidityControlOperatingStateCC.js.map +2 -2
  40. package/build/cjs/cc/HumidityControlSetpointCC.js +19 -17
  41. package/build/cjs/cc/HumidityControlSetpointCC.js.map +2 -2
  42. package/build/cjs/cc/IndicatorCC.js +5 -2
  43. package/build/cjs/cc/IndicatorCC.js.map +2 -2
  44. package/build/cjs/cc/IrrigationCC.js +26 -27
  45. package/build/cjs/cc/IrrigationCC.js.map +2 -2
  46. package/build/cjs/cc/LanguageCC.js +3 -2
  47. package/build/cjs/cc/LanguageCC.js.map +2 -2
  48. package/build/cjs/cc/LockCC.js +3 -2
  49. package/build/cjs/cc/LockCC.js.map +2 -2
  50. package/build/cjs/cc/ManufacturerSpecificCC.js +4 -1
  51. package/build/cjs/cc/ManufacturerSpecificCC.js.map +2 -2
  52. package/build/cjs/cc/MeterCC.js +14 -13
  53. package/build/cjs/cc/MeterCC.js.map +2 -2
  54. package/build/cjs/cc/MultiChannelAssociationCC.js +5 -2
  55. package/build/cjs/cc/MultiChannelAssociationCC.js.map +2 -2
  56. package/build/cjs/cc/MultiChannelCC.d.ts +1 -1
  57. package/build/cjs/cc/MultiChannelCC.js +19 -22
  58. package/build/cjs/cc/MultiChannelCC.js.map +2 -2
  59. package/build/cjs/cc/MultilevelSensorCC.js +13 -8
  60. package/build/cjs/cc/MultilevelSensorCC.js.map +2 -2
  61. package/build/cjs/cc/MultilevelSwitchCC.js +5 -3
  62. package/build/cjs/cc/MultilevelSwitchCC.js.map +2 -2
  63. package/build/cjs/cc/NodeNamingCC.js +3 -2
  64. package/build/cjs/cc/NodeNamingCC.js.map +2 -2
  65. package/build/cjs/cc/NotificationCC.js +11 -11
  66. package/build/cjs/cc/NotificationCC.js.map +2 -2
  67. package/build/cjs/cc/ProtectionCC.js +16 -15
  68. package/build/cjs/cc/ProtectionCC.js.map +2 -2
  69. package/build/cjs/cc/SceneControllerConfigurationCC.js +2 -1
  70. package/build/cjs/cc/SceneControllerConfigurationCC.js.map +2 -2
  71. package/build/cjs/cc/ScheduleEntryLockCC.js +2 -1
  72. package/build/cjs/cc/ScheduleEntryLockCC.js.map +2 -2
  73. package/build/cjs/cc/Security2CC.js +15 -24
  74. package/build/cjs/cc/Security2CC.js.map +2 -2
  75. package/build/cjs/cc/SecurityCC.js +10 -17
  76. package/build/cjs/cc/SecurityCC.js.map +2 -2
  77. package/build/cjs/cc/SoundSwitchCC.js +2 -1
  78. package/build/cjs/cc/SoundSwitchCC.js.map +2 -2
  79. package/build/cjs/cc/ThermostatFanModeCC.js +9 -7
  80. package/build/cjs/cc/ThermostatFanModeCC.js.map +2 -2
  81. package/build/cjs/cc/ThermostatFanStateCC.js +3 -2
  82. package/build/cjs/cc/ThermostatFanStateCC.js.map +2 -2
  83. package/build/cjs/cc/ThermostatModeCC.js +9 -7
  84. package/build/cjs/cc/ThermostatModeCC.js.map +2 -2
  85. package/build/cjs/cc/ThermostatOperatingStateCC.js +4 -4
  86. package/build/cjs/cc/ThermostatOperatingStateCC.js.map +2 -2
  87. package/build/cjs/cc/ThermostatSetbackCC.js +3 -2
  88. package/build/cjs/cc/ThermostatSetbackCC.js.map +2 -2
  89. package/build/cjs/cc/ThermostatSetpointCC.js +9 -5
  90. package/build/cjs/cc/ThermostatSetpointCC.js.map +2 -2
  91. package/build/cjs/cc/TimeCC.js +2 -1
  92. package/build/cjs/cc/TimeCC.js.map +2 -2
  93. package/build/cjs/cc/TimeParametersCC.js +2 -1
  94. package/build/cjs/cc/TimeParametersCC.js.map +2 -2
  95. package/build/cjs/cc/UserCodeCC.js +6 -6
  96. package/build/cjs/cc/UserCodeCC.js.map +2 -2
  97. package/build/cjs/cc/UserCredentialCC.js +5 -2
  98. package/build/cjs/cc/UserCredentialCC.js.map +2 -2
  99. package/build/cjs/cc/VersionCC.js +2 -1
  100. package/build/cjs/cc/VersionCC.js.map +2 -2
  101. package/build/cjs/cc/WakeUpCC.js +2 -1
  102. package/build/cjs/cc/WakeUpCC.js.map +2 -2
  103. package/build/cjs/cc/WindowCoveringCC.js +10 -7
  104. package/build/cjs/cc/WindowCoveringCC.js.map +2 -2
  105. package/build/cjs/cc/ZWavePlusCC.js +2 -1
  106. package/build/cjs/cc/ZWavePlusCC.js.map +2 -2
  107. package/build/cjs/cc/_CCValues.generated.d.ts +4 -4
  108. package/build/cjs/cc/_CCValues.generated.js +2 -2
  109. package/build/cjs/cc/_CCValues.generated.js.map +1 -1
  110. package/build/cjs/cc/index.d.ts +3 -3
  111. package/build/cjs/cc/index.js.map +2 -2
  112. package/build/cjs/cc/manufacturerProprietary/Decorators.d.ts +1 -1
  113. package/build/cjs/cc/manufacturerProprietary/Decorators.js.map +2 -2
  114. package/build/cjs/cc/manufacturerProprietary/FibaroCC.js +3 -2
  115. package/build/cjs/cc/manufacturerProprietary/FibaroCC.js.map +2 -2
  116. package/build/cjs/lib/API.js.map +2 -2
  117. package/build/cjs/lib/CommandClass.d.ts +5 -1
  118. package/build/cjs/lib/CommandClass.js +25 -3
  119. package/build/cjs/lib/CommandClass.js.map +2 -2
  120. package/build/cjs/lib/CommandClassDecorators.d.ts +4 -4
  121. package/build/cjs/lib/CommandClassDecorators.js.map +2 -2
  122. package/build/cjs/lib/Security2/Extension.d.ts +6 -4
  123. package/build/cjs/lib/Security2/Extension.js +22 -20
  124. package/build/cjs/lib/Security2/Extension.js.map +2 -2
  125. package/build/cjs/lib/_Types.js.map +1 -1
  126. package/build/cjs/lib/utils.js +14 -8
  127. package/build/cjs/lib/utils.js.map +2 -2
  128. package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
  129. package/build/esm/cc/AlarmSensorCC.js +14 -18
  130. package/build/esm/cc/AlarmSensorCC.js.map +1 -1
  131. package/build/esm/cc/AssociationCC.d.ts +1 -1
  132. package/build/esm/cc/AssociationCC.d.ts.map +1 -1
  133. package/build/esm/cc/AssociationCC.js +3 -0
  134. package/build/esm/cc/AssociationCC.js.map +1 -1
  135. package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
  136. package/build/esm/cc/AssociationGroupInfoCC.js +24 -22
  137. package/build/esm/cc/AssociationGroupInfoCC.js.map +1 -1
  138. package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
  139. package/build/esm/cc/BarrierOperatorCC.js +8 -8
  140. package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
  141. package/build/esm/cc/BasicCC.d.ts.map +1 -1
  142. package/build/esm/cc/BasicCC.js +2 -1
  143. package/build/esm/cc/BasicCC.js.map +1 -1
  144. package/build/esm/cc/BatteryCC.d.ts.map +1 -1
  145. package/build/esm/cc/BatteryCC.js +2 -1
  146. package/build/esm/cc/BatteryCC.js.map +1 -1
  147. package/build/esm/cc/BinarySensorCC.d.ts.map +1 -1
  148. package/build/esm/cc/BinarySensorCC.js +7 -7
  149. package/build/esm/cc/BinarySensorCC.js.map +1 -1
  150. package/build/esm/cc/BinarySwitchCC.d.ts.map +1 -1
  151. package/build/esm/cc/BinarySwitchCC.js +2 -1
  152. package/build/esm/cc/BinarySwitchCC.js.map +1 -1
  153. package/build/esm/cc/CentralSceneCC.d.ts.map +1 -1
  154. package/build/esm/cc/CentralSceneCC.js +9 -8
  155. package/build/esm/cc/CentralSceneCC.js.map +1 -1
  156. package/build/esm/cc/ClockCC.d.ts.map +1 -1
  157. package/build/esm/cc/ClockCC.js +2 -1
  158. package/build/esm/cc/ClockCC.js.map +1 -1
  159. package/build/esm/cc/ColorSwitchCC.d.ts.map +1 -1
  160. package/build/esm/cc/ColorSwitchCC.js +8 -7
  161. package/build/esm/cc/ColorSwitchCC.js.map +1 -1
  162. package/build/esm/cc/ConfigurationCC.d.ts.map +1 -1
  163. package/build/esm/cc/ConfigurationCC.js +32 -29
  164. package/build/esm/cc/ConfigurationCC.js.map +1 -1
  165. package/build/esm/cc/DoorLockCC.d.ts.map +1 -1
  166. package/build/esm/cc/DoorLockCC.js +73 -74
  167. package/build/esm/cc/DoorLockCC.js.map +1 -1
  168. package/build/esm/cc/DoorLockLoggingCC.d.ts.map +1 -1
  169. package/build/esm/cc/DoorLockLoggingCC.js +2 -1
  170. package/build/esm/cc/DoorLockLoggingCC.js.map +1 -1
  171. package/build/esm/cc/EnergyProductionCC.d.ts.map +1 -1
  172. package/build/esm/cc/EnergyProductionCC.js +2 -1
  173. package/build/esm/cc/EnergyProductionCC.js.map +1 -1
  174. package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
  175. package/build/esm/cc/EntryControlCC.js +3 -1
  176. package/build/esm/cc/EntryControlCC.js.map +1 -1
  177. package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts.map +1 -1
  178. package/build/esm/cc/FirmwareUpdateMetaDataCC.js +1 -0
  179. package/build/esm/cc/FirmwareUpdateMetaDataCC.js.map +1 -1
  180. package/build/esm/cc/HumidityControlModeCC.d.ts.map +1 -1
  181. package/build/esm/cc/HumidityControlModeCC.js +8 -9
  182. package/build/esm/cc/HumidityControlModeCC.js.map +1 -1
  183. package/build/esm/cc/HumidityControlOperatingStateCC.d.ts.map +1 -1
  184. package/build/esm/cc/HumidityControlOperatingStateCC.js +2 -1
  185. package/build/esm/cc/HumidityControlOperatingStateCC.js.map +1 -1
  186. package/build/esm/cc/HumidityControlSetpointCC.d.ts.map +1 -1
  187. package/build/esm/cc/HumidityControlSetpointCC.js +18 -23
  188. package/build/esm/cc/HumidityControlSetpointCC.js.map +1 -1
  189. package/build/esm/cc/IndicatorCC.d.ts.map +1 -1
  190. package/build/esm/cc/IndicatorCC.js +3 -0
  191. package/build/esm/cc/IndicatorCC.js.map +1 -1
  192. package/build/esm/cc/IrrigationCC.d.ts.map +1 -1
  193. package/build/esm/cc/IrrigationCC.js +29 -24
  194. package/build/esm/cc/IrrigationCC.js.map +1 -1
  195. package/build/esm/cc/LanguageCC.d.ts.map +1 -1
  196. package/build/esm/cc/LanguageCC.js +2 -1
  197. package/build/esm/cc/LanguageCC.js.map +1 -1
  198. package/build/esm/cc/LockCC.d.ts.map +1 -1
  199. package/build/esm/cc/LockCC.js +2 -1
  200. package/build/esm/cc/LockCC.js.map +1 -1
  201. package/build/esm/cc/ManufacturerSpecificCC.d.ts.map +1 -1
  202. package/build/esm/cc/ManufacturerSpecificCC.js +4 -1
  203. package/build/esm/cc/ManufacturerSpecificCC.js.map +1 -1
  204. package/build/esm/cc/MeterCC.d.ts.map +1 -1
  205. package/build/esm/cc/MeterCC.js +15 -19
  206. package/build/esm/cc/MeterCC.js.map +1 -1
  207. package/build/esm/cc/MultiChannelAssociationCC.d.ts.map +1 -1
  208. package/build/esm/cc/MultiChannelAssociationCC.js +3 -0
  209. package/build/esm/cc/MultiChannelAssociationCC.js.map +1 -1
  210. package/build/esm/cc/MultiChannelCC.d.ts +1 -1
  211. package/build/esm/cc/MultiChannelCC.d.ts.map +1 -1
  212. package/build/esm/cc/MultiChannelCC.js +19 -23
  213. package/build/esm/cc/MultiChannelCC.js.map +1 -1
  214. package/build/esm/cc/MultilevelSensorCC.d.ts.map +1 -1
  215. package/build/esm/cc/MultilevelSensorCC.js +14 -19
  216. package/build/esm/cc/MultilevelSensorCC.js.map +1 -1
  217. package/build/esm/cc/MultilevelSwitchCC.d.ts.map +1 -1
  218. package/build/esm/cc/MultilevelSwitchCC.js +3 -1
  219. package/build/esm/cc/MultilevelSwitchCC.js.map +1 -1
  220. package/build/esm/cc/NodeNamingCC.d.ts.map +1 -1
  221. package/build/esm/cc/NodeNamingCC.js +2 -1
  222. package/build/esm/cc/NodeNamingCC.js.map +1 -1
  223. package/build/esm/cc/NotificationCC.d.ts.map +1 -1
  224. package/build/esm/cc/NotificationCC.js +11 -14
  225. package/build/esm/cc/NotificationCC.js.map +1 -1
  226. package/build/esm/cc/ProtectionCC.d.ts.map +1 -1
  227. package/build/esm/cc/ProtectionCC.js +15 -22
  228. package/build/esm/cc/ProtectionCC.js.map +1 -1
  229. package/build/esm/cc/SceneControllerConfigurationCC.d.ts.map +1 -1
  230. package/build/esm/cc/SceneControllerConfigurationCC.js +1 -0
  231. package/build/esm/cc/SceneControllerConfigurationCC.js.map +1 -1
  232. package/build/esm/cc/ScheduleEntryLockCC.d.ts.map +1 -1
  233. package/build/esm/cc/ScheduleEntryLockCC.js +1 -0
  234. package/build/esm/cc/ScheduleEntryLockCC.js.map +1 -1
  235. package/build/esm/cc/Security2CC.d.ts.map +1 -1
  236. package/build/esm/cc/Security2CC.js +15 -32
  237. package/build/esm/cc/Security2CC.js.map +1 -1
  238. package/build/esm/cc/SecurityCC.d.ts.map +1 -1
  239. package/build/esm/cc/SecurityCC.js +10 -21
  240. package/build/esm/cc/SecurityCC.js.map +1 -1
  241. package/build/esm/cc/SoundSwitchCC.d.ts.map +1 -1
  242. package/build/esm/cc/SoundSwitchCC.js +1 -0
  243. package/build/esm/cc/SoundSwitchCC.js.map +1 -1
  244. package/build/esm/cc/ThermostatFanModeCC.d.ts.map +1 -1
  245. package/build/esm/cc/ThermostatFanModeCC.js +8 -8
  246. package/build/esm/cc/ThermostatFanModeCC.js.map +1 -1
  247. package/build/esm/cc/ThermostatFanStateCC.d.ts.map +1 -1
  248. package/build/esm/cc/ThermostatFanStateCC.js +2 -1
  249. package/build/esm/cc/ThermostatFanStateCC.js.map +1 -1
  250. package/build/esm/cc/ThermostatModeCC.d.ts.map +1 -1
  251. package/build/esm/cc/ThermostatModeCC.js +8 -8
  252. package/build/esm/cc/ThermostatModeCC.js.map +1 -1
  253. package/build/esm/cc/ThermostatOperatingStateCC.d.ts.map +1 -1
  254. package/build/esm/cc/ThermostatOperatingStateCC.js +4 -5
  255. package/build/esm/cc/ThermostatOperatingStateCC.js.map +1 -1
  256. package/build/esm/cc/ThermostatSetbackCC.d.ts.map +1 -1
  257. package/build/esm/cc/ThermostatSetbackCC.js +2 -1
  258. package/build/esm/cc/ThermostatSetbackCC.js.map +1 -1
  259. package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
  260. package/build/esm/cc/ThermostatSetpointCC.js +8 -9
  261. package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
  262. package/build/esm/cc/TimeCC.d.ts.map +1 -1
  263. package/build/esm/cc/TimeCC.js +1 -0
  264. package/build/esm/cc/TimeCC.js.map +1 -1
  265. package/build/esm/cc/TimeParametersCC.d.ts.map +1 -1
  266. package/build/esm/cc/TimeParametersCC.js +1 -0
  267. package/build/esm/cc/TimeParametersCC.js.map +1 -1
  268. package/build/esm/cc/UserCodeCC.d.ts.map +1 -1
  269. package/build/esm/cc/UserCodeCC.js +5 -7
  270. package/build/esm/cc/UserCodeCC.js.map +1 -1
  271. package/build/esm/cc/UserCredentialCC.d.ts.map +1 -1
  272. package/build/esm/cc/UserCredentialCC.js +4 -1
  273. package/build/esm/cc/UserCredentialCC.js.map +1 -1
  274. package/build/esm/cc/VersionCC.d.ts.map +1 -1
  275. package/build/esm/cc/VersionCC.js +1 -0
  276. package/build/esm/cc/VersionCC.js.map +1 -1
  277. package/build/esm/cc/WakeUpCC.d.ts.map +1 -1
  278. package/build/esm/cc/WakeUpCC.js +1 -0
  279. package/build/esm/cc/WakeUpCC.js.map +1 -1
  280. package/build/esm/cc/WindowCoveringCC.d.ts.map +1 -1
  281. package/build/esm/cc/WindowCoveringCC.js +9 -9
  282. package/build/esm/cc/WindowCoveringCC.js.map +1 -1
  283. package/build/esm/cc/ZWavePlusCC.d.ts.map +1 -1
  284. package/build/esm/cc/ZWavePlusCC.js +1 -0
  285. package/build/esm/cc/ZWavePlusCC.js.map +1 -1
  286. package/build/esm/cc/_CCValues.generated.d.ts +4 -4
  287. package/build/esm/cc/_CCValues.generated.js +2 -2
  288. package/build/esm/cc/_CCValues.generated.js.map +1 -1
  289. package/build/esm/cc/index.d.ts +3 -3
  290. package/build/esm/cc/index.d.ts.map +1 -1
  291. package/build/esm/cc/index.js.map +1 -1
  292. package/build/esm/cc/manufacturerProprietary/Decorators.d.ts +1 -1
  293. package/build/esm/cc/manufacturerProprietary/Decorators.d.ts.map +1 -1
  294. package/build/esm/cc/manufacturerProprietary/Decorators.js.map +1 -1
  295. package/build/esm/cc/manufacturerProprietary/FibaroCC.d.ts.map +1 -1
  296. package/build/esm/cc/manufacturerProprietary/FibaroCC.js +2 -1
  297. package/build/esm/cc/manufacturerProprietary/FibaroCC.js.map +1 -1
  298. package/build/esm/lib/API.js.map +1 -1
  299. package/build/esm/lib/CommandClass.d.ts +5 -1
  300. package/build/esm/lib/CommandClass.d.ts.map +1 -1
  301. package/build/esm/lib/CommandClass.js +30 -4
  302. package/build/esm/lib/CommandClass.js.map +1 -1
  303. package/build/esm/lib/CommandClassDecorators.d.ts +4 -4
  304. package/build/esm/lib/CommandClassDecorators.d.ts.map +1 -1
  305. package/build/esm/lib/CommandClassDecorators.js.map +1 -1
  306. package/build/esm/lib/Security2/Extension.d.ts +6 -4
  307. package/build/esm/lib/Security2/Extension.d.ts.map +1 -1
  308. package/build/esm/lib/Security2/Extension.js +23 -21
  309. package/build/esm/lib/Security2/Extension.js.map +1 -1
  310. package/build/esm/lib/_Types.js +1 -1
  311. package/build/esm/lib/utils.d.ts.map +1 -1
  312. package/build/esm/lib/utils.js +15 -9
  313. package/build/esm/lib/utils.js.map +1 -1
  314. package/package.json +7 -7
@@ -244,7 +244,8 @@ let VersionCC = (() => {
244
244
  const node = this.getNode(ctx);
245
245
  const endpoint = this.getEndpoint(ctx);
246
246
  const api = import_API.CCAPI.create(import_core.CommandClasses.Version, ctx, node).withOptions({
247
- priority: import_core.MessagePriority.NodeQuery
247
+ priority: import_core.MessagePriority.NodeQuery,
248
+ tag: "interview"
248
249
  });
249
250
  ctx.logNode(node.id, {
250
251
  endpoint: this.endpointIndex,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src_gen/cc/VersionCC.ts"],
4
- "sourcesContent": ["import * as __validateArgs from \"./VersionCC._validateArgs.js\";\nconst { validateArgs_VersionCCAPI_sendReport, validateArgs_VersionCCAPI_getCCVersion, validateArgs_VersionCCAPI_reportCCVersion } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, SecurityClass, ValueMetadata, type WithAddress, ZWaveError, ZWaveErrorCodes, ZWaveLibraryTypes, enumValuesToMetadataStates, getCCName, securityClassIsS2, securityClassOrder, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, type BytesView, getEnumMemberName, num2hex, pick, } from \"@zwave-js/shared\";\nimport { CCAPI, PhysicalCCAPI } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, getImplementedVersion, implementedVersion, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { VersionCommand } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { VersionCCValues } from \"./_CCValues.generated.js\";\nexport { VersionCCValues };\nfunction parseVersion(buffer: BytesView): string {\n if (buffer[0] === 0 && buffer[1] === 0 && buffer[2] === 0)\n return \"unused\";\n return `${buffer[0]}.${buffer[1]}.${buffer[2]}`;\n}\n// @noSetValueAPI This CC is read-only\n@API(CommandClasses.Version)\nexport class VersionCCAPI extends PhysicalCCAPI {\n public supportsCommand(cmd: VersionCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case VersionCommand.Get:\n case VersionCommand.Report:\n case VersionCommand.CommandClassGet:\n case VersionCommand.CommandClassReport:\n return true; // This is mandatory\n case VersionCommand.CapabilitiesGet:\n case VersionCommand.CapabilitiesReport:\n case VersionCommand.ZWaveSoftwareReport:\n return this.version >= 3;\n case VersionCommand.ZWaveSoftwareGet: {\n return this.getValueDB().getValue<boolean>(VersionCCValues.supportsZWaveSoftwareGet.endpoint(this.endpoint.index));\n }\n }\n return super.supportsCommand(cmd);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async get() {\n this.assertSupportsCommand(VersionCommand, VersionCommand.Get);\n const cc = new VersionCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<VersionCCReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"libraryType\",\n \"protocolVersion\",\n \"firmwareVersions\",\n \"hardwareVersion\",\n ]);\n }\n }\n @validateArgs_VersionCCAPI_sendReport()\n public async sendReport(options: VersionCCReportOptions): Promise<void> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.Report);\n const cc = new VersionCCReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n @validateArgs_VersionCCAPI_getCCVersion()\n public async getCCVersion(requestedCC: CommandClasses): Promise<MaybeNotKnown<number>> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CommandClassGet);\n const cc = new VersionCCCommandClassGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n requestedCC,\n });\n const response = await this.host.sendCommand<VersionCCCommandClassReport>(cc, this.commandOptions);\n return response?.ccVersion;\n }\n @validateArgs_VersionCCAPI_reportCCVersion()\n /**\n * @param version The version to report. If not given, the implemented version will be used for the report.\n */\n public async reportCCVersion(requestedCC: CommandClasses, version?: number): Promise<void> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CommandClassReport);\n let ccVersion: number;\n switch (requestedCC) {\n case CommandClasses[\"Z-Wave Protocol\"]:\n case CommandClasses[\"Z-Wave Long Range\"]:\n // These two are only for internal use\n ccVersion = 0;\n break;\n case CommandClasses.Hail:\n case CommandClasses[\"Manufacturer Proprietary\"]:\n // These CCs are obsolete, we cannot enter them in the certification portal\n // but not doing so fails a certification test. Just respond that they\n // are not supported or controlled\n ccVersion = 0;\n break;\n default:\n ccVersion = version ?? getImplementedVersion(requestedCC);\n break;\n }\n const cc = new VersionCCCommandClassReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n requestedCC,\n ccVersion,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getCapabilities() {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CapabilitiesGet);\n const cc = new VersionCCCapabilitiesGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<VersionCCCapabilitiesReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\"supportsZWaveSoftwareGet\"]);\n }\n }\n public async reportCapabilities(): Promise<void> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CapabilitiesReport);\n const cc = new VersionCCCapabilitiesReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n // At this time, we do not support responding to Z-Wave Software Get\n supportsZWaveSoftwareGet: false,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getZWaveSoftware() {\n this.assertSupportsCommand(VersionCommand, VersionCommand.ZWaveSoftwareGet);\n const cc = new VersionCCZWaveSoftwareGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<VersionCCZWaveSoftwareReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"sdkVersion\",\n \"applicationFrameworkAPIVersion\",\n \"applicationFrameworkBuildNumber\",\n \"hostInterfaceVersion\",\n \"hostInterfaceBuildNumber\",\n \"zWaveProtocolVersion\",\n \"zWaveProtocolBuildNumber\",\n \"applicationVersion\",\n \"applicationBuildNumber\",\n ]);\n }\n }\n}\n@commandClass(CommandClasses.Version)\n@implementedVersion(3)\n@ccValues(VersionCCValues)\nexport class VersionCC extends CommandClass {\n declare ccCommand: VersionCommand;\n public determineRequiredCCInterviews(): readonly CommandClasses[] {\n // VersionCC must be the 2nd CC after ManufacturerSpecificCC\n return [CommandClasses[\"Manufacturer Specific\"]];\n }\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n // SDS13782: In a Multi Channel device, the Version Command Class MUST be supported by the Root Device, while\n // the Version Command Class SHOULD NOT be supported by individual End Points.\n //\n // There may be cases where a given Command Class is not implemented by the Root Device of a Multi\n // Channel device. However, the Root Device MUST respond to Version requests for any Command Class\n // implemented by the Multi Channel device; also in cases where the actual Command Class is only\n // provided by an End Point.\n const endpoint = this.getEndpoint(ctx)!;\n // Use the CC API of the root device for all queries\n const api = CCAPI.create(CommandClasses.Version, ctx, node).withOptions({\n priority: MessagePriority.NodeQuery,\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n const queryCCVersion = async (cc: CommandClasses): Promise<void> => {\n // Only query CCs we support. Theoretically we could skip queries where we support only V1,\n // but there are Z-Wave certification tests that require us to query all CCs\n const maxImplemented = getImplementedVersion(cc);\n if (maxImplemented === 0) {\n ctx.logNode(node.id, ` skipping query for ${CommandClasses[cc]} (${num2hex(cc)}) because max implemented version is ${maxImplemented}`);\n return;\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: ` querying the CC version for ${getCCName(cc)}...`,\n direction: \"outbound\",\n });\n // query the CC version\n const supportedVersion = await api.getCCVersion(cc);\n if (supportedVersion != undefined) {\n // Remember which CC version this endpoint supports\n let logMessage: string;\n if (supportedVersion > 0) {\n // Basic CC has special rules for when it is considered supported\n // Therefore we mark all other CCs as supported, but not Basic CC,\n // for which support is determined later.\n if (cc === CommandClasses.Basic) {\n endpoint.addCC(cc, { version: supportedVersion });\n }\n else if (endpoint.controlsCC(cc) && !endpoint.supportsCC(cc)) {\n // The node only advertised this CC as controlled (e.g. in the NIF).\n // Remember the version so its values can be exposed, but do not\n // promote it to a supported CC.\n endpoint.addCC(cc, {\n isControlled: true,\n version: supportedVersion,\n });\n }\n else {\n endpoint.addCC(cc, {\n isSupported: true,\n version: supportedVersion,\n });\n }\n logMessage = ` supports CC ${CommandClasses[cc]} (${num2hex(cc)}) in version ${supportedVersion}`;\n }\n else {\n // We were lied to - the NIF said this CC is supported, now the node claims it isn't\n // Make sure this is not a critical CC, which must be supported though\n if (cc === CommandClasses.Version\n || cc === CommandClasses[\"Manufacturer Specific\"]) {\n logMessage = ` claims NOT to support CC ${CommandClasses[cc]} (${num2hex(cc)}), but it must. Assuming the ${this.endpointIndex === 0 ? \"node\" : \"endpoint\"} supports version 1...`;\n endpoint.addCC(cc, { version: 1 });\n }\n else if ((cc === CommandClasses.Security\n && node.hasSecurityClass(SecurityClass.S0_Legacy))\n || (cc === CommandClasses[\"Security 2\"]\n && securityClassOrder.some((sc) => securityClassIsS2(sc)\n && node.hasSecurityClass(sc)))) {\n logMessage = ` claims NOT to support CC ${CommandClasses[cc]} (${num2hex(cc)}), but it is known to support it. Assuming the ${this.endpointIndex === 0 ? \"node\" : \"endpoint\"} supports version 1...`;\n endpoint.addCC(cc, { version: 1 });\n }\n else {\n logMessage = ` does NOT support CC ${CommandClasses[cc]} (${num2hex(cc)})`;\n endpoint.removeCC(cc);\n }\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n });\n }\n else {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `CC version query for ${getCCName(cc)} timed out - assuming the ${this.endpointIndex === 0 ? \"node\" : \"endpoint\"} supports version 1...`,\n level: \"warn\",\n });\n endpoint.addCC(cc, { version: 1 });\n }\n };\n // Version information should not change (except for firmware updates)\n // And it is only relevant on the root endpoint (the node)\n if (this.endpointIndex === 0) {\n // Step 1: Query Version CC version\n await queryCCVersion(CommandClasses.Version);\n // Step 2: Query node versions\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying node versions...\",\n direction: \"outbound\",\n });\n const versionGetResponse = await api.get();\n if (versionGetResponse) {\n let logMessage = `received response for node versions:\n library type: ${ZWaveLibraryTypes[versionGetResponse.libraryType]} (${num2hex(versionGetResponse.libraryType)})\n protocol version: ${versionGetResponse.protocolVersion}\n firmware versions: ${versionGetResponse.firmwareVersions.join(\", \")}`;\n if (versionGetResponse.hardwareVersion != undefined) {\n logMessage +=\n `\\n hardware version: ${versionGetResponse.hardwareVersion}`;\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n }\n }\n // Step 3: Query all other CC versions\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying CC versions...\",\n direction: \"outbound\",\n });\n // Determine the CCs whose version we still need to query, so we can report progress\n const ccsToQuery: CommandClasses[] = [];\n // Basic CC is not included in the NIF, so it won't be returned by endpoint.getCCs() at this point\n // Add it to the list if we are interviewing the root endpoint,\n // or if we are on an endpoint and the root endpoint does not support it\n if (this.endpointIndex === 0\n || node.getCCVersion(CommandClasses.Basic) === 0) {\n ccsToQuery.push(CommandClasses.Basic);\n }\n for (const [cc] of endpoint.getCCs()) {\n // We already queried the Version CC version at the start of this interview\n if (cc === CommandClasses.Version)\n continue;\n // And we queried Basic CC just before this\n if (cc === CommandClasses.Basic)\n continue;\n // Skip the query of endpoint CCs that are also supported by the root device\n if (this.endpointIndex > 0 && node.getCCVersion(cc) > 0)\n continue;\n ccsToQuery.push(cc);\n }\n // Actually query them\n for (const [i, cc] of ccsToQuery.entries()) {\n await queryCCVersion(cc);\n node.reportInterviewProgress(i + 1, ccsToQuery.length);\n }\n // Step 4: Query VersionCC capabilities (root device only)\n if (this.endpointIndex === 0 && api.version >= 3) {\n // Step 4a: Support for SoftwareGet\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying if Z-Wave Software Get is supported...\",\n direction: \"outbound\",\n });\n const capsResponse = await api.getCapabilities();\n if (capsResponse) {\n const { supportsZWaveSoftwareGet } = capsResponse;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Z-Wave Software Get is${supportsZWaveSoftwareGet ? \"\" : \" not\"} supported`,\n direction: \"inbound\",\n });\n if (supportsZWaveSoftwareGet) {\n // Step 4b: Query Z-Wave Software versions\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying Z-Wave software versions...\",\n direction: \"outbound\",\n });\n await api.getZWaveSoftware();\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"received Z-Wave software versions\",\n direction: \"inbound\",\n });\n }\n }\n }\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n}\n// @publicAPI\nexport interface VersionCCReportOptions {\n libraryType: ZWaveLibraryTypes;\n protocolVersion: string;\n firmwareVersions: string[];\n hardwareVersion?: number;\n}\n@CCCommand(VersionCommand.Report)\n@ccValueProperty(\"libraryType\", VersionCCValues.libraryType)\n@ccValueProperty(\"protocolVersion\", VersionCCValues.protocolVersion)\n@ccValueProperty(\"firmwareVersions\", VersionCCValues.firmwareVersions)\n@ccValueProperty(\"hardwareVersion\", VersionCCValues.hardwareVersion)\nexport class VersionCCReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCReportOptions>) {\n super(options);\n if (!/^\\d+\\.\\d+(\\.\\d+)?$/.test(options.protocolVersion)) {\n throw new ZWaveError(`protocolVersion must be a string in the format \"major.minor\" or \"major.minor.patch\", received \"${options.protocolVersion}\"`, ZWaveErrorCodes.Argument_Invalid);\n }\n else if (!options.firmwareVersions.every((fw) => /^\\d+\\.\\d+(\\.\\d+)?$/.test(fw))) {\n throw new ZWaveError(`firmwareVersions must be an array of strings in the format \"major.minor\" or \"major.minor.patch\", received \"${JSON.stringify(options.firmwareVersions)}\"`, ZWaveErrorCodes.Argument_Invalid);\n }\n this.libraryType = options.libraryType;\n this.protocolVersion = options.protocolVersion;\n this.firmwareVersions = options.firmwareVersions;\n this.hardwareVersion = options.hardwareVersion;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCReport {\n validatePayload(raw.payload.length >= 5);\n const libraryType: ZWaveLibraryTypes = raw.payload[0];\n const protocolVersion = `${raw.payload[1]}.${raw.payload[2]}`;\n const firmwareVersions = [`${raw.payload[3]}.${raw.payload[4]}`];\n let hardwareVersion: number | undefined;\n if (raw.payload.length >= 7) {\n // V2+\n hardwareVersion = raw.payload[5];\n const additionalFirmwares = raw.payload[6];\n validatePayload(raw.payload.length >= 7 + 2 * additionalFirmwares);\n for (let i = 0; i < additionalFirmwares; i++) {\n firmwareVersions.push(`${raw.payload[7 + 2 * i]}.${raw.payload[7 + 2 * i + 1]}`);\n }\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n libraryType,\n protocolVersion,\n firmwareVersions,\n hardwareVersion,\n });\n }\n public readonly libraryType: ZWaveLibraryTypes;\n public readonly protocolVersion: string;\n public readonly firmwareVersions: string[];\n public readonly hardwareVersion: number | undefined;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n this.libraryType,\n ...this.protocolVersion\n .split(\".\")\n .map((n) => parseInt(n))\n .slice(0, 2),\n ...this.firmwareVersions[0]\n .split(\".\")\n .map((n) => parseInt(n))\n .slice(0, 2),\n this.hardwareVersion ?? 0x00,\n this.firmwareVersions.length - 1,\n ]);\n if (this.firmwareVersions.length > 1) {\n const firmwaresBuffer = new Bytes((this.firmwareVersions.length - 1) * 2);\n for (let i = 1; i < this.firmwareVersions.length; i++) {\n const [major, minor] = this.firmwareVersions[i]\n .split(\".\")\n .map((n) => parseInt(n));\n firmwaresBuffer[2 * (i - 1)] = major;\n firmwaresBuffer[2 * (i - 1) + 1] = minor;\n }\n this.payload = Bytes.concat([this.payload, firmwaresBuffer]);\n }\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"library type\": getEnumMemberName(ZWaveLibraryTypes, this.libraryType),\n \"protocol version\": this.protocolVersion,\n \"firmware versions\": this.firmwareVersions.join(\", \"),\n };\n if (this.hardwareVersion != undefined) {\n message[\"hardware version\"] = this.hardwareVersion;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@CCCommand(VersionCommand.Get)\n@expectedCCResponse(VersionCCReport)\nexport class VersionCCGet extends VersionCC {\n}\n// @publicAPI\nexport interface VersionCCCommandClassReportOptions {\n requestedCC: CommandClasses;\n ccVersion: number;\n}\n@CCCommand(VersionCommand.CommandClassReport)\nexport class VersionCCCommandClassReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCCommandClassReportOptions>) {\n super(options);\n this.requestedCC = options.requestedCC;\n this.ccVersion = options.ccVersion;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCCommandClassReport {\n validatePayload(raw.payload.length >= 2);\n const requestedCC: CommandClasses = raw.payload[0];\n const ccVersion = raw.payload[1];\n return new this({\n nodeId: ctx.sourceNodeId,\n requestedCC,\n ccVersion,\n });\n }\n public ccVersion: number;\n public requestedCC: CommandClasses;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.requestedCC, this.ccVersion]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n CC: getCCName(this.requestedCC),\n version: this.ccVersion,\n },\n };\n }\n}\n// @publicAPI\nexport interface VersionCCCommandClassGetOptions {\n requestedCC: CommandClasses;\n}\nfunction testResponseForVersionCommandClassGet(sent: VersionCCCommandClassGet, received: VersionCCCommandClassReport) {\n // We expect a Version CommandClass Report that matches the requested CC\n return sent.requestedCC === received.requestedCC;\n}\n@CCCommand(VersionCommand.CommandClassGet)\n@expectedCCResponse(VersionCCCommandClassReport, testResponseForVersionCommandClassGet)\nexport class VersionCCCommandClassGet extends VersionCC {\n public constructor(options: WithAddress<VersionCCCommandClassGetOptions>) {\n super(options);\n this.requestedCC = options.requestedCC;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCCommandClassGet {\n validatePayload(raw.payload.length >= 1);\n const requestedCC: CommandClasses = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n requestedCC,\n });\n }\n public requestedCC: CommandClasses;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.requestedCC]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: { CC: getCCName(this.requestedCC) },\n };\n }\n}\n// @publicAPI\nexport interface VersionCCCapabilitiesReportOptions {\n supportsZWaveSoftwareGet: boolean;\n}\n@CCCommand(VersionCommand.CapabilitiesReport)\n@ccValueProperty(\"supportsZWaveSoftwareGet\", VersionCCValues.supportsZWaveSoftwareGet)\nexport class VersionCCCapabilitiesReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCCapabilitiesReportOptions>) {\n super(options);\n this.supportsZWaveSoftwareGet = options.supportsZWaveSoftwareGet;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCCapabilitiesReport {\n validatePayload(raw.payload.length >= 1);\n const capabilities = raw.payload[0];\n const supportsZWaveSoftwareGet = !!(capabilities & 0b100);\n return new this({\n nodeId: ctx.sourceNodeId,\n supportsZWaveSoftwareGet,\n });\n }\n public supportsZWaveSoftwareGet: boolean;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n (this.supportsZWaveSoftwareGet ? 0b100 : 0) | 0b11,\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"supports Z-Wave Software Get command\": this.supportsZWaveSoftwareGet,\n },\n };\n }\n}\n@CCCommand(VersionCommand.CapabilitiesGet)\n@expectedCCResponse(VersionCCCapabilitiesReport)\nexport class VersionCCCapabilitiesGet extends VersionCC {\n}\n// @publicAPI\nexport interface VersionCCZWaveSoftwareReportOptions {\n sdkVersion: string;\n applicationFrameworkAPIVersion: string;\n applicationFrameworkBuildNumber: number;\n hostInterfaceVersion: string;\n hostInterfaceBuildNumber: number;\n zWaveProtocolVersion: string;\n zWaveProtocolBuildNumber: number;\n applicationVersion: string;\n applicationBuildNumber: number;\n}\n@CCCommand(VersionCommand.ZWaveSoftwareReport)\n@ccValueProperty(\"sdkVersion\", VersionCCValues.sdkVersion)\n@ccValueProperty(\"applicationFrameworkAPIVersion\", VersionCCValues.applicationFrameworkAPIVersion)\n@ccValueProperty(\"applicationFrameworkBuildNumber\", VersionCCValues.applicationFrameworkBuildNumber)\n@ccValueProperty(\"hostInterfaceVersion\", VersionCCValues.serialAPIVersion)\n@ccValueProperty(\"hostInterfaceBuildNumber\", VersionCCValues.serialAPIBuildNumber)\n@ccValueProperty(\"zWaveProtocolVersion\", VersionCCValues.zWaveProtocolVersion)\n@ccValueProperty(\"zWaveProtocolBuildNumber\", VersionCCValues.zWaveProtocolBuildNumber)\n@ccValueProperty(\"applicationVersion\", VersionCCValues.applicationVersion)\n@ccValueProperty(\"applicationBuildNumber\", VersionCCValues.applicationBuildNumber)\nexport class VersionCCZWaveSoftwareReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCZWaveSoftwareReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.sdkVersion = options.sdkVersion;\n this.applicationFrameworkAPIVersion =\n options.applicationFrameworkAPIVersion;\n this.applicationFrameworkBuildNumber =\n options.applicationFrameworkBuildNumber;\n this.hostInterfaceVersion = options.hostInterfaceVersion;\n this.hostInterfaceBuildNumber = options.hostInterfaceBuildNumber;\n this.zWaveProtocolVersion = options.zWaveProtocolVersion;\n this.zWaveProtocolBuildNumber = options.zWaveProtocolBuildNumber;\n this.applicationVersion = options.applicationVersion;\n this.applicationBuildNumber = options.applicationBuildNumber;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCZWaveSoftwareReport {\n validatePayload(raw.payload.length >= 23);\n const sdkVersion = parseVersion(raw.payload);\n const applicationFrameworkAPIVersion = parseVersion(raw.payload.subarray(3));\n let applicationFrameworkBuildNumber;\n if (applicationFrameworkAPIVersion !== \"unused\") {\n applicationFrameworkBuildNumber = raw.payload.readUInt16BE(6);\n }\n else {\n applicationFrameworkBuildNumber = 0;\n }\n const hostInterfaceVersion = parseVersion(raw.payload.subarray(8));\n let hostInterfaceBuildNumber;\n if (hostInterfaceVersion !== \"unused\") {\n hostInterfaceBuildNumber = raw.payload.readUInt16BE(11);\n }\n else {\n hostInterfaceBuildNumber = 0;\n }\n const zWaveProtocolVersion = parseVersion(raw.payload.subarray(13));\n let zWaveProtocolBuildNumber;\n if (zWaveProtocolVersion !== \"unused\") {\n zWaveProtocolBuildNumber = raw.payload.readUInt16BE(16);\n }\n else {\n zWaveProtocolBuildNumber = 0;\n }\n const applicationVersion = parseVersion(raw.payload.subarray(18));\n let applicationBuildNumber;\n if (applicationVersion !== \"unused\") {\n applicationBuildNumber = raw.payload.readUInt16BE(21);\n }\n else {\n applicationBuildNumber = 0;\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n sdkVersion,\n applicationFrameworkAPIVersion,\n applicationFrameworkBuildNumber,\n hostInterfaceVersion,\n hostInterfaceBuildNumber,\n zWaveProtocolVersion,\n zWaveProtocolBuildNumber,\n applicationVersion,\n applicationBuildNumber,\n });\n }\n public readonly sdkVersion: string;\n public readonly applicationFrameworkAPIVersion: string;\n public readonly applicationFrameworkBuildNumber: number;\n public readonly hostInterfaceVersion: string;\n public readonly hostInterfaceBuildNumber: number;\n public readonly zWaveProtocolVersion: string;\n public readonly zWaveProtocolBuildNumber: number;\n public readonly applicationVersion: string;\n public readonly applicationBuildNumber: number;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"SDK version\": this.sdkVersion,\n };\n message[\"appl. framework API version\"] =\n this.applicationFrameworkAPIVersion;\n if (this.applicationFrameworkAPIVersion !== \"unused\") {\n message[\"appl. framework build number\"] =\n this.applicationFrameworkBuildNumber;\n }\n message[\"host interface version\"] = this.hostInterfaceVersion;\n if (this.hostInterfaceVersion !== \"unused\") {\n message[\"host interface build number\"] =\n this.hostInterfaceBuildNumber;\n }\n message[\"Z-Wave protocol version\"] = this.zWaveProtocolVersion;\n if (this.zWaveProtocolVersion !== \"unused\") {\n message[\"Z-Wave protocol build number\"] =\n this.zWaveProtocolBuildNumber;\n }\n message[\"application version\"] = this.applicationVersion;\n if (this.applicationVersion !== \"unused\") {\n message[\"application build number\"] = this.applicationBuildNumber;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@CCCommand(VersionCommand.ZWaveSoftwareGet)\n@expectedCCResponse(VersionCCZWaveSoftwareReport)\nexport class VersionCCZWaveSoftwareGet extends VersionCC {\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as __validateArgs from \"./VersionCC._validateArgs.js\";\nconst { validateArgs_VersionCCAPI_sendReport, validateArgs_VersionCCAPI_getCCVersion, validateArgs_VersionCCAPI_reportCCVersion } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, SecurityClass, ValueMetadata, type WithAddress, ZWaveError, ZWaveErrorCodes, ZWaveLibraryTypes, enumValuesToMetadataStates, getCCName, securityClassIsS2, securityClassOrder, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, type BytesView, getEnumMemberName, num2hex, pick, } from \"@zwave-js/shared\";\nimport { CCAPI, PhysicalCCAPI } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, getImplementedVersion, implementedVersion, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { VersionCommand } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { VersionCCValues } from \"./_CCValues.generated.js\";\nexport { VersionCCValues };\nfunction parseVersion(buffer: BytesView): string {\n if (buffer[0] === 0 && buffer[1] === 0 && buffer[2] === 0)\n return \"unused\";\n return `${buffer[0]}.${buffer[1]}.${buffer[2]}`;\n}\n// @noSetValueAPI This CC is read-only\n@API(CommandClasses.Version)\nexport class VersionCCAPI extends PhysicalCCAPI {\n public supportsCommand(cmd: VersionCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case VersionCommand.Get:\n case VersionCommand.Report:\n case VersionCommand.CommandClassGet:\n case VersionCommand.CommandClassReport:\n return true; // This is mandatory\n case VersionCommand.CapabilitiesGet:\n case VersionCommand.CapabilitiesReport:\n case VersionCommand.ZWaveSoftwareReport:\n return this.version >= 3;\n case VersionCommand.ZWaveSoftwareGet: {\n return this.getValueDB().getValue<boolean>(VersionCCValues.supportsZWaveSoftwareGet.endpoint(this.endpoint.index));\n }\n }\n return super.supportsCommand(cmd);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async get() {\n this.assertSupportsCommand(VersionCommand, VersionCommand.Get);\n const cc = new VersionCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<VersionCCReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"libraryType\",\n \"protocolVersion\",\n \"firmwareVersions\",\n \"hardwareVersion\",\n ]);\n }\n }\n @validateArgs_VersionCCAPI_sendReport()\n public async sendReport(options: VersionCCReportOptions): Promise<void> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.Report);\n const cc = new VersionCCReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n @validateArgs_VersionCCAPI_getCCVersion()\n public async getCCVersion(requestedCC: CommandClasses): Promise<MaybeNotKnown<number>> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CommandClassGet);\n const cc = new VersionCCCommandClassGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n requestedCC,\n });\n const response = await this.host.sendCommand<VersionCCCommandClassReport>(cc, this.commandOptions);\n return response?.ccVersion;\n }\n @validateArgs_VersionCCAPI_reportCCVersion()\n /**\n * @param version The version to report. If not given, the implemented version will be used for the report.\n */\n public async reportCCVersion(requestedCC: CommandClasses, version?: number): Promise<void> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CommandClassReport);\n let ccVersion: number;\n switch (requestedCC) {\n case CommandClasses[\"Z-Wave Protocol\"]:\n case CommandClasses[\"Z-Wave Long Range\"]:\n // These two are only for internal use\n ccVersion = 0;\n break;\n case CommandClasses.Hail:\n case CommandClasses[\"Manufacturer Proprietary\"]:\n // These CCs are obsolete, we cannot enter them in the certification portal\n // but not doing so fails a certification test. Just respond that they\n // are not supported or controlled\n ccVersion = 0;\n break;\n default:\n ccVersion = version ?? getImplementedVersion(requestedCC);\n break;\n }\n const cc = new VersionCCCommandClassReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n requestedCC,\n ccVersion,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getCapabilities() {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CapabilitiesGet);\n const cc = new VersionCCCapabilitiesGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<VersionCCCapabilitiesReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\"supportsZWaveSoftwareGet\"]);\n }\n }\n public async reportCapabilities(): Promise<void> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CapabilitiesReport);\n const cc = new VersionCCCapabilitiesReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n // At this time, we do not support responding to Z-Wave Software Get\n supportsZWaveSoftwareGet: false,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getZWaveSoftware() {\n this.assertSupportsCommand(VersionCommand, VersionCommand.ZWaveSoftwareGet);\n const cc = new VersionCCZWaveSoftwareGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<VersionCCZWaveSoftwareReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"sdkVersion\",\n \"applicationFrameworkAPIVersion\",\n \"applicationFrameworkBuildNumber\",\n \"hostInterfaceVersion\",\n \"hostInterfaceBuildNumber\",\n \"zWaveProtocolVersion\",\n \"zWaveProtocolBuildNumber\",\n \"applicationVersion\",\n \"applicationBuildNumber\",\n ]);\n }\n }\n}\n@commandClass(CommandClasses.Version)\n@implementedVersion(3)\n@ccValues(VersionCCValues)\nexport class VersionCC extends CommandClass {\n declare ccCommand: VersionCommand;\n public determineRequiredCCInterviews(): readonly CommandClasses[] {\n // VersionCC must be the 2nd CC after ManufacturerSpecificCC\n return [CommandClasses[\"Manufacturer Specific\"]];\n }\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n // SDS13782: In a Multi Channel device, the Version Command Class MUST be supported by the Root Device, while\n // the Version Command Class SHOULD NOT be supported by individual End Points.\n //\n // There may be cases where a given Command Class is not implemented by the Root Device of a Multi\n // Channel device. However, the Root Device MUST respond to Version requests for any Command Class\n // implemented by the Multi Channel device; also in cases where the actual Command Class is only\n // provided by an End Point.\n const endpoint = this.getEndpoint(ctx)!;\n // Use the CC API of the root device for all queries\n const api = CCAPI.create(CommandClasses.Version, ctx, node).withOptions({\n priority: MessagePriority.NodeQuery,\n tag: \"interview\",\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n const queryCCVersion = async (cc: CommandClasses): Promise<void> => {\n // Only query CCs we support. Theoretically we could skip queries where we support only V1,\n // but there are Z-Wave certification tests that require us to query all CCs\n const maxImplemented = getImplementedVersion(cc);\n if (maxImplemented === 0) {\n ctx.logNode(node.id, ` skipping query for ${CommandClasses[cc]} (${num2hex(cc)}) because max implemented version is ${maxImplemented}`);\n return;\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: ` querying the CC version for ${getCCName(cc)}...`,\n direction: \"outbound\",\n });\n // query the CC version\n const supportedVersion = await api.getCCVersion(cc);\n if (supportedVersion != undefined) {\n // Remember which CC version this endpoint supports\n let logMessage: string;\n if (supportedVersion > 0) {\n // Basic CC has special rules for when it is considered supported\n // Therefore we mark all other CCs as supported, but not Basic CC,\n // for which support is determined later.\n if (cc === CommandClasses.Basic) {\n endpoint.addCC(cc, { version: supportedVersion });\n }\n else if (endpoint.controlsCC(cc) && !endpoint.supportsCC(cc)) {\n // The node only advertised this CC as controlled (e.g. in the NIF).\n // Remember the version so its values can be exposed, but do not\n // promote it to a supported CC.\n endpoint.addCC(cc, {\n isControlled: true,\n version: supportedVersion,\n });\n }\n else {\n endpoint.addCC(cc, {\n isSupported: true,\n version: supportedVersion,\n });\n }\n logMessage = ` supports CC ${CommandClasses[cc]} (${num2hex(cc)}) in version ${supportedVersion}`;\n }\n else {\n // We were lied to - the NIF said this CC is supported, now the node claims it isn't\n // Make sure this is not a critical CC, which must be supported though\n if (cc === CommandClasses.Version\n || cc === CommandClasses[\"Manufacturer Specific\"]) {\n logMessage = ` claims NOT to support CC ${CommandClasses[cc]} (${num2hex(cc)}), but it must. Assuming the ${this.endpointIndex === 0 ? \"node\" : \"endpoint\"} supports version 1...`;\n endpoint.addCC(cc, { version: 1 });\n }\n else if ((cc === CommandClasses.Security\n && node.hasSecurityClass(SecurityClass.S0_Legacy))\n || (cc === CommandClasses[\"Security 2\"]\n && securityClassOrder.some((sc) => securityClassIsS2(sc)\n && node.hasSecurityClass(sc)))) {\n logMessage = ` claims NOT to support CC ${CommandClasses[cc]} (${num2hex(cc)}), but it is known to support it. Assuming the ${this.endpointIndex === 0 ? \"node\" : \"endpoint\"} supports version 1...`;\n endpoint.addCC(cc, { version: 1 });\n }\n else {\n logMessage = ` does NOT support CC ${CommandClasses[cc]} (${num2hex(cc)})`;\n endpoint.removeCC(cc);\n }\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n });\n }\n else {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `CC version query for ${getCCName(cc)} timed out - assuming the ${this.endpointIndex === 0 ? \"node\" : \"endpoint\"} supports version 1...`,\n level: \"warn\",\n });\n endpoint.addCC(cc, { version: 1 });\n }\n };\n // Version information should not change (except for firmware updates)\n // And it is only relevant on the root endpoint (the node)\n if (this.endpointIndex === 0) {\n // Step 1: Query Version CC version\n await queryCCVersion(CommandClasses.Version);\n // Step 2: Query node versions\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying node versions...\",\n direction: \"outbound\",\n });\n const versionGetResponse = await api.get();\n if (versionGetResponse) {\n let logMessage = `received response for node versions:\n library type: ${ZWaveLibraryTypes[versionGetResponse.libraryType]} (${num2hex(versionGetResponse.libraryType)})\n protocol version: ${versionGetResponse.protocolVersion}\n firmware versions: ${versionGetResponse.firmwareVersions.join(\", \")}`;\n if (versionGetResponse.hardwareVersion != undefined) {\n logMessage +=\n `\\n hardware version: ${versionGetResponse.hardwareVersion}`;\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n }\n }\n // Step 3: Query all other CC versions\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying CC versions...\",\n direction: \"outbound\",\n });\n // Determine the CCs whose version we still need to query, so we can report progress\n const ccsToQuery: CommandClasses[] = [];\n // Basic CC is not included in the NIF, so it won't be returned by endpoint.getCCs() at this point\n // Add it to the list if we are interviewing the root endpoint,\n // or if we are on an endpoint and the root endpoint does not support it\n if (this.endpointIndex === 0\n || node.getCCVersion(CommandClasses.Basic) === 0) {\n ccsToQuery.push(CommandClasses.Basic);\n }\n for (const [cc] of endpoint.getCCs()) {\n // We already queried the Version CC version at the start of this interview\n if (cc === CommandClasses.Version)\n continue;\n // And we queried Basic CC just before this\n if (cc === CommandClasses.Basic)\n continue;\n // Skip the query of endpoint CCs that are also supported by the root device\n if (this.endpointIndex > 0 && node.getCCVersion(cc) > 0)\n continue;\n ccsToQuery.push(cc);\n }\n // Actually query them\n for (const [i, cc] of ccsToQuery.entries()) {\n await queryCCVersion(cc);\n node.reportInterviewProgress(i + 1, ccsToQuery.length);\n }\n // Step 4: Query VersionCC capabilities (root device only)\n if (this.endpointIndex === 0 && api.version >= 3) {\n // Step 4a: Support for SoftwareGet\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying if Z-Wave Software Get is supported...\",\n direction: \"outbound\",\n });\n const capsResponse = await api.getCapabilities();\n if (capsResponse) {\n const { supportsZWaveSoftwareGet } = capsResponse;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Z-Wave Software Get is${supportsZWaveSoftwareGet ? \"\" : \" not\"} supported`,\n direction: \"inbound\",\n });\n if (supportsZWaveSoftwareGet) {\n // Step 4b: Query Z-Wave Software versions\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying Z-Wave software versions...\",\n direction: \"outbound\",\n });\n await api.getZWaveSoftware();\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"received Z-Wave software versions\",\n direction: \"inbound\",\n });\n }\n }\n }\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n}\n// @publicAPI\nexport interface VersionCCReportOptions {\n libraryType: ZWaveLibraryTypes;\n protocolVersion: string;\n firmwareVersions: string[];\n hardwareVersion?: number;\n}\n@CCCommand(VersionCommand.Report)\n@ccValueProperty(\"libraryType\", VersionCCValues.libraryType)\n@ccValueProperty(\"protocolVersion\", VersionCCValues.protocolVersion)\n@ccValueProperty(\"firmwareVersions\", VersionCCValues.firmwareVersions)\n@ccValueProperty(\"hardwareVersion\", VersionCCValues.hardwareVersion)\nexport class VersionCCReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCReportOptions>) {\n super(options);\n if (!/^\\d+\\.\\d+(\\.\\d+)?$/.test(options.protocolVersion)) {\n throw new ZWaveError(`protocolVersion must be a string in the format \"major.minor\" or \"major.minor.patch\", received \"${options.protocolVersion}\"`, ZWaveErrorCodes.Argument_Invalid);\n }\n else if (!options.firmwareVersions.every((fw) => /^\\d+\\.\\d+(\\.\\d+)?$/.test(fw))) {\n throw new ZWaveError(`firmwareVersions must be an array of strings in the format \"major.minor\" or \"major.minor.patch\", received \"${JSON.stringify(options.firmwareVersions)}\"`, ZWaveErrorCodes.Argument_Invalid);\n }\n this.libraryType = options.libraryType;\n this.protocolVersion = options.protocolVersion;\n this.firmwareVersions = options.firmwareVersions;\n this.hardwareVersion = options.hardwareVersion;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCReport {\n validatePayload(raw.payload.length >= 5);\n const libraryType: ZWaveLibraryTypes = raw.payload[0];\n const protocolVersion = `${raw.payload[1]}.${raw.payload[2]}`;\n const firmwareVersions = [`${raw.payload[3]}.${raw.payload[4]}`];\n let hardwareVersion: number | undefined;\n if (raw.payload.length >= 7) {\n // V2+\n hardwareVersion = raw.payload[5];\n const additionalFirmwares = raw.payload[6];\n validatePayload(raw.payload.length >= 7 + 2 * additionalFirmwares);\n for (let i = 0; i < additionalFirmwares; i++) {\n firmwareVersions.push(`${raw.payload[7 + 2 * i]}.${raw.payload[7 + 2 * i + 1]}`);\n }\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n libraryType,\n protocolVersion,\n firmwareVersions,\n hardwareVersion,\n });\n }\n public readonly libraryType: ZWaveLibraryTypes;\n public readonly protocolVersion: string;\n public readonly firmwareVersions: string[];\n public readonly hardwareVersion: number | undefined;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n this.libraryType,\n ...this.protocolVersion\n .split(\".\")\n .map((n) => parseInt(n))\n .slice(0, 2),\n ...this.firmwareVersions[0]\n .split(\".\")\n .map((n) => parseInt(n))\n .slice(0, 2),\n this.hardwareVersion ?? 0x00,\n this.firmwareVersions.length - 1,\n ]);\n if (this.firmwareVersions.length > 1) {\n const firmwaresBuffer = new Bytes((this.firmwareVersions.length - 1) * 2);\n for (let i = 1; i < this.firmwareVersions.length; i++) {\n const [major, minor] = this.firmwareVersions[i]\n .split(\".\")\n .map((n) => parseInt(n));\n firmwaresBuffer[2 * (i - 1)] = major;\n firmwaresBuffer[2 * (i - 1) + 1] = minor;\n }\n this.payload = Bytes.concat([this.payload, firmwaresBuffer]);\n }\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"library type\": getEnumMemberName(ZWaveLibraryTypes, this.libraryType),\n \"protocol version\": this.protocolVersion,\n \"firmware versions\": this.firmwareVersions.join(\", \"),\n };\n if (this.hardwareVersion != undefined) {\n message[\"hardware version\"] = this.hardwareVersion;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@CCCommand(VersionCommand.Get)\n@expectedCCResponse(VersionCCReport)\nexport class VersionCCGet extends VersionCC {\n}\n// @publicAPI\nexport interface VersionCCCommandClassReportOptions {\n requestedCC: CommandClasses;\n ccVersion: number;\n}\n@CCCommand(VersionCommand.CommandClassReport)\nexport class VersionCCCommandClassReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCCommandClassReportOptions>) {\n super(options);\n this.requestedCC = options.requestedCC;\n this.ccVersion = options.ccVersion;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCCommandClassReport {\n validatePayload(raw.payload.length >= 2);\n const requestedCC: CommandClasses = raw.payload[0];\n const ccVersion = raw.payload[1];\n return new this({\n nodeId: ctx.sourceNodeId,\n requestedCC,\n ccVersion,\n });\n }\n public ccVersion: number;\n public requestedCC: CommandClasses;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.requestedCC, this.ccVersion]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n CC: getCCName(this.requestedCC),\n version: this.ccVersion,\n },\n };\n }\n}\n// @publicAPI\nexport interface VersionCCCommandClassGetOptions {\n requestedCC: CommandClasses;\n}\nfunction testResponseForVersionCommandClassGet(sent: VersionCCCommandClassGet, received: VersionCCCommandClassReport) {\n // We expect a Version CommandClass Report that matches the requested CC\n return sent.requestedCC === received.requestedCC;\n}\n@CCCommand(VersionCommand.CommandClassGet)\n@expectedCCResponse(VersionCCCommandClassReport, testResponseForVersionCommandClassGet)\nexport class VersionCCCommandClassGet extends VersionCC {\n public constructor(options: WithAddress<VersionCCCommandClassGetOptions>) {\n super(options);\n this.requestedCC = options.requestedCC;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCCommandClassGet {\n validatePayload(raw.payload.length >= 1);\n const requestedCC: CommandClasses = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n requestedCC,\n });\n }\n public requestedCC: CommandClasses;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.requestedCC]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: { CC: getCCName(this.requestedCC) },\n };\n }\n}\n// @publicAPI\nexport interface VersionCCCapabilitiesReportOptions {\n supportsZWaveSoftwareGet: boolean;\n}\n@CCCommand(VersionCommand.CapabilitiesReport)\n@ccValueProperty(\"supportsZWaveSoftwareGet\", VersionCCValues.supportsZWaveSoftwareGet)\nexport class VersionCCCapabilitiesReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCCapabilitiesReportOptions>) {\n super(options);\n this.supportsZWaveSoftwareGet = options.supportsZWaveSoftwareGet;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCCapabilitiesReport {\n validatePayload(raw.payload.length >= 1);\n const capabilities = raw.payload[0];\n const supportsZWaveSoftwareGet = !!(capabilities & 0b100);\n return new this({\n nodeId: ctx.sourceNodeId,\n supportsZWaveSoftwareGet,\n });\n }\n public supportsZWaveSoftwareGet: boolean;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n (this.supportsZWaveSoftwareGet ? 0b100 : 0) | 0b11,\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"supports Z-Wave Software Get command\": this.supportsZWaveSoftwareGet,\n },\n };\n }\n}\n@CCCommand(VersionCommand.CapabilitiesGet)\n@expectedCCResponse(VersionCCCapabilitiesReport)\nexport class VersionCCCapabilitiesGet extends VersionCC {\n}\n// @publicAPI\nexport interface VersionCCZWaveSoftwareReportOptions {\n sdkVersion: string;\n applicationFrameworkAPIVersion: string;\n applicationFrameworkBuildNumber: number;\n hostInterfaceVersion: string;\n hostInterfaceBuildNumber: number;\n zWaveProtocolVersion: string;\n zWaveProtocolBuildNumber: number;\n applicationVersion: string;\n applicationBuildNumber: number;\n}\n@CCCommand(VersionCommand.ZWaveSoftwareReport)\n@ccValueProperty(\"sdkVersion\", VersionCCValues.sdkVersion)\n@ccValueProperty(\"applicationFrameworkAPIVersion\", VersionCCValues.applicationFrameworkAPIVersion)\n@ccValueProperty(\"applicationFrameworkBuildNumber\", VersionCCValues.applicationFrameworkBuildNumber)\n@ccValueProperty(\"hostInterfaceVersion\", VersionCCValues.serialAPIVersion)\n@ccValueProperty(\"hostInterfaceBuildNumber\", VersionCCValues.serialAPIBuildNumber)\n@ccValueProperty(\"zWaveProtocolVersion\", VersionCCValues.zWaveProtocolVersion)\n@ccValueProperty(\"zWaveProtocolBuildNumber\", VersionCCValues.zWaveProtocolBuildNumber)\n@ccValueProperty(\"applicationVersion\", VersionCCValues.applicationVersion)\n@ccValueProperty(\"applicationBuildNumber\", VersionCCValues.applicationBuildNumber)\nexport class VersionCCZWaveSoftwareReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCZWaveSoftwareReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.sdkVersion = options.sdkVersion;\n this.applicationFrameworkAPIVersion =\n options.applicationFrameworkAPIVersion;\n this.applicationFrameworkBuildNumber =\n options.applicationFrameworkBuildNumber;\n this.hostInterfaceVersion = options.hostInterfaceVersion;\n this.hostInterfaceBuildNumber = options.hostInterfaceBuildNumber;\n this.zWaveProtocolVersion = options.zWaveProtocolVersion;\n this.zWaveProtocolBuildNumber = options.zWaveProtocolBuildNumber;\n this.applicationVersion = options.applicationVersion;\n this.applicationBuildNumber = options.applicationBuildNumber;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCZWaveSoftwareReport {\n validatePayload(raw.payload.length >= 23);\n const sdkVersion = parseVersion(raw.payload);\n const applicationFrameworkAPIVersion = parseVersion(raw.payload.subarray(3));\n let applicationFrameworkBuildNumber;\n if (applicationFrameworkAPIVersion !== \"unused\") {\n applicationFrameworkBuildNumber = raw.payload.readUInt16BE(6);\n }\n else {\n applicationFrameworkBuildNumber = 0;\n }\n const hostInterfaceVersion = parseVersion(raw.payload.subarray(8));\n let hostInterfaceBuildNumber;\n if (hostInterfaceVersion !== \"unused\") {\n hostInterfaceBuildNumber = raw.payload.readUInt16BE(11);\n }\n else {\n hostInterfaceBuildNumber = 0;\n }\n const zWaveProtocolVersion = parseVersion(raw.payload.subarray(13));\n let zWaveProtocolBuildNumber;\n if (zWaveProtocolVersion !== \"unused\") {\n zWaveProtocolBuildNumber = raw.payload.readUInt16BE(16);\n }\n else {\n zWaveProtocolBuildNumber = 0;\n }\n const applicationVersion = parseVersion(raw.payload.subarray(18));\n let applicationBuildNumber;\n if (applicationVersion !== \"unused\") {\n applicationBuildNumber = raw.payload.readUInt16BE(21);\n }\n else {\n applicationBuildNumber = 0;\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n sdkVersion,\n applicationFrameworkAPIVersion,\n applicationFrameworkBuildNumber,\n hostInterfaceVersion,\n hostInterfaceBuildNumber,\n zWaveProtocolVersion,\n zWaveProtocolBuildNumber,\n applicationVersion,\n applicationBuildNumber,\n });\n }\n public readonly sdkVersion: string;\n public readonly applicationFrameworkAPIVersion: string;\n public readonly applicationFrameworkBuildNumber: number;\n public readonly hostInterfaceVersion: string;\n public readonly hostInterfaceBuildNumber: number;\n public readonly zWaveProtocolVersion: string;\n public readonly zWaveProtocolBuildNumber: number;\n public readonly applicationVersion: string;\n public readonly applicationBuildNumber: number;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"SDK version\": this.sdkVersion,\n };\n message[\"appl. framework API version\"] =\n this.applicationFrameworkAPIVersion;\n if (this.applicationFrameworkAPIVersion !== \"unused\") {\n message[\"appl. framework build number\"] =\n this.applicationFrameworkBuildNumber;\n }\n message[\"host interface version\"] = this.hostInterfaceVersion;\n if (this.hostInterfaceVersion !== \"unused\") {\n message[\"host interface build number\"] =\n this.hostInterfaceBuildNumber;\n }\n message[\"Z-Wave protocol version\"] = this.zWaveProtocolVersion;\n if (this.zWaveProtocolVersion !== \"unused\") {\n message[\"Z-Wave protocol build number\"] =\n this.zWaveProtocolBuildNumber;\n }\n message[\"application version\"] = this.applicationVersion;\n if (this.applicationVersion !== \"unused\") {\n message[\"application build number\"] = this.applicationBuildNumber;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@CCCommand(VersionCommand.ZWaveSoftwareGet)\n@expectedCCResponse(VersionCCZWaveSoftwareReport)\nexport class VersionCCZWaveSoftwareGet extends VersionCC {\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -202,7 +202,8 @@ let WakeUpCC = (() => {
202
202
  const node = this.getNode(ctx);
203
203
  const endpoint = this.getEndpoint(ctx);
204
204
  const api = import_API.CCAPI.create(import_core.CommandClasses["Wake Up"], ctx, endpoint).withOptions({
205
- priority: import_core.MessagePriority.NodeQuery
205
+ priority: import_core.MessagePriority.NodeQuery,
206
+ tag: "interview"
206
207
  });
207
208
  ctx.logNode(node.id, {
208
209
  endpoint: this.endpointIndex,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src_gen/cc/WakeUpCC.ts"],
4
- "sourcesContent": ["import * as __validateArgs from \"./WakeUpCC._validateArgs.js\";\nconst { validateArgs_WakeUpCCAPI_setInterval } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type SupervisionResult, TransmitOptions, ValueMetadata, type WithAddress, supervisedCommandSucceeded, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, pick } from \"@zwave-js/shared\";\nimport { clamp } from \"alcalzone-shared/math\";\nimport { CCAPI, POLL_VALUE, type PollValueImplementation, SET_VALUE, type SetValueImplementation, throwUnsupportedProperty, throwWrongValueType, } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type PersistValuesContext, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, useSupervision, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { WakeUpCommand } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { WakeUpCCValues } from \"./_CCValues.generated.js\";\nexport { WakeUpCCValues };\n@API(CommandClasses[\"Wake Up\"])\nexport class WakeUpCCAPI extends CCAPI {\n public supportsCommand(cmd: WakeUpCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case WakeUpCommand.IntervalGet:\n return this.isSinglecast();\n case WakeUpCommand.IntervalSet:\n case WakeUpCommand.NoMoreInformation:\n return true; // This is mandatory\n case WakeUpCommand.IntervalCapabilitiesGet:\n return this.version >= 2 && this.isSinglecast();\n }\n return super.supportsCommand(cmd);\n }\n protected override get [SET_VALUE](): SetValueImplementation {\n return async function (this: WakeUpCCAPI, { property }, value) {\n if (property !== \"wakeUpInterval\") {\n throwUnsupportedProperty(this.ccId, property);\n }\n if (typeof value !== \"number\") {\n throwWrongValueType(this.ccId, property, \"number\", typeof value);\n }\n const result = await this.setInterval(value, this.host.ownNodeId ?? 1);\n // Verify the change after a short delay, unless the command was supervised and successful\n if (this.isSinglecast() && !supervisedCommandSucceeded(result)) {\n this.schedulePoll({ property }, value, { transition: \"fast\" });\n }\n return result;\n };\n }\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: WakeUpCCAPI, { property }) {\n switch (property) {\n case \"wakeUpInterval\":\n return (await this.getInterval())?.[property];\n default:\n throwUnsupportedProperty(this.ccId, property);\n }\n };\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getInterval() {\n this.assertSupportsCommand(WakeUpCommand, WakeUpCommand.IntervalGet);\n const cc = new WakeUpCCIntervalGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<WakeUpCCIntervalReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\"wakeUpInterval\", \"controllerNodeId\"]);\n }\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getIntervalCapabilities() {\n this.assertSupportsCommand(WakeUpCommand, WakeUpCommand.IntervalCapabilitiesGet);\n const cc = new WakeUpCCIntervalCapabilitiesGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<WakeUpCCIntervalCapabilitiesReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"defaultWakeUpInterval\",\n \"minWakeUpInterval\",\n \"maxWakeUpInterval\",\n \"wakeUpIntervalSteps\",\n \"wakeUpOnDemandSupported\",\n ]);\n }\n }\n @validateArgs_WakeUpCCAPI_setInterval()\n public async setInterval(wakeUpInterval: number, controllerNodeId: number): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(WakeUpCommand, WakeUpCommand.IntervalSet);\n const cc = new WakeUpCCIntervalSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n wakeUpInterval,\n controllerNodeId,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n public async sendNoMoreInformation(): Promise<void> {\n this.assertSupportsCommand(WakeUpCommand, WakeUpCommand.NoMoreInformation);\n const cc = new WakeUpCCNoMoreInformation({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n await this.host.sendCommand(cc, {\n ...this.commandOptions,\n // This command must be sent as part of the wake up queue\n priority: MessagePriority.WakeUp,\n // Don't try to resend this - if we get no response, the node is most likely asleep\n maxSendAttempts: 1,\n // Also we don't want to wait for an ACK because this can lock up the network for seconds\n // if the target node is asleep and doesn't respond to the command\n transmitOptions: TransmitOptions.DEFAULT_NOACK,\n });\n }\n}\n@commandClass(CommandClasses[\"Wake Up\"])\n@implementedVersion(3)\n@ccValues(WakeUpCCValues)\nexport class WakeUpCC extends CommandClass {\n declare ccCommand: WakeUpCommand;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Wake Up\"], ctx, endpoint).withOptions({\n priority: MessagePriority.NodeQuery,\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n if (node.id === ctx.ownNodeId) {\n ctx.logNode(node.id, `skipping wakeup configuration for the controller`);\n }\n else if (node.isFrequentListening) {\n ctx.logNode(node.id, `skipping wakeup configuration for frequent listening device`);\n }\n else {\n let desiredInterval: number;\n let currentControllerNodeId: number;\n let minInterval: number | undefined;\n let maxInterval: number | undefined;\n // Retrieve the allowed wake up intervals and wake on demand support if possible\n if (api.version >= 2) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"retrieving wakeup capabilities from the device...\",\n direction: \"outbound\",\n });\n const wakeupCaps = await api.getIntervalCapabilities();\n if (wakeupCaps) {\n const logMessage = `received wakeup capabilities:\ndefault wakeup interval: ${wakeupCaps.defaultWakeUpInterval} seconds\nminimum wakeup interval: ${wakeupCaps.minWakeUpInterval} seconds\nmaximum wakeup interval: ${wakeupCaps.maxWakeUpInterval} seconds\nwakeup interval steps: ${wakeupCaps.wakeUpIntervalSteps} seconds\nwakeup on demand supported: ${wakeupCaps.wakeUpOnDemandSupported}`;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n minInterval = wakeupCaps.minWakeUpInterval;\n maxInterval = wakeupCaps.maxWakeUpInterval;\n }\n }\n // SDS14223 prescribes a IntervalSet followed by a check\n // We have no intention of changing the interval (maybe some time in the future)\n // So for now get the current interval and just set the controller ID\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"retrieving wakeup interval from the device...\",\n direction: \"outbound\",\n });\n const wakeupResp = await api.getInterval();\n if (wakeupResp) {\n const logMessage = `received wakeup configuration:\nwakeup interval: ${wakeupResp.wakeUpInterval} seconds\ncontroller node: ${wakeupResp.controllerNodeId}`;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n desiredInterval = wakeupResp.wakeUpInterval;\n currentControllerNodeId = wakeupResp.controllerNodeId;\n }\n else {\n // Just guess, I guess\n desiredInterval = 3600 * 6; // 6 hours\n currentControllerNodeId = 0; // assume not set\n }\n const ownNodeId = ctx.ownNodeId;\n // Only change the destination if necessary\n if (currentControllerNodeId !== ownNodeId) {\n // Spec compliance: Limit the interval to the allowed range, but...\n // ...try and preserve a \"never wake up\" configuration (#6367)\n if (desiredInterval !== 0\n && minInterval != undefined\n && maxInterval != undefined) {\n desiredInterval = clamp(desiredInterval, minInterval, maxInterval);\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"configuring wakeup destination node\",\n direction: \"outbound\",\n });\n await api.setInterval(desiredInterval, ownNodeId);\n this.setValue(ctx, WakeUpCCValues.controllerNodeId, ownNodeId);\n ctx.logNode(node.id, \"wakeup destination node changed!\");\n }\n }\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n}\n// @publicAPI\nexport interface WakeUpCCIntervalSetOptions {\n wakeUpInterval: number;\n controllerNodeId: number;\n}\n@CCCommand(WakeUpCommand.IntervalSet)\n@useSupervision()\nexport class WakeUpCCIntervalSet extends WakeUpCC {\n public constructor(options: WithAddress<WakeUpCCIntervalSetOptions>) {\n super(options);\n this.wakeUpInterval = options.wakeUpInterval;\n this.controllerNodeId = options.controllerNodeId;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WakeUpCCIntervalSet {\n validatePayload(raw.payload.length >= 4);\n const wakeUpInterval = raw.payload.readUIntBE(0, 3);\n const controllerNodeId = raw.payload[3];\n return new this({\n nodeId: ctx.sourceNodeId,\n wakeUpInterval,\n controllerNodeId,\n });\n }\n public wakeUpInterval: number;\n public controllerNodeId: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n 0,\n 0,\n 0, // placeholder\n this.controllerNodeId,\n ]);\n this.payload.writeUIntBE(this.wakeUpInterval, 0, 3);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"wake-up interval\": `${this.wakeUpInterval} seconds`,\n \"controller node id\": this.controllerNodeId,\n },\n };\n }\n}\n// @publicAPI\nexport interface WakeUpCCIntervalReportOptions {\n wakeUpInterval: number;\n controllerNodeId: number;\n}\n@CCCommand(WakeUpCommand.IntervalReport)\n@ccValueProperty(\"wakeUpInterval\", WakeUpCCValues.wakeUpInterval)\n@ccValueProperty(\"controllerNodeId\", WakeUpCCValues.controllerNodeId)\nexport class WakeUpCCIntervalReport extends WakeUpCC {\n public constructor(options: WithAddress<WakeUpCCIntervalReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.wakeUpInterval = options.wakeUpInterval;\n this.controllerNodeId = options.controllerNodeId;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WakeUpCCIntervalReport {\n validatePayload(raw.payload.length >= 4);\n const wakeUpInterval = raw.payload.readUIntBE(0, 3);\n const controllerNodeId = raw.payload[3];\n return new this({\n nodeId: ctx.sourceNodeId,\n wakeUpInterval,\n controllerNodeId,\n });\n }\n public readonly wakeUpInterval: number;\n public readonly controllerNodeId: number;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"wake-up interval\": `${this.wakeUpInterval} seconds`,\n \"controller node id\": this.controllerNodeId,\n },\n };\n }\n}\n@CCCommand(WakeUpCommand.IntervalGet)\n@expectedCCResponse(WakeUpCCIntervalReport)\nexport class WakeUpCCIntervalGet extends WakeUpCC {\n}\n@CCCommand(WakeUpCommand.WakeUpNotification)\nexport class WakeUpCCWakeUpNotification extends WakeUpCC {\n}\n@CCCommand(WakeUpCommand.NoMoreInformation)\nexport class WakeUpCCNoMoreInformation extends WakeUpCC {\n}\n// @publicAPI\nexport interface WakeUpCCIntervalCapabilitiesReportOptions {\n minWakeUpInterval: number;\n maxWakeUpInterval: number;\n defaultWakeUpInterval: number;\n wakeUpIntervalSteps: number;\n wakeUpOnDemandSupported: boolean;\n}\n@CCCommand(WakeUpCommand.IntervalCapabilitiesReport)\n@ccValueProperty(\"wakeUpOnDemandSupported\", WakeUpCCValues.wakeUpOnDemandSupported)\nexport class WakeUpCCIntervalCapabilitiesReport extends WakeUpCC {\n public constructor(options: WithAddress<WakeUpCCIntervalCapabilitiesReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.minWakeUpInterval = options.minWakeUpInterval;\n this.maxWakeUpInterval = options.maxWakeUpInterval;\n this.defaultWakeUpInterval = options.defaultWakeUpInterval;\n this.wakeUpIntervalSteps = options.wakeUpIntervalSteps;\n this.wakeUpOnDemandSupported = options.wakeUpOnDemandSupported;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WakeUpCCIntervalCapabilitiesReport {\n validatePayload(raw.payload.length >= 12);\n const minWakeUpInterval = raw.payload.readUIntBE(0, 3);\n const maxWakeUpInterval = raw.payload.readUIntBE(3, 3);\n const defaultWakeUpInterval = raw.payload.readUIntBE(6, 3);\n const wakeUpIntervalSteps = raw.payload.readUIntBE(9, 3);\n let wakeUpOnDemandSupported = false;\n if (raw.payload.length >= 13) {\n // V3+\n wakeUpOnDemandSupported = !!(raw.payload[12] & 0b1);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n minWakeUpInterval,\n maxWakeUpInterval,\n defaultWakeUpInterval,\n wakeUpIntervalSteps,\n wakeUpOnDemandSupported,\n });\n }\n public persistValues(ctx: PersistValuesContext): boolean {\n if (!super.persistValues(ctx))\n return false;\n const valueDB = this.getValueDB(ctx);\n // Store the received information as metadata for the wake up interval\n valueDB.setMetadata({\n commandClass: this.ccId,\n endpoint: this.endpointIndex,\n property: \"wakeUpInterval\",\n }, {\n ...ValueMetadata.WriteOnlyUInt24,\n allowed: [\n { value: 0 },\n {\n from: this.minWakeUpInterval,\n to: this.maxWakeUpInterval,\n step: this.wakeUpIntervalSteps,\n },\n ],\n min: 0,\n max: this.maxWakeUpInterval,\n default: this.defaultWakeUpInterval,\n states: { 0: \"Disabled\" },\n });\n // Store wakeUpOnDemandSupported in valueDB\n return true;\n }\n public readonly minWakeUpInterval: number;\n public readonly maxWakeUpInterval: number;\n public readonly defaultWakeUpInterval: number;\n public readonly wakeUpIntervalSteps: number;\n public readonly wakeUpOnDemandSupported: boolean;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"default interval\": `${this.defaultWakeUpInterval} seconds`,\n \"minimum interval\": `${this.minWakeUpInterval} seconds`,\n \"maximum interval\": `${this.maxWakeUpInterval} seconds`,\n \"interval steps\": `${this.wakeUpIntervalSteps} seconds`,\n \"wake up on demand supported\": `${this.wakeUpOnDemandSupported}`,\n },\n };\n }\n}\n@CCCommand(WakeUpCommand.IntervalCapabilitiesGet)\n@expectedCCResponse(WakeUpCCIntervalCapabilitiesReport)\nexport class WakeUpCCIntervalCapabilitiesGet extends WakeUpCC {\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as __validateArgs from \"./WakeUpCC._validateArgs.js\";\nconst { validateArgs_WakeUpCCAPI_setInterval } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type SupervisionResult, TransmitOptions, ValueMetadata, type WithAddress, supervisedCommandSucceeded, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, pick } from \"@zwave-js/shared\";\nimport { clamp } from \"alcalzone-shared/math\";\nimport { CCAPI, POLL_VALUE, type PollValueImplementation, SET_VALUE, type SetValueImplementation, throwUnsupportedProperty, throwWrongValueType, } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type PersistValuesContext, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, useSupervision, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { WakeUpCommand } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { WakeUpCCValues } from \"./_CCValues.generated.js\";\nexport { WakeUpCCValues };\n@API(CommandClasses[\"Wake Up\"])\nexport class WakeUpCCAPI extends CCAPI {\n public supportsCommand(cmd: WakeUpCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case WakeUpCommand.IntervalGet:\n return this.isSinglecast();\n case WakeUpCommand.IntervalSet:\n case WakeUpCommand.NoMoreInformation:\n return true; // This is mandatory\n case WakeUpCommand.IntervalCapabilitiesGet:\n return this.version >= 2 && this.isSinglecast();\n }\n return super.supportsCommand(cmd);\n }\n protected override get [SET_VALUE](): SetValueImplementation {\n return async function (this: WakeUpCCAPI, { property }, value) {\n if (property !== \"wakeUpInterval\") {\n throwUnsupportedProperty(this.ccId, property);\n }\n if (typeof value !== \"number\") {\n throwWrongValueType(this.ccId, property, \"number\", typeof value);\n }\n const result = await this.setInterval(value, this.host.ownNodeId ?? 1);\n // Verify the change after a short delay, unless the command was supervised and successful\n if (this.isSinglecast() && !supervisedCommandSucceeded(result)) {\n this.schedulePoll({ property }, value, { transition: \"fast\" });\n }\n return result;\n };\n }\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: WakeUpCCAPI, { property }) {\n switch (property) {\n case \"wakeUpInterval\":\n return (await this.getInterval())?.[property];\n default:\n throwUnsupportedProperty(this.ccId, property);\n }\n };\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getInterval() {\n this.assertSupportsCommand(WakeUpCommand, WakeUpCommand.IntervalGet);\n const cc = new WakeUpCCIntervalGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<WakeUpCCIntervalReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\"wakeUpInterval\", \"controllerNodeId\"]);\n }\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getIntervalCapabilities() {\n this.assertSupportsCommand(WakeUpCommand, WakeUpCommand.IntervalCapabilitiesGet);\n const cc = new WakeUpCCIntervalCapabilitiesGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<WakeUpCCIntervalCapabilitiesReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"defaultWakeUpInterval\",\n \"minWakeUpInterval\",\n \"maxWakeUpInterval\",\n \"wakeUpIntervalSteps\",\n \"wakeUpOnDemandSupported\",\n ]);\n }\n }\n @validateArgs_WakeUpCCAPI_setInterval()\n public async setInterval(wakeUpInterval: number, controllerNodeId: number): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(WakeUpCommand, WakeUpCommand.IntervalSet);\n const cc = new WakeUpCCIntervalSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n wakeUpInterval,\n controllerNodeId,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n public async sendNoMoreInformation(): Promise<void> {\n this.assertSupportsCommand(WakeUpCommand, WakeUpCommand.NoMoreInformation);\n const cc = new WakeUpCCNoMoreInformation({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n await this.host.sendCommand(cc, {\n ...this.commandOptions,\n // This command must be sent as part of the wake up queue\n priority: MessagePriority.WakeUp,\n // Don't try to resend this - if we get no response, the node is most likely asleep\n maxSendAttempts: 1,\n // Also we don't want to wait for an ACK because this can lock up the network for seconds\n // if the target node is asleep and doesn't respond to the command\n transmitOptions: TransmitOptions.DEFAULT_NOACK,\n });\n }\n}\n@commandClass(CommandClasses[\"Wake Up\"])\n@implementedVersion(3)\n@ccValues(WakeUpCCValues)\nexport class WakeUpCC extends CommandClass {\n declare ccCommand: WakeUpCommand;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Wake Up\"], ctx, endpoint).withOptions({\n priority: MessagePriority.NodeQuery,\n tag: \"interview\",\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n if (node.id === ctx.ownNodeId) {\n ctx.logNode(node.id, `skipping wakeup configuration for the controller`);\n }\n else if (node.isFrequentListening) {\n ctx.logNode(node.id, `skipping wakeup configuration for frequent listening device`);\n }\n else {\n let desiredInterval: number;\n let currentControllerNodeId: number;\n let minInterval: number | undefined;\n let maxInterval: number | undefined;\n // Retrieve the allowed wake up intervals and wake on demand support if possible\n if (api.version >= 2) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"retrieving wakeup capabilities from the device...\",\n direction: \"outbound\",\n });\n const wakeupCaps = await api.getIntervalCapabilities();\n if (wakeupCaps) {\n const logMessage = `received wakeup capabilities:\ndefault wakeup interval: ${wakeupCaps.defaultWakeUpInterval} seconds\nminimum wakeup interval: ${wakeupCaps.minWakeUpInterval} seconds\nmaximum wakeup interval: ${wakeupCaps.maxWakeUpInterval} seconds\nwakeup interval steps: ${wakeupCaps.wakeUpIntervalSteps} seconds\nwakeup on demand supported: ${wakeupCaps.wakeUpOnDemandSupported}`;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n minInterval = wakeupCaps.minWakeUpInterval;\n maxInterval = wakeupCaps.maxWakeUpInterval;\n }\n }\n // SDS14223 prescribes a IntervalSet followed by a check\n // We have no intention of changing the interval (maybe some time in the future)\n // So for now get the current interval and just set the controller ID\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"retrieving wakeup interval from the device...\",\n direction: \"outbound\",\n });\n const wakeupResp = await api.getInterval();\n if (wakeupResp) {\n const logMessage = `received wakeup configuration:\nwakeup interval: ${wakeupResp.wakeUpInterval} seconds\ncontroller node: ${wakeupResp.controllerNodeId}`;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n desiredInterval = wakeupResp.wakeUpInterval;\n currentControllerNodeId = wakeupResp.controllerNodeId;\n }\n else {\n // Just guess, I guess\n desiredInterval = 3600 * 6; // 6 hours\n currentControllerNodeId = 0; // assume not set\n }\n const ownNodeId = ctx.ownNodeId;\n // Only change the destination if necessary\n if (currentControllerNodeId !== ownNodeId) {\n // Spec compliance: Limit the interval to the allowed range, but...\n // ...try and preserve a \"never wake up\" configuration (#6367)\n if (desiredInterval !== 0\n && minInterval != undefined\n && maxInterval != undefined) {\n desiredInterval = clamp(desiredInterval, minInterval, maxInterval);\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"configuring wakeup destination node\",\n direction: \"outbound\",\n });\n await api.setInterval(desiredInterval, ownNodeId);\n this.setValue(ctx, WakeUpCCValues.controllerNodeId, ownNodeId);\n ctx.logNode(node.id, \"wakeup destination node changed!\");\n }\n }\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n}\n// @publicAPI\nexport interface WakeUpCCIntervalSetOptions {\n wakeUpInterval: number;\n controllerNodeId: number;\n}\n@CCCommand(WakeUpCommand.IntervalSet)\n@useSupervision()\nexport class WakeUpCCIntervalSet extends WakeUpCC {\n public constructor(options: WithAddress<WakeUpCCIntervalSetOptions>) {\n super(options);\n this.wakeUpInterval = options.wakeUpInterval;\n this.controllerNodeId = options.controllerNodeId;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WakeUpCCIntervalSet {\n validatePayload(raw.payload.length >= 4);\n const wakeUpInterval = raw.payload.readUIntBE(0, 3);\n const controllerNodeId = raw.payload[3];\n return new this({\n nodeId: ctx.sourceNodeId,\n wakeUpInterval,\n controllerNodeId,\n });\n }\n public wakeUpInterval: number;\n public controllerNodeId: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n 0,\n 0,\n 0, // placeholder\n this.controllerNodeId,\n ]);\n this.payload.writeUIntBE(this.wakeUpInterval, 0, 3);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"wake-up interval\": `${this.wakeUpInterval} seconds`,\n \"controller node id\": this.controllerNodeId,\n },\n };\n }\n}\n// @publicAPI\nexport interface WakeUpCCIntervalReportOptions {\n wakeUpInterval: number;\n controllerNodeId: number;\n}\n@CCCommand(WakeUpCommand.IntervalReport)\n@ccValueProperty(\"wakeUpInterval\", WakeUpCCValues.wakeUpInterval)\n@ccValueProperty(\"controllerNodeId\", WakeUpCCValues.controllerNodeId)\nexport class WakeUpCCIntervalReport extends WakeUpCC {\n public constructor(options: WithAddress<WakeUpCCIntervalReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.wakeUpInterval = options.wakeUpInterval;\n this.controllerNodeId = options.controllerNodeId;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WakeUpCCIntervalReport {\n validatePayload(raw.payload.length >= 4);\n const wakeUpInterval = raw.payload.readUIntBE(0, 3);\n const controllerNodeId = raw.payload[3];\n return new this({\n nodeId: ctx.sourceNodeId,\n wakeUpInterval,\n controllerNodeId,\n });\n }\n public readonly wakeUpInterval: number;\n public readonly controllerNodeId: number;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"wake-up interval\": `${this.wakeUpInterval} seconds`,\n \"controller node id\": this.controllerNodeId,\n },\n };\n }\n}\n@CCCommand(WakeUpCommand.IntervalGet)\n@expectedCCResponse(WakeUpCCIntervalReport)\nexport class WakeUpCCIntervalGet extends WakeUpCC {\n}\n@CCCommand(WakeUpCommand.WakeUpNotification)\nexport class WakeUpCCWakeUpNotification extends WakeUpCC {\n}\n@CCCommand(WakeUpCommand.NoMoreInformation)\nexport class WakeUpCCNoMoreInformation extends WakeUpCC {\n}\n// @publicAPI\nexport interface WakeUpCCIntervalCapabilitiesReportOptions {\n minWakeUpInterval: number;\n maxWakeUpInterval: number;\n defaultWakeUpInterval: number;\n wakeUpIntervalSteps: number;\n wakeUpOnDemandSupported: boolean;\n}\n@CCCommand(WakeUpCommand.IntervalCapabilitiesReport)\n@ccValueProperty(\"wakeUpOnDemandSupported\", WakeUpCCValues.wakeUpOnDemandSupported)\nexport class WakeUpCCIntervalCapabilitiesReport extends WakeUpCC {\n public constructor(options: WithAddress<WakeUpCCIntervalCapabilitiesReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.minWakeUpInterval = options.minWakeUpInterval;\n this.maxWakeUpInterval = options.maxWakeUpInterval;\n this.defaultWakeUpInterval = options.defaultWakeUpInterval;\n this.wakeUpIntervalSteps = options.wakeUpIntervalSteps;\n this.wakeUpOnDemandSupported = options.wakeUpOnDemandSupported;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WakeUpCCIntervalCapabilitiesReport {\n validatePayload(raw.payload.length >= 12);\n const minWakeUpInterval = raw.payload.readUIntBE(0, 3);\n const maxWakeUpInterval = raw.payload.readUIntBE(3, 3);\n const defaultWakeUpInterval = raw.payload.readUIntBE(6, 3);\n const wakeUpIntervalSteps = raw.payload.readUIntBE(9, 3);\n let wakeUpOnDemandSupported = false;\n if (raw.payload.length >= 13) {\n // V3+\n wakeUpOnDemandSupported = !!(raw.payload[12] & 0b1);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n minWakeUpInterval,\n maxWakeUpInterval,\n defaultWakeUpInterval,\n wakeUpIntervalSteps,\n wakeUpOnDemandSupported,\n });\n }\n public persistValues(ctx: PersistValuesContext): boolean {\n if (!super.persistValues(ctx))\n return false;\n const valueDB = this.getValueDB(ctx);\n // Store the received information as metadata for the wake up interval\n valueDB.setMetadata({\n commandClass: this.ccId,\n endpoint: this.endpointIndex,\n property: \"wakeUpInterval\",\n }, {\n ...ValueMetadata.WriteOnlyUInt24,\n allowed: [\n { value: 0 },\n {\n from: this.minWakeUpInterval,\n to: this.maxWakeUpInterval,\n step: this.wakeUpIntervalSteps,\n },\n ],\n min: 0,\n max: this.maxWakeUpInterval,\n default: this.defaultWakeUpInterval,\n states: { 0: \"Disabled\" },\n });\n // Store wakeUpOnDemandSupported in valueDB\n return true;\n }\n public readonly minWakeUpInterval: number;\n public readonly maxWakeUpInterval: number;\n public readonly defaultWakeUpInterval: number;\n public readonly wakeUpIntervalSteps: number;\n public readonly wakeUpOnDemandSupported: boolean;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"default interval\": `${this.defaultWakeUpInterval} seconds`,\n \"minimum interval\": `${this.minWakeUpInterval} seconds`,\n \"maximum interval\": `${this.maxWakeUpInterval} seconds`,\n \"interval steps\": `${this.wakeUpIntervalSteps} seconds`,\n \"wake up on demand supported\": `${this.wakeUpOnDemandSupported}`,\n },\n };\n }\n}\n@CCCommand(WakeUpCommand.IntervalCapabilitiesGet)\n@expectedCCResponse(WakeUpCCIntervalCapabilitiesReport)\nexport class WakeUpCCIntervalCapabilitiesGet extends WakeUpCC {\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -226,7 +226,7 @@ let WindowCoveringCCAPI = (() => {
226
226
  }
227
227
  }
228
228
  async set(targetValues, duration) {
229
- this.assertSupportsCommand(import_Types.WindowCoveringCommand, import_Types.WindowCoveringCommand.StartLevelChange);
229
+ this.assertSupportsCommand(import_Types.WindowCoveringCommand, import_Types.WindowCoveringCommand.Set);
230
230
  const cc = new WindowCoveringCCSet({
231
231
  nodeId: this.endpoint.nodeId,
232
232
  endpointIndex: this.endpoint.index,
@@ -282,7 +282,8 @@ let WindowCoveringCC = (() => {
282
282
  const node = this.getNode(ctx);
283
283
  const endpoint = this.getEndpoint(ctx);
284
284
  const api = import_API.CCAPI.create(import_core.CommandClasses["Window Covering"], ctx, endpoint).withOptions({
285
- priority: import_core.MessagePriority.NodeQuery
285
+ priority: import_core.MessagePriority.NodeQuery,
286
+ tag: "interview"
286
287
  });
287
288
  ctx.logNode(node.id, {
288
289
  endpoint: this.endpointIndex,
@@ -296,8 +297,9 @@ let WindowCoveringCC = (() => {
296
297
  });
297
298
  const supported = await api.getSupported();
298
299
  if (supported?.length) {
299
- const logMessage = `supported window covering parameters:
300
- ${supported.map((p) => `\xB7 ${(0, import_shared.getEnumMemberName)(import_Types.WindowCoveringParameter, p)}`).join("\n")}`;
300
+ const logMessage = (0, import_core.logText)("supported window covering parameters:", {
301
+ nested: (0, import_core.logList)(supported.map((p) => (0, import_shared.getEnumMemberName)(import_Types.WindowCoveringParameter, p)))
302
+ });
301
303
  ctx.logNode(node.id, {
302
304
  endpoint: this.endpointIndex,
303
305
  message: logMessage,
@@ -311,6 +313,7 @@ ${supported.map((p) => `\xB7 ${(0, import_shared.getEnumMemberName)(import_Types
311
313
  this.setMetadata(ctx, import_CCValues_generated.WindowCoveringCCValues.levelChangeDown(param));
312
314
  }
313
315
  await this.refreshValues(ctx, {
316
+ tag: "interview",
314
317
  onProgress: /* @__PURE__ */ __name((completed, total) => node.reportInterviewProgress(completed, total), "onProgress")
315
318
  });
316
319
  }
@@ -320,7 +323,8 @@ ${supported.map((p) => `\xB7 ${(0, import_shared.getEnumMemberName)(import_Types
320
323
  const node = this.getNode(ctx);
321
324
  const endpoint = this.getEndpoint(ctx);
322
325
  const api = import_API.CCAPI.create(import_core.CommandClasses["Window Covering"], ctx, endpoint).withOptions({
323
- priority: options?.priority ?? import_core.MessagePriority.NodeQuery
326
+ priority: options?.priority ?? import_core.MessagePriority.NodeQuery,
327
+ tag: options?.tag
324
328
  });
325
329
  const parameters = this.getValue(ctx, import_CCValues_generated.WindowCoveringCCValues.supportedParameters) ?? [];
326
330
  const queryableParameters = parameters.filter((param) => param % 2 != 0);
@@ -392,8 +396,7 @@ let WindowCoveringCCSupportedReport = (() => {
392
396
  return {
393
397
  ...super.toLogEntry(ctx),
394
398
  message: {
395
- "supported parameters": this.supportedParameters.map((p) => `
396
- \xB7 ${(0, import_shared.getEnumMemberName)(import_Types.WindowCoveringParameter, p)}`).join("")
399
+ "supported parameters": (0, import_core.logList)(this.supportedParameters.map((p) => (0, import_shared.getEnumMemberName)(import_Types.WindowCoveringParameter, p)))
397
400
  }
398
401
  };
399
402
  }