@zwave-js/cc 15.20.1 → 15.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (679) hide show
  1. package/build/cjs/cc/AlarmSensorCC._validateArgs.js.map +2 -2
  2. package/build/cjs/cc/AlarmSensorCC.d.ts +4 -131
  3. package/build/cjs/cc/AlarmSensorCC.js +1 -2
  4. package/build/cjs/cc/AlarmSensorCC.js.map +3 -3
  5. package/build/cjs/cc/ApplicationStatusCC.d.ts +1 -1
  6. package/build/cjs/cc/ApplicationStatusCC.js.map +3 -3
  7. package/build/cjs/cc/AssociationCC._validateArgs.js.map +2 -2
  8. package/build/cjs/cc/AssociationCC.d.ts +3 -109
  9. package/build/cjs/cc/AssociationCC.js +0 -1
  10. package/build/cjs/cc/AssociationCC.js.map +3 -3
  11. package/build/cjs/cc/AssociationGroupInfoCC._validateArgs.js.map +2 -2
  12. package/build/cjs/cc/AssociationGroupInfoCC.d.ts +3 -112
  13. package/build/cjs/cc/AssociationGroupInfoCC.js +0 -1
  14. package/build/cjs/cc/AssociationGroupInfoCC.js.map +3 -3
  15. package/build/cjs/cc/BarrierOperatorCC._validateArgs.js.map +2 -2
  16. package/build/cjs/cc/BarrierOperatorCC.d.ts +4 -148
  17. package/build/cjs/cc/BarrierOperatorCC.js +1 -2
  18. package/build/cjs/cc/BarrierOperatorCC.js.map +3 -3
  19. package/build/cjs/cc/BasicCC._validateArgs.js.map +2 -2
  20. package/build/cjs/cc/BasicCC.d.ts +4 -143
  21. package/build/cjs/cc/BasicCC.js +0 -1
  22. package/build/cjs/cc/BasicCC.js.map +3 -3
  23. package/build/cjs/cc/BasicWindowCoveringCC._validateArgs.js.map +2 -2
  24. package/build/cjs/cc/BasicWindowCoveringCC.d.ts +3 -63
  25. package/build/cjs/cc/BasicWindowCoveringCC.js +2 -3
  26. package/build/cjs/cc/BasicWindowCoveringCC.js.map +3 -3
  27. package/build/cjs/cc/BatteryCC.d.ts +4 -305
  28. package/build/cjs/cc/BatteryCC.js +39 -15
  29. package/build/cjs/cc/BatteryCC.js.map +3 -3
  30. package/build/cjs/cc/BinarySensorCC._validateArgs.js.map +2 -2
  31. package/build/cjs/cc/BinarySensorCC.d.ts +4 -59
  32. package/build/cjs/cc/BinarySensorCC.js +12 -3
  33. package/build/cjs/cc/BinarySensorCC.js.map +3 -3
  34. package/build/cjs/cc/BinarySwitchCC._validateArgs.js.map +2 -2
  35. package/build/cjs/cc/BinarySwitchCC.d.ts +4 -83
  36. package/build/cjs/cc/BinarySwitchCC.js +0 -1
  37. package/build/cjs/cc/BinarySwitchCC.js.map +3 -3
  38. package/build/cjs/cc/CRC16CC.d.ts +1 -1
  39. package/build/cjs/cc/CRC16CC.js.map +3 -3
  40. package/build/cjs/cc/CentralSceneCC._validateArgs.js.map +2 -2
  41. package/build/cjs/cc/CentralSceneCC.d.ts +3 -136
  42. package/build/cjs/cc/CentralSceneCC.js +0 -1
  43. package/build/cjs/cc/CentralSceneCC.js.map +3 -3
  44. package/build/cjs/cc/ClimateControlScheduleCC._validateArgs.js.map +2 -2
  45. package/build/cjs/cc/ClimateControlScheduleCC.d.ts +4 -87
  46. package/build/cjs/cc/ClimateControlScheduleCC.js +3 -4
  47. package/build/cjs/cc/ClimateControlScheduleCC.js.map +3 -3
  48. package/build/cjs/cc/ClockCC._validateArgs.js.map +2 -2
  49. package/build/cjs/cc/ClockCC.d.ts +1 -1
  50. package/build/cjs/cc/ClockCC.js +1 -1
  51. package/build/cjs/cc/ClockCC.js.map +3 -3
  52. package/build/cjs/cc/ColorSwitchCC._validateArgs.js.map +2 -2
  53. package/build/cjs/cc/ColorSwitchCC.d.ts +4 -227
  54. package/build/cjs/cc/ColorSwitchCC.js +3 -3
  55. package/build/cjs/cc/ColorSwitchCC.js.map +3 -3
  56. package/build/cjs/cc/ConfigurationCC._validateArgs.js.map +2 -2
  57. package/build/cjs/cc/ConfigurationCC.d.ts +9 -60
  58. package/build/cjs/cc/ConfigurationCC.js +71 -59
  59. package/build/cjs/cc/ConfigurationCC.js.map +3 -3
  60. package/build/cjs/cc/DeviceResetLocallyCC.d.ts +1 -1
  61. package/build/cjs/cc/DeviceResetLocallyCC.js.map +3 -3
  62. package/build/cjs/cc/DoorLockCC._validateArgs.js.map +2 -2
  63. package/build/cjs/cc/DoorLockCC.d.ts +4 -688
  64. package/build/cjs/cc/DoorLockCC.js +1 -2
  65. package/build/cjs/cc/DoorLockCC.js.map +3 -3
  66. package/build/cjs/cc/DoorLockLoggingCC._validateArgs.js.map +2 -2
  67. package/build/cjs/cc/DoorLockLoggingCC.d.ts +4 -29
  68. package/build/cjs/cc/DoorLockLoggingCC.js +0 -1
  69. package/build/cjs/cc/DoorLockLoggingCC.js.map +3 -3
  70. package/build/cjs/cc/EnergyProductionCC._validateArgs.js.map +2 -2
  71. package/build/cjs/cc/EnergyProductionCC.d.ts +4 -33
  72. package/build/cjs/cc/EnergyProductionCC.js +1 -2
  73. package/build/cjs/cc/EnergyProductionCC.js.map +3 -3
  74. package/build/cjs/cc/EntryControlCC._validateArgs.js.map +2 -2
  75. package/build/cjs/cc/EntryControlCC.d.ts +3 -137
  76. package/build/cjs/cc/EntryControlCC.js +0 -1
  77. package/build/cjs/cc/EntryControlCC.js.map +3 -3
  78. package/build/cjs/cc/FirmwareUpdateMetaDataCC._validateArgs.js.map +2 -2
  79. package/build/cjs/cc/FirmwareUpdateMetaDataCC.d.ts +4 -154
  80. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js +0 -1
  81. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js.map +3 -3
  82. package/build/cjs/cc/HailCC.js.map +3 -3
  83. package/build/cjs/cc/HumidityControlModeCC._validateArgs.js.map +2 -2
  84. package/build/cjs/cc/HumidityControlModeCC.d.ts +4 -58
  85. package/build/cjs/cc/HumidityControlModeCC.js +1 -2
  86. package/build/cjs/cc/HumidityControlModeCC.js.map +3 -3
  87. package/build/cjs/cc/HumidityControlOperatingStateCC.d.ts +4 -33
  88. package/build/cjs/cc/HumidityControlOperatingStateCC.js +0 -1
  89. package/build/cjs/cc/HumidityControlOperatingStateCC.js.map +3 -3
  90. package/build/cjs/cc/HumidityControlSetpointCC._validateArgs.js.map +2 -2
  91. package/build/cjs/cc/HumidityControlSetpointCC.d.ts +4 -92
  92. package/build/cjs/cc/HumidityControlSetpointCC.js +0 -1
  93. package/build/cjs/cc/HumidityControlSetpointCC.js.map +3 -3
  94. package/build/cjs/cc/InclusionControllerCC.d.ts +1 -1
  95. package/build/cjs/cc/InclusionControllerCC.js.map +3 -3
  96. package/build/cjs/cc/IndicatorCC._validateArgs.js.map +2 -2
  97. package/build/cjs/cc/IndicatorCC.d.ts +4 -207
  98. package/build/cjs/cc/IndicatorCC.js +0 -1
  99. package/build/cjs/cc/IndicatorCC.js.map +3 -3
  100. package/build/cjs/cc/IrrigationCC._validateArgs.js.map +2 -2
  101. package/build/cjs/cc/IrrigationCC.d.ts +4 -1186
  102. package/build/cjs/cc/IrrigationCC.js +1 -3
  103. package/build/cjs/cc/IrrigationCC.js.map +3 -3
  104. package/build/cjs/cc/LanguageCC._validateArgs.js.map +2 -2
  105. package/build/cjs/cc/LanguageCC.d.ts +4 -56
  106. package/build/cjs/cc/LanguageCC.js +0 -1
  107. package/build/cjs/cc/LanguageCC.js.map +3 -3
  108. package/build/cjs/cc/LockCC._validateArgs.js.map +2 -2
  109. package/build/cjs/cc/LockCC.d.ts +4 -31
  110. package/build/cjs/cc/LockCC.js +0 -1
  111. package/build/cjs/cc/LockCC.js.map +3 -3
  112. package/build/cjs/cc/ManufacturerProprietaryCC._validateArgs.js.map +2 -2
  113. package/build/cjs/cc/ManufacturerProprietaryCC.d.ts +1 -1
  114. package/build/cjs/cc/ManufacturerProprietaryCC.js.map +3 -3
  115. package/build/cjs/cc/ManufacturerSpecificCC._validateArgs.js.map +2 -2
  116. package/build/cjs/cc/ManufacturerSpecificCC.d.ts +3 -116
  117. package/build/cjs/cc/ManufacturerSpecificCC.js +0 -1
  118. package/build/cjs/cc/ManufacturerSpecificCC.js.map +3 -3
  119. package/build/cjs/cc/MeterCC._validateArgs.js.map +2 -2
  120. package/build/cjs/cc/MeterCC.d.ts +4 -203
  121. package/build/cjs/cc/MeterCC.js +0 -2
  122. package/build/cjs/cc/MeterCC.js.map +3 -3
  123. package/build/cjs/cc/MultiChannelAssociationCC._validateArgs.js.map +2 -2
  124. package/build/cjs/cc/MultiChannelAssociationCC.d.ts +3 -112
  125. package/build/cjs/cc/MultiChannelAssociationCC.js +0 -1
  126. package/build/cjs/cc/MultiChannelAssociationCC.js.map +3 -3
  127. package/build/cjs/cc/MultiChannelCC._validateArgs.js.map +2 -2
  128. package/build/cjs/cc/MultiChannelCC.d.ts +3 -207
  129. package/build/cjs/cc/MultiChannelCC.js +0 -1
  130. package/build/cjs/cc/MultiChannelCC.js.map +3 -3
  131. package/build/cjs/cc/MultiCommandCC._validateArgs.js.map +2 -2
  132. package/build/cjs/cc/MultiCommandCC.d.ts +1 -1
  133. package/build/cjs/cc/MultiCommandCC.js.map +3 -3
  134. package/build/cjs/cc/MultilevelSensorCC._validateArgs.js.map +2 -2
  135. package/build/cjs/cc/MultilevelSensorCC.d.ts +4 -84
  136. package/build/cjs/cc/MultilevelSensorCC.js +0 -1
  137. package/build/cjs/cc/MultilevelSensorCC.js.map +3 -3
  138. package/build/cjs/cc/MultilevelSwitchCC._validateArgs.js.map +2 -2
  139. package/build/cjs/cc/MultilevelSwitchCC.d.ts +5 -264
  140. package/build/cjs/cc/MultilevelSwitchCC.js +34 -1
  141. package/build/cjs/cc/MultilevelSwitchCC.js.map +3 -3
  142. package/build/cjs/cc/NoOperationCC.js.map +3 -3
  143. package/build/cjs/cc/NodeNamingCC._validateArgs.js.map +2 -2
  144. package/build/cjs/cc/NodeNamingCC.d.ts +4 -56
  145. package/build/cjs/cc/NodeNamingCC.js +0 -1
  146. package/build/cjs/cc/NodeNamingCC.js.map +3 -3
  147. package/build/cjs/cc/NotificationCC._validateArgs.js.map +2 -2
  148. package/build/cjs/cc/NotificationCC.d.ts +5 -357
  149. package/build/cjs/cc/NotificationCC.js +2 -2
  150. package/build/cjs/cc/NotificationCC.js.map +3 -3
  151. package/build/cjs/cc/PowerlevelCC._validateArgs.js.map +2 -2
  152. package/build/cjs/cc/PowerlevelCC.d.ts +1 -1
  153. package/build/cjs/cc/PowerlevelCC.js +2 -2
  154. package/build/cjs/cc/PowerlevelCC.js.map +3 -3
  155. package/build/cjs/cc/ProtectionCC._validateArgs.js.map +2 -2
  156. package/build/cjs/cc/ProtectionCC.d.ts +4 -212
  157. package/build/cjs/cc/ProtectionCC.js +1 -2
  158. package/build/cjs/cc/ProtectionCC.js.map +3 -3
  159. package/build/cjs/cc/SceneActivationCC._validateArgs.js.map +2 -2
  160. package/build/cjs/cc/SceneActivationCC.d.ts +4 -59
  161. package/build/cjs/cc/SceneActivationCC.js +0 -1
  162. package/build/cjs/cc/SceneActivationCC.js.map +3 -3
  163. package/build/cjs/cc/SceneActuatorConfigurationCC._validateArgs.js.map +2 -2
  164. package/build/cjs/cc/SceneActuatorConfigurationCC.d.ts +4 -65
  165. package/build/cjs/cc/SceneActuatorConfigurationCC.js +0 -1
  166. package/build/cjs/cc/SceneActuatorConfigurationCC.js.map +3 -3
  167. package/build/cjs/cc/SceneControllerConfigurationCC._validateArgs.js.map +2 -2
  168. package/build/cjs/cc/SceneControllerConfigurationCC.d.ts +3 -64
  169. package/build/cjs/cc/SceneControllerConfigurationCC.js +0 -1
  170. package/build/cjs/cc/SceneControllerConfigurationCC.js.map +3 -3
  171. package/build/cjs/cc/ScheduleEntryLockCC._validateArgs.js.map +2 -2
  172. package/build/cjs/cc/ScheduleEntryLockCC.d.ts +4 -163
  173. package/build/cjs/cc/ScheduleEntryLockCC.js +0 -1
  174. package/build/cjs/cc/ScheduleEntryLockCC.js.map +3 -3
  175. package/build/cjs/cc/Security2CC.d.ts +1 -1
  176. package/build/cjs/cc/Security2CC.js.map +3 -3
  177. package/build/cjs/cc/SecurityCC.d.ts +4 -2
  178. package/build/cjs/cc/SecurityCC.js.map +3 -3
  179. package/build/cjs/cc/SoundSwitchCC._validateArgs.js.map +2 -2
  180. package/build/cjs/cc/SoundSwitchCC.d.ts +4 -123
  181. package/build/cjs/cc/SoundSwitchCC.js +6 -2
  182. package/build/cjs/cc/SoundSwitchCC.js.map +3 -3
  183. package/build/cjs/cc/SupervisionCC.d.ts +3 -31
  184. package/build/cjs/cc/SupervisionCC.js +4 -2
  185. package/build/cjs/cc/SupervisionCC.js.map +3 -3
  186. package/build/cjs/cc/ThermostatFanModeCC._validateArgs.js.map +2 -2
  187. package/build/cjs/cc/ThermostatFanModeCC.d.ts +4 -84
  188. package/build/cjs/cc/ThermostatFanModeCC.js +1 -2
  189. package/build/cjs/cc/ThermostatFanModeCC.js.map +3 -3
  190. package/build/cjs/cc/ThermostatFanStateCC.d.ts +4 -33
  191. package/build/cjs/cc/ThermostatFanStateCC.js +0 -1
  192. package/build/cjs/cc/ThermostatFanStateCC.js.map +3 -3
  193. package/build/cjs/cc/ThermostatModeCC._validateArgs.js.map +2 -2
  194. package/build/cjs/cc/ThermostatModeCC.d.ts +4 -84
  195. package/build/cjs/cc/ThermostatModeCC.js +1 -2
  196. package/build/cjs/cc/ThermostatModeCC.js.map +3 -3
  197. package/build/cjs/cc/ThermostatOperatingStateCC.d.ts +4 -33
  198. package/build/cjs/cc/ThermostatOperatingStateCC.js +0 -1
  199. package/build/cjs/cc/ThermostatOperatingStateCC.js.map +3 -3
  200. package/build/cjs/cc/ThermostatSetbackCC._validateArgs.js.map +2 -2
  201. package/build/cjs/cc/ThermostatSetbackCC.d.ts +1 -1
  202. package/build/cjs/cc/ThermostatSetbackCC.js.map +3 -3
  203. package/build/cjs/cc/ThermostatSetpointCC._validateArgs.js.map +2 -2
  204. package/build/cjs/cc/ThermostatSetpointCC.d.ts +5 -90
  205. package/build/cjs/cc/ThermostatSetpointCC.js +0 -1
  206. package/build/cjs/cc/ThermostatSetpointCC.js.map +3 -3
  207. package/build/cjs/cc/TimeCC._validateArgs.js.map +2 -2
  208. package/build/cjs/cc/TimeCC.d.ts +2 -2
  209. package/build/cjs/cc/TimeCC.js.map +3 -3
  210. package/build/cjs/cc/TimeParametersCC._validateArgs.js.map +2 -2
  211. package/build/cjs/cc/TimeParametersCC.d.ts +4 -30
  212. package/build/cjs/cc/TimeParametersCC.js +0 -1
  213. package/build/cjs/cc/TimeParametersCC.js.map +3 -3
  214. package/build/cjs/cc/TransportServiceCC.d.ts +1 -1
  215. package/build/cjs/cc/TransportServiceCC.js.map +3 -3
  216. package/build/cjs/cc/UserCodeCC._validateArgs.js.map +2 -2
  217. package/build/cjs/cc/UserCodeCC.d.ts +4 -415
  218. package/build/cjs/cc/UserCodeCC.js +1 -2
  219. package/build/cjs/cc/UserCodeCC.js.map +3 -3
  220. package/build/cjs/cc/VersionCC._validateArgs.js.map +2 -2
  221. package/build/cjs/cc/VersionCC.d.ts +3 -367
  222. package/build/cjs/cc/VersionCC.js +0 -1
  223. package/build/cjs/cc/VersionCC.js.map +3 -3
  224. package/build/cjs/cc/WakeUpCC._validateArgs.js.map +2 -2
  225. package/build/cjs/cc/WakeUpCC.d.ts +4 -83
  226. package/build/cjs/cc/WakeUpCC.js +11 -4
  227. package/build/cjs/cc/WakeUpCC.js.map +3 -3
  228. package/build/cjs/cc/WindowCoveringCC._validateArgs.js.map +2 -2
  229. package/build/cjs/cc/WindowCoveringCC.d.ts +4 -207
  230. package/build/cjs/cc/WindowCoveringCC.js +3 -5
  231. package/build/cjs/cc/WindowCoveringCC.js.map +3 -3
  232. package/build/cjs/cc/ZWaveLongRangeCC.js.map +3 -3
  233. package/build/cjs/cc/ZWavePlusCC._validateArgs.js.map +2 -2
  234. package/build/cjs/cc/ZWavePlusCC.d.ts +4 -129
  235. package/build/cjs/cc/ZWavePlusCC.js +0 -1
  236. package/build/cjs/cc/ZWavePlusCC.js.map +3 -3
  237. package/build/cjs/cc/ZWaveProtocolCC.d.ts +1 -1
  238. package/build/cjs/cc/ZWaveProtocolCC.js.map +3 -3
  239. package/build/cjs/cc/_CCValues.generated.js.map +1 -1
  240. package/build/cjs/cc/index.js.map +1 -1
  241. package/build/cjs/cc/manufacturerProprietary/Decorators.js.map +1 -1
  242. package/build/cjs/cc/manufacturerProprietary/FibaroCC._validateArgs.js.map +2 -2
  243. package/build/cjs/cc/manufacturerProprietary/FibaroCC.d.ts +1 -1
  244. package/build/cjs/cc/manufacturerProprietary/FibaroCC.js.map +3 -3
  245. package/build/cjs/index.js.map +1 -1
  246. package/build/cjs/index_browser.js.map +1 -1
  247. package/build/cjs/index_safe.js.map +1 -1
  248. package/build/cjs/lib/API.d.ts +3 -135
  249. package/build/cjs/lib/API.js.map +3 -3
  250. package/build/cjs/lib/CCValueUtils.js.map +1 -1
  251. package/build/cjs/lib/CommandClass.d.ts +1 -1
  252. package/build/cjs/lib/CommandClass.js.map +3 -3
  253. package/build/cjs/lib/CommandClassDecorators.js.map +1 -1
  254. package/build/cjs/lib/EncapsulatingCommandClass.js.map +1 -1
  255. package/build/cjs/lib/NotificationEventPayload.js.map +1 -1
  256. package/build/cjs/lib/Security2/Extension.js.map +1 -1
  257. package/build/cjs/lib/Security2/shared.js.map +1 -1
  258. package/build/cjs/lib/SetValueResult.js.map +1 -1
  259. package/build/cjs/lib/Values.js.map +1 -1
  260. package/build/cjs/lib/_CCAPI.generated.d.ts +136 -0
  261. package/build/cjs/lib/_CCAPI.generated.js +17 -0
  262. package/build/cjs/lib/_CCAPI.generated.js.map +7 -0
  263. package/build/cjs/lib/_Types.js.map +1 -1
  264. package/build/cjs/lib/serializers.js.map +1 -1
  265. package/build/cjs/lib/utils.js.map +1 -1
  266. package/build/esm/cc/AlarmSensorCC._validateArgs.d.ts.map +1 -1
  267. package/build/esm/cc/AlarmSensorCC._validateArgs.js.map +1 -1
  268. package/build/esm/cc/AlarmSensorCC.d.ts +4 -131
  269. package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
  270. package/build/esm/cc/AlarmSensorCC.js +2 -3
  271. package/build/esm/cc/AlarmSensorCC.js.map +1 -1
  272. package/build/esm/cc/ApplicationStatusCC.d.ts +1 -1
  273. package/build/esm/cc/ApplicationStatusCC.d.ts.map +1 -1
  274. package/build/esm/cc/ApplicationStatusCC.js.map +1 -1
  275. package/build/esm/cc/AssociationCC._validateArgs.d.ts.map +1 -1
  276. package/build/esm/cc/AssociationCC._validateArgs.js.map +1 -1
  277. package/build/esm/cc/AssociationCC.d.ts +3 -109
  278. package/build/esm/cc/AssociationCC.d.ts.map +1 -1
  279. package/build/esm/cc/AssociationCC.js +0 -1
  280. package/build/esm/cc/AssociationCC.js.map +1 -1
  281. package/build/esm/cc/AssociationGroupInfoCC._validateArgs.d.ts.map +1 -1
  282. package/build/esm/cc/AssociationGroupInfoCC._validateArgs.js.map +1 -1
  283. package/build/esm/cc/AssociationGroupInfoCC.d.ts +3 -112
  284. package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
  285. package/build/esm/cc/AssociationGroupInfoCC.js +12 -13
  286. package/build/esm/cc/AssociationGroupInfoCC.js.map +1 -1
  287. package/build/esm/cc/BarrierOperatorCC._validateArgs.d.ts.map +1 -1
  288. package/build/esm/cc/BarrierOperatorCC._validateArgs.js.map +1 -1
  289. package/build/esm/cc/BarrierOperatorCC.d.ts +4 -148
  290. package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
  291. package/build/esm/cc/BarrierOperatorCC.js +2 -3
  292. package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
  293. package/build/esm/cc/BasicCC._validateArgs.d.ts.map +1 -1
  294. package/build/esm/cc/BasicCC._validateArgs.js.map +1 -1
  295. package/build/esm/cc/BasicCC.d.ts +4 -143
  296. package/build/esm/cc/BasicCC.d.ts.map +1 -1
  297. package/build/esm/cc/BasicCC.js +1 -2
  298. package/build/esm/cc/BasicCC.js.map +1 -1
  299. package/build/esm/cc/BasicWindowCoveringCC._validateArgs.d.ts.map +1 -1
  300. package/build/esm/cc/BasicWindowCoveringCC._validateArgs.js.map +1 -1
  301. package/build/esm/cc/BasicWindowCoveringCC.d.ts +3 -63
  302. package/build/esm/cc/BasicWindowCoveringCC.d.ts.map +1 -1
  303. package/build/esm/cc/BasicWindowCoveringCC.js +5 -6
  304. package/build/esm/cc/BasicWindowCoveringCC.js.map +1 -1
  305. package/build/esm/cc/BatteryCC.d.ts +4 -305
  306. package/build/esm/cc/BatteryCC.d.ts.map +1 -1
  307. package/build/esm/cc/BatteryCC.js +67 -26
  308. package/build/esm/cc/BatteryCC.js.map +1 -1
  309. package/build/esm/cc/BinarySensorCC._validateArgs.d.ts.map +1 -1
  310. package/build/esm/cc/BinarySensorCC._validateArgs.js.map +1 -1
  311. package/build/esm/cc/BinarySensorCC.d.ts +4 -59
  312. package/build/esm/cc/BinarySensorCC.d.ts.map +1 -1
  313. package/build/esm/cc/BinarySensorCC.js +24 -4
  314. package/build/esm/cc/BinarySensorCC.js.map +1 -1
  315. package/build/esm/cc/BinarySwitchCC._validateArgs.d.ts.map +1 -1
  316. package/build/esm/cc/BinarySwitchCC._validateArgs.js.map +1 -1
  317. package/build/esm/cc/BinarySwitchCC.d.ts +4 -83
  318. package/build/esm/cc/BinarySwitchCC.d.ts.map +1 -1
  319. package/build/esm/cc/BinarySwitchCC.js +1 -2
  320. package/build/esm/cc/BinarySwitchCC.js.map +1 -1
  321. package/build/esm/cc/CRC16CC.d.ts +1 -1
  322. package/build/esm/cc/CRC16CC.d.ts.map +1 -1
  323. package/build/esm/cc/CRC16CC.js.map +1 -1
  324. package/build/esm/cc/CentralSceneCC._validateArgs.d.ts.map +1 -1
  325. package/build/esm/cc/CentralSceneCC._validateArgs.js.map +1 -1
  326. package/build/esm/cc/CentralSceneCC.d.ts +3 -136
  327. package/build/esm/cc/CentralSceneCC.d.ts.map +1 -1
  328. package/build/esm/cc/CentralSceneCC.js +5 -6
  329. package/build/esm/cc/CentralSceneCC.js.map +1 -1
  330. package/build/esm/cc/ClimateControlScheduleCC._validateArgs.d.ts.map +1 -1
  331. package/build/esm/cc/ClimateControlScheduleCC._validateArgs.js.map +1 -1
  332. package/build/esm/cc/ClimateControlScheduleCC.d.ts +4 -87
  333. package/build/esm/cc/ClimateControlScheduleCC.d.ts.map +1 -1
  334. package/build/esm/cc/ClimateControlScheduleCC.js +4 -5
  335. package/build/esm/cc/ClimateControlScheduleCC.js.map +1 -1
  336. package/build/esm/cc/ClockCC._validateArgs.d.ts.map +1 -1
  337. package/build/esm/cc/ClockCC._validateArgs.js.map +1 -1
  338. package/build/esm/cc/ClockCC.d.ts +1 -1
  339. package/build/esm/cc/ClockCC.d.ts.map +1 -1
  340. package/build/esm/cc/ClockCC.js +1 -1
  341. package/build/esm/cc/ClockCC.js.map +1 -1
  342. package/build/esm/cc/ColorSwitchCC._validateArgs.d.ts.map +1 -1
  343. package/build/esm/cc/ColorSwitchCC._validateArgs.js.map +1 -1
  344. package/build/esm/cc/ColorSwitchCC.d.ts +4 -227
  345. package/build/esm/cc/ColorSwitchCC.d.ts.map +1 -1
  346. package/build/esm/cc/ColorSwitchCC.js +8 -8
  347. package/build/esm/cc/ColorSwitchCC.js.map +1 -1
  348. package/build/esm/cc/ConfigurationCC._validateArgs.d.ts.map +1 -1
  349. package/build/esm/cc/ConfigurationCC._validateArgs.js.map +1 -1
  350. package/build/esm/cc/ConfigurationCC.d.ts +9 -60
  351. package/build/esm/cc/ConfigurationCC.d.ts.map +1 -1
  352. package/build/esm/cc/ConfigurationCC.js +94 -76
  353. package/build/esm/cc/ConfigurationCC.js.map +1 -1
  354. package/build/esm/cc/DeviceResetLocallyCC.d.ts +1 -1
  355. package/build/esm/cc/DeviceResetLocallyCC.d.ts.map +1 -1
  356. package/build/esm/cc/DeviceResetLocallyCC.js.map +1 -1
  357. package/build/esm/cc/DoorLockCC._validateArgs.d.ts.map +1 -1
  358. package/build/esm/cc/DoorLockCC._validateArgs.js.map +1 -1
  359. package/build/esm/cc/DoorLockCC.d.ts +4 -688
  360. package/build/esm/cc/DoorLockCC.d.ts.map +1 -1
  361. package/build/esm/cc/DoorLockCC.js +14 -15
  362. package/build/esm/cc/DoorLockCC.js.map +1 -1
  363. package/build/esm/cc/DoorLockLoggingCC._validateArgs.d.ts.map +1 -1
  364. package/build/esm/cc/DoorLockLoggingCC._validateArgs.js.map +1 -1
  365. package/build/esm/cc/DoorLockLoggingCC.d.ts +4 -29
  366. package/build/esm/cc/DoorLockLoggingCC.d.ts.map +1 -1
  367. package/build/esm/cc/DoorLockLoggingCC.js +0 -1
  368. package/build/esm/cc/DoorLockLoggingCC.js.map +1 -1
  369. package/build/esm/cc/EnergyProductionCC._validateArgs.d.ts.map +1 -1
  370. package/build/esm/cc/EnergyProductionCC._validateArgs.js.map +1 -1
  371. package/build/esm/cc/EnergyProductionCC.d.ts +4 -33
  372. package/build/esm/cc/EnergyProductionCC.d.ts.map +1 -1
  373. package/build/esm/cc/EnergyProductionCC.js +2 -3
  374. package/build/esm/cc/EnergyProductionCC.js.map +1 -1
  375. package/build/esm/cc/EntryControlCC._validateArgs.d.ts.map +1 -1
  376. package/build/esm/cc/EntryControlCC._validateArgs.js.map +1 -1
  377. package/build/esm/cc/EntryControlCC.d.ts +3 -137
  378. package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
  379. package/build/esm/cc/EntryControlCC.js +1 -2
  380. package/build/esm/cc/EntryControlCC.js.map +1 -1
  381. package/build/esm/cc/FirmwareUpdateMetaDataCC._validateArgs.d.ts.map +1 -1
  382. package/build/esm/cc/FirmwareUpdateMetaDataCC._validateArgs.js.map +1 -1
  383. package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts +4 -154
  384. package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts.map +1 -1
  385. package/build/esm/cc/FirmwareUpdateMetaDataCC.js +0 -1
  386. package/build/esm/cc/FirmwareUpdateMetaDataCC.js.map +1 -1
  387. package/build/esm/cc/HailCC.d.ts.map +1 -1
  388. package/build/esm/cc/HailCC.js.map +1 -1
  389. package/build/esm/cc/HumidityControlModeCC._validateArgs.d.ts.map +1 -1
  390. package/build/esm/cc/HumidityControlModeCC._validateArgs.js.map +1 -1
  391. package/build/esm/cc/HumidityControlModeCC.d.ts +4 -58
  392. package/build/esm/cc/HumidityControlModeCC.d.ts.map +1 -1
  393. package/build/esm/cc/HumidityControlModeCC.js +2 -3
  394. package/build/esm/cc/HumidityControlModeCC.js.map +1 -1
  395. package/build/esm/cc/HumidityControlOperatingStateCC.d.ts +4 -33
  396. package/build/esm/cc/HumidityControlOperatingStateCC.d.ts.map +1 -1
  397. package/build/esm/cc/HumidityControlOperatingStateCC.js +1 -2
  398. package/build/esm/cc/HumidityControlOperatingStateCC.js.map +1 -1
  399. package/build/esm/cc/HumidityControlSetpointCC._validateArgs.d.ts.map +1 -1
  400. package/build/esm/cc/HumidityControlSetpointCC._validateArgs.js.map +1 -1
  401. package/build/esm/cc/HumidityControlSetpointCC.d.ts +4 -92
  402. package/build/esm/cc/HumidityControlSetpointCC.d.ts.map +1 -1
  403. package/build/esm/cc/HumidityControlSetpointCC.js +1 -2
  404. package/build/esm/cc/HumidityControlSetpointCC.js.map +1 -1
  405. package/build/esm/cc/InclusionControllerCC.d.ts +1 -1
  406. package/build/esm/cc/InclusionControllerCC.d.ts.map +1 -1
  407. package/build/esm/cc/InclusionControllerCC.js.map +1 -1
  408. package/build/esm/cc/IndicatorCC._validateArgs.d.ts.map +1 -1
  409. package/build/esm/cc/IndicatorCC._validateArgs.js.map +1 -1
  410. package/build/esm/cc/IndicatorCC.d.ts +4 -207
  411. package/build/esm/cc/IndicatorCC.d.ts.map +1 -1
  412. package/build/esm/cc/IndicatorCC.js +0 -1
  413. package/build/esm/cc/IndicatorCC.js.map +1 -1
  414. package/build/esm/cc/IrrigationCC._validateArgs.d.ts.map +1 -1
  415. package/build/esm/cc/IrrigationCC._validateArgs.js.map +1 -1
  416. package/build/esm/cc/IrrigationCC.d.ts +4 -1186
  417. package/build/esm/cc/IrrigationCC.d.ts.map +1 -1
  418. package/build/esm/cc/IrrigationCC.js +6 -8
  419. package/build/esm/cc/IrrigationCC.js.map +1 -1
  420. package/build/esm/cc/LanguageCC._validateArgs.d.ts.map +1 -1
  421. package/build/esm/cc/LanguageCC._validateArgs.js.map +1 -1
  422. package/build/esm/cc/LanguageCC.d.ts +4 -56
  423. package/build/esm/cc/LanguageCC.d.ts.map +1 -1
  424. package/build/esm/cc/LanguageCC.js +1 -2
  425. package/build/esm/cc/LanguageCC.js.map +1 -1
  426. package/build/esm/cc/LockCC._validateArgs.d.ts.map +1 -1
  427. package/build/esm/cc/LockCC._validateArgs.js.map +1 -1
  428. package/build/esm/cc/LockCC.d.ts +4 -31
  429. package/build/esm/cc/LockCC.d.ts.map +1 -1
  430. package/build/esm/cc/LockCC.js +1 -2
  431. package/build/esm/cc/LockCC.js.map +1 -1
  432. package/build/esm/cc/ManufacturerProprietaryCC._validateArgs.d.ts.map +1 -1
  433. package/build/esm/cc/ManufacturerProprietaryCC._validateArgs.js.map +1 -1
  434. package/build/esm/cc/ManufacturerProprietaryCC.d.ts +1 -1
  435. package/build/esm/cc/ManufacturerProprietaryCC.d.ts.map +1 -1
  436. package/build/esm/cc/ManufacturerProprietaryCC.js.map +1 -1
  437. package/build/esm/cc/ManufacturerSpecificCC._validateArgs.d.ts.map +1 -1
  438. package/build/esm/cc/ManufacturerSpecificCC._validateArgs.js.map +1 -1
  439. package/build/esm/cc/ManufacturerSpecificCC.d.ts +3 -116
  440. package/build/esm/cc/ManufacturerSpecificCC.d.ts.map +1 -1
  441. package/build/esm/cc/ManufacturerSpecificCC.js +1 -2
  442. package/build/esm/cc/ManufacturerSpecificCC.js.map +1 -1
  443. package/build/esm/cc/MeterCC._validateArgs.d.ts.map +1 -1
  444. package/build/esm/cc/MeterCC._validateArgs.js.map +1 -1
  445. package/build/esm/cc/MeterCC.d.ts +4 -203
  446. package/build/esm/cc/MeterCC.d.ts.map +1 -1
  447. package/build/esm/cc/MeterCC.js +17 -19
  448. package/build/esm/cc/MeterCC.js.map +1 -1
  449. package/build/esm/cc/MultiChannelAssociationCC._validateArgs.d.ts.map +1 -1
  450. package/build/esm/cc/MultiChannelAssociationCC._validateArgs.js.map +1 -1
  451. package/build/esm/cc/MultiChannelAssociationCC.d.ts +3 -112
  452. package/build/esm/cc/MultiChannelAssociationCC.d.ts.map +1 -1
  453. package/build/esm/cc/MultiChannelAssociationCC.js +4 -5
  454. package/build/esm/cc/MultiChannelAssociationCC.js.map +1 -1
  455. package/build/esm/cc/MultiChannelCC._validateArgs.d.ts.map +1 -1
  456. package/build/esm/cc/MultiChannelCC._validateArgs.js.map +1 -1
  457. package/build/esm/cc/MultiChannelCC.d.ts +3 -207
  458. package/build/esm/cc/MultiChannelCC.d.ts.map +1 -1
  459. package/build/esm/cc/MultiChannelCC.js +9 -10
  460. package/build/esm/cc/MultiChannelCC.js.map +1 -1
  461. package/build/esm/cc/MultiCommandCC._validateArgs.d.ts.map +1 -1
  462. package/build/esm/cc/MultiCommandCC._validateArgs.js.map +1 -1
  463. package/build/esm/cc/MultiCommandCC.d.ts +1 -1
  464. package/build/esm/cc/MultiCommandCC.d.ts.map +1 -1
  465. package/build/esm/cc/MultiCommandCC.js.map +1 -1
  466. package/build/esm/cc/MultilevelSensorCC._validateArgs.d.ts.map +1 -1
  467. package/build/esm/cc/MultilevelSensorCC._validateArgs.js.map +1 -1
  468. package/build/esm/cc/MultilevelSensorCC.d.ts +4 -84
  469. package/build/esm/cc/MultilevelSensorCC.d.ts.map +1 -1
  470. package/build/esm/cc/MultilevelSensorCC.js +1 -2
  471. package/build/esm/cc/MultilevelSensorCC.js.map +1 -1
  472. package/build/esm/cc/MultilevelSwitchCC._validateArgs.d.ts.map +1 -1
  473. package/build/esm/cc/MultilevelSwitchCC._validateArgs.js.map +1 -1
  474. package/build/esm/cc/MultilevelSwitchCC.d.ts +5 -264
  475. package/build/esm/cc/MultilevelSwitchCC.d.ts.map +1 -1
  476. package/build/esm/cc/MultilevelSwitchCC.js +44 -6
  477. package/build/esm/cc/MultilevelSwitchCC.js.map +1 -1
  478. package/build/esm/cc/NoOperationCC.d.ts.map +1 -1
  479. package/build/esm/cc/NoOperationCC.js.map +1 -1
  480. package/build/esm/cc/NodeNamingCC._validateArgs.d.ts.map +1 -1
  481. package/build/esm/cc/NodeNamingCC._validateArgs.js.map +1 -1
  482. package/build/esm/cc/NodeNamingCC.d.ts +4 -56
  483. package/build/esm/cc/NodeNamingCC.d.ts.map +1 -1
  484. package/build/esm/cc/NodeNamingCC.js +1 -2
  485. package/build/esm/cc/NodeNamingCC.js.map +1 -1
  486. package/build/esm/cc/NotificationCC._validateArgs.d.ts.map +1 -1
  487. package/build/esm/cc/NotificationCC._validateArgs.js.map +1 -1
  488. package/build/esm/cc/NotificationCC.d.ts +5 -357
  489. package/build/esm/cc/NotificationCC.d.ts.map +1 -1
  490. package/build/esm/cc/NotificationCC.js +9 -9
  491. package/build/esm/cc/NotificationCC.js.map +1 -1
  492. package/build/esm/cc/PowerlevelCC._validateArgs.d.ts.map +1 -1
  493. package/build/esm/cc/PowerlevelCC._validateArgs.js.map +1 -1
  494. package/build/esm/cc/PowerlevelCC.d.ts +1 -1
  495. package/build/esm/cc/PowerlevelCC.d.ts.map +1 -1
  496. package/build/esm/cc/PowerlevelCC.js +2 -2
  497. package/build/esm/cc/PowerlevelCC.js.map +1 -1
  498. package/build/esm/cc/ProtectionCC._validateArgs.d.ts.map +1 -1
  499. package/build/esm/cc/ProtectionCC._validateArgs.js.map +1 -1
  500. package/build/esm/cc/ProtectionCC.d.ts +4 -212
  501. package/build/esm/cc/ProtectionCC.d.ts.map +1 -1
  502. package/build/esm/cc/ProtectionCC.js +2 -3
  503. package/build/esm/cc/ProtectionCC.js.map +1 -1
  504. package/build/esm/cc/SceneActivationCC._validateArgs.d.ts.map +1 -1
  505. package/build/esm/cc/SceneActivationCC._validateArgs.js.map +1 -1
  506. package/build/esm/cc/SceneActivationCC.d.ts +4 -59
  507. package/build/esm/cc/SceneActivationCC.d.ts.map +1 -1
  508. package/build/esm/cc/SceneActivationCC.js +1 -2
  509. package/build/esm/cc/SceneActivationCC.js.map +1 -1
  510. package/build/esm/cc/SceneActuatorConfigurationCC._validateArgs.d.ts.map +1 -1
  511. package/build/esm/cc/SceneActuatorConfigurationCC._validateArgs.js.map +1 -1
  512. package/build/esm/cc/SceneActuatorConfigurationCC.d.ts +4 -65
  513. package/build/esm/cc/SceneActuatorConfigurationCC.d.ts.map +1 -1
  514. package/build/esm/cc/SceneActuatorConfigurationCC.js +2 -3
  515. package/build/esm/cc/SceneActuatorConfigurationCC.js.map +1 -1
  516. package/build/esm/cc/SceneControllerConfigurationCC._validateArgs.d.ts.map +1 -1
  517. package/build/esm/cc/SceneControllerConfigurationCC._validateArgs.js.map +1 -1
  518. package/build/esm/cc/SceneControllerConfigurationCC.d.ts +3 -64
  519. package/build/esm/cc/SceneControllerConfigurationCC.d.ts.map +1 -1
  520. package/build/esm/cc/SceneControllerConfigurationCC.js +1 -2
  521. package/build/esm/cc/SceneControllerConfigurationCC.js.map +1 -1
  522. package/build/esm/cc/ScheduleEntryLockCC._validateArgs.d.ts.map +1 -1
  523. package/build/esm/cc/ScheduleEntryLockCC._validateArgs.js.map +1 -1
  524. package/build/esm/cc/ScheduleEntryLockCC.d.ts +4 -163
  525. package/build/esm/cc/ScheduleEntryLockCC.d.ts.map +1 -1
  526. package/build/esm/cc/ScheduleEntryLockCC.js +0 -1
  527. package/build/esm/cc/ScheduleEntryLockCC.js.map +1 -1
  528. package/build/esm/cc/Security2CC.d.ts +1 -1
  529. package/build/esm/cc/Security2CC.d.ts.map +1 -1
  530. package/build/esm/cc/Security2CC.js +2 -2
  531. package/build/esm/cc/Security2CC.js.map +1 -1
  532. package/build/esm/cc/SecurityCC.d.ts +4 -2
  533. package/build/esm/cc/SecurityCC.d.ts.map +1 -1
  534. package/build/esm/cc/SecurityCC.js +2 -2
  535. package/build/esm/cc/SecurityCC.js.map +1 -1
  536. package/build/esm/cc/SoundSwitchCC._validateArgs.d.ts.map +1 -1
  537. package/build/esm/cc/SoundSwitchCC._validateArgs.js.map +1 -1
  538. package/build/esm/cc/SoundSwitchCC.d.ts +4 -123
  539. package/build/esm/cc/SoundSwitchCC.d.ts.map +1 -1
  540. package/build/esm/cc/SoundSwitchCC.js +7 -3
  541. package/build/esm/cc/SoundSwitchCC.js.map +1 -1
  542. package/build/esm/cc/SupervisionCC.d.ts +3 -31
  543. package/build/esm/cc/SupervisionCC.d.ts.map +1 -1
  544. package/build/esm/cc/SupervisionCC.js +9 -7
  545. package/build/esm/cc/SupervisionCC.js.map +1 -1
  546. package/build/esm/cc/ThermostatFanModeCC._validateArgs.d.ts.map +1 -1
  547. package/build/esm/cc/ThermostatFanModeCC._validateArgs.js.map +1 -1
  548. package/build/esm/cc/ThermostatFanModeCC.d.ts +4 -84
  549. package/build/esm/cc/ThermostatFanModeCC.d.ts.map +1 -1
  550. package/build/esm/cc/ThermostatFanModeCC.js +4 -5
  551. package/build/esm/cc/ThermostatFanModeCC.js.map +1 -1
  552. package/build/esm/cc/ThermostatFanStateCC.d.ts +4 -33
  553. package/build/esm/cc/ThermostatFanStateCC.d.ts.map +1 -1
  554. package/build/esm/cc/ThermostatFanStateCC.js +1 -2
  555. package/build/esm/cc/ThermostatFanStateCC.js.map +1 -1
  556. package/build/esm/cc/ThermostatModeCC._validateArgs.d.ts.map +1 -1
  557. package/build/esm/cc/ThermostatModeCC._validateArgs.js.map +1 -1
  558. package/build/esm/cc/ThermostatModeCC.d.ts +4 -84
  559. package/build/esm/cc/ThermostatModeCC.d.ts.map +1 -1
  560. package/build/esm/cc/ThermostatModeCC.js +2 -3
  561. package/build/esm/cc/ThermostatModeCC.js.map +1 -1
  562. package/build/esm/cc/ThermostatOperatingStateCC.d.ts +4 -33
  563. package/build/esm/cc/ThermostatOperatingStateCC.d.ts.map +1 -1
  564. package/build/esm/cc/ThermostatOperatingStateCC.js +1 -2
  565. package/build/esm/cc/ThermostatOperatingStateCC.js.map +1 -1
  566. package/build/esm/cc/ThermostatSetbackCC._validateArgs.d.ts.map +1 -1
  567. package/build/esm/cc/ThermostatSetbackCC._validateArgs.js.map +1 -1
  568. package/build/esm/cc/ThermostatSetbackCC.d.ts +1 -1
  569. package/build/esm/cc/ThermostatSetbackCC.d.ts.map +1 -1
  570. package/build/esm/cc/ThermostatSetbackCC.js.map +1 -1
  571. package/build/esm/cc/ThermostatSetpointCC._validateArgs.d.ts.map +1 -1
  572. package/build/esm/cc/ThermostatSetpointCC._validateArgs.js.map +1 -1
  573. package/build/esm/cc/ThermostatSetpointCC.d.ts +5 -90
  574. package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
  575. package/build/esm/cc/ThermostatSetpointCC.js +1 -2
  576. package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
  577. package/build/esm/cc/TimeCC._validateArgs.d.ts.map +1 -1
  578. package/build/esm/cc/TimeCC._validateArgs.js.map +1 -1
  579. package/build/esm/cc/TimeCC.d.ts +2 -2
  580. package/build/esm/cc/TimeCC.d.ts.map +1 -1
  581. package/build/esm/cc/TimeCC.js.map +1 -1
  582. package/build/esm/cc/TimeParametersCC._validateArgs.d.ts.map +1 -1
  583. package/build/esm/cc/TimeParametersCC._validateArgs.js.map +1 -1
  584. package/build/esm/cc/TimeParametersCC.d.ts +4 -30
  585. package/build/esm/cc/TimeParametersCC.d.ts.map +1 -1
  586. package/build/esm/cc/TimeParametersCC.js +1 -2
  587. package/build/esm/cc/TimeParametersCC.js.map +1 -1
  588. package/build/esm/cc/TransportServiceCC.d.ts +1 -1
  589. package/build/esm/cc/TransportServiceCC.d.ts.map +1 -1
  590. package/build/esm/cc/TransportServiceCC.js +2 -2
  591. package/build/esm/cc/TransportServiceCC.js.map +1 -1
  592. package/build/esm/cc/UserCodeCC._validateArgs.d.ts.map +1 -1
  593. package/build/esm/cc/UserCodeCC._validateArgs.js.map +1 -1
  594. package/build/esm/cc/UserCodeCC.d.ts +4 -415
  595. package/build/esm/cc/UserCodeCC.d.ts.map +1 -1
  596. package/build/esm/cc/UserCodeCC.js +17 -18
  597. package/build/esm/cc/UserCodeCC.js.map +1 -1
  598. package/build/esm/cc/VersionCC._validateArgs.d.ts.map +1 -1
  599. package/build/esm/cc/VersionCC._validateArgs.js.map +1 -1
  600. package/build/esm/cc/VersionCC.d.ts +3 -367
  601. package/build/esm/cc/VersionCC.d.ts.map +1 -1
  602. package/build/esm/cc/VersionCC.js +1 -2
  603. package/build/esm/cc/VersionCC.js.map +1 -1
  604. package/build/esm/cc/WakeUpCC._validateArgs.d.ts.map +1 -1
  605. package/build/esm/cc/WakeUpCC._validateArgs.js.map +1 -1
  606. package/build/esm/cc/WakeUpCC.d.ts +4 -83
  607. package/build/esm/cc/WakeUpCC.d.ts.map +1 -1
  608. package/build/esm/cc/WakeUpCC.js +10 -3
  609. package/build/esm/cc/WakeUpCC.js.map +1 -1
  610. package/build/esm/cc/WindowCoveringCC._validateArgs.d.ts.map +1 -1
  611. package/build/esm/cc/WindowCoveringCC._validateArgs.js.map +1 -1
  612. package/build/esm/cc/WindowCoveringCC.d.ts +4 -207
  613. package/build/esm/cc/WindowCoveringCC.d.ts.map +1 -1
  614. package/build/esm/cc/WindowCoveringCC.js +6 -8
  615. package/build/esm/cc/WindowCoveringCC.js.map +1 -1
  616. package/build/esm/cc/ZWaveLongRangeCC.d.ts.map +1 -1
  617. package/build/esm/cc/ZWaveLongRangeCC.js.map +1 -1
  618. package/build/esm/cc/ZWavePlusCC._validateArgs.d.ts.map +1 -1
  619. package/build/esm/cc/ZWavePlusCC._validateArgs.js.map +1 -1
  620. package/build/esm/cc/ZWavePlusCC.d.ts +4 -129
  621. package/build/esm/cc/ZWavePlusCC.d.ts.map +1 -1
  622. package/build/esm/cc/ZWavePlusCC.js +0 -1
  623. package/build/esm/cc/ZWavePlusCC.js.map +1 -1
  624. package/build/esm/cc/ZWaveProtocolCC.d.ts +1 -1
  625. package/build/esm/cc/ZWaveProtocolCC.d.ts.map +1 -1
  626. package/build/esm/cc/ZWaveProtocolCC.js +4 -4
  627. package/build/esm/cc/ZWaveProtocolCC.js.map +1 -1
  628. package/build/esm/cc/_CCValues.generated.d.ts.map +1 -1
  629. package/build/esm/cc/_CCValues.generated.js.map +1 -1
  630. package/build/esm/cc/index.d.ts.map +1 -1
  631. package/build/esm/cc/index.js.map +1 -1
  632. package/build/esm/cc/manufacturerProprietary/Decorators.d.ts.map +1 -1
  633. package/build/esm/cc/manufacturerProprietary/Decorators.js.map +1 -1
  634. package/build/esm/cc/manufacturerProprietary/FibaroCC._validateArgs.d.ts.map +1 -1
  635. package/build/esm/cc/manufacturerProprietary/FibaroCC._validateArgs.js.map +1 -1
  636. package/build/esm/cc/manufacturerProprietary/FibaroCC.d.ts +1 -1
  637. package/build/esm/cc/manufacturerProprietary/FibaroCC.d.ts.map +1 -1
  638. package/build/esm/cc/manufacturerProprietary/FibaroCC.js.map +1 -1
  639. package/build/esm/index.d.ts.map +1 -1
  640. package/build/esm/index.js.map +1 -1
  641. package/build/esm/index_browser.d.ts.map +1 -1
  642. package/build/esm/index_browser.js.map +1 -1
  643. package/build/esm/index_safe.d.ts.map +1 -1
  644. package/build/esm/index_safe.js.map +1 -1
  645. package/build/esm/lib/API.d.ts +3 -135
  646. package/build/esm/lib/API.d.ts.map +1 -1
  647. package/build/esm/lib/API.js.map +1 -1
  648. package/build/esm/lib/CCValueUtils.d.ts.map +1 -1
  649. package/build/esm/lib/CCValueUtils.js.map +1 -1
  650. package/build/esm/lib/CommandClass.d.ts +1 -1
  651. package/build/esm/lib/CommandClass.d.ts.map +1 -1
  652. package/build/esm/lib/CommandClass.js.map +1 -1
  653. package/build/esm/lib/CommandClassDecorators.d.ts.map +1 -1
  654. package/build/esm/lib/CommandClassDecorators.js.map +1 -1
  655. package/build/esm/lib/EncapsulatingCommandClass.d.ts.map +1 -1
  656. package/build/esm/lib/EncapsulatingCommandClass.js.map +1 -1
  657. package/build/esm/lib/NotificationEventPayload.d.ts.map +1 -1
  658. package/build/esm/lib/NotificationEventPayload.js.map +1 -1
  659. package/build/esm/lib/Security2/Extension.d.ts.map +1 -1
  660. package/build/esm/lib/Security2/Extension.js.map +1 -1
  661. package/build/esm/lib/Security2/shared.d.ts.map +1 -1
  662. package/build/esm/lib/Security2/shared.js.map +1 -1
  663. package/build/esm/lib/SetValueResult.d.ts.map +1 -1
  664. package/build/esm/lib/SetValueResult.js.map +1 -1
  665. package/build/esm/lib/Values.d.ts.map +1 -1
  666. package/build/esm/lib/Values.js.map +1 -1
  667. package/build/esm/lib/_CCAPI.generated.d.ts +136 -0
  668. package/build/esm/lib/_CCAPI.generated.d.ts.map +1 -0
  669. package/build/esm/lib/_CCAPI.generated.js +4 -0
  670. package/build/esm/lib/_CCAPI.generated.js.map +1 -0
  671. package/build/esm/lib/_Types.d.ts.map +1 -1
  672. package/build/esm/lib/_Types.js.map +1 -1
  673. package/build/esm/lib/serializers.d.ts.map +1 -1
  674. package/build/esm/lib/serializers.js.map +1 -1
  675. package/build/esm/lib/traits.d.ts.map +1 -1
  676. package/build/esm/lib/traits.js.map +1 -1
  677. package/build/esm/lib/utils.d.ts.map +1 -1
  678. package/build/esm/lib/utils.js.map +1 -1
  679. package/package.json +11 -11
