@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
@@ -136,14 +136,15 @@ let LanguageCC = (() => {
136
136
  message: `Interviewing ${this.ccName}...`,
137
137
  direction: "none"
138
138
  });
139
- await this.refreshValues(ctx);
139
+ await this.refreshValues(ctx, { tag: "interview" });
140
140
  this.setInterviewComplete(ctx, true);
141
141
  }
142
142
  async refreshValues(ctx, options) {
143
143
  const node = this.getNode(ctx);
144
144
  const endpoint = this.getEndpoint(ctx);
145
145
  const api = import_API.CCAPI.create(import_core.CommandClasses.Language, ctx, endpoint).withOptions({
146
- priority: options?.priority ?? import_core.MessagePriority.NodeQuery
146
+ priority: options?.priority ?? import_core.MessagePriority.NodeQuery,
147
+ tag: options?.tag
147
148
  });
148
149
  ctx.logNode(node.id, {
149
150
  message: "requesting language setting...",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src_gen/cc/LanguageCC.ts"],
4
- "sourcesContent": ["import * as __validateArgs from \"./LanguageCC._validateArgs.js\";\nconst { validateArgs_LanguageCCAPI_set } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, type SupervisionResult, ValueMetadata, type WithAddress, ZWaveError, ZWaveErrorCodes, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, pick } from \"@zwave-js/shared\";\nimport { CCAPI } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type RefreshValuesContext, type RefreshValuesOptions, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, useSupervision, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { LanguageCommand } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { LanguageCCValues } from \"./_CCValues.generated.js\";\nexport { LanguageCCValues };\n// @noSetValueAPI It doesn't make sense\n@API(CommandClasses.Language)\nexport class LanguageCCAPI extends CCAPI {\n public supportsCommand(cmd: LanguageCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case LanguageCommand.Get:\n return this.isSinglecast();\n case LanguageCommand.Set:\n return true; // This is mandatory\n }\n return super.supportsCommand(cmd);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async get() {\n this.assertSupportsCommand(LanguageCommand, LanguageCommand.Get);\n const cc = new LanguageCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<LanguageCCReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\"language\", \"country\"]);\n }\n }\n @validateArgs_LanguageCCAPI_set()\n public async set(language: string, country?: string): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(LanguageCommand, LanguageCommand.Set);\n const cc = new LanguageCCSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n language,\n country,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n}\n@commandClass(CommandClasses.Language)\n@implementedVersion(1)\n@ccValues(LanguageCCValues)\nexport class LanguageCC extends CommandClass {\n declare ccCommand: LanguageCommand;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n await this.refreshValues(ctx);\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses.Language, ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n });\n ctx.logNode(node.id, {\n message: \"requesting language setting...\",\n direction: \"outbound\",\n });\n const resp = await api.get();\n if (resp) {\n const { language, country } = resp;\n const logMessage = `received current language setting: ${language}${country != undefined ? `-${country}` : \"\"}`;\n ctx.logNode(node.id, {\n message: logMessage,\n direction: \"inbound\",\n });\n }\n }\n}\n// @publicAPI\nexport interface LanguageCCSetOptions {\n language: string;\n country?: string;\n}\n@CCCommand(LanguageCommand.Set)\n@useSupervision()\nexport class LanguageCCSet extends LanguageCC {\n public constructor(options: WithAddress<LanguageCCSetOptions>) {\n super(options);\n // Populate properties from options object\n this._language = options.language;\n this._country = options.country;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): LanguageCCSet {\n // TODO: Deserialize payload\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new LanguageCCSet({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n private _language: string;\n public get language(): string {\n return this._language;\n }\n public set language(value: string) {\n if (value.length !== 3 || value.toLowerCase() !== value) {\n throw new ZWaveError(\"language must be a 3 digit (lowercase) code according to ISO 639-2\", ZWaveErrorCodes.Argument_Invalid);\n }\n this._language = value;\n }\n private _country: MaybeNotKnown<string>;\n public get country(): MaybeNotKnown<string> {\n return this._country;\n }\n public set country(value: MaybeNotKnown<string>) {\n if (typeof value === \"string\"\n && (value.length !== 2 || value.toUpperCase() !== value)) {\n throw new ZWaveError(\"country must be a 2 digit (uppercase) code according to ISO 3166-1\", ZWaveErrorCodes.Argument_Invalid);\n }\n this._country = value;\n }\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from(this._language, \"ascii\");\n if (this._country) {\n this.payload = Bytes.concat([\n this.payload,\n Bytes.from(this._country, \"ascii\"),\n ]);\n }\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = { language: this.language };\n if (this._country != undefined) {\n message.country = this._country;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface LanguageCCReportOptions {\n language: string;\n country: MaybeNotKnown<string>;\n}\n@CCCommand(LanguageCommand.Report)\n@ccValueProperty(\"language\", LanguageCCValues.language)\n@ccValueProperty(\"country\", LanguageCCValues.country)\nexport class LanguageCCReport extends LanguageCC {\n public constructor(options: WithAddress<LanguageCCReportOptions>) {\n super(options);\n this.language = options.language;\n this.country = options.country;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): LanguageCCReport {\n validatePayload(raw.payload.length >= 3);\n const language = raw.payload.subarray(0, 3).toString(\"ascii\");\n // Enforce the same locale format the Set side requires, so a node\n // cannot push codes that violate ISO 639-2 / ISO 3166-1\n validatePayload(language.length === 3, language.toLowerCase() === language);\n let country: MaybeNotKnown<string>;\n if (raw.payload.length >= 5) {\n country = raw.payload.subarray(3, 5).toString(\"ascii\");\n validatePayload(country.length === 2, country.toUpperCase() === country);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n language,\n country,\n });\n }\n public readonly language: string;\n public readonly country: MaybeNotKnown<string>;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = { language: this.language };\n if (this.country != undefined) {\n message.country = this.country;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@CCCommand(LanguageCommand.Get)\n@expectedCCResponse(LanguageCCReport)\nexport class LanguageCCGet extends LanguageCC {\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qBAAgC;AAEhC,kBAA2O;AAC3O,oBAA4B;AAC5B,iBAAsB;AACtB,0BAAuH;AACvH,oCAAiI;AAEjI,mBAAgC;AAEhC,gCAAiC;AATjC,MAAM,EAAE,+BAA8B,IAAK;IAa9B,iBAAa,MAAA;8BADzB,mCAAI,2BAAe,QAAQ,CAAC;;;;oBACM;;;qCAAA,YAAK;WAAA;;;;;;;;yBAsBnC,+BAA8B,CAAE;AACjC,qCAAA,MAAA,MAAA,iBAAA,EAAA,MAAA,UAAA,MAAA,OAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,SAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,KAAb,OAAgB,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AAvBpB,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACF,gBAAgB,KAAoB;AACvC,cAAQ,KAAK;QACT,KAAK,6BAAgB;AACjB,iBAAO,KAAK,aAAY;QAC5B,KAAK,6BAAgB;AACjB,iBAAO;MACf;AACA,aAAO,MAAM,gBAAgB,GAAG;IACpC;;IAEO,MAAM,MAAG;AACZ,WAAK,sBAAsB,8BAAiB,6BAAgB,GAAG;AAC/D,YAAM,KAAK,IAAI,cAAc;QACzB,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;OAChC;AACD,YAAM,WAAW,MAAM,KAAK,KAAK,YAA8B,IAAI,KAAK,cAAc;AACtF,UAAI,UAAU;AACV,mBAAO,oBAAK,UAAU,CAAC,YAAY,SAAS,CAAC;MACjD;IACJ;IAEO,MAAM,IAAI,UAAkB,SAAgB;AAC/C,WAAK,sBAAsB,8BAAiB,6BAAgB,GAAG;AAC/D,YAAM,KAAK,IAAI,cAAc;QACzB,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B;QACA;OACH;AACD,aAAO,KAAK,KAAK,YAAY,IAAI,KAAK,cAAc;IACxD;;;AAhCS,0CAAA,MAAA,0BAAA;;;;;IAqCA,cAAU,MAAA;8BAHtB,4CAAa,2BAAe,QAAQ,OACpC,kDAAmB,CAAC,OACpB,wCAAS,0CAAgB,CAAC;;;;oBACK;kCAAA,YAAY;WAAA;;;;;;;;AAA5C,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IAEF,MAAM,UAAU,KAAqB;AACxC,YAAM,OAAO,KAAK,QAAQ,GAAG;AAC7B,UAAI,QAAQ,KAAK,IAAI;QACjB,UAAU,KAAK;QACf,SAAS,gBAAgB,KAAK,MAAM;QACpC,WAAW;OACd;AACD,YAAM,KAAK,cAAc,GAAG;AAE5B,WAAK,qBAAqB,KAAK,IAAI;IACvC;IACO,MAAM,cAAc,KAA2B,SAA8B;AAChF,YAAM,OAAO,KAAK,QAAQ,GAAG;AAC7B,YAAM,WAAW,KAAK,YAAY,GAAG;AACrC,YAAM,MAAM,iBAAM,OAAO,2BAAe,UAAU,KAAK,QAAQ,EAAE,YAAY;QACzE,UAAU,SAAS,YAAY,4BAAgB;OAClD;AACD,UAAI,QAAQ,KAAK,IAAI;QACjB,SAAS;QACT,WAAW;OACd;AACD,YAAM,OAAO,MAAM,IAAI,IAAG;AAC1B,UAAI,MAAM;AACN,cAAM,EAAE,UAAU,QAAO,IAAK;AAC9B,cAAM,aAAa,sCAAsC,QAAQ,GAAG,WAAW,SAAY,IAAI,OAAO,KAAK,EAAE;AAC7G,YAAI,QAAQ,KAAK,IAAI;UACjB,SAAS;UACT,WAAW;SACd;MACL;IACJ;;;;IASS,iBAAa,MAAA;8BAFzB,yCAAU,6BAAgB,GAAG,OAC7B,8CAAc,CAAE;;;;oBACkB;qCAAA,YAAU;WAAA;;;;;;;;AAA7C,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACT,YAAmB,SAA0C;AACzD,YAAM,OAAO;AAEb,WAAK,YAAY,QAAQ;AACzB,WAAK,WAAW,QAAQ;IAC5B;IACO,OAAO,KAAK,MAAa,MAAsB;AAElD,YAAM,IAAI,uBAAW,GAAG,KAAK,IAAI,qCAAqC,4BAAgB,8BAA8B;IAIxH;IACQ;IACR,IAAW,WAAQ;AACf,aAAO,KAAK;IAChB;IACA,IAAW,SAAS,OAAa;AAC7B,UAAI,MAAM,WAAW,KAAK,MAAM,YAAW,MAAO,OAAO;AACrD,cAAM,IAAI,uBAAW,sEAAsE,4BAAgB,gBAAgB;MAC/H;AACA,WAAK,YAAY;IACrB;IACQ;IACR,IAAW,UAAO;AACd,aAAO,KAAK;IAChB;IACA,IAAW,QAAQ,OAA4B;AAC3C,UAAI,OAAO,UAAU,aACb,MAAM,WAAW,KAAK,MAAM,YAAW,MAAO,QAAQ;AAC1D,cAAM,IAAI,uBAAW,sEAAsE,4BAAgB,gBAAgB;MAC/H;AACA,WAAK,WAAW;IACpB;IACO,UAAU,KAAsB;AACnC,WAAK,UAAU,oBAAM,KAAK,KAAK,WAAW,OAAO;AACjD,UAAI,KAAK,UAAU;AACf,aAAK,UAAU,oBAAM,OAAO;UACxB,KAAK;UACL,oBAAM,KAAK,KAAK,UAAU,OAAO;SACpC;MACL;AACA,aAAO,MAAM,UAAU,GAAG;IAC9B;IACO,WAAW,KAAgB;AAC9B,YAAM,UAAyB,EAAE,UAAU,KAAK,SAAQ;AACxD,UAAI,KAAK,YAAY,QAAW;AAC5B,gBAAQ,UAAU,KAAK;MAC3B;AACA,aAAO;QACH,GAAG,MAAM,WAAW,GAAG;QACvB;;IAER;;;;IAUS,oBAAgB,MAAA;8BAH5B,yCAAU,6BAAgB,MAAM,OAChC,+CAAgB,YAAY,2CAAiB,QAAQ,OACrD,+CAAgB,WAAW,2CAAiB,OAAO,CAAC;;;;oBACf;wCAAA,YAAU;WAAA;;;;;;;;AAAhD,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACT,YAAmB,SAA6C;AAC5D,YAAM,OAAO;AACb,WAAK,WAAW,QAAQ;AACxB,WAAK,UAAU,QAAQ;IAC3B;IACO,OAAO,KAAK,KAAY,KAAqB;AAChD,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,WAAW,IAAI,QAAQ,SAAS,GAAG,CAAC,EAAE,SAAS,OAAO;AAG5D,uCAAgB,SAAS,WAAW,GAAG,SAAS,YAAW,MAAO,QAAQ;AAC1E,UAAI;AACJ,UAAI,IAAI,QAAQ,UAAU,GAAG;AACzB,kBAAU,IAAI,QAAQ,SAAS,GAAG,CAAC,EAAE,SAAS,OAAO;AACrD,yCAAgB,QAAQ,WAAW,GAAG,QAAQ,YAAW,MAAO,OAAO;MAC3E;AACA,aAAO,IAAI,KAAK;QACZ,QAAQ,IAAI;QACZ;QACA;OACH;IACL;IACgB;IACA;IACT,WAAW,KAAgB;AAC9B,YAAM,UAAyB,EAAE,UAAU,KAAK,SAAQ;AACxD,UAAI,KAAK,WAAW,QAAW;AAC3B,gBAAQ,UAAU,KAAK;MAC3B;AACA,aAAO;QACH,GAAG,MAAM,WAAW,GAAG;QACvB;;IAER;;;;IAIS,iBAAa,MAAA;8BAFzB,yCAAU,6BAAgB,GAAG,OAC7B,kDAAmB,gBAAgB,CAAC;;;;oBACF;qCAAA,YAAU;WAAA;;;;;;;;AAA7C,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;;;;",
4
+ "sourcesContent": ["import * as __validateArgs from \"./LanguageCC._validateArgs.js\";\nconst { validateArgs_LanguageCCAPI_set } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, type SupervisionResult, ValueMetadata, type WithAddress, ZWaveError, ZWaveErrorCodes, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, pick } from \"@zwave-js/shared\";\nimport { CCAPI } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type RefreshValuesContext, type RefreshValuesOptions, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, useSupervision, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { LanguageCommand } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { LanguageCCValues } from \"./_CCValues.generated.js\";\nexport { LanguageCCValues };\n// @noSetValueAPI It doesn't make sense\n@API(CommandClasses.Language)\nexport class LanguageCCAPI extends CCAPI {\n public supportsCommand(cmd: LanguageCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case LanguageCommand.Get:\n return this.isSinglecast();\n case LanguageCommand.Set:\n return true; // This is mandatory\n }\n return super.supportsCommand(cmd);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async get() {\n this.assertSupportsCommand(LanguageCommand, LanguageCommand.Get);\n const cc = new LanguageCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<LanguageCCReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\"language\", \"country\"]);\n }\n }\n @validateArgs_LanguageCCAPI_set()\n public async set(language: string, country?: string): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(LanguageCommand, LanguageCommand.Set);\n const cc = new LanguageCCSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n language,\n country,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n}\n@commandClass(CommandClasses.Language)\n@implementedVersion(1)\n@ccValues(LanguageCCValues)\nexport class LanguageCC extends CommandClass {\n declare ccCommand: LanguageCommand;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n await this.refreshValues(ctx, { tag: \"interview\" });\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses.Language, ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n tag: options?.tag,\n });\n ctx.logNode(node.id, {\n message: \"requesting language setting...\",\n direction: \"outbound\",\n });\n const resp = await api.get();\n if (resp) {\n const { language, country } = resp;\n const logMessage = `received current language setting: ${language}${country != undefined ? `-${country}` : \"\"}`;\n ctx.logNode(node.id, {\n message: logMessage,\n direction: \"inbound\",\n });\n }\n }\n}\n// @publicAPI\nexport interface LanguageCCSetOptions {\n language: string;\n country?: string;\n}\n@CCCommand(LanguageCommand.Set)\n@useSupervision()\nexport class LanguageCCSet extends LanguageCC {\n public constructor(options: WithAddress<LanguageCCSetOptions>) {\n super(options);\n // Populate properties from options object\n this._language = options.language;\n this._country = options.country;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): LanguageCCSet {\n // TODO: Deserialize payload\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new LanguageCCSet({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n private _language: string;\n public get language(): string {\n return this._language;\n }\n public set language(value: string) {\n if (value.length !== 3 || value.toLowerCase() !== value) {\n throw new ZWaveError(\"language must be a 3 digit (lowercase) code according to ISO 639-2\", ZWaveErrorCodes.Argument_Invalid);\n }\n this._language = value;\n }\n private _country: MaybeNotKnown<string>;\n public get country(): MaybeNotKnown<string> {\n return this._country;\n }\n public set country(value: MaybeNotKnown<string>) {\n if (typeof value === \"string\"\n && (value.length !== 2 || value.toUpperCase() !== value)) {\n throw new ZWaveError(\"country must be a 2 digit (uppercase) code according to ISO 3166-1\", ZWaveErrorCodes.Argument_Invalid);\n }\n this._country = value;\n }\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from(this._language, \"ascii\");\n if (this._country) {\n this.payload = Bytes.concat([\n this.payload,\n Bytes.from(this._country, \"ascii\"),\n ]);\n }\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = { language: this.language };\n if (this._country != undefined) {\n message.country = this._country;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface LanguageCCReportOptions {\n language: string;\n country: MaybeNotKnown<string>;\n}\n@CCCommand(LanguageCommand.Report)\n@ccValueProperty(\"language\", LanguageCCValues.language)\n@ccValueProperty(\"country\", LanguageCCValues.country)\nexport class LanguageCCReport extends LanguageCC {\n public constructor(options: WithAddress<LanguageCCReportOptions>) {\n super(options);\n this.language = options.language;\n this.country = options.country;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): LanguageCCReport {\n validatePayload(raw.payload.length >= 3);\n const language = raw.payload.subarray(0, 3).toString(\"ascii\");\n // Enforce the same locale format the Set side requires, so a node\n // cannot push codes that violate ISO 639-2 / ISO 3166-1\n validatePayload(language.length === 3, language.toLowerCase() === language);\n let country: MaybeNotKnown<string>;\n if (raw.payload.length >= 5) {\n country = raw.payload.subarray(3, 5).toString(\"ascii\");\n validatePayload(country.length === 2, country.toUpperCase() === country);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n language,\n country,\n });\n }\n public readonly language: string;\n public readonly country: MaybeNotKnown<string>;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = { language: this.language };\n if (this.country != undefined) {\n message.country = this.country;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@CCCommand(LanguageCommand.Get)\n@expectedCCResponse(LanguageCCReport)\nexport class LanguageCCGet extends LanguageCC {\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -156,14 +156,15 @@ let LockCC = (() => {
156
156
  message: `Interviewing ${this.ccName}...`,
157
157
  direction: "none"
158
158
  });
159
- await this.refreshValues(ctx);
159
+ await this.refreshValues(ctx, { tag: "interview" });
160
160
  this.setInterviewComplete(ctx, true);
161
161
  }
162
162
  async refreshValues(ctx, options) {
163
163
  const node = this.getNode(ctx);
164
164
  const endpoint = this.getEndpoint(ctx);
165
165
  const api = import_API.CCAPI.create(import_core.CommandClasses.Lock, ctx, endpoint).withOptions({
166
- priority: options?.priority ?? import_core.MessagePriority.NodeQuery
166
+ priority: options?.priority ?? import_core.MessagePriority.NodeQuery,
167
+ tag: options?.tag
167
168
  });
168
169
  ctx.logNode(node.id, {
169
170
  message: "requesting current lock state...",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src_gen/cc/LockCC.ts"],
4
- "sourcesContent": ["import * as __validateArgs from \"./LockCC._validateArgs.js\";\nconst { validateArgs_LockCCAPI_set } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type SupervisionResult, ValueMetadata, type WithAddress, supervisedCommandSucceeded, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes } from \"@zwave-js/shared\";\nimport { CCAPI, POLL_VALUE, PhysicalCCAPI, type PollValueImplementation, SET_VALUE, type SetValueImplementation, throwUnsupportedProperty, throwWrongValueType, } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type RefreshValuesContext, type RefreshValuesOptions, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, useSupervision, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { LockCommand } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { LockCCValues } from \"./_CCValues.generated.js\";\nexport { LockCCValues };\n@API(CommandClasses.Lock)\nexport class LockCCAPI extends PhysicalCCAPI {\n public supportsCommand(cmd: LockCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case LockCommand.Get:\n case LockCommand.Set:\n return true; // This is mandatory\n }\n return super.supportsCommand(cmd);\n }\n public async get(): Promise<MaybeNotKnown<boolean>> {\n this.assertSupportsCommand(LockCommand, LockCommand.Get);\n const cc = new LockCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<LockCCReport>(cc, this.commandOptions);\n return response?.locked;\n }\n /**\n * Locks or unlocks the lock\n * @param locked Whether the lock should be locked\n */\n @validateArgs_LockCCAPI_set()\n public async set(locked: boolean): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(LockCommand, LockCommand.Set);\n const cc = new LockCCSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n locked,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n protected override get [SET_VALUE](): SetValueImplementation {\n return async function (this: LockCCAPI, { property }, value) {\n if (property !== \"locked\") {\n throwUnsupportedProperty(this.ccId, property);\n }\n if (typeof value !== \"boolean\") {\n throwWrongValueType(this.ccId, property, \"boolean\", typeof value);\n }\n const result = await this.set(value);\n // Verify the current value after a delay, unless the command was supervised and successful\n if (!supervisedCommandSucceeded(result)) {\n this.schedulePoll({ property }, value);\n }\n return result;\n };\n }\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: LockCCAPI, { property }) {\n if (property === \"locked\")\n return this.get();\n throwUnsupportedProperty(this.ccId, property);\n };\n }\n}\n@commandClass(CommandClasses.Lock)\n@implementedVersion(1)\n@ccValues(LockCCValues)\nexport class LockCC extends CommandClass {\n declare ccCommand: LockCommand;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n await this.refreshValues(ctx);\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses.Lock, ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n });\n ctx.logNode(node.id, {\n message: \"requesting current lock state...\",\n direction: \"outbound\",\n });\n const locked = await api.get();\n const logMessage = `the lock is ${locked ? \"locked\" : \"unlocked\"}`;\n ctx.logNode(node.id, {\n message: logMessage,\n direction: \"inbound\",\n });\n }\n}\n// @publicAPI\nexport interface LockCCSetOptions {\n locked: boolean;\n}\n@CCCommand(LockCommand.Set)\n@useSupervision()\nexport class LockCCSet extends LockCC {\n public constructor(options: WithAddress<LockCCSetOptions>) {\n super(options);\n this.locked = options.locked;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): LockCCSet {\n validatePayload(raw.payload.length >= 1);\n const locked = raw.payload[0] === 1;\n return new this({\n nodeId: ctx.sourceNodeId,\n locked,\n });\n }\n public locked: boolean;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.locked ? 1 : 0]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: { locked: this.locked },\n };\n }\n}\n// @publicAPI\nexport interface LockCCReportOptions {\n locked: boolean;\n}\n@CCCommand(LockCommand.Report)\n@ccValueProperty(\"locked\", LockCCValues.locked)\nexport class LockCCReport extends LockCC {\n public constructor(options: WithAddress<LockCCReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.locked = options.locked;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): LockCCReport {\n validatePayload(raw.payload.length >= 1);\n const locked = raw.payload[0] === 1;\n return new this({\n nodeId: ctx.sourceNodeId,\n locked,\n });\n }\n public readonly locked: boolean;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.locked ? 1 : 0]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: { locked: this.locked },\n };\n }\n}\n@CCCommand(LockCommand.Get)\n@expectedCCResponse(LockCCReport)\nexport class LockCCGet extends LockCC {\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as __validateArgs from \"./LockCC._validateArgs.js\";\nconst { validateArgs_LockCCAPI_set } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type SupervisionResult, ValueMetadata, type WithAddress, supervisedCommandSucceeded, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes } from \"@zwave-js/shared\";\nimport { CCAPI, POLL_VALUE, PhysicalCCAPI, type PollValueImplementation, SET_VALUE, type SetValueImplementation, throwUnsupportedProperty, throwWrongValueType, } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type RefreshValuesContext, type RefreshValuesOptions, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, useSupervision, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { LockCommand } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { LockCCValues } from \"./_CCValues.generated.js\";\nexport { LockCCValues };\n@API(CommandClasses.Lock)\nexport class LockCCAPI extends PhysicalCCAPI {\n public supportsCommand(cmd: LockCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case LockCommand.Get:\n case LockCommand.Set:\n return true; // This is mandatory\n }\n return super.supportsCommand(cmd);\n }\n public async get(): Promise<MaybeNotKnown<boolean>> {\n this.assertSupportsCommand(LockCommand, LockCommand.Get);\n const cc = new LockCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<LockCCReport>(cc, this.commandOptions);\n return response?.locked;\n }\n /**\n * Locks or unlocks the lock\n * @param locked Whether the lock should be locked\n */\n @validateArgs_LockCCAPI_set()\n public async set(locked: boolean): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(LockCommand, LockCommand.Set);\n const cc = new LockCCSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n locked,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n protected override get [SET_VALUE](): SetValueImplementation {\n return async function (this: LockCCAPI, { property }, value) {\n if (property !== \"locked\") {\n throwUnsupportedProperty(this.ccId, property);\n }\n if (typeof value !== \"boolean\") {\n throwWrongValueType(this.ccId, property, \"boolean\", typeof value);\n }\n const result = await this.set(value);\n // Verify the current value after a delay, unless the command was supervised and successful\n if (!supervisedCommandSucceeded(result)) {\n this.schedulePoll({ property }, value);\n }\n return result;\n };\n }\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: LockCCAPI, { property }) {\n if (property === \"locked\")\n return this.get();\n throwUnsupportedProperty(this.ccId, property);\n };\n }\n}\n@commandClass(CommandClasses.Lock)\n@implementedVersion(1)\n@ccValues(LockCCValues)\nexport class LockCC extends CommandClass {\n declare ccCommand: LockCommand;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n await this.refreshValues(ctx, { tag: \"interview\" });\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses.Lock, ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n tag: options?.tag,\n });\n ctx.logNode(node.id, {\n message: \"requesting current lock state...\",\n direction: \"outbound\",\n });\n const locked = await api.get();\n const logMessage = `the lock is ${locked ? \"locked\" : \"unlocked\"}`;\n ctx.logNode(node.id, {\n message: logMessage,\n direction: \"inbound\",\n });\n }\n}\n// @publicAPI\nexport interface LockCCSetOptions {\n locked: boolean;\n}\n@CCCommand(LockCommand.Set)\n@useSupervision()\nexport class LockCCSet extends LockCC {\n public constructor(options: WithAddress<LockCCSetOptions>) {\n super(options);\n this.locked = options.locked;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): LockCCSet {\n validatePayload(raw.payload.length >= 1);\n const locked = raw.payload[0] === 1;\n return new this({\n nodeId: ctx.sourceNodeId,\n locked,\n });\n }\n public locked: boolean;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.locked ? 1 : 0]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: { locked: this.locked },\n };\n }\n}\n// @publicAPI\nexport interface LockCCReportOptions {\n locked: boolean;\n}\n@CCCommand(LockCommand.Report)\n@ccValueProperty(\"locked\", LockCCValues.locked)\nexport class LockCCReport extends LockCC {\n public constructor(options: WithAddress<LockCCReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.locked = options.locked;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): LockCCReport {\n validatePayload(raw.payload.length >= 1);\n const locked = raw.payload[0] === 1;\n return new this({\n nodeId: ctx.sourceNodeId,\n locked,\n });\n }\n public readonly locked: boolean;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.locked ? 1 : 0]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: { locked: this.locked },\n };\n }\n}\n@CCCommand(LockCommand.Get)\n@expectedCCResponse(LockCCReport)\nexport class LockCCGet extends LockCC {\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -155,7 +155,10 @@ let ManufacturerSpecificCC = (() => {
155
155
  async interview(ctx) {
156
156
  const node = this.getNode(ctx);
157
157
  const endpoint = this.getEndpoint(ctx);
158
- const api = import_API.CCAPI.create(import_core.CommandClasses["Manufacturer Specific"], ctx, endpoint).withOptions({ priority: import_core.MessagePriority.NodeQuery });
158
+ const api = import_API.CCAPI.create(import_core.CommandClasses["Manufacturer Specific"], ctx, endpoint).withOptions({
159
+ priority: import_core.MessagePriority.NodeQuery,
160
+ tag: "interview"
161
+ });
159
162
  if (node.id !== ctx.ownNodeId) {
160
163
  ctx.logNode(node.id, {
161
164
  endpoint: this.endpointIndex,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src_gen/cc/ManufacturerSpecificCC.ts"],
4
- "sourcesContent": ["import * as __validateArgs from \"./ManufacturerSpecificCC._validateArgs.js\";\nconst { validateArgs_ManufacturerSpecificCCAPI_deviceSpecificGet, validateArgs_ManufacturerSpecificCCAPI_sendReport } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, ValueMetadata, type WithAddress, ZWaveError, ZWaveErrorCodes, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, 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, implementedVersion, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { DeviceIdType, ManufacturerSpecificCommand } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { ManufacturerSpecificCCValues } from \"./_CCValues.generated.js\";\nexport { ManufacturerSpecificCCValues };\n// @noSetValueAPI This CC is read-only\n@API(CommandClasses[\"Manufacturer Specific\"])\nexport class ManufacturerSpecificCCAPI extends PhysicalCCAPI {\n public supportsCommand(cmd: ManufacturerSpecificCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case ManufacturerSpecificCommand.Get:\n case ManufacturerSpecificCommand.Report:\n return true; // This is mandatory\n case ManufacturerSpecificCommand.DeviceSpecificGet:\n case ManufacturerSpecificCommand.DeviceSpecificReport:\n return this.version >= 2;\n }\n return super.supportsCommand(cmd);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async get() {\n this.assertSupportsCommand(ManufacturerSpecificCommand, ManufacturerSpecificCommand.Get);\n const cc = new ManufacturerSpecificCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<ManufacturerSpecificCCReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"manufacturerId\",\n \"productType\",\n \"productId\",\n ]);\n }\n }\n @validateArgs_ManufacturerSpecificCCAPI_deviceSpecificGet()\n public async deviceSpecificGet(deviceIdType: DeviceIdType): Promise<MaybeNotKnown<string>> {\n this.assertSupportsCommand(ManufacturerSpecificCommand, ManufacturerSpecificCommand.DeviceSpecificGet);\n const cc = new ManufacturerSpecificCCDeviceSpecificGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n deviceIdType,\n });\n const response = await this.host.sendCommand<ManufacturerSpecificCCDeviceSpecificReport>(cc, this.commandOptions);\n return response?.deviceId;\n }\n @validateArgs_ManufacturerSpecificCCAPI_sendReport()\n public async sendReport(options: ManufacturerSpecificCCReportOptions): Promise<void> {\n this.assertSupportsCommand(ManufacturerSpecificCommand, ManufacturerSpecificCommand.Report);\n const cc = new ManufacturerSpecificCCReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n}\n@commandClass(CommandClasses[\"Manufacturer Specific\"])\n@implementedVersion(2)\n@ccValues(ManufacturerSpecificCCValues)\nexport class ManufacturerSpecificCC extends CommandClass {\n declare ccCommand: ManufacturerSpecificCommand;\n public determineRequiredCCInterviews(): readonly CommandClasses[] {\n // The Manufacturer Specific CC MUST be interviewed first\n return [];\n }\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[\"Manufacturer Specific\"], ctx, endpoint).withOptions({ priority: MessagePriority.NodeQuery });\n if (node.id !== ctx.ownNodeId) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying manufacturer information...\",\n direction: \"outbound\",\n });\n const mfResp = await api.get();\n if (mfResp) {\n const logMessage = `received response for manufacturer information:\n manufacturer: ${ctx.lookupManufacturer(mfResp.manufacturerId)\n || \"unknown\"} (${num2hex(mfResp.manufacturerId)})\n product type: ${num2hex(mfResp.productType)}\n product id: ${num2hex(mfResp.productId)}`;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n }\n }\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n}\n// @publicAPI\nexport interface ManufacturerSpecificCCReportOptions {\n manufacturerId: number;\n productType: number;\n productId: number;\n}\n@CCCommand(ManufacturerSpecificCommand.Report)\n@ccValueProperty(\"manufacturerId\", ManufacturerSpecificCCValues.manufacturerId)\n@ccValueProperty(\"productType\", ManufacturerSpecificCCValues.productType)\n@ccValueProperty(\"productId\", ManufacturerSpecificCCValues.productId)\nexport class ManufacturerSpecificCCReport extends ManufacturerSpecificCC {\n public constructor(options: WithAddress<ManufacturerSpecificCCReportOptions>) {\n super(options);\n this.manufacturerId = options.manufacturerId;\n this.productType = options.productType;\n this.productId = options.productId;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): ManufacturerSpecificCCReport {\n validatePayload(raw.payload.length >= 6);\n const manufacturerId = raw.payload.readUInt16BE(0);\n const productType = raw.payload.readUInt16BE(2);\n const productId = raw.payload.readUInt16BE(4);\n return new this({\n nodeId: ctx.sourceNodeId,\n manufacturerId,\n productType,\n productId,\n });\n }\n public readonly manufacturerId: number;\n public readonly productType: number;\n public readonly productId: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = new Bytes(6);\n this.payload.writeUInt16BE(this.manufacturerId, 0);\n this.payload.writeUInt16BE(this.productType, 2);\n this.payload.writeUInt16BE(this.productId, 4);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"manufacturer id\": num2hex(this.manufacturerId),\n \"product type\": num2hex(this.productType),\n \"product id\": num2hex(this.productId),\n },\n };\n }\n}\n@CCCommand(ManufacturerSpecificCommand.Get)\n@expectedCCResponse(ManufacturerSpecificCCReport)\nexport class ManufacturerSpecificCCGet extends ManufacturerSpecificCC {\n}\n// @publicAPI\nexport interface ManufacturerSpecificCCDeviceSpecificReportOptions {\n type: DeviceIdType;\n deviceId: string;\n}\n@CCCommand(ManufacturerSpecificCommand.DeviceSpecificReport)\n@ccValueProperty(\"deviceId\", ManufacturerSpecificCCValues.deviceId, (self) => [self.type])\nexport class ManufacturerSpecificCCDeviceSpecificReport extends ManufacturerSpecificCC {\n public constructor(options: WithAddress<ManufacturerSpecificCCDeviceSpecificReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.type = options.type;\n this.deviceId = options.deviceId;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): ManufacturerSpecificCCDeviceSpecificReport {\n validatePayload(raw.payload.length >= 2);\n const type: DeviceIdType = raw.payload[0] & 0b111;\n const dataFormat = raw.payload[1] >>> 5;\n const dataLength = raw.payload[1] & 0b11111;\n validatePayload(dataLength > 0, raw.payload.length >= 2 + dataLength);\n const deviceIdData = raw.payload.subarray(2, 2 + dataLength);\n const deviceId: string = dataFormat === 0\n ? deviceIdData.toString(\"utf8\")\n : \"0x\" + deviceIdData.toString(\"hex\");\n return new this({\n nodeId: ctx.sourceNodeId,\n type,\n deviceId,\n });\n }\n public readonly type: DeviceIdType;\n public readonly deviceId: string;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"device id type\": getEnumMemberName(DeviceIdType, this.type),\n \"device id\": this.deviceId,\n },\n };\n }\n}\n// @publicAPI\nexport interface ManufacturerSpecificCCDeviceSpecificGetOptions {\n deviceIdType: DeviceIdType;\n}\n@CCCommand(ManufacturerSpecificCommand.DeviceSpecificGet)\n@expectedCCResponse(ManufacturerSpecificCCDeviceSpecificReport)\nexport class ManufacturerSpecificCCDeviceSpecificGet extends ManufacturerSpecificCC {\n public constructor(options: WithAddress<ManufacturerSpecificCCDeviceSpecificGetOptions>) {\n super(options);\n this.deviceIdType = options.deviceIdType;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): ManufacturerSpecificCCDeviceSpecificGet {\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new ManufacturerSpecificCCDeviceSpecificGet({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n public deviceIdType: DeviceIdType;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([(this.deviceIdType || 0) & 0b111]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"device id type\": getEnumMemberName(DeviceIdType, this.deviceIdType),\n },\n };\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qBAAgC;AAEhC,kBAA+L;AAC/L,oBAAwD;AACxD,iBAAqC;AACrC,0BAAiE;AACjE,oCAAiH;AAEjH,mBAA0D;AAE1D,gCAA6C;AAT7C,MAAM,EAAE,0DAA0D,kDAAiD,IAAK;IAa3G,6BAAyB,MAAA;8BADrC,mCAAI,2BAAe,uBAAuB,CAAC,CAAC;;;;oBACE;;;;iDAAA,YAAa;WAAA;;;;;;;;uCA4BvD,yDAAwD,CAAE;gCAW1D,kDAAiD,CAAE;AAVpD,qCAAA,MAAA,MAAA,+BAAA,EAAA,MAAA,UAAA,MAAA,qBAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,uBAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,mBAAb,OAA8B,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AAW9B,qCAAA,MAAA,MAAA,wBAAA,EAAA,MAAA,UAAA,MAAA,cAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,gBAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,YAAb,OAAuB,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AAxC3B,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACF,gBAAgB,KAAgC;AACnD,cAAQ,KAAK;QACT,KAAK,yCAA4B;QACjC,KAAK,yCAA4B;AAC7B,iBAAO;;QACX,KAAK,yCAA4B;QACjC,KAAK,yCAA4B;AAC7B,iBAAO,KAAK,WAAW;MAC/B;AACA,aAAO,MAAM,gBAAgB,GAAG;IACpC;;IAEO,MAAM,MAAG;AACZ,WAAK,sBAAsB,0CAA6B,yCAA4B,GAAG;AACvF,YAAM,KAAK,IAAI,0BAA0B;QACrC,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;OAChC;AACD,YAAM,WAAW,MAAM,KAAK,KAAK,YAA0C,IAAI,KAAK,cAAc;AAClG,UAAI,UAAU;AACV,mBAAO,oBAAK,UAAU;UAClB;UACA;UACA;SACH;MACL;IACJ;IAEO,MAAM,kBAAkB,cAA0B;AACrD,WAAK,sBAAsB,0CAA6B,yCAA4B,iBAAiB;AACrG,YAAM,KAAK,IAAI,wCAAwC;QACnD,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B;OACH;AACD,YAAM,WAAW,MAAM,KAAK,KAAK,YAAwD,IAAI,KAAK,cAAc;AAChH,aAAO,UAAU;IACrB;IAEO,MAAM,WAAW,SAA4C;AAChE,WAAK,sBAAsB,0CAA6B,yCAA4B,MAAM;AAC1F,YAAM,KAAK,IAAI,6BAA6B;QACxC,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B,GAAG;OACN;AACD,YAAM,KAAK,KAAK,YAAY,IAAI,KAAK,cAAc;IACvD;;;AAhDS,0CAAA,MAAA,0BAAA;;;;;IAqDA,0BAAsB,MAAA;8BAHlC,4CAAa,2BAAe,uBAAuB,CAAC,OACpD,kDAAmB,CAAC,OACpB,wCAAS,sDAA4B,CAAC;;;;oBACK;8CAAA,YAAY;WAAA;;;;;;;;AAAxD,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IAEF,gCAA6B;AAEhC,aAAO,CAAA;IACX;IACO,MAAM,UAAU,KAAqB;AACxC,YAAM,OAAO,KAAK,QAAQ,GAAG;AAC7B,YAAM,WAAW,KAAK,YAAY,GAAG;AACrC,YAAM,MAAM,iBAAM,OAAO,2BAAe,uBAAuB,GAAG,KAAK,QAAQ,EAAE,YAAY,EAAE,UAAU,4BAAgB,UAAS,CAAE;AACpI,UAAI,KAAK,OAAO,IAAI,WAAW;AAC3B,YAAI,QAAQ,KAAK,IAAI;UACjB,UAAU,KAAK;UACf,SAAS,gBAAgB,KAAK,MAAM;UACpC,WAAW;SACd;AACD,YAAI,QAAQ,KAAK,IAAI;UACjB,UAAU,KAAK;UACf,SAAS;UACT,WAAW;SACd;AACD,cAAM,SAAS,MAAM,IAAI,IAAG;AAC5B,YAAI,QAAQ;AACR,gBAAM,aAAa;kBACjB,IAAI,mBAAmB,OAAO,cAAc,KACvC,SAAS,SAAK,uBAAQ,OAAO,cAAc,CAAC;sBACjD,uBAAQ,OAAO,WAAW,CAAC;sBAC3B,uBAAQ,OAAO,SAAS,CAAC;AAC3B,cAAI,QAAQ,KAAK,IAAI;YACjB,UAAU,KAAK;YACf,SAAS;YACT,WAAW;WACd;QACL;MACJ;AAEA,WAAK,qBAAqB,KAAK,IAAI;IACvC;;;;IAYS,gCAA4B,MAAA;8BAJxC,yCAAU,yCAA4B,MAAM,OAC5C,+CAAgB,kBAAkB,uDAA6B,cAAc,OAC7E,+CAAgB,eAAe,uDAA6B,WAAW,OACvE,+CAAgB,aAAa,uDAA6B,SAAS,CAAC;;;;oBACnB;oDAAA,YAAsB;WAAA;;;;;;;;AAAxE,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACT,YAAmB,SAAyD;AACxE,YAAM,OAAO;AACb,WAAK,iBAAiB,QAAQ;AAC9B,WAAK,cAAc,QAAQ;AAC3B,WAAK,YAAY,QAAQ;IAC7B;IACO,OAAO,KAAK,KAAY,KAAqB;AAChD,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,iBAAiB,IAAI,QAAQ,aAAa,CAAC;AACjD,YAAM,cAAc,IAAI,QAAQ,aAAa,CAAC;AAC9C,YAAM,YAAY,IAAI,QAAQ,aAAa,CAAC;AAC5C,aAAO,IAAI,KAAK;QACZ,QAAQ,IAAI;QACZ;QACA;QACA;OACH;IACL;IACgB;IACA;IACA;IACT,UAAU,KAAsB;AACnC,WAAK,UAAU,IAAI,oBAAM,CAAC;AAC1B,WAAK,QAAQ,cAAc,KAAK,gBAAgB,CAAC;AACjD,WAAK,QAAQ,cAAc,KAAK,aAAa,CAAC;AAC9C,WAAK,QAAQ,cAAc,KAAK,WAAW,CAAC;AAC5C,aAAO,MAAM,UAAU,GAAG;IAC9B;IACO,WAAW,KAAgB;AAC9B,aAAO;QACH,GAAG,MAAM,WAAW,GAAG;QACvB,SAAS;UACL,uBAAmB,uBAAQ,KAAK,cAAc;UAC9C,oBAAgB,uBAAQ,KAAK,WAAW;UACxC,kBAAc,uBAAQ,KAAK,SAAS;;;IAGhD;;;;IAIS,6BAAyB,MAAA;8BAFrC,yCAAU,yCAA4B,GAAG,OACzC,kDAAmB,4BAA4B,CAAC;;;;oBACF;iDAAA,YAAsB;WAAA;;;;;;;;AAArE,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;;;;IASA,8CAA0C,MAAA;8BAFtD,yCAAU,yCAA4B,oBAAoB,OAC1D,+CAAgB,YAAY,uDAA6B,UAAU,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC;;;;oBAC1B;kEAAA,YAAsB;WAAA;;;;;;;;AAAtF,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACT,YAAmB,SAAuE;AACtF,YAAM,OAAO;AAEb,WAAK,OAAO,QAAQ;AACpB,WAAK,WAAW,QAAQ;IAC5B;IACO,OAAO,KAAK,KAAY,KAAqB;AAChD,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,OAAqB,IAAI,QAAQ,CAAC,IAAI;AAC5C,YAAM,aAAa,IAAI,QAAQ,CAAC,MAAM;AACtC,YAAM,aAAa,IAAI,QAAQ,CAAC,IAAI;AACpC,uCAAgB,aAAa,GAAG,IAAI,QAAQ,UAAU,IAAI,UAAU;AACpE,YAAM,eAAe,IAAI,QAAQ,SAAS,GAAG,IAAI,UAAU;AAC3D,YAAM,WAAmB,eAAe,IAClC,aAAa,SAAS,MAAM,IAC5B,OAAO,aAAa,SAAS,KAAK;AACxC,aAAO,IAAI,KAAK;QACZ,QAAQ,IAAI;QACZ;QACA;OACH;IACL;IACgB;IACA;IACT,WAAW,KAAgB;AAC9B,aAAO;QACH,GAAG,MAAM,WAAW,GAAG;QACvB,SAAS;UACL,sBAAkB,iCAAkB,2BAAc,KAAK,IAAI;UAC3D,aAAa,KAAK;;;IAG9B;;;;IAQS,2CAAuC,MAAA;8BAFnD,yCAAU,yCAA4B,iBAAiB,OACvD,kDAAmB,0CAA0C,CAAC;;;;oBACF;+DAAA,YAAsB;WAAA;;;;;;;;AAAnF,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACT,YAAmB,SAAoE;AACnF,YAAM,OAAO;AACb,WAAK,eAAe,QAAQ;IAChC;IACO,OAAO,KAAK,MAAa,MAAsB;AAClD,YAAM,IAAI,uBAAW,GAAG,KAAK,IAAI,qCAAqC,4BAAgB,8BAA8B;IAIxH;IACO;IACA,UAAU,KAAsB;AACnC,WAAK,UAAU,oBAAM,KAAK,EAAE,KAAK,gBAAgB,KAAK,CAAK,CAAC;AAC5D,aAAO,MAAM,UAAU,GAAG;IAC9B;IACO,WAAW,KAAgB;AAC9B,aAAO;QACH,GAAG,MAAM,WAAW,GAAG;QACvB,SAAS;UACL,sBAAkB,iCAAkB,2BAAc,KAAK,YAAY;;;IAG/E;;;;",
4
+ "sourcesContent": ["import * as __validateArgs from \"./ManufacturerSpecificCC._validateArgs.js\";\nconst { validateArgs_ManufacturerSpecificCCAPI_deviceSpecificGet, validateArgs_ManufacturerSpecificCCAPI_sendReport } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, ValueMetadata, type WithAddress, ZWaveError, ZWaveErrorCodes, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, 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, implementedVersion, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { DeviceIdType, ManufacturerSpecificCommand } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { ManufacturerSpecificCCValues } from \"./_CCValues.generated.js\";\nexport { ManufacturerSpecificCCValues };\n// @noSetValueAPI This CC is read-only\n@API(CommandClasses[\"Manufacturer Specific\"])\nexport class ManufacturerSpecificCCAPI extends PhysicalCCAPI {\n public supportsCommand(cmd: ManufacturerSpecificCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case ManufacturerSpecificCommand.Get:\n case ManufacturerSpecificCommand.Report:\n return true; // This is mandatory\n case ManufacturerSpecificCommand.DeviceSpecificGet:\n case ManufacturerSpecificCommand.DeviceSpecificReport:\n return this.version >= 2;\n }\n return super.supportsCommand(cmd);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async get() {\n this.assertSupportsCommand(ManufacturerSpecificCommand, ManufacturerSpecificCommand.Get);\n const cc = new ManufacturerSpecificCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<ManufacturerSpecificCCReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"manufacturerId\",\n \"productType\",\n \"productId\",\n ]);\n }\n }\n @validateArgs_ManufacturerSpecificCCAPI_deviceSpecificGet()\n public async deviceSpecificGet(deviceIdType: DeviceIdType): Promise<MaybeNotKnown<string>> {\n this.assertSupportsCommand(ManufacturerSpecificCommand, ManufacturerSpecificCommand.DeviceSpecificGet);\n const cc = new ManufacturerSpecificCCDeviceSpecificGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n deviceIdType,\n });\n const response = await this.host.sendCommand<ManufacturerSpecificCCDeviceSpecificReport>(cc, this.commandOptions);\n return response?.deviceId;\n }\n @validateArgs_ManufacturerSpecificCCAPI_sendReport()\n public async sendReport(options: ManufacturerSpecificCCReportOptions): Promise<void> {\n this.assertSupportsCommand(ManufacturerSpecificCommand, ManufacturerSpecificCommand.Report);\n const cc = new ManufacturerSpecificCCReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n}\n@commandClass(CommandClasses[\"Manufacturer Specific\"])\n@implementedVersion(2)\n@ccValues(ManufacturerSpecificCCValues)\nexport class ManufacturerSpecificCC extends CommandClass {\n declare ccCommand: ManufacturerSpecificCommand;\n public determineRequiredCCInterviews(): readonly CommandClasses[] {\n // The Manufacturer Specific CC MUST be interviewed first\n return [];\n }\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[\"Manufacturer Specific\"], ctx, endpoint).withOptions({\n priority: MessagePriority.NodeQuery,\n tag: \"interview\",\n });\n if (node.id !== ctx.ownNodeId) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying manufacturer information...\",\n direction: \"outbound\",\n });\n const mfResp = await api.get();\n if (mfResp) {\n const logMessage = `received response for manufacturer information:\n manufacturer: ${ctx.lookupManufacturer(mfResp.manufacturerId)\n || \"unknown\"} (${num2hex(mfResp.manufacturerId)})\n product type: ${num2hex(mfResp.productType)}\n product id: ${num2hex(mfResp.productId)}`;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n }\n }\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n}\n// @publicAPI\nexport interface ManufacturerSpecificCCReportOptions {\n manufacturerId: number;\n productType: number;\n productId: number;\n}\n@CCCommand(ManufacturerSpecificCommand.Report)\n@ccValueProperty(\"manufacturerId\", ManufacturerSpecificCCValues.manufacturerId)\n@ccValueProperty(\"productType\", ManufacturerSpecificCCValues.productType)\n@ccValueProperty(\"productId\", ManufacturerSpecificCCValues.productId)\nexport class ManufacturerSpecificCCReport extends ManufacturerSpecificCC {\n public constructor(options: WithAddress<ManufacturerSpecificCCReportOptions>) {\n super(options);\n this.manufacturerId = options.manufacturerId;\n this.productType = options.productType;\n this.productId = options.productId;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): ManufacturerSpecificCCReport {\n validatePayload(raw.payload.length >= 6);\n const manufacturerId = raw.payload.readUInt16BE(0);\n const productType = raw.payload.readUInt16BE(2);\n const productId = raw.payload.readUInt16BE(4);\n return new this({\n nodeId: ctx.sourceNodeId,\n manufacturerId,\n productType,\n productId,\n });\n }\n public readonly manufacturerId: number;\n public readonly productType: number;\n public readonly productId: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = new Bytes(6);\n this.payload.writeUInt16BE(this.manufacturerId, 0);\n this.payload.writeUInt16BE(this.productType, 2);\n this.payload.writeUInt16BE(this.productId, 4);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"manufacturer id\": num2hex(this.manufacturerId),\n \"product type\": num2hex(this.productType),\n \"product id\": num2hex(this.productId),\n },\n };\n }\n}\n@CCCommand(ManufacturerSpecificCommand.Get)\n@expectedCCResponse(ManufacturerSpecificCCReport)\nexport class ManufacturerSpecificCCGet extends ManufacturerSpecificCC {\n}\n// @publicAPI\nexport interface ManufacturerSpecificCCDeviceSpecificReportOptions {\n type: DeviceIdType;\n deviceId: string;\n}\n@CCCommand(ManufacturerSpecificCommand.DeviceSpecificReport)\n@ccValueProperty(\"deviceId\", ManufacturerSpecificCCValues.deviceId, (self) => [self.type])\nexport class ManufacturerSpecificCCDeviceSpecificReport extends ManufacturerSpecificCC {\n public constructor(options: WithAddress<ManufacturerSpecificCCDeviceSpecificReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.type = options.type;\n this.deviceId = options.deviceId;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): ManufacturerSpecificCCDeviceSpecificReport {\n validatePayload(raw.payload.length >= 2);\n const type: DeviceIdType = raw.payload[0] & 0b111;\n const dataFormat = raw.payload[1] >>> 5;\n const dataLength = raw.payload[1] & 0b11111;\n validatePayload(dataLength > 0, raw.payload.length >= 2 + dataLength);\n const deviceIdData = raw.payload.subarray(2, 2 + dataLength);\n const deviceId: string = dataFormat === 0\n ? deviceIdData.toString(\"utf8\")\n : \"0x\" + deviceIdData.toString(\"hex\");\n return new this({\n nodeId: ctx.sourceNodeId,\n type,\n deviceId,\n });\n }\n public readonly type: DeviceIdType;\n public readonly deviceId: string;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"device id type\": getEnumMemberName(DeviceIdType, this.type),\n \"device id\": this.deviceId,\n },\n };\n }\n}\n// @publicAPI\nexport interface ManufacturerSpecificCCDeviceSpecificGetOptions {\n deviceIdType: DeviceIdType;\n}\n@CCCommand(ManufacturerSpecificCommand.DeviceSpecificGet)\n@expectedCCResponse(ManufacturerSpecificCCDeviceSpecificReport)\nexport class ManufacturerSpecificCCDeviceSpecificGet extends ManufacturerSpecificCC {\n public constructor(options: WithAddress<ManufacturerSpecificCCDeviceSpecificGetOptions>) {\n super(options);\n this.deviceIdType = options.deviceIdType;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): ManufacturerSpecificCCDeviceSpecificGet {\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new ManufacturerSpecificCCDeviceSpecificGet({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n public deviceIdType: DeviceIdType;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([(this.deviceIdType || 0) & 0b111]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"device id type\": getEnumMemberName(DeviceIdType, this.deviceIdType),\n },\n };\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -333,7 +333,6 @@ let MeterCCAPI = (() => {
333
333
  } else {
334
334
  return this.reset();
335
335
  }
336
- return void 0;
337
336
  };
338
337
  }
339
338
  [import_API.SET_VALUE_HOOKS] = ((0, import_tslib.__runInitializers)(this, _instanceExtraInitializers), ({ property, propertyKey }, _value, _options) => {
@@ -415,7 +414,8 @@ let MeterCC = (() => {
415
414
  const node = this.getNode(ctx);
416
415
  const endpoint = this.getEndpoint(ctx);
417
416
  const api = import_API.CCAPI.create(import_core.CommandClasses.Meter, ctx, endpoint).withOptions({
418
- priority: import_core.MessagePriority.NodeQuery
417
+ priority: import_core.MessagePriority.NodeQuery,
418
+ tag: "interview"
419
419
  });
420
420
  ctx.logNode(node.id, {
421
421
  endpoint: this.endpointIndex,
@@ -430,16 +430,16 @@ let MeterCC = (() => {
430
430
  });
431
431
  const suppResp = await api.getSupported();
432
432
  if (suppResp) {
433
- const logMessage = `received meter support:
434
- type: ${(0, import_core.getMeterName)(suppResp.type)}
435
- supported scales: ${suppResp.supportedScales.map((s) => ((0, import_core.getMeterScale)(suppResp.type, s) ?? (0, import_core.getUnknownMeterScale)(s)).label).map((label) => `
436
- \xB7 ${label}`).join("")}
437
- supported rate types: ${suppResp.supportedRateTypes.map((rt) => (0, import_shared.getEnumMemberName)(import_Types.RateType, rt)).map((label) => `
438
- \xB7 ${label}`).join("")}
439
- supports reset: ${suppResp.supportsReset}`;
440
433
  ctx.logNode(node.id, {
441
434
  endpoint: this.endpointIndex,
442
- message: logMessage,
435
+ message: (0, import_core.logText)("received meter support:", {
436
+ nested: (0, import_core.logDict)({
437
+ type: (0, import_core.getMeterName)(suppResp.type),
438
+ "supported scales": (0, import_core.logList)(suppResp.supportedScales.map((s) => ((0, import_core.getMeterScale)(suppResp.type, s) ?? (0, import_core.getUnknownMeterScale)(s)).label)),
439
+ "supported rate types": (0, import_core.logList)(suppResp.supportedRateTypes.map((rt) => (0, import_shared.getEnumMemberName)(import_Types.RateType, rt))),
440
+ "supports reset": suppResp.supportsReset
441
+ })
442
+ }),
443
443
  direction: "inbound"
444
444
  });
445
445
  } else {
@@ -452,6 +452,7 @@ supports reset: ${suppResp.supportsReset}`;
452
452
  }
453
453
  }
454
454
  await this.refreshValues(ctx, {
455
+ tag: "interview",
455
456
  onProgress: /* @__PURE__ */ __name((completed, total) => node.reportInterviewProgress(completed, total), "onProgress")
456
457
  });
457
458
  this.setInterviewComplete(ctx, true);
@@ -460,7 +461,8 @@ supports reset: ${suppResp.supportsReset}`;
460
461
  const node = this.getNode(ctx);
461
462
  const endpoint = this.getEndpoint(ctx);
462
463
  const api = import_API.CCAPI.create(import_core.CommandClasses.Meter, ctx, endpoint).withOptions({
463
- priority: options?.priority ?? import_core.MessagePriority.NodeQuery
464
+ priority: options?.priority ?? import_core.MessagePriority.NodeQuery,
465
+ tag: options?.tag
464
466
  });
465
467
  if (api.version === 1) {
466
468
  ctx.logNode(node.id, {
@@ -923,8 +925,7 @@ let MeterCCSupportedReport = (() => {
923
925
  const message = {
924
926
  "meter type": (0, import_core.getMeterName)(this.type),
925
927
  "supports reset": this.supportsReset,
926
- "supported scales": this.supportedScales.map((scale) => `
927
- \xB7 ${((0, import_core.getMeterScale)(this.type, scale) ?? (0, import_core.getUnknownMeterScale)(scale)).label}`).join(""),
928
+ "supported scales": (0, import_core.logList)(this.supportedScales.map((scale) => ((0, import_core.getMeterScale)(this.type, scale) ?? (0, import_core.getUnknownMeterScale)(scale)).label)),
928
929
  "supported rate types": this.supportedRateTypes.map((rt) => (0, import_shared.getEnumMemberName)(import_Types.RateType, rt)).join(", ")
929
930
  };
930
931
  return {