@@ -56,10 +56,8 @@ var __validateArgs = __toESM(require("./IrrigationCC._validateArgs.js"), 1);
56
56
  var import_core = require("@zwave-js/core");
57
57
  var import_shared = require("@zwave-js/shared");
58
58
  var import_API = require("../lib/API.js");
59
- var import_CCValueUtils = require("../lib/CCValueUtils.js");
60
59
  var import_CommandClass = require("../lib/CommandClass.js");
61
60
  var import_CommandClassDecorators = require("../lib/CommandClassDecorators.js");
62
- var import_Values = require("../lib/Values.js");
63
61
  var import_Types = require("../lib/_Types.js");
64
62
  var import_CCValues_generated = require("./_CCValues.generated.js");
65
63
  var __runInitializers = function(thisArg, initializers, value) {
@@ -367,7 +365,7 @@ let IrrigationCCAPI = (() => {
367
365
  shutoffSystemPermanently() {
368
366
  return this.shutoffSystem(255);
369
367
  }
370
- get [(_setSystemConfig_decorators = [validateArgs_IrrigationCCAPI_setSystemConfig({ strictEnums: true })], _getValveInfo_decorators = [validateArgs_IrrigationCCAPI_getValveInfo()], _setValveConfig_decorators = [validateArgs_IrrigationCCAPI_setValveConfig()], _getValveConfig_decorators = [validateArgs_IrrigationCCAPI_getValveConfig()], _runValve_decorators = [validateArgs_IrrigationCCAPI_runValve()], _shutoffValve_decorators = [validateArgs_IrrigationCCAPI_shutoffValve()], _setValveTable_decorators = [validateArgs_IrrigationCCAPI_setValveTable()], _getValveTable_decorators = [validateArgs_IrrigationCCAPI_getValveTable()], _runTables_decorators = [validateArgs_IrrigationCCAPI_runTables()], _shutoffSystem_decorators = [validateArgs_IrrigationCCAPI_shutoffSystem()], import_API.SET_VALUE)]() {
368
+ get [(_setSystemConfig_decorators = [validateArgs_IrrigationCCAPI_setSystemConfig()], _getValveInfo_decorators = [validateArgs_IrrigationCCAPI_getValveInfo()], _setValveConfig_decorators = [validateArgs_IrrigationCCAPI_setValveConfig()], _getValveConfig_decorators = [validateArgs_IrrigationCCAPI_getValveConfig()], _runValve_decorators = [validateArgs_IrrigationCCAPI_runValve()], _shutoffValve_decorators = [validateArgs_IrrigationCCAPI_shutoffValve()], _setValveTable_decorators = [validateArgs_IrrigationCCAPI_setValveTable()], _getValveTable_decorators = [validateArgs_IrrigationCCAPI_getValveTable()], _runTables_decorators = [validateArgs_IrrigationCCAPI_runTables()], _shutoffSystem_decorators = [validateArgs_IrrigationCCAPI_shutoffSystem()], import_API.SET_VALUE)]() {
371
369
  return async function({ property, propertyKey }, value) {
372
370
  const valueDB = this.getValueDB();
373
371
  if (systemConfigProperties.includes(property)) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/cc/IrrigationCC.ts"],
4
- "sourcesContent": ["import type { CCEncodingContext, CCParsingContext } from \"@zwave-js/cc\";\nimport {\n\tCommandClasses,\n\ttype EndpointId,\n\ttype GetValueDB,\n\ttype MaybeNotKnown,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\ttype MessageRecord,\n\ttype SupervisionResult,\n\ttype ValueID,\n\tValueMetadata,\n\ttype WithAddress,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tencodeFloatWithScale,\n\tenumValuesToMetadataStates,\n\tparseFloatWithScale,\n\tvalidatePayload,\n} from \"@zwave-js/core\";\nimport { Bytes, getEnumMemberName, pick } from \"@zwave-js/shared\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport {\n\tCCAPI,\n\tPOLL_VALUE,\n\ttype PollValueImplementation,\n\tSET_VALUE,\n\ttype SetValueImplementation,\n\tthrowMissingPropertyKey,\n\tthrowUnsupportedProperty,\n\tthrowUnsupportedPropertyKey,\n\tthrowWrongValueType,\n} from \"../lib/API.js\";\nimport { irrigationValveIdToMetadataPrefix } from \"../lib/CCValueUtils.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\n\ttype PersistValuesContext,\n\ttype RefreshValuesContext,\n} from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValueProperty,\n\tccValues,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n\tuseSupervision,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport {\n\tIrrigationCommand,\n\tIrrigationSensorPolarity,\n\ttype ValveId,\n\ttype ValveTableEntry,\n\tValveType,\n} from \"../lib/_Types.js\";\n\nexport const IrrigationCCValues = V.defineCCValues(CommandClasses.Irrigation, {\n\t...V.staticProperty(\"numValves\", undefined, { internal: true }),\n\t...V.staticProperty(\"numValveTables\", undefined, { internal: true }),\n\t...V.staticProperty(\"supportsMasterValve\", undefined, {\n\t\tinternal: true,\n\t}),\n\t...V.staticProperty(\"maxValveTableSize\", undefined, { internal: true }),\n\t...V.staticProperty(\n\t\t\"systemVoltage\",\n\t\t{\n\t\t\t...ValueMetadata.ReadOnlyUInt8,\n\t\t\tlabel: \"System voltage\",\n\t\t\tunit: \"V\",\n\t\t} as const,\n\t),\n\t...V.staticProperty(\n\t\t\"masterValveDelay\",\n\t\t{\n\t\t\t...ValueMetadata.UInt8,\n\t\t\tlabel: \"Master valve delay\",\n\t\t\tdescription:\n\t\t\t\t\"The delay between turning on the master valve and turning on any zone valve\",\n\t\t\tunit: \"seconds\",\n\t\t} as const,\n\t),\n\t...V.staticProperty(\n\t\t\"flowSensorActive\",\n\t\t{\n\t\t\t...ValueMetadata.ReadOnlyBoolean,\n\t\t\tlabel: \"Flow sensor active\",\n\t\t} as const,\n\t),\n\t...V.staticProperty(\n\t\t\"pressureSensorActive\",\n\t\t{\n\t\t\t...ValueMetadata.ReadOnlyBoolean,\n\t\t\tlabel: \"Pressure sensor active\",\n\t\t} as const,\n\t),\n\t...V.staticProperty(\n\t\t\"rainSensorActive\",\n\t\t{\n\t\t\t...ValueMetadata.ReadOnlyBoolean,\n\t\t\tlabel: \"Rain sensor attached and active\",\n\t\t} as const,\n\t),\n\t...V.staticProperty(\n\t\t\"rainSensorPolarity\",\n\t\t{\n\t\t\t...ValueMetadata.Number,\n\t\t\tlabel: \"Rain sensor polarity\",\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t\tstates: enumValuesToMetadataStates(IrrigationSensorPolarity),\n\t\t} as const,\n\t),\n\t...V.staticProperty(\n\t\t\"moistureSensorActive\",\n\t\t{\n\t\t\t...ValueMetadata.ReadOnlyBoolean,\n\t\t\tlabel: \"Moisture sensor attached and active\",\n\t\t} as const,\n\t),\n\t...V.staticProperty(\n\t\t\"moistureSensorPolarity\",\n\t\t{\n\t\t\t...ValueMetadata.Number,\n\t\t\tlabel: \"Moisture sensor polarity\",\n\t\t\tmin: 0,\n\t\t\tmax: 1,\n\t\t\tstates: enumValuesToMetadataStates(IrrigationSensorPolarity),\n\t\t} as const,\n\t),\n\t...V.staticProperty(\n\t\t\"flow\",\n\t\t{\n\t\t\t...ValueMetadata.ReadOnlyNumber,\n\t\t\tlabel: \"Flow\",\n\t\t\tunit: \"l/h\",\n\t\t} as const,\n\t),\n\t...V.staticProperty(\n\t\t\"pressure\",\n\t\t{\n\t\t\t...ValueMetadata.ReadOnlyNumber,\n\t\t\tlabel: \"Pressure\",\n\t\t\tunit: \"kPa\",\n\t\t} as const,\n\t),\n\t...V.staticProperty(\n\t\t\"shutoffDuration\",\n\t\t{\n\t\t\t...ValueMetadata.ReadOnlyUInt8,\n\t\t\tlabel: \"Remaining shutoff duration\",\n\t\t\tunit: \"hours\",\n\t\t} as const,\n\t),\n\t...V.staticProperty(\n\t\t\"errorNotProgrammed\",\n\t\t{\n\t\t\t...ValueMetadata.ReadOnlyBoolean,\n\t\t\tlabel: \"Error: device not programmed\",\n\t\t} as const,\n\t),\n\t...V.staticProperty(\n\t\t\"errorEmergencyShutdown\",\n\t\t{\n\t\t\t...ValueMetadata.ReadOnlyBoolean,\n\t\t\tlabel: \"Error: emergency shutdown\",\n\t\t} as const,\n\t),\n\t...V.staticProperty(\n\t\t\"errorHighPressure\",\n\t\t{\n\t\t\t...ValueMetadata.ReadOnlyBoolean,\n\t\t\tlabel: \"Error: high pressure\",\n\t\t} as const,\n\t),\n\t...V.staticProperty(\n\t\t\"highPressureThreshold\",\n\t\t{\n\t\t\t...ValueMetadata.Number,\n\t\t\tlabel: \"High pressure threshold\",\n\t\t\tunit: \"kPa\",\n\t\t} as const,\n\t),\n\t...V.staticProperty(\n\t\t\"errorLowPressure\",\n\t\t{\n\t\t\t...ValueMetadata.ReadOnlyBoolean,\n\t\t\tlabel: \"Error: low pressure\",\n\t\t} as const,\n\t),\n\t...V.staticProperty(\n\t\t\"lowPressureThreshold\",\n\t\t{\n\t\t\t...ValueMetadata.Number,\n\t\t\tlabel: \"Low pressure threshold\",\n\t\t\tunit: \"kPa\",\n\t\t} as const,\n\t),\n\t...V.staticProperty(\n\t\t\"errorValve\",\n\t\t{\n\t\t\t...ValueMetadata.ReadOnlyBoolean,\n\t\t\tlabel: \"Error: valve reporting error\",\n\t\t} as const,\n\t),\n\t...V.staticProperty(\n\t\t\"masterValveOpen\",\n\t\t{\n\t\t\t...ValueMetadata.ReadOnlyBoolean,\n\t\t\tlabel: \"Master valve is open\",\n\t\t} as const,\n\t),\n\t...V.staticProperty(\n\t\t\"firstOpenZoneId\",\n\t\t{\n\t\t\t...ValueMetadata.ReadOnlyNumber,\n\t\t\tlabel: \"First open zone valve ID\",\n\t\t} as const,\n\t),\n\t...V.staticPropertyWithName(\n\t\t\"shutoffSystem\",\n\t\t\"shutoff\",\n\t\t{\n\t\t\t...ValueMetadata.WriteOnlyBoolean,\n\t\t\tlabel: `Shutoff system`,\n\t\t\tstates: {\n\t\t\t\ttrue: \"Shutoff\",\n\t\t\t},\n\t\t} as const,\n\t),\n\t...V.dynamicPropertyAndKeyWithName(\n\t\t\"valveConnected\",\n\t\t(valveId: ValveId) => valveId,\n\t\t\"valveConnected\",\n\t\t({ property, propertyKey }) =>\n\t\t\t(typeof property === \"number\" || property === \"master\")\n\t\t\t&& propertyKey === \"valveConnected\",\n\t\t(valveId: ValveId) => ({\n\t\t\t...ValueMetadata.ReadOnlyBoolean,\n\t\t\tlabel: `${irrigationValveIdToMetadataPrefix(valveId)}: Connected`,\n\t\t} as const),\n\t),\n\t...V.dynamicPropertyAndKeyWithName(\n\t\t\"nominalCurrent\",\n\t\t(valveId: ValveId) => valveId,\n\t\t\"nominalCurrent\",\n\t\t({ property, propertyKey }) =>\n\t\t\t(typeof property === \"number\" || property === \"master\")\n\t\t\t&& propertyKey === \"nominalCurrent\",\n\t\t(valveId: ValveId) => ({\n\t\t\t...ValueMetadata.ReadOnlyBoolean,\n\t\t\tlabel: `${\n\t\t\t\tirrigationValveIdToMetadataPrefix(\n\t\t\t\t\tvalveId,\n\t\t\t\t)\n\t\t\t}: Nominal current`,\n\t\t\tunit: \"mA\",\n\t\t} as const),\n\t),\n\t...V.dynamicPropertyAndKeyWithName(\n\t\t\"nominalCurrentHighThreshold\",\n\t\t(valveId: ValveId) => valveId,\n\t\t\"nominalCurrentHighThreshold\",\n\t\t({ property, propertyKey }) =>\n\t\t\t(typeof property === \"number\" || property === \"master\")\n\t\t\t&& propertyKey === \"nominalCurrentHighThreshold\",\n\t\t(valveId: ValveId) => ({\n\t\t\t...ValueMetadata.Number,\n\t\t\tlabel: `${\n\t\t\t\tirrigationValveIdToMetadataPrefix(\n\t\t\t\t\tvalveId,\n\t\t\t\t)\n\t\t\t}: Nominal current - high threshold`,\n\t\t\tmin: 0,\n\t\t\tmax: 2550,\n\t\t\tunit: \"mA\",\n\t\t} as const),\n\t),\n\t...V.dynamicPropertyAndKeyWithName(\n\t\t\"nominalCurrentLowThreshold\",\n\t\t(valveId: ValveId) => valveId,\n\t\t\"nominalCurrentLowThreshold\",\n\t\t({ property, propertyKey }) =>\n\t\t\t(typeof property === \"number\" || property === \"master\")\n\t\t\t&& propertyKey === \"nominalCurrentLowThreshold\",\n\t\t(valveId: ValveId) => ({\n\t\t\t...ValueMetadata.Number,\n\t\t\tlabel: `${\n\t\t\t\tirrigationValveIdToMetadataPrefix(\n\t\t\t\t\tvalveId,\n\t\t\t\t)\n\t\t\t}: Nominal current - low threshold`,\n\t\t\tmin: 0,\n\t\t\tmax: 2550,\n\t\t\tunit: \"mA\",\n\t\t} as const),\n\t),\n\t...V.dynamicPropertyAndKeyWithName(\n\t\t\"errorShortCircuit\",\n\t\t(valveId: ValveId) => valveId,\n\t\t\"errorShortCircuit\",\n\t\t({ property, propertyKey }) =>\n\t\t\t(typeof property === \"number\" || property === \"master\")\n\t\t\t&& propertyKey === \"errorShortCircuit\",\n\t\t(valveId: ValveId) => ({\n\t\t\t...ValueMetadata.ReadOnlyBoolean,\n\t\t\tlabel: `${\n\t\t\t\tirrigationValveIdToMetadataPrefix(\n\t\t\t\t\tvalveId,\n\t\t\t\t)\n\t\t\t}: Error - Short circuit detected`,\n\t\t} as const),\n\t),\n\t...V.dynamicPropertyAndKeyWithName(\n\t\t\"errorHighCurrent\",\n\t\t(valveId: ValveId) => valveId,\n\t\t\"errorHighCurrent\",\n\t\t({ property, propertyKey }) =>\n\t\t\t(typeof property === \"number\" || property === \"master\")\n\t\t\t&& propertyKey === \"errorHighCurrent\",\n\t\t(valveId: ValveId) => ({\n\t\t\t...ValueMetadata.ReadOnlyBoolean,\n\t\t\tlabel: `${\n\t\t\t\tirrigationValveIdToMetadataPrefix(\n\t\t\t\t\tvalveId,\n\t\t\t\t)\n\t\t\t}: Error - Current above high threshold`,\n\t\t} as const),\n\t),\n\t...V.dynamicPropertyAndKeyWithName(\n\t\t\"errorLowCurrent\",\n\t\t(valveId: ValveId) => valveId,\n\t\t\"errorLowCurrent\",\n\t\t({ property, propertyKey }) =>\n\t\t\t(typeof property === \"number\" || property === \"master\")\n\t\t\t&& propertyKey === \"errorLowCurrent\",\n\t\t(valveId: ValveId) => ({\n\t\t\t...ValueMetadata.ReadOnlyBoolean,\n\t\t\tlabel: `${\n\t\t\t\tirrigationValveIdToMetadataPrefix(\n\t\t\t\t\tvalveId,\n\t\t\t\t)\n\t\t\t}: Error - Current below low threshold`,\n\t\t} as const),\n\t),\n\t...V.dynamicPropertyAndKeyWithName(\n\t\t\"maximumFlow\",\n\t\t(valveId: ValveId) => valveId,\n\t\t\"maximumFlow\",\n\t\t({ property, propertyKey }) =>\n\t\t\t(typeof property === \"number\" || property === \"master\")\n\t\t\t&& propertyKey === \"maximumFlow\",\n\t\t(valveId: ValveId) => ({\n\t\t\t...ValueMetadata.Number,\n\t\t\tlabel: `${\n\t\t\t\tirrigationValveIdToMetadataPrefix(valveId)\n\t\t\t}: Maximum flow`,\n\t\t\tmin: 0,\n\t\t\tunit: \"l/h\",\n\t\t} as const),\n\t),\n\t...V.dynamicPropertyAndKeyWithName(\n\t\t\"errorMaximumFlow\",\n\t\t(valveId: ValveId) => valveId,\n\t\t\"errorMaximumFlow\",\n\t\t({ property, propertyKey }) =>\n\t\t\t(typeof property === \"number\" || property === \"master\")\n\t\t\t&& propertyKey === \"errorMaximumFlow\",\n\t\t(valveId: ValveId) => ({\n\t\t\t...ValueMetadata.ReadOnlyBoolean,\n\t\t\tlabel: `${\n\t\t\t\tirrigationValveIdToMetadataPrefix(\n\t\t\t\t\tvalveId,\n\t\t\t\t)\n\t\t\t}: Error - Maximum flow detected`,\n\t\t} as const),\n\t),\n\t...V.dynamicPropertyAndKeyWithName(\n\t\t\"highFlowThreshold\",\n\t\t(valveId: ValveId) => valveId,\n\t\t\"highFlowThreshold\",\n\t\t({ property, propertyKey }) =>\n\t\t\t(typeof property === \"number\" || property === \"master\")\n\t\t\t&& propertyKey === \"highFlowThreshold\",\n\t\t(valveId: ValveId) => ({\n\t\t\t...ValueMetadata.Number,\n\t\t\tlabel: `${\n\t\t\t\tirrigationValveIdToMetadataPrefix(\n\t\t\t\t\tvalveId,\n\t\t\t\t)\n\t\t\t}: High flow threshold`,\n\t\t\tmin: 0,\n\t\t\tunit: \"l/h\",\n\t\t} as const),\n\t),\n\t...V.dynamicPropertyAndKeyWithName(\n\t\t\"errorHighFlow\",\n\t\t(valveId: ValveId) => valveId,\n\t\t\"errorHighFlow\",\n\t\t({ property, propertyKey }) =>\n\t\t\t(typeof property === \"number\" || property === \"master\")\n\t\t\t&& propertyKey === \"errorHighFlow\",\n\t\t(valveId: ValveId) => ({\n\t\t\t...ValueMetadata.ReadOnlyBoolean,\n\t\t\tlabel: `${\n\t\t\t\tirrigationValveIdToMetadataPrefix(\n\t\t\t\t\tvalveId,\n\t\t\t\t)\n\t\t\t}: Error - Flow above high threshold`,\n\t\t} as const),\n\t),\n\t...V.dynamicPropertyAndKeyWithName(\n\t\t\"lowFlowThreshold\",\n\t\t(valveId: ValveId) => valveId,\n\t\t\"lowFlowThreshold\",\n\t\t({ property, propertyKey }) =>\n\t\t\t(typeof property === \"number\" || property === \"master\")\n\t\t\t&& propertyKey === \"lowFlowThreshold\",\n\t\t(valveId: ValveId) => ({\n\t\t\t...ValueMetadata.Number,\n\t\t\tlabel: `${\n\t\t\t\tirrigationValveIdToMetadataPrefix(\n\t\t\t\t\tvalveId,\n\t\t\t\t)\n\t\t\t}: Low flow threshold`,\n\t\t\tmin: 0,\n\t\t\tunit: \"l/h\",\n\t\t} as const),\n\t),\n\t...V.dynamicPropertyAndKeyWithName(\n\t\t\"errorLowFlow\",\n\t\t(valveId: ValveId) => valveId,\n\t\t\"errorLowFlow\",\n\t\t({ property, propertyKey }) =>\n\t\t\t(typeof property === \"number\" || property === \"master\")\n\t\t\t&& propertyKey === \"errorLowFlow\",\n\t\t(valveId: ValveId) => ({\n\t\t\t...ValueMetadata.ReadOnlyBoolean,\n\t\t\tlabel: `${\n\t\t\t\tirrigationValveIdToMetadataPrefix(\n\t\t\t\t\tvalveId,\n\t\t\t\t)\n\t\t\t}: Error - Flow below high threshold`,\n\t\t} as const),\n\t),\n\t...V.dynamicPropertyAndKeyWithName(\n\t\t\"useRainSensor\",\n\t\t(valveId: ValveId) => valveId,\n\t\t\"useRainSensor\",\n\t\t({ property, propertyKey }) =>\n\t\t\t(typeof property === \"number\" || property === \"master\")\n\t\t\t&& propertyKey === \"useRainSensor\",\n\t\t(valveId: ValveId) => ({\n\t\t\t...ValueMetadata.Boolean,\n\t\t\tlabel: `${\n\t\t\t\tirrigationValveIdToMetadataPrefix(\n\t\t\t\t\tvalveId,\n\t\t\t\t)\n\t\t\t}: Use rain sensor`,\n\t\t} as const),\n\t),\n\t...V.dynamicPropertyAndKeyWithName(\n\t\t\"useMoistureSensor\",\n\t\t(valveId: ValveId) => valveId,\n\t\t\"useMoistureSensor\",\n\t\t({ property, propertyKey }) =>\n\t\t\t(typeof property === \"number\" || property === \"master\")\n\t\t\t&& propertyKey === \"useMoistureSensor\",\n\t\t(valveId: ValveId) => ({\n\t\t\t...ValueMetadata.Boolean,\n\t\t\tlabel: `${\n\t\t\t\tirrigationValveIdToMetadataPrefix(\n\t\t\t\t\tvalveId,\n\t\t\t\t)\n\t\t\t}: Use moisture sensor`,\n\t\t} as const),\n\t),\n\t...V.dynamicPropertyAndKeyWithName(\n\t\t\"valveRunDuration\",\n\t\t(valveId: ValveId) => valveId,\n\t\t\"duration\",\n\t\t({ property, propertyKey }) =>\n\t\t\t(typeof property === \"number\" || property === \"master\")\n\t\t\t&& propertyKey === \"duration\",\n\t\t(valveId: ValveId) => ({\n\t\t\t...ValueMetadata.UInt16,\n\t\t\tlabel: `${\n\t\t\t\tirrigationValveIdToMetadataPrefix(valveId)\n\t\t\t}: Run duration`,\n\t\t\tmin: 1,\n\t\t\tunit: \"s\",\n\t\t} as const),\n\t),\n\t...V.dynamicPropertyAndKeyWithName(\n\t\t\"valveRunStartStop\",\n\t\t(valveId: ValveId) => valveId,\n\t\t\"startStop\",\n\t\t({ property, propertyKey }) =>\n\t\t\t(typeof property === \"number\" || property === \"master\")\n\t\t\t&& propertyKey === \"startStop\",\n\t\t(valveId: ValveId) => ({\n\t\t\t...ValueMetadata.Boolean,\n\t\t\tlabel: `${irrigationValveIdToMetadataPrefix(valveId)}: Start/Stop`,\n\t\t\tstates: {\n\t\t\t\ttrue: \"Start\",\n\t\t\t\tfalse: \"Stop\",\n\t\t\t},\n\t\t} as const),\n\t),\n});\n\nconst systemConfigProperties = [\n\t\"masterValveDelay\",\n\t\"highPressureThreshold\",\n\t\"lowPressureThreshold\",\n\t\"rainSensorPolarity\",\n\t\"moistureSensorPolarity\",\n] as const;\n\nconst valveConfigPropertyKeys = [\n\t\"nominalCurrentHighThreshold\",\n\t\"nominalCurrentLowThreshold\",\n\t\"maximumFlow\",\n\t\"highFlowThreshold\",\n\t\"lowFlowThreshold\",\n\t\"useRainSensor\",\n\t\"useMoistureSensor\",\n] as const;\n\n@API(CommandClasses.Irrigation)\nexport class IrrigationCCAPI extends CCAPI {\n\tpublic supportsCommand(cmd: IrrigationCommand): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase IrrigationCommand.SystemInfoGet:\n\t\t\tcase IrrigationCommand.SystemStatusGet:\n\t\t\tcase IrrigationCommand.SystemConfigSet:\n\t\t\tcase IrrigationCommand.SystemConfigGet:\n\t\t\tcase IrrigationCommand.ValveInfoGet:\n\t\t\tcase IrrigationCommand.ValveConfigSet:\n\t\t\tcase IrrigationCommand.ValveConfigGet:\n\t\t\tcase IrrigationCommand.ValveRun:\n\t\t\tcase IrrigationCommand.ValveTableSet:\n\t\t\tcase IrrigationCommand.ValveTableGet:\n\t\t\tcase IrrigationCommand.ValveTableRun:\n\t\t\tcase IrrigationCommand.SystemShutoff:\n\t\t\t\t// These are all mandatory in V1\n\t\t\t\treturn true;\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\t// oxlint-disable-next-line typescript/explicit-module-boundary-types\n\tpublic async getSystemInfo() {\n\t\tthis.assertSupportsCommand(\n\t\t\tIrrigationCommand,\n\t\t\tIrrigationCommand.SystemInfoGet,\n\t\t);\n\n\t\tconst cc = new IrrigationCCSystemInfoGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tIrrigationCCSystemInfoReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn pick(response, [\n\t\t\t\t\"numValves\",\n\t\t\t\t\"numValveTables\",\n\t\t\t\t\"supportsMasterValve\",\n\t\t\t\t\"maxValveTableSize\",\n\t\t\t]);\n\t\t}\n\t}\n\n\t// oxlint-disable-next-line typescript/explicit-module-boundary-types\n\tpublic async getSystemStatus() {\n\t\tthis.assertSupportsCommand(\n\t\t\tIrrigationCommand,\n\t\t\tIrrigationCommand.SystemStatusGet,\n\t\t);\n\n\t\tconst cc = new IrrigationCCSystemStatusGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tIrrigationCCSystemStatusReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn pick(response, [\n\t\t\t\t\"systemVoltage\",\n\t\t\t\t\"flowSensorActive\",\n\t\t\t\t\"pressureSensorActive\",\n\t\t\t\t\"rainSensorActive\",\n\t\t\t\t\"moistureSensorActive\",\n\t\t\t\t\"flow\",\n\t\t\t\t\"pressure\",\n\t\t\t\t\"shutoffDuration\",\n\t\t\t\t\"errorNotProgrammed\",\n\t\t\t\t\"errorEmergencyShutdown\",\n\t\t\t\t\"errorHighPressure\",\n\t\t\t\t\"errorLowPressure\",\n\t\t\t\t\"errorValve\",\n\t\t\t\t\"masterValveOpen\",\n\t\t\t\t\"firstOpenZoneId\",\n\t\t\t]);\n\t\t}\n\t}\n\n\t// oxlint-disable-next-line typescript/explicit-module-boundary-types\n\tpublic async getSystemConfig() {\n\t\tthis.assertSupportsCommand(\n\t\t\tIrrigationCommand,\n\t\t\tIrrigationCommand.SystemConfigGet,\n\t\t);\n\n\t\tconst cc = new IrrigationCCSystemConfigGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tIrrigationCCSystemConfigReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn pick(response, [\n\t\t\t\t\"masterValveDelay\",\n\t\t\t\t\"highPressureThreshold\",\n\t\t\t\t\"lowPressureThreshold\",\n\t\t\t\t\"rainSensorPolarity\",\n\t\t\t\t\"moistureSensorPolarity\",\n\t\t\t]);\n\t\t}\n\t}\n\n\t@validateArgs({ strictEnums: true })\n\tpublic async setSystemConfig(\n\t\tconfig: IrrigationCCSystemConfigSetOptions,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tIrrigationCommand,\n\t\t\tIrrigationCommand.SystemConfigSet,\n\t\t);\n\n\t\tconst cc = new IrrigationCCSystemConfigSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...config,\n\t\t});\n\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t@validateArgs()\n\t// oxlint-disable-next-line typescript/explicit-module-boundary-types\n\tpublic async getValveInfo(valveId: ValveId) {\n\t\tthis.assertSupportsCommand(\n\t\t\tIrrigationCommand,\n\t\t\tIrrigationCommand.ValveInfoGet,\n\t\t);\n\n\t\tconst cc = new IrrigationCCValveInfoGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tvalveId,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tIrrigationCCValveInfoReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn pick(response, [\n\t\t\t\t\"connected\",\n\t\t\t\t\"nominalCurrent\",\n\t\t\t\t\"errorShortCircuit\",\n\t\t\t\t\"errorHighCurrent\",\n\t\t\t\t\"errorLowCurrent\",\n\t\t\t\t\"errorMaximumFlow\",\n\t\t\t\t\"errorHighFlow\",\n\t\t\t\t\"errorLowFlow\",\n\t\t\t]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async setValveConfig(\n\t\toptions: IrrigationCCValveConfigSetOptions,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tIrrigationCommand,\n\t\t\tIrrigationCommand.ValveConfigSet,\n\t\t);\n\n\t\tconst cc = new IrrigationCCValveConfigSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...options,\n\t\t});\n\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t@validateArgs()\n\t// oxlint-disable-next-line typescript/explicit-module-boundary-types\n\tpublic async getValveConfig(valveId: ValveId) {\n\t\tthis.assertSupportsCommand(\n\t\t\tIrrigationCommand,\n\t\t\tIrrigationCommand.ValveConfigGet,\n\t\t);\n\n\t\tconst cc = new IrrigationCCValveConfigGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tvalveId,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tIrrigationCCValveConfigReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn pick(response, [\n\t\t\t\t\"nominalCurrentHighThreshold\",\n\t\t\t\t\"nominalCurrentLowThreshold\",\n\t\t\t\t\"maximumFlow\",\n\t\t\t\t\"highFlowThreshold\",\n\t\t\t\t\"lowFlowThreshold\",\n\t\t\t\t\"useRainSensor\",\n\t\t\t\t\"useMoistureSensor\",\n\t\t\t]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async runValve(\n\t\tvalveId: ValveId,\n\t\tduration: number,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tIrrigationCommand,\n\t\t\tIrrigationCommand.ValveRun,\n\t\t);\n\n\t\tconst cc = new IrrigationCCValveRun({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tvalveId,\n\t\t\tduration,\n\t\t});\n\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t@validateArgs()\n\tpublic shutoffValve(\n\t\tvalveId: ValveId,\n\t): Promise<SupervisionResult | undefined> {\n\t\treturn this.runValve(valveId, 0);\n\t}\n\n\t@validateArgs()\n\tpublic async setValveTable(\n\t\ttableId: number,\n\t\tentries: ValveTableEntry[],\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tIrrigationCommand,\n\t\t\tIrrigationCommand.ValveTableSet,\n\t\t);\n\n\t\tif (!this.endpoint.virtual) {\n\t\t\tconst maxValveTableSize = IrrigationCC.getMaxValveTableSizeCached(\n\t\t\t\tthis.host,\n\t\t\t\tthis.endpoint,\n\t\t\t);\n\t\t\tif (\n\t\t\t\tmaxValveTableSize != undefined\n\t\t\t\t&& entries.length > maxValveTableSize\n\t\t\t) {\n\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t`The number of valve table entries must not exceed ${maxValveTableSize}.`,\n\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst cc = new IrrigationCCValveTableSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\ttableId,\n\t\t\tentries,\n\t\t});\n\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t@validateArgs()\n\tpublic async getValveTable(\n\t\ttableId: number,\n\t): Promise<MaybeNotKnown<ValveTableEntry[]>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tIrrigationCommand,\n\t\t\tIrrigationCommand.ValveTableGet,\n\t\t);\n\n\t\tconst cc = new IrrigationCCValveTableGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\ttableId,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tIrrigationCCValveTableReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn response?.entries;\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async runTables(\n\t\ttableIDs: number[],\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tIrrigationCommand,\n\t\t\tIrrigationCommand.ValveTableRun,\n\t\t);\n\n\t\tconst cc = new IrrigationCCValveTableRun({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\ttableIDs,\n\t\t});\n\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Shuts off the entire system for the given duration.\n\t * @param duration Shutoff duration in hours. A value of 255 will shut off the entire system permanently and prevents schedules from running.\n\t */\n\t@validateArgs()\n\tpublic async shutoffSystem(\n\t\tduration: number,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tIrrigationCommand,\n\t\t\tIrrigationCommand.SystemShutoff,\n\t\t);\n\n\t\tconst cc = new IrrigationCCSystemShutoff({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tduration,\n\t\t});\n\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/** Shuts off the entire system permanently and prevents schedules from running */\n\tpublic shutoffSystemPermanently(): Promise<SupervisionResult | undefined> {\n\t\treturn this.shutoffSystem(255);\n\t}\n\n\tprotected override get [SET_VALUE](): SetValueImplementation {\n\t\treturn async function(\n\t\t\tthis: IrrigationCCAPI,\n\t\t\t{ property, propertyKey },\n\t\t\tvalue,\n\t\t) {\n\t\t\tconst valueDB = this.getValueDB();\n\n\t\t\tif (systemConfigProperties.includes(property as any)) {\n\t\t\t\tconst options = {} as IrrigationCCSystemConfigSetOptions;\n\t\t\t\tfor (const prop of systemConfigProperties) {\n\t\t\t\t\tif (prop === property) continue;\n\t\t\t\t\tconst valueId: ValueID = {\n\t\t\t\t\t\tcommandClass: this.ccId,\n\t\t\t\t\t\tendpoint: this.endpoint.index,\n\t\t\t\t\t\tproperty: prop as any,\n\t\t\t\t\t};\n\t\t\t\t\tconst cachedVal = valueDB.getValue<any>(valueId);\n\t\t\t\t\tif (cachedVal == undefined) {\n\t\t\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t\t\t`The \"${property}\" property cannot be changed before ${prop} is known!`,\n\t\t\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\toptions[prop] = cachedVal;\n\t\t\t\t}\n\t\t\t\toptions[property as keyof IrrigationCCSystemConfigSetOptions] =\n\t\t\t\t\tvalue as any;\n\n\t\t\t\treturn this.setSystemConfig(options);\n\t\t\t} else if (property === \"shutoff\") {\n\t\t\t\treturn this.shutoffSystem(0);\n\t\t\t} else if (\n\t\t\t\tproperty === \"master\"\n\t\t\t\t|| (typeof property === \"number\" && property >= 1)\n\t\t\t) {\n\t\t\t\t// This is a value of a valve\n\t\t\t\tif (propertyKey == undefined) {\n\t\t\t\t\tthrowMissingPropertyKey(this.ccId, property);\n\t\t\t\t}\n\n\t\t\t\tif (valveConfigPropertyKeys.includes(propertyKey as any)) {\n\t\t\t\t\tconst options = {\n\t\t\t\t\t\tvalveId: property,\n\t\t\t\t\t} as IrrigationCCValveConfigSetOptions;\n\n\t\t\t\t\tfor (const prop of valveConfigPropertyKeys) {\n\t\t\t\t\t\tif (prop === propertyKey) continue;\n\t\t\t\t\t\tconst valueId: ValueID = {\n\t\t\t\t\t\t\tcommandClass: this.ccId,\n\t\t\t\t\t\t\tendpoint: this.endpoint.index,\n\t\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\tpropertyKey: prop as any,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst cachedVal = valueDB.getValue<any>(valueId);\n\t\t\t\t\t\tif (cachedVal == undefined) {\n\t\t\t\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t\t\t\t`The \"${property}_${propertyKey}\" property cannot be changed before ${property}_${prop} is known!`,\n\t\t\t\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t(options as any)[prop] = cachedVal;\n\t\t\t\t\t}\n\t\t\t\t\t(options as any)[propertyKey] = value;\n\n\t\t\t\t\treturn this.setValveConfig(options);\n\t\t\t\t} else if (propertyKey === \"duration\") {\n\t\t\t\t\t// The run duration needs to be set separately from triggering the run\n\t\t\t\t\t// So this is okay\n\t\t\t\t\treturn;\n\t\t\t\t} else if (propertyKey === \"startStop\") {\n\t\t\t\t\t// Trigger or stop a valve run, depending on the value\n\t\t\t\t\tif (typeof value !== \"boolean\") {\n\t\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\t\"boolean\",\n\t\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (value) {\n\t\t\t\t\t\t// Start a valve run\n\t\t\t\t\t\tconst duration = valueDB.getValue<number>(\n\t\t\t\t\t\t\tIrrigationCCValues.valveRunDuration(\n\t\t\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\t).endpoint(this.endpoint.index),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (duration == undefined) {\n\t\t\t\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t\t\t\t`Cannot start a valve run without specifying a duration first!`,\n\t\t\t\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn this.runValve(property, duration);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Stop a valve run\n\t\t\t\t\t\treturn this.shutoffValve(property);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthrowUnsupportedPropertyKey(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tprotected get [POLL_VALUE](): PollValueImplementation {\n\t\treturn async function(\n\t\t\tthis: IrrigationCCAPI,\n\t\t\t{ property, propertyKey },\n\t\t) {\n\t\t\tswitch (property) {\n\t\t\t\tcase \"systemVoltage\":\n\t\t\t\tcase \"flowSensorActive\":\n\t\t\t\tcase \"pressureSensorActive\":\n\t\t\t\tcase \"rainSensorActive\":\n\t\t\t\tcase \"moistureSensorActive\":\n\t\t\t\tcase \"flow\":\n\t\t\t\tcase \"pressure\":\n\t\t\t\tcase \"shutoffDuration\":\n\t\t\t\tcase \"errorNotProgrammed\":\n\t\t\t\tcase \"errorEmergencyShutdown\":\n\t\t\t\tcase \"errorHighPressure\":\n\t\t\t\tcase \"errorLowPressure\":\n\t\t\t\tcase \"errorValve\":\n\t\t\t\tcase \"masterValveOpen\":\n\t\t\t\tcase \"firstOpenZoneId\":\n\t\t\t\t\treturn (await this.getSystemStatus())?.[property];\n\n\t\t\t\tcase \"masterValveDelay\":\n\t\t\t\tcase \"highPressureThreshold\":\n\t\t\t\tcase \"lowPressureThreshold\":\n\t\t\t\tcase \"rainSensorPolarity\":\n\t\t\t\tcase \"moistureSensorPolarity\":\n\t\t\t\t\treturn (await this.getSystemConfig())?.[property];\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tproperty === \"master\"\n\t\t\t\t|| (typeof property === \"number\" && property >= 1)\n\t\t\t) {\n\t\t\t\t// This is a value of a valve\n\t\t\t\tswitch (propertyKey) {\n\t\t\t\t\tcase \"connected\":\n\t\t\t\t\tcase \"nominalCurrent\":\n\t\t\t\t\tcase \"errorShortCircuit\":\n\t\t\t\t\tcase \"errorHighCurrent\":\n\t\t\t\t\tcase \"errorLowCurrent\":\n\t\t\t\t\tcase \"errorMaximumFlow\":\n\t\t\t\t\tcase \"errorHighFlow\":\n\t\t\t\t\tcase \"errorLowFlow\":\n\t\t\t\t\t\treturn (await this.getValveInfo(property))?.[\n\t\t\t\t\t\t\tpropertyKey\n\t\t\t\t\t\t];\n\n\t\t\t\t\tcase \"nominalCurrentHighThreshold\":\n\t\t\t\t\tcase \"nominalCurrentLowThreshold\":\n\t\t\t\t\tcase \"maximumFlow\":\n\t\t\t\t\tcase \"highFlowThreshold\":\n\t\t\t\t\tcase \"lowFlowThreshold\":\n\t\t\t\t\tcase \"useRainSensor\":\n\t\t\t\t\tcase \"useMoistureSensor\":\n\t\t\t\t\t\treturn (await this.getValveConfig(property))?.[\n\t\t\t\t\t\t\tpropertyKey\n\t\t\t\t\t\t];\n\n\t\t\t\t\tcase undefined:\n\t\t\t\t\t\tthrowMissingPropertyKey(this.ccId, property);\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrowUnsupportedPropertyKey(\n\t\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t};\n\t}\n}\n\n@commandClass(CommandClasses.Irrigation)\n@implementedVersion(1)\n@ccValues(IrrigationCCValues)\nexport class IrrigationCC extends CommandClass {\n\tdeclare ccCommand: IrrigationCommand;\n\n\t/**\n\t * Returns the maximum number of valve table entries reported by the node.\n\t * This only works AFTER the node has been interviewed.\n\t */\n\tpublic static getMaxValveTableSizeCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): MaybeNotKnown<number> {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tIrrigationCCValues.maxValveTableSize.endpoint(endpoint.index),\n\t\t\t);\n\t}\n\n\t/**\n\t * Returns the number of zone valves reported by the node.\n\t * This only works AFTER the node has been interviewed.\n\t */\n\tpublic static getNumValvesCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): MaybeNotKnown<number> {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(IrrigationCCValues.numValves.endpoint(endpoint.index));\n\t}\n\n\t/**\n\t * Returns whether the node supports a master valve\n\t * This only works AFTER the node has been interviewed.\n\t */\n\tpublic static supportsMasterValveCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): boolean {\n\t\treturn !!ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tIrrigationCCValues.supportsMasterValve.endpoint(endpoint.index),\n\t\t\t);\n\t}\n\n\tpublic async interview(\n\t\tctx: InterviewContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\t\tconst api = CCAPI.create(\n\t\t\tCommandClasses.Irrigation,\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\n\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: `Interviewing ${this.ccName}...`,\n\t\t\tdirection: \"none\",\n\t\t});\n\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: \"Querying irrigation system info...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tconst systemInfo = await api.getSystemInfo();\n\t\tif (!systemInfo) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t\"Time out while querying irrigation system info, skipping interview...\",\n\t\t\t\tlevel: \"warn\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst logMessage = `received irrigation system info:\nsupports master valve: ${systemInfo.supportsMasterValve}\nno. of valves: ${systemInfo.numValves}\nno. of valve tables: ${systemInfo.numValveTables}\nmax. valve table size: ${systemInfo.maxValveTableSize}`;\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: logMessage,\n\t\t\tdirection: \"inbound\",\n\t\t});\n\n\t\t// For each valve, create the values to start/stop a run\n\t\tfor (let i = 1; i <= systemInfo.numValves; i++) {\n\t\t\tthis.ensureMetadata(\n\t\t\t\tctx,\n\t\t\t\tIrrigationCCValues.valveRunDuration(i),\n\t\t\t);\n\t\t\tthis.ensureMetadata(\n\t\t\t\tctx,\n\t\t\t\tIrrigationCCValues.valveRunStartStop(i),\n\t\t\t);\n\t\t}\n\t\t// And create a shutoff value\n\t\tthis.ensureMetadata(ctx, IrrigationCCValues.shutoffSystem);\n\n\t\t// Query current values\n\t\tawait this.refreshValues(ctx);\n\n\t\t// Remember that the interview is complete\n\t\tthis.setInterviewComplete(ctx, true);\n\t}\n\n\tpublic async refreshValues(\n\t\tctx: RefreshValuesContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\t\tconst api = CCAPI.create(\n\t\t\tCommandClasses.Irrigation,\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\n\n\t\t// Query the current system config\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: \"Querying irrigation system configuration...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tconst systemConfig = await api.getSystemConfig();\n\t\tif (systemConfig) {\n\t\t\tlet logMessage = `received irrigation system configuration:\nmaster valve delay: ${systemConfig.masterValveDelay} seconds\nhigh pressure threshold: ${systemConfig.highPressureThreshold} kPa\nlow pressure threshold: ${systemConfig.lowPressureThreshold} kPa`;\n\t\t\tif (systemConfig.rainSensorPolarity != undefined) {\n\t\t\t\tlogMessage += `\nrain sensor polarity: ${\n\t\t\t\t\tgetEnumMemberName(\n\t\t\t\t\t\tIrrigationSensorPolarity,\n\t\t\t\t\t\tsystemConfig.rainSensorPolarity,\n\t\t\t\t\t)\n\t\t\t\t}`;\n\t\t\t}\n\t\t\tif (systemConfig.moistureSensorPolarity != undefined) {\n\t\t\t\tlogMessage += `\nmoisture sensor polarity: ${\n\t\t\t\t\tgetEnumMemberName(\n\t\t\t\t\t\tIrrigationSensorPolarity,\n\t\t\t\t\t\tsystemConfig.moistureSensorPolarity,\n\t\t\t\t\t)\n\t\t\t\t}`;\n\t\t\t}\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: logMessage,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t}\n\n\t\t// and status\n\t\t// Query the current system config\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: \"Querying irrigation system status...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tawait api.getSystemStatus();\n\n\t\t// for each valve, query the current status and configuration\n\t\tif (IrrigationCC.supportsMasterValveCached(ctx, endpoint)) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: \"Querying master valve configuration...\",\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tawait api.getValveConfig(\"master\");\n\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: \"Querying master valve status...\",\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tawait api.getValveInfo(\"master\");\n\t\t}\n\n\t\tfor (\n\t\t\tlet i = 1;\n\t\t\ti <= (IrrigationCC.getNumValvesCached(ctx, endpoint) ?? 0);\n\t\t\ti++\n\t\t) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: `Querying configuration for valve ${\n\t\t\t\t\ti.toString().padStart(\n\t\t\t\t\t\t3,\n\t\t\t\t\t\t\"0\",\n\t\t\t\t\t)\n\t\t\t\t}...`,\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tawait api.getValveConfig(i);\n\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: `Querying status for valve ${\n\t\t\t\t\ti.toString().padStart(\n\t\t\t\t\t\t3,\n\t\t\t\t\t\t\"0\",\n\t\t\t\t\t)\n\t\t\t\t}...`,\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tawait api.getValveInfo(i);\n\t\t}\n\t}\n\n\tpublic translateProperty(\n\t\tctx: GetValueDB,\n\t\tproperty: string | number,\n\t\tpropertyKey?: string | number,\n\t): string {\n\t\tif (property === \"master\") {\n\t\t\treturn \"Master valve\";\n\t\t} else if (typeof property === \"number\") {\n\t\t\treturn `Valve ${property.toString().padStart(3, \"0\")}`;\n\t\t}\n\t\treturn super.translateProperty(ctx, property, propertyKey);\n\t}\n}\n\n// @publicAPI\nexport interface IrrigationCCSystemInfoReportOptions {\n\tsupportsMasterValve: boolean;\n\tnumValves: number;\n\tnumValveTables: number;\n\tmaxValveTableSize: number;\n}\n\n@CCCommand(IrrigationCommand.SystemInfoReport)\n@ccValueProperty(\"numValves\", IrrigationCCValues.numValves)\n@ccValueProperty(\"numValveTables\", IrrigationCCValues.numValveTables)\n@ccValueProperty(\"supportsMasterValve\", IrrigationCCValues.supportsMasterValve)\n@ccValueProperty(\"maxValveTableSize\", IrrigationCCValues.maxValveTableSize)\nexport class IrrigationCCSystemInfoReport extends IrrigationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<IrrigationCCSystemInfoReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.supportsMasterValve = options.supportsMasterValve;\n\t\tthis.numValves = options.numValves;\n\t\tthis.numValveTables = options.numValveTables;\n\t\tthis.maxValveTableSize = options.maxValveTableSize;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): IrrigationCCSystemInfoReport {\n\t\tvalidatePayload(raw.payload.length >= 4);\n\t\tconst supportsMasterValve = !!(raw.payload[0] & 0x01);\n\t\tconst numValves = raw.payload[1];\n\t\tconst numValveTables = raw.payload[2];\n\t\tconst maxValveTableSize = raw.payload[3] & 0b1111;\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsupportsMasterValve,\n\t\t\tnumValves,\n\t\t\tnumValveTables,\n\t\t\tmaxValveTableSize,\n\t\t});\n\t}\n\n\tpublic readonly numValves: number;\n\n\tpublic readonly numValveTables: number;\n\n\tpublic readonly supportsMasterValve: boolean;\n\n\tpublic readonly maxValveTableSize: number;\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"supports master valve\": this.supportsMasterValve,\n\t\t\t\t\"no. of valves\": this.numValves,\n\t\t\t\t\"no. of valve tables\": this.numValveTables,\n\t\t\t\t\"max. valve table size\": this.maxValveTableSize,\n\t\t\t},\n\t\t};\n\t}\n}\n\n@CCCommand(IrrigationCommand.SystemInfoGet)\n@expectedCCResponse(IrrigationCCSystemInfoReport)\nexport class IrrigationCCSystemInfoGet extends IrrigationCC {}\n\n// @publicAPI\nexport interface IrrigationCCSystemStatusReportOptions {\n\tsystemVoltage: number;\n\tflowSensorActive: boolean;\n\tpressureSensorActive: boolean;\n\trainSensorActive: boolean;\n\tmoistureSensorActive: boolean;\n\tflow?: number;\n\tpressure?: number;\n\tshutoffDuration: number;\n\terrorNotProgrammed: boolean;\n\terrorEmergencyShutdown: boolean;\n\terrorHighPressure: boolean;\n\terrorLowPressure: boolean;\n\terrorValve: boolean;\n\tmasterValveOpen: boolean;\n\tfirstOpenZoneId?: number;\n}\n\n@CCCommand(IrrigationCommand.SystemStatusReport)\n@ccValueProperty(\"systemVoltage\", IrrigationCCValues.systemVoltage)\n@ccValueProperty(\"flowSensorActive\", IrrigationCCValues.flowSensorActive)\n@ccValueProperty(\n\t\"pressureSensorActive\",\n\tIrrigationCCValues.pressureSensorActive,\n)\n@ccValueProperty(\"rainSensorActive\", IrrigationCCValues.rainSensorActive)\n@ccValueProperty(\n\t\"moistureSensorActive\",\n\tIrrigationCCValues.moistureSensorActive,\n)\n@ccValueProperty(\"flow\", IrrigationCCValues.flow)\n@ccValueProperty(\"pressure\", IrrigationCCValues.pressure)\n@ccValueProperty(\"shutoffDuration\", IrrigationCCValues.shutoffDuration)\n@ccValueProperty(\"errorNotProgrammed\", IrrigationCCValues.errorNotProgrammed)\n@ccValueProperty(\n\t\"errorEmergencyShutdown\",\n\tIrrigationCCValues.errorEmergencyShutdown,\n)\n@ccValueProperty(\"errorHighPressure\", IrrigationCCValues.errorHighPressure)\n@ccValueProperty(\"errorLowPressure\", IrrigationCCValues.errorLowPressure)\n@ccValueProperty(\"errorValve\", IrrigationCCValues.errorValve)\n@ccValueProperty(\"masterValveOpen\", IrrigationCCValues.masterValveOpen)\n@ccValueProperty(\"firstOpenZoneId\", IrrigationCCValues.firstOpenZoneId)\nexport class IrrigationCCSystemStatusReport extends IrrigationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<IrrigationCCSystemStatusReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.systemVoltage = options.systemVoltage;\n\t\tthis.flowSensorActive = options.flowSensorActive;\n\t\tthis.pressureSensorActive = options.pressureSensorActive;\n\t\tthis.rainSensorActive = options.rainSensorActive;\n\t\tthis.moistureSensorActive = options.moistureSensorActive;\n\t\tthis.flow = options.flow;\n\t\tthis.pressure = options.pressure;\n\t\tthis.shutoffDuration = options.shutoffDuration;\n\t\tthis.errorNotProgrammed = options.errorNotProgrammed;\n\t\tthis.errorEmergencyShutdown = options.errorEmergencyShutdown;\n\t\tthis.errorHighPressure = options.errorHighPressure;\n\t\tthis.errorLowPressure = options.errorLowPressure;\n\t\tthis.errorValve = options.errorValve;\n\t\tthis.masterValveOpen = options.masterValveOpen;\n\t\tthis.firstOpenZoneId = options.firstOpenZoneId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): IrrigationCCSystemStatusReport {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst systemVoltage = raw.payload[0];\n\t\tconst flowSensorActive = !!(raw.payload[1] & 0x01);\n\t\tconst pressureSensorActive = !!(raw.payload[1] & 0x02);\n\t\tconst rainSensorActive = !!(raw.payload[1] & 0x04);\n\t\tconst moistureSensorActive = !!(raw.payload[1] & 0x08);\n\t\tlet offset = 2;\n\t\tlet flow: number | undefined;\n\t\t{\n\t\t\tconst { value, scale, bytesRead } = parseFloatWithScale(\n\t\t\t\traw.payload.subarray(offset),\n\t\t\t);\n\t\t\tvalidatePayload(scale === 0);\n\t\t\tif (flowSensorActive) flow = value;\n\t\t\toffset += bytesRead;\n\t\t}\n\n\t\tlet pressure: number | undefined;\n\t\t{\n\t\t\tconst { value, scale, bytesRead } = parseFloatWithScale(\n\t\t\t\traw.payload.subarray(offset),\n\t\t\t);\n\t\t\tvalidatePayload(scale === 0);\n\t\t\tif (pressureSensorActive) pressure = value;\n\t\t\toffset += bytesRead;\n\t\t}\n\n\t\tvalidatePayload(raw.payload.length >= offset + 4);\n\t\tconst shutoffDuration = raw.payload[offset];\n\t\tconst errorNotProgrammed = !!(raw.payload[offset + 1] & 0x01);\n\t\tconst errorEmergencyShutdown = !!(raw.payload[offset + 1] & 0x02);\n\t\tconst errorHighPressure = !!(raw.payload[offset + 1] & 0x04);\n\t\tconst errorLowPressure = !!(raw.payload[offset + 1] & 0x08);\n\t\tconst errorValve = !!(raw.payload[offset + 1] & 0x10);\n\t\tconst masterValveOpen = !!(raw.payload[offset + 2] & 0x01);\n\t\tlet firstOpenZoneId: number | undefined;\n\t\tif (raw.payload[offset + 3]) {\n\t\t\tfirstOpenZoneId = raw.payload[offset + 3];\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsystemVoltage,\n\t\t\tflowSensorActive,\n\t\t\tpressureSensorActive,\n\t\t\trainSensorActive,\n\t\t\tmoistureSensorActive,\n\t\t\tflow,\n\t\t\tpressure,\n\t\t\tshutoffDuration,\n\t\t\terrorNotProgrammed,\n\t\t\terrorEmergencyShutdown,\n\t\t\terrorHighPressure,\n\t\t\terrorLowPressure,\n\t\t\terrorValve,\n\t\t\tmasterValveOpen,\n\t\t\tfirstOpenZoneId,\n\t\t});\n\t}\n\n\tpublic systemVoltage: number;\n\n\tpublic flowSensorActive: boolean;\n\n\tpublic pressureSensorActive: boolean;\n\n\tpublic rainSensorActive: boolean;\n\n\tpublic moistureSensorActive: boolean;\n\n\tpublic flow?: number;\n\n\tpublic pressure?: number;\n\n\tpublic shutoffDuration: number;\n\n\tpublic errorNotProgrammed: boolean;\n\n\tpublic errorEmergencyShutdown: boolean;\n\n\tpublic errorHighPressure: boolean;\n\n\tpublic errorLowPressure: boolean;\n\n\tpublic errorValve: boolean;\n\n\tpublic masterValveOpen: boolean;\n\n\tpublic firstOpenZoneId?: number;\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"system voltage\": `${this.systemVoltage} V`,\n\t\t\t\"active sensors\": [\n\t\t\t\tthis.flowSensorActive ? \"flow\" : undefined,\n\t\t\t\tthis.pressureSensorActive ? \"pressure\" : undefined,\n\t\t\t\tthis.rainSensorActive ? \"rain\" : undefined,\n\t\t\t\tthis.moistureSensorActive ? \"moisture\" : undefined,\n\t\t\t]\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.join(\", \"),\n\t\t};\n\t\tif (this.flow != undefined) {\n\t\t\tmessage.flow = `${this.flow} l/h`;\n\t\t}\n\t\tif (this.pressure != undefined) {\n\t\t\tmessage.pressure = `${this.pressure} kPa`;\n\t\t}\n\t\tmessage[\"remaining shutoff duration\"] = `${this.shutoffDuration} hours`;\n\t\tmessage[\"master valve status\"] = this.masterValveOpen\n\t\t\t? \"open\"\n\t\t\t: \"closed\";\n\t\tmessage[\"first open zone valve\"] = this.firstOpenZoneId || \"none\";\n\t\tconst errors = [\n\t\t\tthis.errorNotProgrammed ? \"device not programmed\" : undefined,\n\t\t\tthis.errorEmergencyShutdown ? \"emergency shutdown\" : undefined,\n\t\t\tthis.errorHighPressure\n\t\t\t\t? \"high pressure threshold triggered\"\n\t\t\t\t: undefined,\n\t\t\tthis.errorLowPressure\n\t\t\t\t? \"low pressure threshold triggered\"\n\t\t\t\t: undefined,\n\t\t\tthis.errorValve\n\t\t\t\t? \"a valve or the master valve has an error\"\n\t\t\t\t: undefined,\n\t\t].filter(Boolean);\n\t\tif (errors.length > 0) {\n\t\t\tmessage.errors = errors.map((e) => `\\n\u00B7 ${e}`).join(\"\");\n\t\t}\n\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n@CCCommand(IrrigationCommand.SystemStatusGet)\n@expectedCCResponse(IrrigationCCSystemStatusReport)\nexport class IrrigationCCSystemStatusGet extends IrrigationCC {}\n\n// @publicAPI\nexport type IrrigationCCSystemConfigSetOptions = {\n\tmasterValveDelay: number;\n\thighPressureThreshold: number;\n\tlowPressureThreshold: number;\n\trainSensorPolarity?: IrrigationSensorPolarity;\n\tmoistureSensorPolarity?: IrrigationSensorPolarity;\n};\n\n@CCCommand(IrrigationCommand.SystemConfigSet)\n@useSupervision()\nexport class IrrigationCCSystemConfigSet extends IrrigationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<IrrigationCCSystemConfigSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.masterValveDelay = options.masterValveDelay;\n\t\tthis.highPressureThreshold = options.highPressureThreshold;\n\t\tthis.lowPressureThreshold = options.lowPressureThreshold;\n\t\tthis.rainSensorPolarity = options.rainSensorPolarity;\n\t\tthis.moistureSensorPolarity = options.moistureSensorPolarity;\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): IrrigationCCSystemConfigSet {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new IrrigationCCSystemConfigSet({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic masterValveDelay: number;\n\tpublic highPressureThreshold: number;\n\tpublic lowPressureThreshold: number;\n\tpublic rainSensorPolarity?: IrrigationSensorPolarity;\n\tpublic moistureSensorPolarity?: IrrigationSensorPolarity;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tlet polarity = 0;\n\t\tif (this.rainSensorPolarity != undefined) polarity |= 0b1;\n\t\tif (this.moistureSensorPolarity != undefined) polarity |= 0b10;\n\t\tif (\n\t\t\tthis.rainSensorPolarity == undefined\n\t\t\t&& this.moistureSensorPolarity == undefined\n\t\t) {\n\t\t\t// Valid bit\n\t\t\tpolarity |= 0b1000_0000;\n\t\t}\n\t\tthis.payload = Bytes.concat([\n\t\t\t[this.masterValveDelay],\n\t\t\tencodeFloatWithScale(this.highPressureThreshold, 0 /* kPa */),\n\t\t\tencodeFloatWithScale(this.lowPressureThreshold, 0 /* kPa */),\n\t\t\t[polarity],\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"master valve delay\": `${this.masterValveDelay} s`,\n\t\t\t\"high pressure threshold\": `${this.highPressureThreshold} kPa`,\n\t\t\t\"low pressure threshold\": `${this.lowPressureThreshold} kPa`,\n\t\t};\n\t\tif (this.rainSensorPolarity != undefined) {\n\t\t\tmessage[\"rain sensor polarity\"] = getEnumMemberName(\n\t\t\t\tIrrigationSensorPolarity,\n\t\t\t\tthis.rainSensorPolarity,\n\t\t\t);\n\t\t}\n\t\tif (this.moistureSensorPolarity != undefined) {\n\t\t\tmessage[\"moisture sensor polarity\"] = getEnumMemberName(\n\t\t\t\tIrrigationSensorPolarity,\n\t\t\t\tthis.moistureSensorPolarity,\n\t\t\t);\n\t\t}\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface IrrigationCCSystemConfigReportOptions {\n\tmasterValveDelay: number;\n\thighPressureThreshold: number;\n\tlowPressureThreshold: number;\n\trainSensorPolarity?: IrrigationSensorPolarity;\n\tmoistureSensorPolarity?: IrrigationSensorPolarity;\n}\n\n@CCCommand(IrrigationCommand.SystemConfigReport)\n@ccValueProperty(\"masterValveDelay\", IrrigationCCValues.masterValveDelay)\n@ccValueProperty(\n\t\"highPressureThreshold\",\n\tIrrigationCCValues.highPressureThreshold,\n)\n@ccValueProperty(\n\t\"lowPressureThreshold\",\n\tIrrigationCCValues.lowPressureThreshold,\n)\n@ccValueProperty(\"rainSensorPolarity\", IrrigationCCValues.rainSensorPolarity)\n@ccValueProperty(\n\t\"moistureSensorPolarity\",\n\tIrrigationCCValues.moistureSensorPolarity,\n)\nexport class IrrigationCCSystemConfigReport extends IrrigationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<IrrigationCCSystemConfigReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.masterValveDelay = options.masterValveDelay;\n\t\tthis.highPressureThreshold = options.highPressureThreshold;\n\t\tthis.lowPressureThreshold = options.lowPressureThreshold;\n\t\tthis.rainSensorPolarity = options.rainSensorPolarity;\n\t\tthis.moistureSensorPolarity = options.moistureSensorPolarity;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): IrrigationCCSystemConfigReport {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst masterValveDelay = raw.payload[0];\n\t\tlet offset = 1;\n\t\tlet highPressureThreshold;\n\t\t{\n\t\t\tconst { value, scale, bytesRead } = parseFloatWithScale(\n\t\t\t\traw.payload.subarray(offset),\n\t\t\t);\n\t\t\tvalidatePayload(scale === 0 /* kPa */);\n\t\t\thighPressureThreshold = value;\n\t\t\toffset += bytesRead;\n\t\t}\n\n\t\tlet lowPressureThreshold;\n\t\t{\n\t\t\tconst { value, scale, bytesRead } = parseFloatWithScale(\n\t\t\t\traw.payload.subarray(offset),\n\t\t\t);\n\t\t\tvalidatePayload(scale === 0 /* kPa */);\n\t\t\tlowPressureThreshold = value;\n\t\t\toffset += bytesRead;\n\t\t}\n\n\t\tvalidatePayload(raw.payload.length >= offset + 1);\n\t\tconst polarity = raw.payload[offset];\n\t\tlet rainSensorPolarity: IrrigationSensorPolarity | undefined;\n\t\tlet moistureSensorPolarity: IrrigationSensorPolarity | undefined;\n\t\tif (!!(polarity & 0b1000_0000)) {\n\t\t\t// The valid bit is set\n\t\t\trainSensorPolarity = polarity & 0b1;\n\t\t\tmoistureSensorPolarity = (polarity & 0b10) >>> 1;\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tmasterValveDelay,\n\t\t\thighPressureThreshold,\n\t\t\tlowPressureThreshold,\n\t\t\trainSensorPolarity,\n\t\t\tmoistureSensorPolarity,\n\t\t});\n\t}\n\n\tpublic readonly masterValveDelay: number;\n\n\tpublic readonly highPressureThreshold: number;\n\n\tpublic readonly lowPressureThreshold: number;\n\n\tpublic readonly rainSensorPolarity?: IrrigationSensorPolarity;\n\n\tpublic readonly moistureSensorPolarity?: IrrigationSensorPolarity;\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"master valve delay\": `${this.masterValveDelay} s`,\n\t\t\t\"high pressure threshold\": `${this.highPressureThreshold} kPa`,\n\t\t\t\"low pressure threshold\": `${this.lowPressureThreshold} kPa`,\n\t\t};\n\t\tif (this.rainSensorPolarity != undefined) {\n\t\t\tmessage[\"rain sensor polarity\"] = getEnumMemberName(\n\t\t\t\tIrrigationSensorPolarity,\n\t\t\t\tthis.rainSensorPolarity,\n\t\t\t);\n\t\t}\n\t\tif (this.moistureSensorPolarity != undefined) {\n\t\t\tmessage[\"moisture sensor polarity\"] = getEnumMemberName(\n\t\t\t\tIrrigationSensorPolarity,\n\t\t\t\tthis.moistureSensorPolarity,\n\t\t\t);\n\t\t}\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n@CCCommand(IrrigationCommand.SystemConfigGet)\n@expectedCCResponse(IrrigationCCSystemConfigReport)\nexport class IrrigationCCSystemConfigGet extends IrrigationCC {}\n\n// @publicAPI\nexport interface IrrigationCCValveInfoReportOptions {\n\tvalveId: ValveId;\n\tconnected: boolean;\n\tnominalCurrent: number;\n\terrorShortCircuit: boolean;\n\terrorHighCurrent: boolean;\n\terrorLowCurrent: boolean;\n\terrorMaximumFlow?: boolean;\n\terrorHighFlow?: boolean;\n\terrorLowFlow?: boolean;\n}\n\n@CCCommand(IrrigationCommand.ValveInfoReport)\nexport class IrrigationCCValveInfoReport extends IrrigationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<IrrigationCCValveInfoReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.valveId = options.valveId;\n\t\tthis.connected = options.connected;\n\t\tthis.nominalCurrent = options.nominalCurrent;\n\t\tthis.errorShortCircuit = options.errorShortCircuit;\n\t\tthis.errorHighCurrent = options.errorHighCurrent;\n\t\tthis.errorLowCurrent = options.errorLowCurrent;\n\t\tthis.errorMaximumFlow = options.errorMaximumFlow;\n\t\tthis.errorHighFlow = options.errorHighFlow;\n\t\tthis.errorLowFlow = options.errorLowFlow;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): IrrigationCCValveInfoReport {\n\t\tvalidatePayload(raw.payload.length >= 4);\n\t\tlet valveId: ValveId;\n\t\tif ((raw.payload[0] & 0b1) === ValveType.MasterValve) {\n\t\t\tvalveId = \"master\";\n\t\t} else {\n\t\t\tvalveId = raw.payload[1];\n\t\t}\n\n\t\tconst connected = !!(raw.payload[0] & 0b10);\n\t\tconst nominalCurrent = 10 * raw.payload[2];\n\t\tconst errorShortCircuit = !!(raw.payload[3] & 0b1);\n\t\tconst errorHighCurrent = !!(raw.payload[3] & 0b10);\n\t\tconst errorLowCurrent = !!(raw.payload[3] & 0b100);\n\t\tlet errorMaximumFlow: boolean | undefined;\n\t\tlet errorHighFlow: boolean | undefined;\n\t\tlet errorLowFlow: boolean | undefined;\n\t\tif (valveId === \"master\") {\n\t\t\terrorMaximumFlow = !!(raw.payload[3] & 0b1000);\n\t\t\terrorHighFlow = !!(raw.payload[3] & 0b1_0000);\n\t\t\terrorLowFlow = !!(raw.payload[3] & 0b10_0000);\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tvalveId,\n\t\t\tconnected,\n\t\t\tnominalCurrent,\n\t\t\terrorShortCircuit,\n\t\t\terrorHighCurrent,\n\t\t\terrorLowCurrent,\n\t\t\terrorMaximumFlow,\n\t\t\terrorHighFlow,\n\t\t\terrorLowFlow,\n\t\t});\n\t}\n\n\tpublic readonly valveId: ValveId;\n\n\tpublic readonly connected: boolean;\n\tpublic readonly nominalCurrent: number;\n\tpublic readonly errorShortCircuit: boolean;\n\tpublic readonly errorHighCurrent: boolean;\n\tpublic readonly errorLowCurrent: boolean;\n\tpublic readonly errorMaximumFlow?: boolean;\n\tpublic readonly errorHighFlow?: boolean;\n\tpublic readonly errorLowFlow?: boolean;\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\n\t\t// connected\n\t\tconst valveConnectedValue = IrrigationCCValues.valveConnected(\n\t\t\tthis.valveId,\n\t\t);\n\t\tthis.ensureMetadata(ctx, valveConnectedValue);\n\t\tthis.setValue(ctx, valveConnectedValue, this.connected);\n\n\t\t// nominalCurrent\n\t\tconst nominalCurrentValue = IrrigationCCValues.nominalCurrent(\n\t\t\tthis.valveId,\n\t\t);\n\t\tthis.ensureMetadata(ctx, nominalCurrentValue);\n\t\tthis.setValue(ctx, nominalCurrentValue, this.nominalCurrent);\n\n\t\t// errorShortCircuit\n\t\tconst errorShortCircuitValue = IrrigationCCValues.errorShortCircuit(\n\t\t\tthis.valveId,\n\t\t);\n\t\tthis.ensureMetadata(ctx, errorShortCircuitValue);\n\t\tthis.setValue(ctx, errorShortCircuitValue, this.errorShortCircuit);\n\n\t\t// errorHighCurrent\n\t\tconst errorHighCurrentValue = IrrigationCCValues.errorHighCurrent(\n\t\t\tthis.valveId,\n\t\t);\n\t\tthis.ensureMetadata(ctx, errorHighCurrentValue);\n\t\tthis.setValue(ctx, errorHighCurrentValue, this.errorHighCurrent);\n\n\t\t// errorLowCurrent\n\t\tconst errorLowCurrentValue = IrrigationCCValues.errorLowCurrent(\n\t\t\tthis.valveId,\n\t\t);\n\t\tthis.ensureMetadata(ctx, errorLowCurrentValue);\n\t\tthis.setValue(ctx, errorLowCurrentValue, this.errorLowCurrent);\n\n\t\tif (this.errorMaximumFlow != undefined) {\n\t\t\tconst errorMaximumFlowValue = IrrigationCCValues.errorMaximumFlow(\n\t\t\t\tthis.valveId,\n\t\t\t);\n\t\t\tthis.ensureMetadata(ctx, errorMaximumFlowValue);\n\t\t\tthis.setValue(\n\t\t\t\tctx,\n\t\t\t\terrorMaximumFlowValue,\n\t\t\t\tthis.errorMaximumFlow,\n\t\t\t);\n\t\t}\n\n\t\tif (this.errorHighFlow != undefined) {\n\t\t\tconst errorHighFlowValue = IrrigationCCValues.errorHighFlow(\n\t\t\t\tthis.valveId,\n\t\t\t);\n\t\t\tthis.ensureMetadata(ctx, errorHighFlowValue);\n\t\t\tthis.setValue(ctx, errorHighFlowValue, this.errorHighFlow);\n\t\t}\n\n\t\tif (this.errorLowFlow != undefined) {\n\t\t\tconst errorLowFlowValue = IrrigationCCValues.errorLowFlow(\n\t\t\t\tthis.valveId,\n\t\t\t);\n\t\t\tthis.ensureMetadata(ctx, errorLowFlowValue);\n\t\t\tthis.setValue(ctx, errorLowFlowValue, this.errorLowFlow);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"valve ID\": this.valveId,\n\t\t\tconnected: this.connected,\n\t\t\t\"nominal current\": `${this.nominalCurrent} mA`,\n\t\t};\n\t\tconst errors = [\n\t\t\tthis.errorShortCircuit ? \"short circuit\" : undefined,\n\t\t\tthis.errorHighCurrent ? \"current above high threshold\" : undefined,\n\t\t\tthis.errorLowCurrent ? \"current below low threshold\" : undefined,\n\t\t\tthis.errorMaximumFlow ? \"maximum flow\" : undefined,\n\t\t\tthis.errorHighFlow ? \"flow above high threshold\" : undefined,\n\t\t\tthis.errorLowFlow ? \"flow below low threshold\" : undefined,\n\t\t].filter(Boolean);\n\t\tif (errors.length > 0) {\n\t\t\tmessage.errors = errors.map((e) => `\\n\u00B7 ${e}`).join(\"\");\n\t\t}\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface IrrigationCCValveInfoGetOptions {\n\tvalveId: ValveId;\n}\n\nfunction testResponseForIrrigationCommandWithValveId(\n\tsent: {\n\t\tvalveId: ValveId;\n\t},\n\treceived: {\n\t\tvalveId: ValveId;\n\t},\n) {\n\treturn received.valveId === sent.valveId;\n}\n\n@CCCommand(IrrigationCommand.ValveInfoGet)\n@expectedCCResponse(\n\tIrrigationCCValveInfoReport,\n\ttestResponseForIrrigationCommandWithValveId as any,\n)\nexport class IrrigationCCValveInfoGet extends IrrigationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<IrrigationCCValveInfoGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.valveId = options.valveId;\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): IrrigationCCValveInfoGet {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new IrrigationCCValveInfoGet({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic valveId: ValveId;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.valveId === \"master\" ? 1 : 0,\n\t\t\tthis.valveId === \"master\" ? 1 : this.valveId || 1,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"valve ID\": this.valveId,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport type IrrigationCCValveConfigSetOptions = {\n\tvalveId: ValveId;\n\tnominalCurrentHighThreshold: number;\n\tnominalCurrentLowThreshold: number;\n\tmaximumFlow: number;\n\thighFlowThreshold: number;\n\tlowFlowThreshold: number;\n\tuseRainSensor: boolean;\n\tuseMoistureSensor: boolean;\n};\n\n@CCCommand(IrrigationCommand.ValveConfigSet)\n@useSupervision()\nexport class IrrigationCCValveConfigSet extends IrrigationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<IrrigationCCValveConfigSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.valveId = options.valveId;\n\t\tthis.nominalCurrentHighThreshold = options.nominalCurrentHighThreshold;\n\t\tthis.nominalCurrentLowThreshold = options.nominalCurrentLowThreshold;\n\t\tthis.maximumFlow = options.maximumFlow;\n\t\tthis.highFlowThreshold = options.highFlowThreshold;\n\t\tthis.lowFlowThreshold = options.lowFlowThreshold;\n\t\tthis.useRainSensor = options.useRainSensor;\n\t\tthis.useMoistureSensor = options.useMoistureSensor;\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): IrrigationCCValveConfigSet {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new IrrigationCCValveConfigSet({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic valveId: ValveId;\n\tpublic nominalCurrentHighThreshold: number;\n\tpublic nominalCurrentLowThreshold: number;\n\tpublic maximumFlow: number;\n\tpublic highFlowThreshold: number;\n\tpublic lowFlowThreshold: number;\n\tpublic useRainSensor: boolean;\n\tpublic useMoistureSensor: boolean;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.concat([\n\t\t\t[\n\t\t\t\tthis.valveId === \"master\" ? 1 : 0,\n\t\t\t\tthis.valveId === \"master\" ? 1 : this.valveId || 1,\n\t\t\t\tMath.floor(this.nominalCurrentHighThreshold / 10),\n\t\t\t\tMath.floor(this.nominalCurrentLowThreshold / 10),\n\t\t\t],\n\t\t\tencodeFloatWithScale(this.maximumFlow, 0 /* l/h */),\n\t\t\tencodeFloatWithScale(this.highFlowThreshold, 0 /* l/h */),\n\t\t\tencodeFloatWithScale(this.lowFlowThreshold, 0 /* l/h */),\n\t\t\t[\n\t\t\t\t(this.useRainSensor ? 0b1 : 0)\n\t\t\t\t| (this.useMoistureSensor ? 0b10 : 0),\n\t\t\t],\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"valve ID\": this.valveId,\n\t\t\t\t\"nominal current high threshold\":\n\t\t\t\t\t`${this.nominalCurrentHighThreshold} mA`,\n\t\t\t\t\"nominal current low threshold\":\n\t\t\t\t\t`${this.nominalCurrentLowThreshold} mA`,\n\t\t\t\t\"maximum flow\": `${this.maximumFlow} l/h`,\n\t\t\t\t\"high flow threshold\": `${this.highFlowThreshold} l/h`,\n\t\t\t\t\"low flow threshold\": `${this.lowFlowThreshold} l/h`,\n\t\t\t\t\"use rain sensor\": this.useRainSensor,\n\t\t\t\t\"use moisture sensor\": this.useMoistureSensor,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface IrrigationCCValveConfigReportOptions {\n\tvalveId: ValveId;\n\tnominalCurrentHighThreshold: number;\n\tnominalCurrentLowThreshold: number;\n\tmaximumFlow: number;\n\thighFlowThreshold: number;\n\tlowFlowThreshold: number;\n\tuseRainSensor: boolean;\n\tuseMoistureSensor: boolean;\n}\n\n@CCCommand(IrrigationCommand.ValveConfigReport)\nexport class IrrigationCCValveConfigReport extends IrrigationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<IrrigationCCValveConfigReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.valveId = options.valveId;\n\t\tthis.nominalCurrentHighThreshold = options.nominalCurrentHighThreshold;\n\t\tthis.nominalCurrentLowThreshold = options.nominalCurrentLowThreshold;\n\t\tthis.maximumFlow = options.maximumFlow;\n\t\tthis.highFlowThreshold = options.highFlowThreshold;\n\t\tthis.lowFlowThreshold = options.lowFlowThreshold;\n\t\tthis.useRainSensor = options.useRainSensor;\n\t\tthis.useMoistureSensor = options.useMoistureSensor;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): IrrigationCCValveConfigReport {\n\t\tvalidatePayload(raw.payload.length >= 4);\n\t\tlet valveId: ValveId;\n\t\tif ((raw.payload[0] & 0b1) === ValveType.MasterValve) {\n\t\t\tvalveId = \"master\";\n\t\t} else {\n\t\t\tvalveId = raw.payload[1];\n\t\t}\n\n\t\tconst nominalCurrentHighThreshold = 10 * raw.payload[2];\n\t\tconst nominalCurrentLowThreshold = 10 * raw.payload[3];\n\t\tlet offset = 4;\n\t\tlet maximumFlow;\n\t\t{\n\t\t\tconst { value, scale, bytesRead } = parseFloatWithScale(\n\t\t\t\traw.payload.subarray(offset),\n\t\t\t);\n\t\t\tvalidatePayload(scale === 0 /* l/h */);\n\t\t\tmaximumFlow = value;\n\t\t\toffset += bytesRead;\n\t\t}\n\n\t\tlet highFlowThreshold;\n\t\t{\n\t\t\tconst { value, scale, bytesRead } = parseFloatWithScale(\n\t\t\t\traw.payload.subarray(offset),\n\t\t\t);\n\t\t\tvalidatePayload(scale === 0 /* l/h */);\n\t\t\thighFlowThreshold = value;\n\t\t\toffset += bytesRead;\n\t\t}\n\n\t\tlet lowFlowThreshold;\n\t\t{\n\t\t\tconst { value, scale, bytesRead } = parseFloatWithScale(\n\t\t\t\traw.payload.subarray(offset),\n\t\t\t);\n\t\t\tvalidatePayload(scale === 0 /* l/h */);\n\t\t\tlowFlowThreshold = value;\n\t\t\toffset += bytesRead;\n\t\t}\n\n\t\tvalidatePayload(raw.payload.length >= offset + 1);\n\t\tconst useRainSensor = !!(raw.payload[offset] & 0b1);\n\t\tconst useMoistureSensor = !!(raw.payload[offset] & 0b10);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tvalveId,\n\t\t\tnominalCurrentHighThreshold,\n\t\t\tnominalCurrentLowThreshold,\n\t\t\tmaximumFlow,\n\t\t\thighFlowThreshold,\n\t\t\tlowFlowThreshold,\n\t\t\tuseRainSensor,\n\t\t\tuseMoistureSensor,\n\t\t});\n\t}\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\n\t\t// nominalCurrentHighThreshold\n\t\tconst nominalCurrentHighThresholdValue = IrrigationCCValues\n\t\t\t.nominalCurrentHighThreshold(this.valveId);\n\t\tthis.ensureMetadata(ctx, nominalCurrentHighThresholdValue);\n\t\tthis.setValue(\n\t\t\tctx,\n\t\t\tnominalCurrentHighThresholdValue,\n\t\t\tthis.nominalCurrentHighThreshold,\n\t\t);\n\n\t\t// nominalCurrentLowThreshold\n\t\tconst nominalCurrentLowThresholdValue = IrrigationCCValues\n\t\t\t.nominalCurrentLowThreshold(this.valveId);\n\t\tthis.ensureMetadata(ctx, nominalCurrentLowThresholdValue);\n\t\tthis.setValue(\n\t\t\tctx,\n\t\t\tnominalCurrentLowThresholdValue,\n\t\t\tthis.nominalCurrentLowThreshold,\n\t\t);\n\n\t\t// maximumFlow\n\t\tconst maximumFlowValue = IrrigationCCValues.maximumFlow(this.valveId);\n\t\tthis.ensureMetadata(ctx, maximumFlowValue);\n\t\tthis.setValue(ctx, maximumFlowValue, this.maximumFlow);\n\n\t\t// highFlowThreshold\n\t\tconst highFlowThresholdValue = IrrigationCCValues.highFlowThreshold(\n\t\t\tthis.valveId,\n\t\t);\n\t\tthis.ensureMetadata(ctx, highFlowThresholdValue);\n\t\tthis.setValue(ctx, highFlowThresholdValue, this.highFlowThreshold);\n\n\t\t// lowFlowThreshold\n\t\tconst lowFlowThresholdValue = IrrigationCCValues.lowFlowThreshold(\n\t\t\tthis.valveId,\n\t\t);\n\t\tthis.ensureMetadata(ctx, lowFlowThresholdValue);\n\t\tthis.setValue(ctx, lowFlowThresholdValue, this.lowFlowThreshold);\n\n\t\t// useRainSensor\n\t\tconst useRainSensorValue = IrrigationCCValues.useRainSensor(\n\t\t\tthis.valveId,\n\t\t);\n\t\tthis.ensureMetadata(ctx, useRainSensorValue);\n\t\tthis.setValue(ctx, useRainSensorValue, this.useRainSensor);\n\n\t\t// useMoistureSensor\n\t\tconst useMoistureSensorValue = IrrigationCCValues.useMoistureSensor(\n\t\t\tthis.valveId,\n\t\t);\n\t\tthis.ensureMetadata(ctx, useMoistureSensorValue);\n\t\tthis.setValue(ctx, useMoistureSensorValue, this.useMoistureSensor);\n\n\t\treturn true;\n\t}\n\n\tpublic valveId: ValveId;\n\tpublic nominalCurrentHighThreshold: number;\n\tpublic nominalCurrentLowThreshold: number;\n\tpublic maximumFlow: number;\n\tpublic highFlowThreshold: number;\n\tpublic lowFlowThreshold: number;\n\tpublic useRainSensor: boolean;\n\tpublic useMoistureSensor: boolean;\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"valve ID\": this.valveId,\n\t\t\t\t\"nominal current high threshold\":\n\t\t\t\t\t`${this.nominalCurrentHighThreshold} mA`,\n\t\t\t\t\"nominal current low threshold\":\n\t\t\t\t\t`${this.nominalCurrentLowThreshold} mA`,\n\t\t\t\t\"maximum flow\": `${this.maximumFlow} l/h`,\n\t\t\t\t\"high flow threshold\": `${this.highFlowThreshold} l/h`,\n\t\t\t\t\"low flow threshold\": `${this.lowFlowThreshold} l/h`,\n\t\t\t\t\"use rain sensor\": this.useRainSensor,\n\t\t\t\t\"use moisture sensor\": this.useMoistureSensor,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface IrrigationCCValveConfigGetOptions {\n\tvalveId: ValveId;\n}\n\n@CCCommand(IrrigationCommand.ValveConfigGet)\n@expectedCCResponse(\n\tIrrigationCCValveConfigReport,\n\ttestResponseForIrrigationCommandWithValveId as any,\n)\nexport class IrrigationCCValveConfigGet extends IrrigationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<IrrigationCCValveConfigGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.valveId = options.valveId;\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): IrrigationCCValveConfigGet {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new IrrigationCCValveConfigGet({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic valveId: ValveId;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.valveId === \"master\" ? 1 : 0,\n\t\t\tthis.valveId === \"master\" ? 1 : this.valveId || 1,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"valve ID\": this.valveId,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface IrrigationCCValveRunOptions {\n\tvalveId: ValveId;\n\tduration: number;\n}\n\n@CCCommand(IrrigationCommand.ValveRun)\n@useSupervision()\nexport class IrrigationCCValveRun extends IrrigationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<IrrigationCCValveRunOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.valveId = options.valveId;\n\t\tthis.duration = options.duration;\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): IrrigationCCValveRun {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new IrrigationCCValveRun({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic valveId: ValveId;\n\tpublic duration: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.valveId === \"master\" ? 1 : 0,\n\t\t\tthis.valveId === \"master\" ? 1 : this.valveId || 1,\n\t\t\t0,\n\t\t\t0,\n\t\t]);\n\t\tthis.payload.writeUInt16BE(this.duration, 2);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"valve ID\": this.valveId,\n\t\t};\n\t\tif (this.duration) {\n\t\t\tmessage.duration = `${this.duration} s`;\n\t\t} else {\n\t\t\tmessage.action = \"turn off\";\n\t\t}\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface IrrigationCCValveTableSetOptions {\n\ttableId: number;\n\tentries: ValveTableEntry[];\n}\n\n@CCCommand(IrrigationCommand.ValveTableSet)\n@useSupervision()\nexport class IrrigationCCValveTableSet extends IrrigationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<IrrigationCCValveTableSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.tableId = options.tableId;\n\t\tthis.entries = options.entries;\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): IrrigationCCValveTableSet {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new IrrigationCCValveTableSet({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic tableId: number;\n\tpublic entries: ValveTableEntry[];\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = new Bytes(1 + this.entries.length * 3);\n\t\tthis.payload[0] = this.tableId;\n\t\tfor (let i = 0; i < this.entries.length; i++) {\n\t\t\tconst entry = this.entries[i];\n\t\t\tconst offset = 1 + i * 3;\n\t\t\tthis.payload[offset] = entry.valveId;\n\t\t\tthis.payload.writeUInt16BE(entry.duration, offset + 1);\n\t\t}\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"table ID\": this.tableId,\n\t\t};\n\t\tfor (let i = 0; i < this.entries.length; i++) {\n\t\t\tconst entry = this.entries[i];\n\t\t\tconst valveLabel = entry.valveId.toString().padStart(3, \"0\");\n\t\t\tif (entry.duration) {\n\t\t\t\tmessage[`valve ${valveLabel} duration`] = `${entry.duration} s`;\n\t\t\t} else {\n\t\t\t\tmessage[`valve ${valveLabel} action`] = `turn off`;\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface IrrigationCCValveTableReportOptions {\n\ttableId: number;\n\tentries: ValveTableEntry[];\n}\n\n@CCCommand(IrrigationCommand.ValveTableReport)\nexport class IrrigationCCValveTableReport extends IrrigationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<IrrigationCCValveTableReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.tableId = options.tableId;\n\t\tthis.entries = options.entries;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): IrrigationCCValveTableReport {\n\t\tvalidatePayload((raw.payload.length - 1) % 3 === 0);\n\t\tconst tableId = raw.payload[0];\n\t\tconst entries: ValveTableEntry[] = [];\n\t\tfor (let offset = 1; offset < raw.payload.length; offset += 3) {\n\t\t\tentries.push({\n\t\t\t\tvalveId: raw.payload[offset],\n\t\t\t\tduration: raw.payload.readUInt16BE(offset + 1),\n\t\t\t});\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\ttableId,\n\t\t\tentries,\n\t\t});\n\t}\n\n\tpublic readonly tableId: number;\n\tpublic readonly entries: ValveTableEntry[];\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"table ID\": this.tableId,\n\t\t};\n\t\tfor (let i = 0; i < this.entries.length; i++) {\n\t\t\tconst entry = this.entries[i];\n\t\t\tconst valveLabel = entry.valveId.toString().padStart(3, \"0\");\n\t\t\tif (entry.duration) {\n\t\t\t\tmessage[`valve ${valveLabel} duration`] = `${entry.duration} s`;\n\t\t\t} else {\n\t\t\t\tmessage[`valve ${valveLabel} action`] = `turn off`;\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface IrrigationCCValveTableGetOptions {\n\ttableId: number;\n}\n\nfunction testResponseForIrrigationValveTableGet(\n\tsent: IrrigationCCValveTableGet,\n\treceived: IrrigationCCValveTableReport,\n) {\n\treturn received.tableId === sent.tableId;\n}\n\n@CCCommand(IrrigationCommand.ValveTableGet)\n@expectedCCResponse(\n\tIrrigationCCValveTableReport,\n\ttestResponseForIrrigationValveTableGet,\n)\nexport class IrrigationCCValveTableGet extends IrrigationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<IrrigationCCValveTableGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.tableId = options.tableId;\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): IrrigationCCValveTableGet {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new IrrigationCCValveTableGet({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic tableId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.tableId]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"table ID\": this.tableId,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface IrrigationCCValveTableRunOptions {\n\ttableIDs: number[];\n}\n\n@CCCommand(IrrigationCommand.ValveTableRun)\n@useSupervision()\nexport class IrrigationCCValveTableRun extends IrrigationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<IrrigationCCValveTableRunOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.tableIDs = options.tableIDs;\n\t\tif (this.tableIDs.length < 1) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`${this.constructor.name}: At least one table ID must be specified.`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): IrrigationCCValveTableRun {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new IrrigationCCValveTableRun({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic tableIDs: number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from(this.tableIDs);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"table IDs\": this.tableIDs\n\t\t\t\t\t.map((id) => id.toString().padStart(3, \"0\"))\n\t\t\t\t\t.join(\", \"),\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface IrrigationCCSystemShutoffOptions {\n\t/**\n\t * The duration in minutes the system must stay off.\n\t * 255 or `undefined` will prevent schedules from running.\n\t */\n\tduration?: number;\n}\n\n@CCCommand(IrrigationCommand.SystemShutoff)\n@useSupervision()\nexport class IrrigationCCSystemShutoff extends IrrigationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<IrrigationCCSystemShutoffOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.duration = options.duration;\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): IrrigationCCSystemShutoff {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new IrrigationCCSystemShutoff({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic duration?: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.duration ?? 255]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\tduration: this.duration === 0\n\t\t\t\t\t? \"temporarily\"\n\t\t\t\t\t: this.duration === 255 || this.duration === undefined\n\t\t\t\t\t? \"permanently\"\n\t\t\t\t\t: `${this.duration} hours`,\n\t\t\t},\n\t\t};\n\t}\n}\n"],
5
- "mappings": "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",
3
+ "sources": ["../../../src_gen/cc/IrrigationCC.ts"],
4
+ "sourcesContent": ["import * as __validateArgs from \"./IrrigationCC._validateArgs.js\";\nconst { validateArgs_IrrigationCCAPI_setSystemConfig, validateArgs_IrrigationCCAPI_getValveInfo, validateArgs_IrrigationCCAPI_setValveConfig, validateArgs_IrrigationCCAPI_getValveConfig, validateArgs_IrrigationCCAPI_runValve, validateArgs_IrrigationCCAPI_shutoffValve, validateArgs_IrrigationCCAPI_setValveTable, validateArgs_IrrigationCCAPI_getValveTable, validateArgs_IrrigationCCAPI_runTables, validateArgs_IrrigationCCAPI_shutoffSystem } = __validateArgs;\nimport { CommandClasses, type EndpointId, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, type SupervisionResult, type ValueID, ValueMetadata, type WithAddress, ZWaveError, ZWaveErrorCodes, encodeFloatWithScale, enumValuesToMetadataStates, parseFloatWithScale, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, getEnumMemberName, pick } from \"@zwave-js/shared\";\nimport { CCAPI, POLL_VALUE, type PollValueImplementation, SET_VALUE, type SetValueImplementation, throwMissingPropertyKey, throwUnsupportedProperty, throwUnsupportedPropertyKey, throwWrongValueType, } from \"../lib/API.js\";\nimport { irrigationValveIdToMetadataPrefix } from \"../lib/CCValueUtils.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type PersistValuesContext, type RefreshValuesContext, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, useSupervision, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { IrrigationCommand, IrrigationSensorPolarity, type ValveId, type ValveTableEntry, ValveType, } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { IrrigationCCValues } from \"./_CCValues.generated.js\";\nexport { IrrigationCCValues };\nconst systemConfigProperties = [\n \"masterValveDelay\",\n \"highPressureThreshold\",\n \"lowPressureThreshold\",\n \"rainSensorPolarity\",\n \"moistureSensorPolarity\",\n] as const;\nconst valveConfigPropertyKeys = [\n \"nominalCurrentHighThreshold\",\n \"nominalCurrentLowThreshold\",\n \"maximumFlow\",\n \"highFlowThreshold\",\n \"lowFlowThreshold\",\n \"useRainSensor\",\n \"useMoistureSensor\",\n] as const;\n@API(CommandClasses.Irrigation)\nexport class IrrigationCCAPI extends CCAPI {\n public supportsCommand(cmd: IrrigationCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case IrrigationCommand.SystemInfoGet:\n case IrrigationCommand.SystemStatusGet:\n case IrrigationCommand.SystemConfigSet:\n case IrrigationCommand.SystemConfigGet:\n case IrrigationCommand.ValveInfoGet:\n case IrrigationCommand.ValveConfigSet:\n case IrrigationCommand.ValveConfigGet:\n case IrrigationCommand.ValveRun:\n case IrrigationCommand.ValveTableSet:\n case IrrigationCommand.ValveTableGet:\n case IrrigationCommand.ValveTableRun:\n case IrrigationCommand.SystemShutoff:\n // These are all mandatory in V1\n return true;\n }\n return super.supportsCommand(cmd);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getSystemInfo() {\n this.assertSupportsCommand(IrrigationCommand, IrrigationCommand.SystemInfoGet);\n const cc = new IrrigationCCSystemInfoGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<IrrigationCCSystemInfoReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"numValves\",\n \"numValveTables\",\n \"supportsMasterValve\",\n \"maxValveTableSize\",\n ]);\n }\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getSystemStatus() {\n this.assertSupportsCommand(IrrigationCommand, IrrigationCommand.SystemStatusGet);\n const cc = new IrrigationCCSystemStatusGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<IrrigationCCSystemStatusReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"systemVoltage\",\n \"flowSensorActive\",\n \"pressureSensorActive\",\n \"rainSensorActive\",\n \"moistureSensorActive\",\n \"flow\",\n \"pressure\",\n \"shutoffDuration\",\n \"errorNotProgrammed\",\n \"errorEmergencyShutdown\",\n \"errorHighPressure\",\n \"errorLowPressure\",\n \"errorValve\",\n \"masterValveOpen\",\n \"firstOpenZoneId\",\n ]);\n }\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getSystemConfig() {\n this.assertSupportsCommand(IrrigationCommand, IrrigationCommand.SystemConfigGet);\n const cc = new IrrigationCCSystemConfigGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<IrrigationCCSystemConfigReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"masterValveDelay\",\n \"highPressureThreshold\",\n \"lowPressureThreshold\",\n \"rainSensorPolarity\",\n \"moistureSensorPolarity\",\n ]);\n }\n }\n @validateArgs_IrrigationCCAPI_setSystemConfig()\n public async setSystemConfig(config: IrrigationCCSystemConfigSetOptions): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(IrrigationCommand, IrrigationCommand.SystemConfigSet);\n const cc = new IrrigationCCSystemConfigSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...config,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n @validateArgs_IrrigationCCAPI_getValveInfo()\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getValveInfo(valveId: ValveId) {\n this.assertSupportsCommand(IrrigationCommand, IrrigationCommand.ValveInfoGet);\n const cc = new IrrigationCCValveInfoGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n valveId,\n });\n const response = await this.host.sendCommand<IrrigationCCValveInfoReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"connected\",\n \"nominalCurrent\",\n \"errorShortCircuit\",\n \"errorHighCurrent\",\n \"errorLowCurrent\",\n \"errorMaximumFlow\",\n \"errorHighFlow\",\n \"errorLowFlow\",\n ]);\n }\n }\n @validateArgs_IrrigationCCAPI_setValveConfig()\n public async setValveConfig(options: IrrigationCCValveConfigSetOptions): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(IrrigationCommand, IrrigationCommand.ValveConfigSet);\n const cc = new IrrigationCCValveConfigSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n @validateArgs_IrrigationCCAPI_getValveConfig()\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getValveConfig(valveId: ValveId) {\n this.assertSupportsCommand(IrrigationCommand, IrrigationCommand.ValveConfigGet);\n const cc = new IrrigationCCValveConfigGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n valveId,\n });\n const response = await this.host.sendCommand<IrrigationCCValveConfigReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"nominalCurrentHighThreshold\",\n \"nominalCurrentLowThreshold\",\n \"maximumFlow\",\n \"highFlowThreshold\",\n \"lowFlowThreshold\",\n \"useRainSensor\",\n \"useMoistureSensor\",\n ]);\n }\n }\n @validateArgs_IrrigationCCAPI_runValve()\n public async runValve(valveId: ValveId, duration: number): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(IrrigationCommand, IrrigationCommand.ValveRun);\n const cc = new IrrigationCCValveRun({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n valveId,\n duration,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n @validateArgs_IrrigationCCAPI_shutoffValve()\n public shutoffValve(valveId: ValveId): Promise<SupervisionResult | undefined> {\n return this.runValve(valveId, 0);\n }\n @validateArgs_IrrigationCCAPI_setValveTable()\n public async setValveTable(tableId: number, entries: ValveTableEntry[]): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(IrrigationCommand, IrrigationCommand.ValveTableSet);\n if (!this.endpoint.virtual) {\n const maxValveTableSize = IrrigationCC.getMaxValveTableSizeCached(this.host, this.endpoint);\n if (maxValveTableSize != undefined\n && entries.length > maxValveTableSize) {\n throw new ZWaveError(`The number of valve table entries must not exceed ${maxValveTableSize}.`, ZWaveErrorCodes.Argument_Invalid);\n }\n }\n const cc = new IrrigationCCValveTableSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n tableId,\n entries,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n @validateArgs_IrrigationCCAPI_getValveTable()\n public async getValveTable(tableId: number): Promise<MaybeNotKnown<ValveTableEntry[]>> {\n this.assertSupportsCommand(IrrigationCommand, IrrigationCommand.ValveTableGet);\n const cc = new IrrigationCCValveTableGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n tableId,\n });\n const response = await this.host.sendCommand<IrrigationCCValveTableReport>(cc, this.commandOptions);\n if (response) {\n return response?.entries;\n }\n }\n @validateArgs_IrrigationCCAPI_runTables()\n public async runTables(tableIDs: number[]): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(IrrigationCommand, IrrigationCommand.ValveTableRun);\n const cc = new IrrigationCCValveTableRun({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n tableIDs,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n /**\n * Shuts off the entire system for the given duration.\n * @param duration Shutoff duration in hours. A value of 255 will shut off the entire system permanently and prevents schedules from running.\n */\n @validateArgs_IrrigationCCAPI_shutoffSystem()\n public async shutoffSystem(duration: number): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(IrrigationCommand, IrrigationCommand.SystemShutoff);\n const cc = new IrrigationCCSystemShutoff({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n duration,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n /** Shuts off the entire system permanently and prevents schedules from running */\n public shutoffSystemPermanently(): Promise<SupervisionResult | undefined> {\n return this.shutoffSystem(255);\n }\n protected override get [SET_VALUE](): SetValueImplementation {\n return async function (this: IrrigationCCAPI, { property, propertyKey }, value) {\n const valueDB = this.getValueDB();\n if (systemConfigProperties.includes(property as any)) {\n const options = {} as IrrigationCCSystemConfigSetOptions;\n for (const prop of systemConfigProperties) {\n if (prop === property)\n continue;\n const valueId: ValueID = {\n commandClass: this.ccId,\n endpoint: this.endpoint.index,\n property: prop as any,\n };\n const cachedVal = valueDB.getValue<any>(valueId);\n if (cachedVal == undefined) {\n throw new ZWaveError(`The \"${property}\" property cannot be changed before ${prop} is known!`, ZWaveErrorCodes.Argument_Invalid);\n }\n options[prop] = cachedVal;\n }\n options[property as keyof IrrigationCCSystemConfigSetOptions] =\n value as any;\n return this.setSystemConfig(options);\n }\n else if (property === \"shutoff\") {\n return this.shutoffSystem(0);\n }\n else if (property === \"master\"\n || (typeof property === \"number\" && property >= 1)) {\n // This is a value of a valve\n if (propertyKey == undefined) {\n throwMissingPropertyKey(this.ccId, property);\n }\n if (valveConfigPropertyKeys.includes(propertyKey as any)) {\n const options = {\n valveId: property,\n } as IrrigationCCValveConfigSetOptions;\n for (const prop of valveConfigPropertyKeys) {\n if (prop === propertyKey)\n continue;\n const valueId: ValueID = {\n commandClass: this.ccId,\n endpoint: this.endpoint.index,\n property,\n propertyKey: prop as any,\n };\n const cachedVal = valueDB.getValue<any>(valueId);\n if (cachedVal == undefined) {\n throw new ZWaveError(`The \"${property}_${propertyKey}\" property cannot be changed before ${property}_${prop} is known!`, ZWaveErrorCodes.Argument_Invalid);\n }\n (options as any)[prop] = cachedVal;\n }\n (options as any)[propertyKey] = value;\n return this.setValveConfig(options);\n }\n else if (propertyKey === \"duration\") {\n // The run duration needs to be set separately from triggering the run\n // So this is okay\n return;\n }\n else if (propertyKey === \"startStop\") {\n // Trigger or stop a valve run, depending on the value\n if (typeof value !== \"boolean\") {\n throwWrongValueType(this.ccId, property, \"boolean\", typeof value);\n }\n if (value) {\n // Start a valve run\n const duration = valueDB.getValue<number>(IrrigationCCValues.valveRunDuration(property).endpoint(this.endpoint.index));\n if (duration == undefined) {\n throw new ZWaveError(`Cannot start a valve run without specifying a duration first!`, ZWaveErrorCodes.Argument_Invalid);\n }\n return this.runValve(property, duration);\n }\n else {\n // Stop a valve run\n return this.shutoffValve(property);\n }\n }\n else {\n throwUnsupportedPropertyKey(this.ccId, property, propertyKey);\n }\n }\n };\n }\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: IrrigationCCAPI, { property, propertyKey }) {\n switch (property) {\n case \"systemVoltage\":\n case \"flowSensorActive\":\n case \"pressureSensorActive\":\n case \"rainSensorActive\":\n case \"moistureSensorActive\":\n case \"flow\":\n case \"pressure\":\n case \"shutoffDuration\":\n case \"errorNotProgrammed\":\n case \"errorEmergencyShutdown\":\n case \"errorHighPressure\":\n case \"errorLowPressure\":\n case \"errorValve\":\n case \"masterValveOpen\":\n case \"firstOpenZoneId\":\n return (await this.getSystemStatus())?.[property];\n case \"masterValveDelay\":\n case \"highPressureThreshold\":\n case \"lowPressureThreshold\":\n case \"rainSensorPolarity\":\n case \"moistureSensorPolarity\":\n return (await this.getSystemConfig())?.[property];\n }\n if (property === \"master\"\n || (typeof property === \"number\" && property >= 1)) {\n // This is a value of a valve\n switch (propertyKey) {\n case \"connected\":\n case \"nominalCurrent\":\n case \"errorShortCircuit\":\n case \"errorHighCurrent\":\n case \"errorLowCurrent\":\n case \"errorMaximumFlow\":\n case \"errorHighFlow\":\n case \"errorLowFlow\":\n return (await this.getValveInfo(property))?.[propertyKey];\n case \"nominalCurrentHighThreshold\":\n case \"nominalCurrentLowThreshold\":\n case \"maximumFlow\":\n case \"highFlowThreshold\":\n case \"lowFlowThreshold\":\n case \"useRainSensor\":\n case \"useMoistureSensor\":\n return (await this.getValveConfig(property))?.[propertyKey];\n case undefined:\n throwMissingPropertyKey(this.ccId, property);\n default:\n throwUnsupportedPropertyKey(this.ccId, property, propertyKey);\n }\n }\n throwUnsupportedProperty(this.ccId, property);\n };\n }\n}\n@commandClass(CommandClasses.Irrigation)\n@implementedVersion(1)\n@ccValues(IrrigationCCValues)\nexport class IrrigationCC extends CommandClass {\n declare ccCommand: IrrigationCommand;\n /**\n * Returns the maximum number of valve table entries reported by the node.\n * This only works AFTER the node has been interviewed.\n */\n public static getMaxValveTableSizeCached(ctx: GetValueDB, endpoint: EndpointId): MaybeNotKnown<number> {\n return ctx\n .getValueDB(endpoint.nodeId)\n .getValue(IrrigationCCValues.maxValveTableSize.endpoint(endpoint.index));\n }\n /**\n * Returns the number of zone valves reported by the node.\n * This only works AFTER the node has been interviewed.\n */\n public static getNumValvesCached(ctx: GetValueDB, endpoint: EndpointId): MaybeNotKnown<number> {\n return ctx\n .getValueDB(endpoint.nodeId)\n .getValue(IrrigationCCValues.numValves.endpoint(endpoint.index));\n }\n /**\n * Returns whether the node supports a master valve\n * This only works AFTER the node has been interviewed.\n */\n public static supportsMasterValveCached(ctx: GetValueDB, endpoint: EndpointId): boolean {\n return !!ctx\n .getValueDB(endpoint.nodeId)\n .getValue(IrrigationCCValues.supportsMasterValve.endpoint(endpoint.index));\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.Irrigation, 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 ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"Querying irrigation system info...\",\n direction: \"outbound\",\n });\n const systemInfo = await api.getSystemInfo();\n if (!systemInfo) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"Time out while querying irrigation system info, skipping interview...\",\n level: \"warn\",\n });\n return;\n }\n const logMessage = `received irrigation system info:\nsupports master valve: ${systemInfo.supportsMasterValve}\nno. of valves: ${systemInfo.numValves}\nno. of valve tables: ${systemInfo.numValveTables}\nmax. valve table size: ${systemInfo.maxValveTableSize}`;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n // For each valve, create the values to start/stop a run\n for (let i = 1; i <= systemInfo.numValves; i++) {\n this.ensureMetadata(ctx, IrrigationCCValues.valveRunDuration(i));\n this.ensureMetadata(ctx, IrrigationCCValues.valveRunStartStop(i));\n }\n // And create a shutoff value\n this.ensureMetadata(ctx, IrrigationCCValues.shutoffSystem);\n // Query current values\n await this.refreshValues(ctx);\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n public async refreshValues(ctx: RefreshValuesContext): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses.Irrigation, ctx, endpoint).withOptions({\n priority: MessagePriority.NodeQuery,\n });\n // Query the current system config\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"Querying irrigation system configuration...\",\n direction: \"outbound\",\n });\n const systemConfig = await api.getSystemConfig();\n if (systemConfig) {\n let logMessage = `received irrigation system configuration:\nmaster valve delay: ${systemConfig.masterValveDelay} seconds\nhigh pressure threshold: ${systemConfig.highPressureThreshold} kPa\nlow pressure threshold: ${systemConfig.lowPressureThreshold} kPa`;\n if (systemConfig.rainSensorPolarity != undefined) {\n logMessage += `\nrain sensor polarity: ${getEnumMemberName(IrrigationSensorPolarity, systemConfig.rainSensorPolarity)}`;\n }\n if (systemConfig.moistureSensorPolarity != undefined) {\n logMessage += `\nmoisture sensor polarity: ${getEnumMemberName(IrrigationSensorPolarity, systemConfig.moistureSensorPolarity)}`;\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n }\n // and status\n // Query the current system config\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"Querying irrigation system status...\",\n direction: \"outbound\",\n });\n await api.getSystemStatus();\n // for each valve, query the current status and configuration\n if (IrrigationCC.supportsMasterValveCached(ctx, endpoint)) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"Querying master valve configuration...\",\n direction: \"outbound\",\n });\n await api.getValveConfig(\"master\");\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"Querying master valve status...\",\n direction: \"outbound\",\n });\n await api.getValveInfo(\"master\");\n }\n for (let i = 1; i <= (IrrigationCC.getNumValvesCached(ctx, endpoint) ?? 0); i++) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Querying configuration for valve ${i.toString().padStart(3, \"0\")}...`,\n direction: \"outbound\",\n });\n await api.getValveConfig(i);\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Querying status for valve ${i.toString().padStart(3, \"0\")}...`,\n direction: \"outbound\",\n });\n await api.getValveInfo(i);\n }\n }\n public translateProperty(ctx: GetValueDB, property: string | number, propertyKey?: string | number): string {\n if (property === \"master\") {\n return \"Master valve\";\n }\n else if (typeof property === \"number\") {\n return `Valve ${property.toString().padStart(3, \"0\")}`;\n }\n return super.translateProperty(ctx, property, propertyKey);\n }\n}\n// @publicAPI\nexport interface IrrigationCCSystemInfoReportOptions {\n supportsMasterValve: boolean;\n numValves: number;\n numValveTables: number;\n maxValveTableSize: number;\n}\n@CCCommand(IrrigationCommand.SystemInfoReport)\n@ccValueProperty(\"numValves\", IrrigationCCValues.numValves)\n@ccValueProperty(\"numValveTables\", IrrigationCCValues.numValveTables)\n@ccValueProperty(\"supportsMasterValve\", IrrigationCCValues.supportsMasterValve)\n@ccValueProperty(\"maxValveTableSize\", IrrigationCCValues.maxValveTableSize)\nexport class IrrigationCCSystemInfoReport extends IrrigationCC {\n public constructor(options: WithAddress<IrrigationCCSystemInfoReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.supportsMasterValve = options.supportsMasterValve;\n this.numValves = options.numValves;\n this.numValveTables = options.numValveTables;\n this.maxValveTableSize = options.maxValveTableSize;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): IrrigationCCSystemInfoReport {\n validatePayload(raw.payload.length >= 4);\n const supportsMasterValve = !!(raw.payload[0] & 0x01);\n const numValves = raw.payload[1];\n const numValveTables = raw.payload[2];\n const maxValveTableSize = raw.payload[3] & 0b1111;\n return new this({\n nodeId: ctx.sourceNodeId,\n supportsMasterValve,\n numValves,\n numValveTables,\n maxValveTableSize,\n });\n }\n public readonly numValves: number;\n public readonly numValveTables: number;\n public readonly supportsMasterValve: boolean;\n public readonly maxValveTableSize: number;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"supports master valve\": this.supportsMasterValve,\n \"no. of valves\": this.numValves,\n \"no. of valve tables\": this.numValveTables,\n \"max. valve table size\": this.maxValveTableSize,\n },\n };\n }\n}\n@CCCommand(IrrigationCommand.SystemInfoGet)\n@expectedCCResponse(IrrigationCCSystemInfoReport)\nexport class IrrigationCCSystemInfoGet extends IrrigationCC {\n}\n// @publicAPI\nexport interface IrrigationCCSystemStatusReportOptions {\n systemVoltage: number;\n flowSensorActive: boolean;\n pressureSensorActive: boolean;\n rainSensorActive: boolean;\n moistureSensorActive: boolean;\n flow?: number;\n pressure?: number;\n shutoffDuration: number;\n errorNotProgrammed: boolean;\n errorEmergencyShutdown: boolean;\n errorHighPressure: boolean;\n errorLowPressure: boolean;\n errorValve: boolean;\n masterValveOpen: boolean;\n firstOpenZoneId?: number;\n}\n@CCCommand(IrrigationCommand.SystemStatusReport)\n@ccValueProperty(\"systemVoltage\", IrrigationCCValues.systemVoltage)\n@ccValueProperty(\"flowSensorActive\", IrrigationCCValues.flowSensorActive)\n@ccValueProperty(\"pressureSensorActive\", IrrigationCCValues.pressureSensorActive)\n@ccValueProperty(\"rainSensorActive\", IrrigationCCValues.rainSensorActive)\n@ccValueProperty(\"moistureSensorActive\", IrrigationCCValues.moistureSensorActive)\n@ccValueProperty(\"flow\", IrrigationCCValues.flow)\n@ccValueProperty(\"pressure\", IrrigationCCValues.pressure)\n@ccValueProperty(\"shutoffDuration\", IrrigationCCValues.shutoffDuration)\n@ccValueProperty(\"errorNotProgrammed\", IrrigationCCValues.errorNotProgrammed)\n@ccValueProperty(\"errorEmergencyShutdown\", IrrigationCCValues.errorEmergencyShutdown)\n@ccValueProperty(\"errorHighPressure\", IrrigationCCValues.errorHighPressure)\n@ccValueProperty(\"errorLowPressure\", IrrigationCCValues.errorLowPressure)\n@ccValueProperty(\"errorValve\", IrrigationCCValues.errorValve)\n@ccValueProperty(\"masterValveOpen\", IrrigationCCValues.masterValveOpen)\n@ccValueProperty(\"firstOpenZoneId\", IrrigationCCValues.firstOpenZoneId)\nexport class IrrigationCCSystemStatusReport extends IrrigationCC {\n public constructor(options: WithAddress<IrrigationCCSystemStatusReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.systemVoltage = options.systemVoltage;\n this.flowSensorActive = options.flowSensorActive;\n this.pressureSensorActive = options.pressureSensorActive;\n this.rainSensorActive = options.rainSensorActive;\n this.moistureSensorActive = options.moistureSensorActive;\n this.flow = options.flow;\n this.pressure = options.pressure;\n this.shutoffDuration = options.shutoffDuration;\n this.errorNotProgrammed = options.errorNotProgrammed;\n this.errorEmergencyShutdown = options.errorEmergencyShutdown;\n this.errorHighPressure = options.errorHighPressure;\n this.errorLowPressure = options.errorLowPressure;\n this.errorValve = options.errorValve;\n this.masterValveOpen = options.masterValveOpen;\n this.firstOpenZoneId = options.firstOpenZoneId;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): IrrigationCCSystemStatusReport {\n validatePayload(raw.payload.length >= 2);\n const systemVoltage = raw.payload[0];\n const flowSensorActive = !!(raw.payload[1] & 0x01);\n const pressureSensorActive = !!(raw.payload[1] & 0x02);\n const rainSensorActive = !!(raw.payload[1] & 0x04);\n const moistureSensorActive = !!(raw.payload[1] & 0x08);\n let offset = 2;\n let flow: number | undefined;\n {\n const { value, scale, bytesRead } = parseFloatWithScale(raw.payload.subarray(offset));\n validatePayload(scale === 0);\n if (flowSensorActive)\n flow = value;\n offset += bytesRead;\n }\n let pressure: number | undefined;\n {\n const { value, scale, bytesRead } = parseFloatWithScale(raw.payload.subarray(offset));\n validatePayload(scale === 0);\n if (pressureSensorActive)\n pressure = value;\n offset += bytesRead;\n }\n validatePayload(raw.payload.length >= offset + 4);\n const shutoffDuration = raw.payload[offset];\n const errorNotProgrammed = !!(raw.payload[offset + 1] & 0x01);\n const errorEmergencyShutdown = !!(raw.payload[offset + 1] & 0x02);\n const errorHighPressure = !!(raw.payload[offset + 1] & 0x04);\n const errorLowPressure = !!(raw.payload[offset + 1] & 0x08);\n const errorValve = !!(raw.payload[offset + 1] & 0x10);\n const masterValveOpen = !!(raw.payload[offset + 2] & 0x01);\n let firstOpenZoneId: number | undefined;\n if (raw.payload[offset + 3]) {\n firstOpenZoneId = raw.payload[offset + 3];\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n systemVoltage,\n flowSensorActive,\n pressureSensorActive,\n rainSensorActive,\n moistureSensorActive,\n flow,\n pressure,\n shutoffDuration,\n errorNotProgrammed,\n errorEmergencyShutdown,\n errorHighPressure,\n errorLowPressure,\n errorValve,\n masterValveOpen,\n firstOpenZoneId,\n });\n }\n public systemVoltage: number;\n public flowSensorActive: boolean;\n public pressureSensorActive: boolean;\n public rainSensorActive: boolean;\n public moistureSensorActive: boolean;\n public flow?: number;\n public pressure?: number;\n public shutoffDuration: number;\n public errorNotProgrammed: boolean;\n public errorEmergencyShutdown: boolean;\n public errorHighPressure: boolean;\n public errorLowPressure: boolean;\n public errorValve: boolean;\n public masterValveOpen: boolean;\n public firstOpenZoneId?: number;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"system voltage\": `${this.systemVoltage} V`,\n \"active sensors\": [\n this.flowSensorActive ? \"flow\" : undefined,\n this.pressureSensorActive ? \"pressure\" : undefined,\n this.rainSensorActive ? \"rain\" : undefined,\n this.moistureSensorActive ? \"moisture\" : undefined,\n ]\n .filter(Boolean)\n .join(\", \"),\n };\n if (this.flow != undefined) {\n message.flow = `${this.flow} l/h`;\n }\n if (this.pressure != undefined) {\n message.pressure = `${this.pressure} kPa`;\n }\n message[\"remaining shutoff duration\"] = `${this.shutoffDuration} hours`;\n message[\"master valve status\"] = this.masterValveOpen\n ? \"open\"\n : \"closed\";\n message[\"first open zone valve\"] = this.firstOpenZoneId || \"none\";\n const errors = [\n this.errorNotProgrammed ? \"device not programmed\" : undefined,\n this.errorEmergencyShutdown ? \"emergency shutdown\" : undefined,\n this.errorHighPressure\n ? \"high pressure threshold triggered\"\n : undefined,\n this.errorLowPressure\n ? \"low pressure threshold triggered\"\n : undefined,\n this.errorValve\n ? \"a valve or the master valve has an error\"\n : undefined,\n ].filter(Boolean);\n if (errors.length > 0) {\n message.errors = errors.map((e) => `\\n\u00B7 ${e}`).join(\"\");\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@CCCommand(IrrigationCommand.SystemStatusGet)\n@expectedCCResponse(IrrigationCCSystemStatusReport)\nexport class IrrigationCCSystemStatusGet extends IrrigationCC {\n}\n// @publicAPI\nexport type IrrigationCCSystemConfigSetOptions = {\n masterValveDelay: number;\n highPressureThreshold: number;\n lowPressureThreshold: number;\n rainSensorPolarity?: IrrigationSensorPolarity;\n moistureSensorPolarity?: IrrigationSensorPolarity;\n};\n@CCCommand(IrrigationCommand.SystemConfigSet)\n@useSupervision()\nexport class IrrigationCCSystemConfigSet extends IrrigationCC {\n public constructor(options: WithAddress<IrrigationCCSystemConfigSetOptions>) {\n super(options);\n this.masterValveDelay = options.masterValveDelay;\n this.highPressureThreshold = options.highPressureThreshold;\n this.lowPressureThreshold = options.lowPressureThreshold;\n this.rainSensorPolarity = options.rainSensorPolarity;\n this.moistureSensorPolarity = options.moistureSensorPolarity;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): IrrigationCCSystemConfigSet {\n // TODO: Deserialize payload\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new IrrigationCCSystemConfigSet({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n public masterValveDelay: number;\n public highPressureThreshold: number;\n public lowPressureThreshold: number;\n public rainSensorPolarity?: IrrigationSensorPolarity;\n public moistureSensorPolarity?: IrrigationSensorPolarity;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n let polarity = 0;\n if (this.rainSensorPolarity != undefined)\n polarity |= 0b1;\n if (this.moistureSensorPolarity != undefined)\n polarity |= 0b10;\n if (this.rainSensorPolarity == undefined\n && this.moistureSensorPolarity == undefined) {\n // Valid bit\n polarity |= 128;\n }\n this.payload = Bytes.concat([\n [this.masterValveDelay],\n encodeFloatWithScale(this.highPressureThreshold, 0 /* kPa */),\n encodeFloatWithScale(this.lowPressureThreshold, 0 /* kPa */),\n [polarity],\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"master valve delay\": `${this.masterValveDelay} s`,\n \"high pressure threshold\": `${this.highPressureThreshold} kPa`,\n \"low pressure threshold\": `${this.lowPressureThreshold} kPa`,\n };\n if (this.rainSensorPolarity != undefined) {\n message[\"rain sensor polarity\"] = getEnumMemberName(IrrigationSensorPolarity, this.rainSensorPolarity);\n }\n if (this.moistureSensorPolarity != undefined) {\n message[\"moisture sensor polarity\"] = getEnumMemberName(IrrigationSensorPolarity, this.moistureSensorPolarity);\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface IrrigationCCSystemConfigReportOptions {\n masterValveDelay: number;\n highPressureThreshold: number;\n lowPressureThreshold: number;\n rainSensorPolarity?: IrrigationSensorPolarity;\n moistureSensorPolarity?: IrrigationSensorPolarity;\n}\n@CCCommand(IrrigationCommand.SystemConfigReport)\n@ccValueProperty(\"masterValveDelay\", IrrigationCCValues.masterValveDelay)\n@ccValueProperty(\"highPressureThreshold\", IrrigationCCValues.highPressureThreshold)\n@ccValueProperty(\"lowPressureThreshold\", IrrigationCCValues.lowPressureThreshold)\n@ccValueProperty(\"rainSensorPolarity\", IrrigationCCValues.rainSensorPolarity)\n@ccValueProperty(\"moistureSensorPolarity\", IrrigationCCValues.moistureSensorPolarity)\nexport class IrrigationCCSystemConfigReport extends IrrigationCC {\n public constructor(options: WithAddress<IrrigationCCSystemConfigReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.masterValveDelay = options.masterValveDelay;\n this.highPressureThreshold = options.highPressureThreshold;\n this.lowPressureThreshold = options.lowPressureThreshold;\n this.rainSensorPolarity = options.rainSensorPolarity;\n this.moistureSensorPolarity = options.moistureSensorPolarity;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): IrrigationCCSystemConfigReport {\n validatePayload(raw.payload.length >= 2);\n const masterValveDelay = raw.payload[0];\n let offset = 1;\n let highPressureThreshold;\n {\n const { value, scale, bytesRead } = parseFloatWithScale(raw.payload.subarray(offset));\n validatePayload(scale === 0 /* kPa */);\n highPressureThreshold = value;\n offset += bytesRead;\n }\n let lowPressureThreshold;\n {\n const { value, scale, bytesRead } = parseFloatWithScale(raw.payload.subarray(offset));\n validatePayload(scale === 0 /* kPa */);\n lowPressureThreshold = value;\n offset += bytesRead;\n }\n validatePayload(raw.payload.length >= offset + 1);\n const polarity = raw.payload[offset];\n let rainSensorPolarity: IrrigationSensorPolarity | undefined;\n let moistureSensorPolarity: IrrigationSensorPolarity | undefined;\n if (!!(polarity & 128)) {\n // The valid bit is set\n rainSensorPolarity = polarity & 0b1;\n moistureSensorPolarity = (polarity & 0b10) >>> 1;\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n masterValveDelay,\n highPressureThreshold,\n lowPressureThreshold,\n rainSensorPolarity,\n moistureSensorPolarity,\n });\n }\n public readonly masterValveDelay: number;\n public readonly highPressureThreshold: number;\n public readonly lowPressureThreshold: number;\n public readonly rainSensorPolarity?: IrrigationSensorPolarity;\n public readonly moistureSensorPolarity?: IrrigationSensorPolarity;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"master valve delay\": `${this.masterValveDelay} s`,\n \"high pressure threshold\": `${this.highPressureThreshold} kPa`,\n \"low pressure threshold\": `${this.lowPressureThreshold} kPa`,\n };\n if (this.rainSensorPolarity != undefined) {\n message[\"rain sensor polarity\"] = getEnumMemberName(IrrigationSensorPolarity, this.rainSensorPolarity);\n }\n if (this.moistureSensorPolarity != undefined) {\n message[\"moisture sensor polarity\"] = getEnumMemberName(IrrigationSensorPolarity, this.moistureSensorPolarity);\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@CCCommand(IrrigationCommand.SystemConfigGet)\n@expectedCCResponse(IrrigationCCSystemConfigReport)\nexport class IrrigationCCSystemConfigGet extends IrrigationCC {\n}\n// @publicAPI\nexport interface IrrigationCCValveInfoReportOptions {\n valveId: ValveId;\n connected: boolean;\n nominalCurrent: number;\n errorShortCircuit: boolean;\n errorHighCurrent: boolean;\n errorLowCurrent: boolean;\n errorMaximumFlow?: boolean;\n errorHighFlow?: boolean;\n errorLowFlow?: boolean;\n}\n@CCCommand(IrrigationCommand.ValveInfoReport)\nexport class IrrigationCCValveInfoReport extends IrrigationCC {\n public constructor(options: WithAddress<IrrigationCCValveInfoReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.valveId = options.valveId;\n this.connected = options.connected;\n this.nominalCurrent = options.nominalCurrent;\n this.errorShortCircuit = options.errorShortCircuit;\n this.errorHighCurrent = options.errorHighCurrent;\n this.errorLowCurrent = options.errorLowCurrent;\n this.errorMaximumFlow = options.errorMaximumFlow;\n this.errorHighFlow = options.errorHighFlow;\n this.errorLowFlow = options.errorLowFlow;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): IrrigationCCValveInfoReport {\n validatePayload(raw.payload.length >= 4);\n let valveId: ValveId;\n if ((raw.payload[0] & 0b1) === ValveType.MasterValve) {\n valveId = \"master\";\n }\n else {\n valveId = raw.payload[1];\n }\n const connected = !!(raw.payload[0] & 0b10);\n const nominalCurrent = 10 * raw.payload[2];\n const errorShortCircuit = !!(raw.payload[3] & 0b1);\n const errorHighCurrent = !!(raw.payload[3] & 0b10);\n const errorLowCurrent = !!(raw.payload[3] & 0b100);\n let errorMaximumFlow: boolean | undefined;\n let errorHighFlow: boolean | undefined;\n let errorLowFlow: boolean | undefined;\n if (valveId === \"master\") {\n errorMaximumFlow = !!(raw.payload[3] & 0b1000);\n errorHighFlow = !!(raw.payload[3] & 16);\n errorLowFlow = !!(raw.payload[3] & 32);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n valveId,\n connected,\n nominalCurrent,\n errorShortCircuit,\n errorHighCurrent,\n errorLowCurrent,\n errorMaximumFlow,\n errorHighFlow,\n errorLowFlow,\n });\n }\n public readonly valveId: ValveId;\n public readonly connected: boolean;\n public readonly nominalCurrent: number;\n public readonly errorShortCircuit: boolean;\n public readonly errorHighCurrent: boolean;\n public readonly errorLowCurrent: boolean;\n public readonly errorMaximumFlow?: boolean;\n public readonly errorHighFlow?: boolean;\n public readonly errorLowFlow?: boolean;\n public persistValues(ctx: PersistValuesContext): boolean {\n if (!super.persistValues(ctx))\n return false;\n // connected\n const valveConnectedValue = IrrigationCCValues.valveConnected(this.valveId);\n this.ensureMetadata(ctx, valveConnectedValue);\n this.setValue(ctx, valveConnectedValue, this.connected);\n // nominalCurrent\n const nominalCurrentValue = IrrigationCCValues.nominalCurrent(this.valveId);\n this.ensureMetadata(ctx, nominalCurrentValue);\n this.setValue(ctx, nominalCurrentValue, this.nominalCurrent);\n // errorShortCircuit\n const errorShortCircuitValue = IrrigationCCValues.errorShortCircuit(this.valveId);\n this.ensureMetadata(ctx, errorShortCircuitValue);\n this.setValue(ctx, errorShortCircuitValue, this.errorShortCircuit);\n // errorHighCurrent\n const errorHighCurrentValue = IrrigationCCValues.errorHighCurrent(this.valveId);\n this.ensureMetadata(ctx, errorHighCurrentValue);\n this.setValue(ctx, errorHighCurrentValue, this.errorHighCurrent);\n // errorLowCurrent\n const errorLowCurrentValue = IrrigationCCValues.errorLowCurrent(this.valveId);\n this.ensureMetadata(ctx, errorLowCurrentValue);\n this.setValue(ctx, errorLowCurrentValue, this.errorLowCurrent);\n if (this.errorMaximumFlow != undefined) {\n const errorMaximumFlowValue = IrrigationCCValues.errorMaximumFlow(this.valveId);\n this.ensureMetadata(ctx, errorMaximumFlowValue);\n this.setValue(ctx, errorMaximumFlowValue, this.errorMaximumFlow);\n }\n if (this.errorHighFlow != undefined) {\n const errorHighFlowValue = IrrigationCCValues.errorHighFlow(this.valveId);\n this.ensureMetadata(ctx, errorHighFlowValue);\n this.setValue(ctx, errorHighFlowValue, this.errorHighFlow);\n }\n if (this.errorLowFlow != undefined) {\n const errorLowFlowValue = IrrigationCCValues.errorLowFlow(this.valveId);\n this.ensureMetadata(ctx, errorLowFlowValue);\n this.setValue(ctx, errorLowFlowValue, this.errorLowFlow);\n }\n return true;\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"valve ID\": this.valveId,\n connected: this.connected,\n \"nominal current\": `${this.nominalCurrent} mA`,\n };\n const errors = [\n this.errorShortCircuit ? \"short circuit\" : undefined,\n this.errorHighCurrent ? \"current above high threshold\" : undefined,\n this.errorLowCurrent ? \"current below low threshold\" : undefined,\n this.errorMaximumFlow ? \"maximum flow\" : undefined,\n this.errorHighFlow ? \"flow above high threshold\" : undefined,\n this.errorLowFlow ? \"flow below low threshold\" : undefined,\n ].filter(Boolean);\n if (errors.length > 0) {\n message.errors = errors.map((e) => `\\n\u00B7 ${e}`).join(\"\");\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface IrrigationCCValveInfoGetOptions {\n valveId: ValveId;\n}\nfunction testResponseForIrrigationCommandWithValveId(sent: {\n valveId: ValveId;\n}, received: {\n valveId: ValveId;\n}) {\n return received.valveId === sent.valveId;\n}\n@CCCommand(IrrigationCommand.ValveInfoGet)\n@expectedCCResponse(IrrigationCCValveInfoReport, testResponseForIrrigationCommandWithValveId as any)\nexport class IrrigationCCValveInfoGet extends IrrigationCC {\n public constructor(options: WithAddress<IrrigationCCValveInfoGetOptions>) {\n super(options);\n this.valveId = options.valveId;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): IrrigationCCValveInfoGet {\n // TODO: Deserialize payload\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new IrrigationCCValveInfoGet({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n public valveId: ValveId;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n this.valveId === \"master\" ? 1 : 0,\n this.valveId === \"master\" ? 1 : this.valveId || 1,\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"valve ID\": this.valveId,\n },\n };\n }\n}\n// @publicAPI\nexport type IrrigationCCValveConfigSetOptions = {\n valveId: ValveId;\n nominalCurrentHighThreshold: number;\n nominalCurrentLowThreshold: number;\n maximumFlow: number;\n highFlowThreshold: number;\n lowFlowThreshold: number;\n useRainSensor: boolean;\n useMoistureSensor: boolean;\n};\n@CCCommand(IrrigationCommand.ValveConfigSet)\n@useSupervision()\nexport class IrrigationCCValveConfigSet extends IrrigationCC {\n public constructor(options: WithAddress<IrrigationCCValveConfigSetOptions>) {\n super(options);\n this.valveId = options.valveId;\n this.nominalCurrentHighThreshold = options.nominalCurrentHighThreshold;\n this.nominalCurrentLowThreshold = options.nominalCurrentLowThreshold;\n this.maximumFlow = options.maximumFlow;\n this.highFlowThreshold = options.highFlowThreshold;\n this.lowFlowThreshold = options.lowFlowThreshold;\n this.useRainSensor = options.useRainSensor;\n this.useMoistureSensor = options.useMoistureSensor;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): IrrigationCCValveConfigSet {\n // TODO: Deserialize payload\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new IrrigationCCValveConfigSet({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n public valveId: ValveId;\n public nominalCurrentHighThreshold: number;\n public nominalCurrentLowThreshold: number;\n public maximumFlow: number;\n public highFlowThreshold: number;\n public lowFlowThreshold: number;\n public useRainSensor: boolean;\n public useMoistureSensor: boolean;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.concat([\n [\n this.valveId === \"master\" ? 1 : 0,\n this.valveId === \"master\" ? 1 : this.valveId || 1,\n Math.floor(this.nominalCurrentHighThreshold / 10),\n Math.floor(this.nominalCurrentLowThreshold / 10),\n ],\n encodeFloatWithScale(this.maximumFlow, 0 /* l/h */),\n encodeFloatWithScale(this.highFlowThreshold, 0 /* l/h */),\n encodeFloatWithScale(this.lowFlowThreshold, 0 /* l/h */),\n [\n (this.useRainSensor ? 0b1 : 0)\n | (this.useMoistureSensor ? 0b10 : 0),\n ],\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"valve ID\": this.valveId,\n \"nominal current high threshold\": `${this.nominalCurrentHighThreshold} mA`,\n \"nominal current low threshold\": `${this.nominalCurrentLowThreshold} mA`,\n \"maximum flow\": `${this.maximumFlow} l/h`,\n \"high flow threshold\": `${this.highFlowThreshold} l/h`,\n \"low flow threshold\": `${this.lowFlowThreshold} l/h`,\n \"use rain sensor\": this.useRainSensor,\n \"use moisture sensor\": this.useMoistureSensor,\n },\n };\n }\n}\n// @publicAPI\nexport interface IrrigationCCValveConfigReportOptions {\n valveId: ValveId;\n nominalCurrentHighThreshold: number;\n nominalCurrentLowThreshold: number;\n maximumFlow: number;\n highFlowThreshold: number;\n lowFlowThreshold: number;\n useRainSensor: boolean;\n useMoistureSensor: boolean;\n}\n@CCCommand(IrrigationCommand.ValveConfigReport)\nexport class IrrigationCCValveConfigReport extends IrrigationCC {\n public constructor(options: WithAddress<IrrigationCCValveConfigReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.valveId = options.valveId;\n this.nominalCurrentHighThreshold = options.nominalCurrentHighThreshold;\n this.nominalCurrentLowThreshold = options.nominalCurrentLowThreshold;\n this.maximumFlow = options.maximumFlow;\n this.highFlowThreshold = options.highFlowThreshold;\n this.lowFlowThreshold = options.lowFlowThreshold;\n this.useRainSensor = options.useRainSensor;\n this.useMoistureSensor = options.useMoistureSensor;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): IrrigationCCValveConfigReport {\n validatePayload(raw.payload.length >= 4);\n let valveId: ValveId;\n if ((raw.payload[0] & 0b1) === ValveType.MasterValve) {\n valveId = \"master\";\n }\n else {\n valveId = raw.payload[1];\n }\n const nominalCurrentHighThreshold = 10 * raw.payload[2];\n const nominalCurrentLowThreshold = 10 * raw.payload[3];\n let offset = 4;\n let maximumFlow;\n {\n const { value, scale, bytesRead } = parseFloatWithScale(raw.payload.subarray(offset));\n validatePayload(scale === 0 /* l/h */);\n maximumFlow = value;\n offset += bytesRead;\n }\n let highFlowThreshold;\n {\n const { value, scale, bytesRead } = parseFloatWithScale(raw.payload.subarray(offset));\n validatePayload(scale === 0 /* l/h */);\n highFlowThreshold = value;\n offset += bytesRead;\n }\n let lowFlowThreshold;\n {\n const { value, scale, bytesRead } = parseFloatWithScale(raw.payload.subarray(offset));\n validatePayload(scale === 0 /* l/h */);\n lowFlowThreshold = value;\n offset += bytesRead;\n }\n validatePayload(raw.payload.length >= offset + 1);\n const useRainSensor = !!(raw.payload[offset] & 0b1);\n const useMoistureSensor = !!(raw.payload[offset] & 0b10);\n return new this({\n nodeId: ctx.sourceNodeId,\n valveId,\n nominalCurrentHighThreshold,\n nominalCurrentLowThreshold,\n maximumFlow,\n highFlowThreshold,\n lowFlowThreshold,\n useRainSensor,\n useMoistureSensor,\n });\n }\n public persistValues(ctx: PersistValuesContext): boolean {\n if (!super.persistValues(ctx))\n return false;\n // nominalCurrentHighThreshold\n const nominalCurrentHighThresholdValue = IrrigationCCValues\n .nominalCurrentHighThreshold(this.valveId);\n this.ensureMetadata(ctx, nominalCurrentHighThresholdValue);\n this.setValue(ctx, nominalCurrentHighThresholdValue, this.nominalCurrentHighThreshold);\n // nominalCurrentLowThreshold\n const nominalCurrentLowThresholdValue = IrrigationCCValues\n .nominalCurrentLowThreshold(this.valveId);\n this.ensureMetadata(ctx, nominalCurrentLowThresholdValue);\n this.setValue(ctx, nominalCurrentLowThresholdValue, this.nominalCurrentLowThreshold);\n // maximumFlow\n const maximumFlowValue = IrrigationCCValues.maximumFlow(this.valveId);\n this.ensureMetadata(ctx, maximumFlowValue);\n this.setValue(ctx, maximumFlowValue, this.maximumFlow);\n // highFlowThreshold\n const highFlowThresholdValue = IrrigationCCValues.highFlowThreshold(this.valveId);\n this.ensureMetadata(ctx, highFlowThresholdValue);\n this.setValue(ctx, highFlowThresholdValue, this.highFlowThreshold);\n // lowFlowThreshold\n const lowFlowThresholdValue = IrrigationCCValues.lowFlowThreshold(this.valveId);\n this.ensureMetadata(ctx, lowFlowThresholdValue);\n this.setValue(ctx, lowFlowThresholdValue, this.lowFlowThreshold);\n // useRainSensor\n const useRainSensorValue = IrrigationCCValues.useRainSensor(this.valveId);\n this.ensureMetadata(ctx, useRainSensorValue);\n this.setValue(ctx, useRainSensorValue, this.useRainSensor);\n // useMoistureSensor\n const useMoistureSensorValue = IrrigationCCValues.useMoistureSensor(this.valveId);\n this.ensureMetadata(ctx, useMoistureSensorValue);\n this.setValue(ctx, useMoistureSensorValue, this.useMoistureSensor);\n return true;\n }\n public valveId: ValveId;\n public nominalCurrentHighThreshold: number;\n public nominalCurrentLowThreshold: number;\n public maximumFlow: number;\n public highFlowThreshold: number;\n public lowFlowThreshold: number;\n public useRainSensor: boolean;\n public useMoistureSensor: boolean;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"valve ID\": this.valveId,\n \"nominal current high threshold\": `${this.nominalCurrentHighThreshold} mA`,\n \"nominal current low threshold\": `${this.nominalCurrentLowThreshold} mA`,\n \"maximum flow\": `${this.maximumFlow} l/h`,\n \"high flow threshold\": `${this.highFlowThreshold} l/h`,\n \"low flow threshold\": `${this.lowFlowThreshold} l/h`,\n \"use rain sensor\": this.useRainSensor,\n \"use moisture sensor\": this.useMoistureSensor,\n },\n };\n }\n}\n// @publicAPI\nexport interface IrrigationCCValveConfigGetOptions {\n valveId: ValveId;\n}\n@CCCommand(IrrigationCommand.ValveConfigGet)\n@expectedCCResponse(IrrigationCCValveConfigReport, testResponseForIrrigationCommandWithValveId as any)\nexport class IrrigationCCValveConfigGet extends IrrigationCC {\n public constructor(options: WithAddress<IrrigationCCValveConfigGetOptions>) {\n super(options);\n this.valveId = options.valveId;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): IrrigationCCValveConfigGet {\n // TODO: Deserialize payload\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new IrrigationCCValveConfigGet({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n public valveId: ValveId;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n this.valveId === \"master\" ? 1 : 0,\n this.valveId === \"master\" ? 1 : this.valveId || 1,\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"valve ID\": this.valveId,\n },\n };\n }\n}\n// @publicAPI\nexport interface IrrigationCCValveRunOptions {\n valveId: ValveId;\n duration: number;\n}\n@CCCommand(IrrigationCommand.ValveRun)\n@useSupervision()\nexport class IrrigationCCValveRun extends IrrigationCC {\n public constructor(options: WithAddress<IrrigationCCValveRunOptions>) {\n super(options);\n this.valveId = options.valveId;\n this.duration = options.duration;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): IrrigationCCValveRun {\n // TODO: Deserialize payload\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new IrrigationCCValveRun({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n public valveId: ValveId;\n public duration: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n this.valveId === \"master\" ? 1 : 0,\n this.valveId === \"master\" ? 1 : this.valveId || 1,\n 0,\n 0,\n ]);\n this.payload.writeUInt16BE(this.duration, 2);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"valve ID\": this.valveId,\n };\n if (this.duration) {\n message.duration = `${this.duration} s`;\n }\n else {\n message.action = \"turn off\";\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface IrrigationCCValveTableSetOptions {\n tableId: number;\n entries: ValveTableEntry[];\n}\n@CCCommand(IrrigationCommand.ValveTableSet)\n@useSupervision()\nexport class IrrigationCCValveTableSet extends IrrigationCC {\n public constructor(options: WithAddress<IrrigationCCValveTableSetOptions>) {\n super(options);\n this.tableId = options.tableId;\n this.entries = options.entries;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): IrrigationCCValveTableSet {\n // TODO: Deserialize payload\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new IrrigationCCValveTableSet({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n public tableId: number;\n public entries: ValveTableEntry[];\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = new Bytes(1 + this.entries.length * 3);\n this.payload[0] = this.tableId;\n for (let i = 0; i < this.entries.length; i++) {\n const entry = this.entries[i];\n const offset = 1 + i * 3;\n this.payload[offset] = entry.valveId;\n this.payload.writeUInt16BE(entry.duration, offset + 1);\n }\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"table ID\": this.tableId,\n };\n for (let i = 0; i < this.entries.length; i++) {\n const entry = this.entries[i];\n const valveLabel = entry.valveId.toString().padStart(3, \"0\");\n if (entry.duration) {\n message[`valve ${valveLabel} duration`] = `${entry.duration} s`;\n }\n else {\n message[`valve ${valveLabel} action`] = `turn off`;\n }\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface IrrigationCCValveTableReportOptions {\n tableId: number;\n entries: ValveTableEntry[];\n}\n@CCCommand(IrrigationCommand.ValveTableReport)\nexport class IrrigationCCValveTableReport extends IrrigationCC {\n public constructor(options: WithAddress<IrrigationCCValveTableReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.tableId = options.tableId;\n this.entries = options.entries;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): IrrigationCCValveTableReport {\n validatePayload((raw.payload.length - 1) % 3 === 0);\n const tableId = raw.payload[0];\n const entries: ValveTableEntry[] = [];\n for (let offset = 1; offset < raw.payload.length; offset += 3) {\n entries.push({\n valveId: raw.payload[offset],\n duration: raw.payload.readUInt16BE(offset + 1),\n });\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n tableId,\n entries,\n });\n }\n public readonly tableId: number;\n public readonly entries: ValveTableEntry[];\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"table ID\": this.tableId,\n };\n for (let i = 0; i < this.entries.length; i++) {\n const entry = this.entries[i];\n const valveLabel = entry.valveId.toString().padStart(3, \"0\");\n if (entry.duration) {\n message[`valve ${valveLabel} duration`] = `${entry.duration} s`;\n }\n else {\n message[`valve ${valveLabel} action`] = `turn off`;\n }\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface IrrigationCCValveTableGetOptions {\n tableId: number;\n}\nfunction testResponseForIrrigationValveTableGet(sent: IrrigationCCValveTableGet, received: IrrigationCCValveTableReport) {\n return received.tableId === sent.tableId;\n}\n@CCCommand(IrrigationCommand.ValveTableGet)\n@expectedCCResponse(IrrigationCCValveTableReport, testResponseForIrrigationValveTableGet)\nexport class IrrigationCCValveTableGet extends IrrigationCC {\n public constructor(options: WithAddress<IrrigationCCValveTableGetOptions>) {\n super(options);\n this.tableId = options.tableId;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): IrrigationCCValveTableGet {\n // TODO: Deserialize payload\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new IrrigationCCValveTableGet({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n public tableId: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.tableId]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"table ID\": this.tableId,\n },\n };\n }\n}\n// @publicAPI\nexport interface IrrigationCCValveTableRunOptions {\n tableIDs: number[];\n}\n@CCCommand(IrrigationCommand.ValveTableRun)\n@useSupervision()\nexport class IrrigationCCValveTableRun extends IrrigationCC {\n public constructor(options: WithAddress<IrrigationCCValveTableRunOptions>) {\n super(options);\n this.tableIDs = options.tableIDs;\n if (this.tableIDs.length < 1) {\n throw new ZWaveError(`${this.constructor.name}: At least one table ID must be specified.`, ZWaveErrorCodes.Argument_Invalid);\n }\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): IrrigationCCValveTableRun {\n // TODO: Deserialize payload\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new IrrigationCCValveTableRun({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n public tableIDs: number[];\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from(this.tableIDs);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"table IDs\": this.tableIDs\n .map((id) => id.toString().padStart(3, \"0\"))\n .join(\", \"),\n },\n };\n }\n}\n// @publicAPI\nexport interface IrrigationCCSystemShutoffOptions {\n /**\n * The duration in minutes the system must stay off.\n * 255 or `undefined` will prevent schedules from running.\n */\n duration?: number;\n}\n@CCCommand(IrrigationCommand.SystemShutoff)\n@useSupervision()\nexport class IrrigationCCSystemShutoff extends IrrigationCC {\n public constructor(options: WithAddress<IrrigationCCSystemShutoffOptions>) {\n super(options);\n this.duration = options.duration;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): IrrigationCCSystemShutoff {\n // TODO: Deserialize payload\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new IrrigationCCSystemShutoff({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n public duration?: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.duration ?? 255]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n duration: this.duration === 0\n ? \"temporarily\"\n : this.duration === 255 || this.duration === undefined\n ? \"permanently\"\n : `${this.duration} hours`,\n },\n };\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["IrrigationCC"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/cc/LanguageCC._validateArgs.ts"],
4
- "sourcesContent": [null],
3
+ "sources": ["../../../src_gen/cc/LanguageCC._validateArgs.ts"],
4
+ "sourcesContent": ["import * as v from \"@zwave-js/core/validation\";\n\nexport function validateArgs_LanguageCCAPI_set() {\n\treturn <T extends Function>(__decoratedMethod: T, { kind }: ClassMethodDecoratorContext): T | void => {\n\t\tif (kind === \"method\") {\n\t\t\treturn function set(this: any, language: unknown, country: unknown) {\n\t\t\t\tv.assert(\n\t\t\t\t\tv.primitive({ kind: \"parameter\", name: \"language\" }, \"string\")(language),\n\n\t\t\t\t\tv.optional({ kind: \"parameter\", name: \"country\" }, v.primitive({ kind: \"parameter\", name: \"country\" }, \"string\"))(country),\n\t\t\t\t);\n\t\t\t\treturn __decoratedMethod.call(this, language, country);\n\t\t\t} as unknown as T;\n\t\t}\n\t};\n}"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;AAAA,QAAmB;AAEb,SAAU,iCAA8B;AAC7C,SAAO,CAAqB,mBAAsB,EAAE,KAAI,MAA6C;AACpG,QAAI,SAAS,UAAU;AACtB,aAAO,gCAAS,IAAe,UAAmB,SAAgB;AACjE,UAAE,OACD,EAAE,UAAU,EAAE,MAAM,aAAa,MAAM,WAAU,GAAI,QAAQ,EAAE,QAAQ,GAEvE,EAAE,SAAS,EAAE,MAAM,aAAa,MAAM,UAAS,GAAI,EAAE,UAAU,EAAE,MAAM,aAAa,MAAM,UAAS,GAAI,QAAQ,CAAC,EAAE,OAAO,CAAC;AAE3H,eAAO,kBAAkB,KAAK,MAAM,UAAU,OAAO;MACtD,GAPO;IAQR;EACD;AACD;AAbgB;",
6
6
  "names": []
7
7
  }