@zwave-js/cc 14.3.10 → 15.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/cc/AlarmSensorCC.d.ts +139 -57
- package/build/cjs/cc/AlarmSensorCC.js.map +2 -2
- package/build/cjs/cc/AssociationCC.d.ts +178 -43
- package/build/cjs/cc/AssociationCC.js +0 -4
- package/build/cjs/cc/AssociationCC.js.map +2 -2
- package/build/cjs/cc/AssociationGroupInfoCC.d.ts +138 -38
- package/build/cjs/cc/AssociationGroupInfoCC.js.map +2 -2
- package/build/cjs/cc/BarrierOperatorCC.d.ts +275 -73
- package/build/cjs/cc/BarrierOperatorCC.js.map +2 -2
- package/build/cjs/cc/BasicCC.d.ts +316 -71
- package/build/cjs/cc/BasicCC.js.map +2 -2
- package/build/cjs/cc/BatteryCC.d.ts +759 -164
- package/build/cjs/cc/BatteryCC.js.map +2 -2
- package/build/cjs/cc/BinarySensorCC.d.ts +91 -26
- package/build/cjs/cc/BinarySensorCC.js.map +2 -2
- package/build/cjs/cc/BinarySwitchCC.d.ts +190 -38
- package/build/cjs/cc/BinarySwitchCC.js.map +2 -2
- package/build/cjs/cc/CRC16CC.d.ts +4 -8
- package/build/cjs/cc/CRC16CC.js +4 -27
- package/build/cjs/cc/CRC16CC.js.map +2 -2
- package/build/cjs/cc/CentralSceneCC.d.ts +272 -53
- package/build/cjs/cc/CentralSceneCC.js.map +2 -2
- package/build/cjs/cc/ClimateControlScheduleCC.d.ts +150 -37
- package/build/cjs/cc/ClimateControlScheduleCC.js.map +2 -2
- package/build/cjs/cc/ClockCC.d.ts +3 -3
- package/build/cjs/cc/ClockCC.js.map +2 -2
- package/build/cjs/cc/ColorSwitchCC.d.ts +423 -96
- package/build/cjs/cc/ColorSwitchCC.js.map +2 -2
- package/build/cjs/cc/ConfigurationCC._validateArgs.js +1 -1
- package/build/cjs/cc/ConfigurationCC._validateArgs.js.map +1 -1
- package/build/cjs/cc/ConfigurationCC.d.ts +101 -37
- package/build/cjs/cc/ConfigurationCC.js +0 -8
- package/build/cjs/cc/ConfigurationCC.js.map +2 -2
- package/build/cjs/cc/DeviceResetLocallyCC.d.ts +1 -1
- package/build/cjs/cc/DeviceResetLocallyCC.js.map +2 -2
- package/build/cjs/cc/DoorLockCC._validateArgs.js +1 -1
- package/build/cjs/cc/DoorLockCC._validateArgs.js.map +1 -1
- package/build/cjs/cc/DoorLockCC.d.ts +1731 -419
- package/build/cjs/cc/DoorLockCC.js.map +2 -2
- package/build/cjs/cc/DoorLockLoggingCC.d.ts +64 -12
- package/build/cjs/cc/DoorLockLoggingCC.js.map +2 -2
- package/build/cjs/cc/EnergyProductionCC.d.ts +29 -14
- package/build/cjs/cc/EnergyProductionCC.js.map +2 -2
- package/build/cjs/cc/EntryControlCC.d.ts +308 -57
- package/build/cjs/cc/EntryControlCC.js.map +2 -2
- package/build/cjs/cc/FirmwareUpdateMetaDataCC._validateArgs.d.ts +2 -0
- package/build/cjs/cc/FirmwareUpdateMetaDataCC._validateArgs.js +26 -0
- package/build/cjs/cc/FirmwareUpdateMetaDataCC._validateArgs.js.map +1 -1
- package/build/cjs/cc/FirmwareUpdateMetaDataCC.d.ts +389 -64
- package/build/cjs/cc/FirmwareUpdateMetaDataCC.js +154 -8
- package/build/cjs/cc/FirmwareUpdateMetaDataCC.js.map +2 -2
- package/build/cjs/cc/HumidityControlModeCC.d.ts +125 -27
- package/build/cjs/cc/HumidityControlModeCC.js.map +2 -2
- package/build/cjs/cc/HumidityControlOperatingStateCC.d.ts +64 -18
- package/build/cjs/cc/HumidityControlOperatingStateCC.js.map +2 -2
- package/build/cjs/cc/HumidityControlSetpointCC.d.ts +116 -39
- package/build/cjs/cc/HumidityControlSetpointCC.js.map +2 -2
- package/build/cjs/cc/InclusionControllerCC.d.ts +4 -4
- package/build/cjs/cc/InclusionControllerCC.js.map +2 -2
- package/build/cjs/cc/IndicatorCC.d.ts +325 -83
- package/build/cjs/cc/IndicatorCC.js.map +2 -2
- package/build/cjs/cc/IrrigationCC.d.ts +2170 -683
- package/build/cjs/cc/IrrigationCC.js.map +2 -2
- package/build/cjs/cc/LanguageCC.d.ts +128 -26
- package/build/cjs/cc/LanguageCC.js.map +2 -2
- package/build/cjs/cc/LockCC.d.ts +64 -14
- package/build/cjs/cc/LockCC.js.map +2 -2
- package/build/cjs/cc/ManufacturerProprietaryCC.d.ts +2 -2
- package/build/cjs/cc/ManufacturerProprietaryCC.js.map +2 -2
- package/build/cjs/cc/ManufacturerSpecificCC.d.ts +219 -57
- package/build/cjs/cc/ManufacturerSpecificCC.js.map +2 -2
- package/build/cjs/cc/MeterCC.d.ts +364 -89
- package/build/cjs/cc/MeterCC.js.map +2 -2
- package/build/cjs/cc/MultiChannelAssociationCC.d.ts +138 -40
- package/build/cjs/cc/MultiChannelAssociationCC.js +0 -5
- package/build/cjs/cc/MultiChannelAssociationCC.js.map +2 -2
- package/build/cjs/cc/MultiChannelCC.d.ts +469 -99
- package/build/cjs/cc/MultiChannelCC.js +8 -72
- package/build/cjs/cc/MultiChannelCC.js.map +2 -2
- package/build/cjs/cc/MultiCommandCC.d.ts +4 -8
- package/build/cjs/cc/MultiCommandCC.js +4 -37
- package/build/cjs/cc/MultiCommandCC.js.map +2 -2
- package/build/cjs/cc/MultilevelSensorCC.d.ts +118 -33
- package/build/cjs/cc/MultilevelSensorCC.js.map +2 -2
- package/build/cjs/cc/MultilevelSwitchCC.d.ts +490 -125
- package/build/cjs/cc/MultilevelSwitchCC.js.map +2 -2
- package/build/cjs/cc/NodeNamingCC.d.ts +128 -26
- package/build/cjs/cc/NodeNamingCC.js.map +2 -2
- package/build/cjs/cc/NotificationCC.d.ts +603 -161
- package/build/cjs/cc/NotificationCC.js +12 -1
- package/build/cjs/cc/NotificationCC.js.map +2 -2
- package/build/cjs/cc/PowerlevelCC.d.ts +6 -6
- package/build/cjs/cc/PowerlevelCC.js.map +2 -2
- package/build/cjs/cc/ProtectionCC.d.ts +496 -94
- package/build/cjs/cc/ProtectionCC.js.map +2 -2
- package/build/cjs/cc/SceneActivationCC.d.ts +127 -28
- package/build/cjs/cc/SceneActivationCC.js.map +2 -2
- package/build/cjs/cc/SceneActuatorConfigurationCC.d.ts +52 -25
- package/build/cjs/cc/SceneActuatorConfigurationCC.js.map +2 -2
- package/build/cjs/cc/SceneControllerConfigurationCC.d.ts +53 -25
- package/build/cjs/cc/SceneControllerConfigurationCC.js.map +2 -2
- package/build/cjs/cc/ScheduleEntryLockCC.d.ts +268 -64
- package/build/cjs/cc/ScheduleEntryLockCC.js.map +2 -2
- package/build/cjs/cc/Security2CC.d.ts +15 -21
- package/build/cjs/cc/Security2CC.js +32 -347
- package/build/cjs/cc/Security2CC.js.map +3 -3
- package/build/cjs/cc/SecurityCC.d.ts +12 -19
- package/build/cjs/cc/SecurityCC.js +12 -106
- package/build/cjs/cc/SecurityCC.js.map +2 -2
- package/build/cjs/cc/SoundSwitchCC.d.ts +253 -64
- package/build/cjs/cc/SoundSwitchCC.js.map +2 -2
- package/build/cjs/cc/SupervisionCC.d.ts +28 -16
- package/build/cjs/cc/SupervisionCC.js +4 -29
- package/build/cjs/cc/SupervisionCC.js.map +2 -2
- package/build/cjs/cc/ThermostatFanModeCC.d.ts +187 -38
- package/build/cjs/cc/ThermostatFanModeCC.js.map +2 -2
- package/build/cjs/cc/ThermostatFanStateCC.d.ts +64 -18
- package/build/cjs/cc/ThermostatFanStateCC.js.map +2 -2
- package/build/cjs/cc/ThermostatModeCC.d.ts +189 -40
- package/build/cjs/cc/ThermostatModeCC.js.map +2 -2
- package/build/cjs/cc/ThermostatOperatingStateCC.d.ts +65 -19
- package/build/cjs/cc/ThermostatOperatingStateCC.js.map +2 -2
- package/build/cjs/cc/ThermostatSetbackCC.d.ts +4 -4
- package/build/cjs/cc/ThermostatSetbackCC.js.map +2 -2
- package/build/cjs/cc/ThermostatSetpointCC.d.ts +116 -36
- package/build/cjs/cc/ThermostatSetpointCC.js.map +2 -2
- package/build/cjs/cc/TimeCC.d.ts +6 -6
- package/build/cjs/cc/TimeCC.js.map +2 -2
- package/build/cjs/cc/TimeParametersCC.d.ts +63 -12
- package/build/cjs/cc/TimeParametersCC.js.map +2 -2
- package/build/cjs/cc/TransportServiceCC.d.ts +7 -12
- package/build/cjs/cc/TransportServiceCC.js +3 -20
- package/build/cjs/cc/TransportServiceCC.js.map +2 -2
- package/build/cjs/cc/UserCodeCC._validateArgs.js +1 -1
- package/build/cjs/cc/UserCodeCC._validateArgs.js.map +1 -1
- package/build/cjs/cc/UserCodeCC.d.ts +931 -176
- package/build/cjs/cc/UserCodeCC.js.map +2 -2
- package/build/cjs/cc/VersionCC.d.ts +897 -185
- package/build/cjs/cc/VersionCC.js.map +2 -2
- package/build/cjs/cc/WakeUpCC.d.ts +190 -38
- package/build/cjs/cc/WakeUpCC.js.map +2 -2
- package/build/cjs/cc/WindowCoveringCC.d.ts +193 -103
- package/build/cjs/cc/WindowCoveringCC.js.map +2 -2
- package/build/cjs/cc/ZWavePlusCC.d.ts +311 -51
- package/build/cjs/cc/ZWavePlusCC.js.map +2 -2
- package/build/cjs/cc/ZWaveProtocolCC.d.ts +28 -28
- package/build/cjs/cc/ZWaveProtocolCC.js.map +2 -2
- package/build/cjs/cc/manufacturerProprietary/FibaroCC.d.ts +4 -4
- package/build/cjs/cc/manufacturerProprietary/FibaroCC.js.map +2 -2
- package/build/cjs/index.d.ts +1 -0
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/index_browser.d.ts +9 -0
- package/build/cjs/index_browser.js +41 -1
- package/build/cjs/index_browser.js.map +2 -2
- package/build/cjs/lib/API.d.ts +7 -5
- package/build/cjs/lib/API.js +1 -1
- package/build/cjs/lib/API.js.map +2 -2
- package/build/cjs/lib/CommandClass.d.ts +10 -21
- package/build/cjs/lib/CommandClass.js +51 -106
- package/build/cjs/lib/CommandClass.js.map +3 -3
- package/build/cjs/lib/CommandClassDecorators.d.ts +1 -1
- package/build/cjs/lib/CommandClassDecorators.js +3 -3
- package/build/cjs/lib/CommandClassDecorators.js.map +2 -2
- package/build/cjs/lib/Values.d.ts +2 -2
- package/build/cjs/lib/Values.js.map +2 -2
- package/build/cjs/lib/traits.d.ts +94 -0
- package/build/cjs/lib/traits.js +17 -0
- package/build/cjs/lib/traits.js.map +7 -0
- package/build/cjs/lib/utils.d.ts +2 -2
- package/build/cjs/lib/utils.js.map +2 -2
- package/build/esm/cc/AlarmSensorCC.d.ts +139 -57
- package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
- package/build/esm/cc/AlarmSensorCC.js +0 -1
- package/build/esm/cc/AlarmSensorCC.js.map +1 -1
- package/build/esm/cc/AssociationCC.d.ts +178 -43
- package/build/esm/cc/AssociationCC.d.ts.map +1 -1
- package/build/esm/cc/AssociationCC.js +0 -13
- package/build/esm/cc/AssociationCC.js.map +1 -1
- package/build/esm/cc/AssociationGroupInfoCC.d.ts +138 -38
- package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
- package/build/esm/cc/AssociationGroupInfoCC.js +0 -6
- package/build/esm/cc/AssociationGroupInfoCC.js.map +1 -1
- package/build/esm/cc/BarrierOperatorCC.d.ts +275 -73
- package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
- package/build/esm/cc/BarrierOperatorCC.js +0 -3
- package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
- package/build/esm/cc/BasicCC.d.ts +316 -71
- package/build/esm/cc/BasicCC.d.ts.map +1 -1
- package/build/esm/cc/BasicCC.js +0 -2
- package/build/esm/cc/BasicCC.js.map +1 -1
- package/build/esm/cc/BatteryCC.d.ts +759 -164
- package/build/esm/cc/BatteryCC.d.ts.map +1 -1
- package/build/esm/cc/BatteryCC.js +1 -2
- package/build/esm/cc/BatteryCC.js.map +1 -1
- package/build/esm/cc/BinarySensorCC.d.ts +91 -26
- package/build/esm/cc/BinarySensorCC.d.ts.map +1 -1
- package/build/esm/cc/BinarySensorCC.js +0 -3
- package/build/esm/cc/BinarySensorCC.js.map +1 -1
- package/build/esm/cc/BinarySwitchCC.d.ts +190 -38
- package/build/esm/cc/BinarySwitchCC.d.ts.map +1 -1
- package/build/esm/cc/BinarySwitchCC.js +0 -2
- package/build/esm/cc/BinarySwitchCC.js.map +1 -1
- package/build/esm/cc/CRC16CC.d.ts +4 -8
- package/build/esm/cc/CRC16CC.d.ts.map +1 -1
- package/build/esm/cc/CRC16CC.js +4 -34
- package/build/esm/cc/CRC16CC.js.map +1 -1
- package/build/esm/cc/CentralSceneCC.d.ts +272 -53
- package/build/esm/cc/CentralSceneCC.d.ts.map +1 -1
- package/build/esm/cc/CentralSceneCC.js +0 -1
- package/build/esm/cc/CentralSceneCC.js.map +1 -1
- package/build/esm/cc/ClimateControlScheduleCC.d.ts +150 -37
- package/build/esm/cc/ClimateControlScheduleCC.d.ts.map +1 -1
- package/build/esm/cc/ClimateControlScheduleCC.js +0 -3
- package/build/esm/cc/ClimateControlScheduleCC.js.map +1 -1
- package/build/esm/cc/ClockCC.d.ts +3 -3
- package/build/esm/cc/ClockCC.d.ts.map +1 -1
- package/build/esm/cc/ClockCC.js +0 -1
- package/build/esm/cc/ClockCC.js.map +1 -1
- package/build/esm/cc/ColorSwitchCC.d.ts +423 -96
- package/build/esm/cc/ColorSwitchCC.d.ts.map +1 -1
- package/build/esm/cc/ColorSwitchCC.js +0 -6
- package/build/esm/cc/ColorSwitchCC.js.map +1 -1
- package/build/esm/cc/ConfigurationCC._validateArgs.js +1 -1
- package/build/esm/cc/ConfigurationCC._validateArgs.js.map +1 -1
- package/build/esm/cc/ConfigurationCC.d.ts +101 -37
- package/build/esm/cc/ConfigurationCC.d.ts.map +1 -1
- package/build/esm/cc/ConfigurationCC.js +0 -25
- package/build/esm/cc/ConfigurationCC.js.map +1 -1
- package/build/esm/cc/DeviceResetLocallyCC.d.ts +1 -1
- package/build/esm/cc/DeviceResetLocallyCC.d.ts.map +1 -1
- package/build/esm/cc/DeviceResetLocallyCC.js.map +1 -1
- package/build/esm/cc/DoorLockCC._validateArgs.js +1 -1
- package/build/esm/cc/DoorLockCC._validateArgs.js.map +1 -1
- package/build/esm/cc/DoorLockCC.d.ts +1731 -419
- package/build/esm/cc/DoorLockCC.d.ts.map +1 -1
- package/build/esm/cc/DoorLockCC.js +0 -2
- package/build/esm/cc/DoorLockCC.js.map +1 -1
- package/build/esm/cc/DoorLockLoggingCC.d.ts +64 -12
- package/build/esm/cc/DoorLockLoggingCC.d.ts.map +1 -1
- package/build/esm/cc/DoorLockLoggingCC.js +0 -1
- package/build/esm/cc/DoorLockLoggingCC.js.map +1 -1
- package/build/esm/cc/EnergyProductionCC.d.ts +29 -14
- package/build/esm/cc/EnergyProductionCC.d.ts.map +1 -1
- package/build/esm/cc/EnergyProductionCC.js +0 -2
- package/build/esm/cc/EnergyProductionCC.js.map +1 -1
- package/build/esm/cc/EntryControlCC.d.ts +308 -57
- package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
- package/build/esm/cc/EntryControlCC.js +0 -1
- package/build/esm/cc/EntryControlCC.js.map +1 -1
- package/build/esm/cc/FirmwareUpdateMetaDataCC._validateArgs.d.ts +2 -0
- package/build/esm/cc/FirmwareUpdateMetaDataCC._validateArgs.d.ts.map +1 -1
- package/build/esm/cc/FirmwareUpdateMetaDataCC._validateArgs.js +20 -0
- package/build/esm/cc/FirmwareUpdateMetaDataCC._validateArgs.js.map +1 -1
- package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts +389 -64
- package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts.map +1 -1
- package/build/esm/cc/FirmwareUpdateMetaDataCC.js +158 -30
- package/build/esm/cc/FirmwareUpdateMetaDataCC.js.map +1 -1
- package/build/esm/cc/HumidityControlModeCC.d.ts +125 -27
- package/build/esm/cc/HumidityControlModeCC.d.ts.map +1 -1
- package/build/esm/cc/HumidityControlModeCC.js +0 -1
- package/build/esm/cc/HumidityControlModeCC.js.map +1 -1
- package/build/esm/cc/HumidityControlOperatingStateCC.d.ts +64 -18
- package/build/esm/cc/HumidityControlOperatingStateCC.d.ts.map +1 -1
- package/build/esm/cc/HumidityControlOperatingStateCC.js.map +1 -1
- package/build/esm/cc/HumidityControlSetpointCC.d.ts +116 -39
- package/build/esm/cc/HumidityControlSetpointCC.d.ts.map +1 -1
- package/build/esm/cc/HumidityControlSetpointCC.js +0 -4
- package/build/esm/cc/HumidityControlSetpointCC.js.map +1 -1
- package/build/esm/cc/InclusionControllerCC.d.ts +4 -4
- package/build/esm/cc/InclusionControllerCC.d.ts.map +1 -1
- package/build/esm/cc/InclusionControllerCC.js +0 -2
- package/build/esm/cc/InclusionControllerCC.js.map +1 -1
- package/build/esm/cc/IndicatorCC.d.ts +325 -83
- package/build/esm/cc/IndicatorCC.d.ts.map +1 -1
- package/build/esm/cc/IndicatorCC.js +0 -7
- package/build/esm/cc/IndicatorCC.js.map +1 -1
- package/build/esm/cc/IrrigationCC.d.ts +2170 -683
- package/build/esm/cc/IrrigationCC.d.ts.map +1 -1
- package/build/esm/cc/IrrigationCC.js +0 -9
- package/build/esm/cc/IrrigationCC.js.map +1 -1
- package/build/esm/cc/LanguageCC.d.ts +128 -26
- package/build/esm/cc/LanguageCC.d.ts.map +1 -1
- package/build/esm/cc/LanguageCC.js +0 -1
- package/build/esm/cc/LanguageCC.js.map +1 -1
- package/build/esm/cc/LockCC.d.ts +64 -14
- package/build/esm/cc/LockCC.d.ts.map +1 -1
- package/build/esm/cc/LockCC.js +0 -1
- package/build/esm/cc/LockCC.js.map +1 -1
- package/build/esm/cc/ManufacturerProprietaryCC.d.ts +2 -2
- package/build/esm/cc/ManufacturerProprietaryCC.d.ts.map +1 -1
- package/build/esm/cc/ManufacturerProprietaryCC.js +0 -1
- package/build/esm/cc/ManufacturerProprietaryCC.js.map +1 -1
- package/build/esm/cc/ManufacturerSpecificCC.d.ts +219 -57
- package/build/esm/cc/ManufacturerSpecificCC.d.ts.map +1 -1
- package/build/esm/cc/ManufacturerSpecificCC.js +0 -2
- package/build/esm/cc/ManufacturerSpecificCC.js.map +1 -1
- package/build/esm/cc/MeterCC.d.ts +364 -89
- package/build/esm/cc/MeterCC.d.ts.map +1 -1
- package/build/esm/cc/MeterCC.js +0 -4
- package/build/esm/cc/MeterCC.js.map +1 -1
- package/build/esm/cc/MultiChannelAssociationCC.d.ts +138 -40
- package/build/esm/cc/MultiChannelAssociationCC.d.ts.map +1 -1
- package/build/esm/cc/MultiChannelAssociationCC.js +0 -16
- package/build/esm/cc/MultiChannelAssociationCC.js.map +1 -1
- package/build/esm/cc/MultiChannelCC.d.ts +469 -99
- package/build/esm/cc/MultiChannelCC.d.ts.map +1 -1
- package/build/esm/cc/MultiChannelCC.js +8 -101
- package/build/esm/cc/MultiChannelCC.js.map +1 -1
- package/build/esm/cc/MultiCommandCC.d.ts +4 -8
- package/build/esm/cc/MultiCommandCC.d.ts.map +1 -1
- package/build/esm/cc/MultiCommandCC.js +4 -38
- package/build/esm/cc/MultiCommandCC.js.map +1 -1
- package/build/esm/cc/MultilevelSensorCC.d.ts +118 -33
- package/build/esm/cc/MultilevelSensorCC.d.ts.map +1 -1
- package/build/esm/cc/MultilevelSensorCC.js +0 -5
- package/build/esm/cc/MultilevelSensorCC.js.map +1 -1
- package/build/esm/cc/MultilevelSwitchCC.d.ts +490 -125
- package/build/esm/cc/MultilevelSwitchCC.d.ts.map +1 -1
- package/build/esm/cc/MultilevelSwitchCC.js +0 -4
- package/build/esm/cc/MultilevelSwitchCC.js.map +1 -1
- package/build/esm/cc/NodeNamingCC.d.ts +128 -26
- package/build/esm/cc/NodeNamingCC.d.ts.map +1 -1
- package/build/esm/cc/NodeNamingCC.js +0 -2
- package/build/esm/cc/NodeNamingCC.js.map +1 -1
- package/build/esm/cc/NotificationCC.d.ts +603 -161
- package/build/esm/cc/NotificationCC.d.ts.map +1 -1
- package/build/esm/cc/NotificationCC.js +18 -12
- package/build/esm/cc/NotificationCC.js.map +1 -1
- package/build/esm/cc/PowerlevelCC.d.ts +6 -6
- package/build/esm/cc/PowerlevelCC.d.ts.map +1 -1
- package/build/esm/cc/PowerlevelCC.js +0 -4
- package/build/esm/cc/PowerlevelCC.js.map +1 -1
- package/build/esm/cc/ProtectionCC.d.ts +496 -94
- package/build/esm/cc/ProtectionCC.d.ts.map +1 -1
- package/build/esm/cc/ProtectionCC.js +0 -3
- package/build/esm/cc/ProtectionCC.js.map +1 -1
- package/build/esm/cc/SceneActivationCC.d.ts +127 -28
- package/build/esm/cc/SceneActivationCC.d.ts.map +1 -1
- package/build/esm/cc/SceneActivationCC.js +0 -1
- package/build/esm/cc/SceneActivationCC.js.map +1 -1
- package/build/esm/cc/SceneActuatorConfigurationCC.d.ts +52 -25
- package/build/esm/cc/SceneActuatorConfigurationCC.d.ts.map +1 -1
- package/build/esm/cc/SceneActuatorConfigurationCC.js +0 -2
- package/build/esm/cc/SceneActuatorConfigurationCC.js.map +1 -1
- package/build/esm/cc/SceneControllerConfigurationCC.d.ts +53 -25
- package/build/esm/cc/SceneControllerConfigurationCC.d.ts.map +1 -1
- package/build/esm/cc/SceneControllerConfigurationCC.js +0 -2
- package/build/esm/cc/SceneControllerConfigurationCC.js.map +1 -1
- package/build/esm/cc/ScheduleEntryLockCC.d.ts +268 -64
- package/build/esm/cc/ScheduleEntryLockCC.d.ts.map +1 -1
- package/build/esm/cc/ScheduleEntryLockCC.js +0 -14
- package/build/esm/cc/ScheduleEntryLockCC.js.map +1 -1
- package/build/esm/cc/Security2CC.d.ts +15 -21
- package/build/esm/cc/Security2CC.d.ts.map +1 -1
- package/build/esm/cc/Security2CC.js +27 -475
- package/build/esm/cc/Security2CC.js.map +1 -1
- package/build/esm/cc/SecurityCC.d.ts +12 -19
- package/build/esm/cc/SecurityCC.d.ts.map +1 -1
- package/build/esm/cc/SecurityCC.js +13 -138
- package/build/esm/cc/SecurityCC.js.map +1 -1
- package/build/esm/cc/SoundSwitchCC.d.ts +253 -64
- package/build/esm/cc/SoundSwitchCC.d.ts.map +1 -1
- package/build/esm/cc/SoundSwitchCC.js +0 -7
- package/build/esm/cc/SoundSwitchCC.js.map +1 -1
- package/build/esm/cc/SupervisionCC.d.ts +28 -16
- package/build/esm/cc/SupervisionCC.d.ts.map +1 -1
- package/build/esm/cc/SupervisionCC.js +4 -34
- package/build/esm/cc/SupervisionCC.js.map +1 -1
- package/build/esm/cc/ThermostatFanModeCC.d.ts +187 -38
- package/build/esm/cc/ThermostatFanModeCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatFanModeCC.js +0 -1
- package/build/esm/cc/ThermostatFanModeCC.js.map +1 -1
- package/build/esm/cc/ThermostatFanStateCC.d.ts +64 -18
- package/build/esm/cc/ThermostatFanStateCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatFanStateCC.js.map +1 -1
- package/build/esm/cc/ThermostatModeCC.d.ts +189 -40
- package/build/esm/cc/ThermostatModeCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatModeCC.js +0 -3
- package/build/esm/cc/ThermostatModeCC.js.map +1 -1
- package/build/esm/cc/ThermostatOperatingStateCC.d.ts +65 -19
- package/build/esm/cc/ThermostatOperatingStateCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatOperatingStateCC.js.map +1 -1
- package/build/esm/cc/ThermostatSetbackCC.d.ts +4 -4
- package/build/esm/cc/ThermostatSetbackCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatSetbackCC.js +0 -2
- package/build/esm/cc/ThermostatSetbackCC.js.map +1 -1
- package/build/esm/cc/ThermostatSetpointCC.d.ts +116 -36
- package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatSetpointCC.js +0 -6
- package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
- package/build/esm/cc/TimeCC.d.ts +6 -6
- package/build/esm/cc/TimeCC.d.ts.map +1 -1
- package/build/esm/cc/TimeCC.js +0 -4
- package/build/esm/cc/TimeCC.js.map +1 -1
- package/build/esm/cc/TimeParametersCC.d.ts +63 -12
- package/build/esm/cc/TimeParametersCC.d.ts.map +1 -1
- package/build/esm/cc/TimeParametersCC.js +0 -1
- package/build/esm/cc/TimeParametersCC.js.map +1 -1
- package/build/esm/cc/TransportServiceCC.d.ts +7 -12
- package/build/esm/cc/TransportServiceCC.d.ts.map +1 -1
- package/build/esm/cc/TransportServiceCC.js +5 -38
- package/build/esm/cc/TransportServiceCC.js.map +1 -1
- package/build/esm/cc/UserCodeCC._validateArgs.js +1 -1
- package/build/esm/cc/UserCodeCC._validateArgs.js.map +1 -1
- package/build/esm/cc/UserCodeCC.d.ts +931 -176
- package/build/esm/cc/UserCodeCC.d.ts.map +1 -1
- package/build/esm/cc/UserCodeCC.js +0 -12
- package/build/esm/cc/UserCodeCC.js.map +1 -1
- package/build/esm/cc/VersionCC.d.ts +897 -185
- package/build/esm/cc/VersionCC.d.ts.map +1 -1
- package/build/esm/cc/VersionCC.js +0 -4
- package/build/esm/cc/VersionCC.js.map +1 -1
- package/build/esm/cc/WakeUpCC.d.ts +190 -38
- package/build/esm/cc/WakeUpCC.d.ts.map +1 -1
- package/build/esm/cc/WakeUpCC.js +0 -1
- package/build/esm/cc/WakeUpCC.js.map +1 -1
- package/build/esm/cc/WindowCoveringCC.d.ts +193 -103
- package/build/esm/cc/WindowCoveringCC.d.ts.map +1 -1
- package/build/esm/cc/WindowCoveringCC.js +0 -5
- package/build/esm/cc/WindowCoveringCC.js.map +1 -1
- package/build/esm/cc/ZWavePlusCC.d.ts +311 -51
- package/build/esm/cc/ZWavePlusCC.d.ts.map +1 -1
- package/build/esm/cc/ZWavePlusCC.js +0 -1
- package/build/esm/cc/ZWavePlusCC.js.map +1 -1
- package/build/esm/cc/ZWaveProtocolCC.d.ts +28 -28
- package/build/esm/cc/ZWaveProtocolCC.d.ts.map +1 -1
- package/build/esm/cc/ZWaveProtocolCC.js +0 -27
- package/build/esm/cc/ZWaveProtocolCC.js.map +1 -1
- package/build/esm/cc/manufacturerProprietary/FibaroCC.d.ts +4 -4
- package/build/esm/cc/manufacturerProprietary/FibaroCC.d.ts.map +1 -1
- package/build/esm/cc/manufacturerProprietary/FibaroCC.js +0 -3
- package/build/esm/cc/manufacturerProprietary/FibaroCC.js.map +1 -1
- package/build/esm/index.d.ts +1 -0
- package/build/esm/index.d.ts.map +1 -1
- package/build/esm/index_browser.d.ts +9 -0
- package/build/esm/index_browser.d.ts.map +1 -1
- package/build/esm/index_browser.js +8 -1
- package/build/esm/index_browser.js.map +1 -1
- package/build/esm/lib/API.d.ts +7 -5
- package/build/esm/lib/API.d.ts.map +1 -1
- package/build/esm/lib/API.js +1 -1
- package/build/esm/lib/API.js.map +1 -1
- package/build/esm/lib/CommandClass.d.ts +10 -21
- package/build/esm/lib/CommandClass.d.ts.map +1 -1
- package/build/esm/lib/CommandClass.js +8 -101
- package/build/esm/lib/CommandClass.js.map +1 -1
- package/build/esm/lib/CommandClassDecorators.d.ts +1 -1
- package/build/esm/lib/CommandClassDecorators.d.ts.map +1 -1
- package/build/esm/lib/CommandClassDecorators.js +1 -1
- package/build/esm/lib/CommandClassDecorators.js.map +1 -1
- package/build/esm/lib/Values.d.ts +2 -2
- package/build/esm/lib/Values.d.ts.map +1 -1
- package/build/esm/lib/Values.js.map +1 -1
- package/build/esm/lib/traits.d.ts +94 -0
- package/build/esm/lib/traits.d.ts.map +1 -0
- package/build/esm/lib/traits.js +2 -0
- package/build/esm/lib/traits.js.map +1 -0
- package/build/esm/lib/utils.d.ts +2 -2
- package/build/esm/lib/utils.d.ts.map +1 -1
- package/build/esm/lib/utils.js.map +1 -1
- package/package.json +13 -13
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/cc/ColorSwitchCC.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n\tCommandClasses,\n\tDuration,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\ttype MessageRecord,\n\ttype SupervisionResult,\n\ttype ValueDB,\n\ttype ValueID,\n\tValueMetadata,\n\ttype WithAddress,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tisUnsupervisedOrSucceeded,\n\tparseBitMask,\n\tsupervisedCommandSucceeded,\n\tvalidatePayload,\n} from \"@zwave-js/core\";\nimport { type MaybeNotKnown, encodeBitMask } from \"@zwave-js/core/safe\";\nimport type {\n\tCCEncodingContext,\n\tCCParsingContext,\n\tGetValueDB,\n} from \"@zwave-js/host/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport {\n\tgetEnumMemberName,\n\tisEnumMember,\n\tkeysOf,\n\tpick,\n} from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport { clamp } from \"alcalzone-shared/math\";\nimport { isObject } from \"alcalzone-shared/typeguards\";\nimport {\n\tCCAPI,\n\tPOLL_VALUE,\n\ttype PollValueImplementation,\n\tSET_VALUE,\n\ttype SetValueImplementation,\n\tthrowMissingPropertyKey,\n\tthrowUnsupportedProperty,\n\tthrowUnsupportedPropertyKey,\n\tthrowWrongValueType,\n} from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\n\ttype PersistValuesContext,\n\ttype RefreshValuesContext,\n\tgetEffectiveCCVersion,\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\tColorComponent,\n\tColorComponentMap,\n\ttype ColorKey,\n\tColorSwitchCommand,\n\ttype ColorTable,\n\tLevelChangeDirection,\n} from \"../lib/_Types.js\";\n\nconst hexColorRegex =\n\t/^#?(?<red>[0-9a-f]{2})(?<green>[0-9a-f]{2})(?<blue>[0-9a-f]{2})$/i;\n\nconst colorTableKeys = [\n\t...keysOf(ColorComponent),\n\t...keysOf(ColorComponentMap),\n];\n\nfunction colorTableKeyToComponent(key: string): ColorComponent {\n\tif (/^\\d+$/.test(key)) {\n\t\treturn parseInt(key, 10);\n\t} else if (key in ColorComponentMap) {\n\t\treturn (ColorComponentMap as any)[key];\n\t} else if (key in ColorComponent) {\n\t\treturn (ColorComponent as any)[key];\n\t}\n\tthrow new ZWaveError(\n\t\t`Invalid color key ${key}!`,\n\t\tZWaveErrorCodes.Argument_Invalid,\n\t);\n}\n\nfunction colorComponentToTableKey(\n\tcomponent: ColorComponent,\n): ColorKey | undefined {\n\tfor (const [key, comp] of Object.entries(ColorComponentMap)) {\n\t\tif (comp === component) return key as any;\n\t}\n}\n\nexport const ColorSwitchCCValues = Object.freeze({\n\t...V.defineStaticCCValues(CommandClasses[\"Color Switch\"], {\n\t\t...V.staticProperty(\"supportedColorComponents\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\t\t...V.staticProperty(\"supportsHexColor\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\n\t\t// The compound color (static)\n\t\t...V.staticPropertyWithName(\n\t\t\t\"currentColor\",\n\t\t\t\"currentColor\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.ReadOnly,\n\t\t\t\tlabel: `Current color`,\n\t\t\t} as const,\n\t\t),\n\t\t...V.staticPropertyWithName(\n\t\t\t\"targetColor\",\n\t\t\t\"targetColor\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.Any,\n\t\t\t\tlabel: `Target color`,\n\t\t\t\tvalueChangeOptions: [\"transitionDuration\"],\n\t\t\t} as const,\n\t\t),\n\t\t...V.staticProperty(\n\t\t\t\"duration\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.ReadOnlyDuration,\n\t\t\t\tlabel: \"Remaining duration\",\n\t\t\t} as const,\n\t\t),\n\n\t\t// The compound color as HEX\n\t\t...V.staticProperty(\n\t\t\t\"hexColor\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.Color,\n\t\t\t\tminLength: 6,\n\t\t\t\tmaxLength: 7, // to allow #rrggbb\n\t\t\t\tlabel: `RGB Color`,\n\t\t\t\tvalueChangeOptions: [\"transitionDuration\"],\n\t\t\t} as const,\n\t\t),\n\t}),\n\n\t...V.defineDynamicCCValues(CommandClasses[\"Color Switch\"], {\n\t\t// The individual color channels (dynamic)\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"currentColorChannel\",\n\t\t\t\"currentColor\",\n\t\t\t(component: ColorComponent) => component,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"currentColor\" && typeof propertyKey === \"number\",\n\t\t\t(component: ColorComponent) => {\n\t\t\t\tconst colorName = getEnumMemberName(ColorComponent, component);\n\t\t\t\treturn {\n\t\t\t\t\t...ValueMetadata.ReadOnlyUInt8,\n\t\t\t\t\tlabel: `Current value (${colorName})`,\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t`The current value of the ${colorName} channel.`,\n\t\t\t\t} as const;\n\t\t\t},\n\t\t),\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"targetColorChannel\",\n\t\t\t\"targetColor\",\n\t\t\t(component: ColorComponent) => component,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"targetColor\" && typeof propertyKey === \"number\",\n\t\t\t(component: ColorComponent) => {\n\t\t\t\tconst colorName = getEnumMemberName(ColorComponent, component);\n\t\t\t\treturn {\n\t\t\t\t\t...ValueMetadata.UInt8,\n\t\t\t\t\tlabel: `Target value (${colorName})`,\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t`The target value of the ${colorName} channel.`,\n\t\t\t\t\tvalueChangeOptions: [\"transitionDuration\"],\n\t\t\t\t} as const;\n\t\t\t},\n\t\t),\n\t}),\n});\n\n@API(CommandClasses[\"Color Switch\"])\nexport class ColorSwitchCCAPI extends CCAPI {\n\tpublic supportsCommand(cmd: ColorSwitchCommand): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase ColorSwitchCommand.SupportedGet:\n\t\t\tcase ColorSwitchCommand.Get:\n\t\t\t\treturn this.isSinglecast();\n\t\t\tcase ColorSwitchCommand.Set:\n\t\t\tcase ColorSwitchCommand.StartLevelChange:\n\t\t\tcase ColorSwitchCommand.StopLevelChange:\n\t\t\t\treturn true; // These are mandatory\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\tpublic async getSupported(): Promise<\n\t\tMaybeNotKnown<readonly ColorComponent[]>\n\t> {\n\t\tthis.assertSupportsCommand(\n\t\t\tColorSwitchCommand,\n\t\t\tColorSwitchCommand.SupportedGet,\n\t\t);\n\n\t\tconst cc = new ColorSwitchCCSupportedGet({\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\tColorSwitchCCSupportedReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\treturn response?.supportedColorComponents;\n\t}\n\n\t@validateArgs({ strictEnums: true })\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async get(component: ColorComponent) {\n\t\tthis.assertSupportsCommand(ColorSwitchCommand, ColorSwitchCommand.Get);\n\n\t\tconst cc = new ColorSwitchCCGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tcolorComponent: component,\n\t\t});\n\t\tconst response = await this.host.sendCommand<ColorSwitchCCReport>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn pick(response, [\"currentValue\", \"targetValue\", \"duration\"]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async set(\n\t\toptions: ColorSwitchCCSetOptions,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(ColorSwitchCommand, ColorSwitchCommand.Set);\n\n\t\tconst cc = new ColorSwitchCCSet({\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\tconst result = await this.host.sendCommand(cc, this.commandOptions);\n\n\t\tif (isUnsupervisedOrSucceeded(result)) {\n\t\t\t// If the command did not fail, assume that it succeeded and update the values accordingly\n\t\t\t// TODO: The API methods should not modify the value DB directly, but to do so\n\t\t\t// this requires a nicer way of synchronizing hexColor with the others\n\t\t\tif (this.isSinglecast()) {\n\t\t\t\t// Update each color component separately and record the changes to the compound value\n\t\t\t\tthis.updateCurrentColor(this.getValueDB(), cc.colorTable);\n\t\t\t} else if (this.isMulticast()) {\n\t\t\t\t// Figure out which nodes were affected by this command\n\t\t\t\tconst affectedNodes = this.endpoint.node.physicalNodes.filter(\n\t\t\t\t\t(node) =>\n\t\t\t\t\t\tnode\n\t\t\t\t\t\t\t.getEndpoint(this.endpoint.index)\n\t\t\t\t\t\t\t?.supportsCC(this.ccId),\n\t\t\t\t);\n\t\t\t\t// and optimistically update the currentColor\n\t\t\t\tfor (const node of affectedNodes) {\n\t\t\t\t\tconst valueDB = this.host.tryGetValueDB(node.id);\n\t\t\t\t\tif (valueDB) {\n\t\t\t\t\t\tthis.updateCurrentColor(valueDB, cc.colorTable);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/** Updates the current color for a given node by merging in the given changes */\n\tprivate updateCurrentColor(valueDB: ValueDB, colorTable: ColorTable) {\n\t\tlet updatedRGB = false;\n\t\tconst currentColorValueId = ColorSwitchCCValues.currentColor.endpoint(\n\t\t\tthis.endpoint.index,\n\t\t);\n\t\tconst targetColorValueId = ColorSwitchCCValues.targetColor.endpoint(\n\t\t\tthis.endpoint.index,\n\t\t);\n\t\tconst currentCompoundColor =\n\t\t\tvalueDB.getValue<Partial<Record<ColorKey, number>>>(\n\t\t\t\tcurrentColorValueId,\n\t\t\t) ?? {};\n\t\tconst targetCompoundColor =\n\t\t\tvalueDB.getValue<Partial<Record<ColorKey, number>>>(\n\t\t\t\ttargetColorValueId,\n\t\t\t) ?? {};\n\n\t\tfor (const [key, value] of Object.entries(colorTable)) {\n\t\t\tconst component = colorTableKeyToComponent(key);\n\t\t\tif (\n\t\t\t\tcomponent === ColorComponent.Red\n\t\t\t\t|| component === ColorComponent.Green\n\t\t\t\t|| component === ColorComponent.Blue\n\t\t\t) {\n\t\t\t\tupdatedRGB = true;\n\t\t\t}\n\n\t\t\tvalueDB.setValue(\n\t\t\t\tColorSwitchCCValues.currentColorChannel(component).endpoint(\n\t\t\t\t\tthis.endpoint.index,\n\t\t\t\t),\n\t\t\t\tvalue,\n\t\t\t);\n\n\t\t\t// Update the compound value\n\t\t\tif (key in ColorComponentMap) {\n\t\t\t\tcurrentCompoundColor[key as ColorKey] = value;\n\t\t\t\ttargetCompoundColor[key as ColorKey] = value;\n\t\t\t}\n\t\t}\n\t\t// And store the updated compound values\n\t\tvalueDB.setValue(currentColorValueId, currentCompoundColor);\n\t\tvalueDB.setValue(targetColorValueId, targetCompoundColor);\n\n\t\t// and hex color if necessary\n\t\tconst supportsHex = valueDB.getValue<boolean>(\n\t\t\tColorSwitchCCValues.supportsHexColor.endpoint(this.endpoint.index),\n\t\t);\n\t\tif (supportsHex && updatedRGB) {\n\t\t\tconst hexValueId = ColorSwitchCCValues.hexColor.endpoint(\n\t\t\t\tthis.endpoint.index,\n\t\t\t);\n\t\t\tconst [r, g, b] = [\n\t\t\t\tColorComponent.Red,\n\t\t\t\tColorComponent.Green,\n\t\t\t\tColorComponent.Blue,\n\t\t\t].map(\n\t\t\t\t(c) =>\n\t\t\t\t\tvalueDB.getValue<number>(\n\t\t\t\t\t\tColorSwitchCCValues.currentColorChannel(c).endpoint(\n\t\t\t\t\t\t\tthis.endpoint.index,\n\t\t\t\t\t\t),\n\t\t\t\t\t) ?? 0,\n\t\t\t);\n\t\t\tconst hexValue = (r << 16) | (g << 8) | b;\n\t\t\tvalueDB.setValue(\n\t\t\t\thexValueId,\n\t\t\t\thexValue.toString(16).padStart(6, \"0\"),\n\t\t\t);\n\t\t}\n\t}\n\n\t@validateArgs({ strictEnums: true })\n\tpublic async startLevelChange(\n\t\toptions: ColorSwitchCCStartLevelChangeOptions,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tColorSwitchCommand,\n\t\t\tColorSwitchCommand.StartLevelChange,\n\t\t);\n\n\t\tconst cc = new ColorSwitchCCStartLevelChange({\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({ strictEnums: true })\n\tpublic async stopLevelChange(\n\t\tcolorComponent: ColorComponent,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tColorSwitchCommand,\n\t\t\tColorSwitchCommand.StopLevelChange,\n\t\t);\n\n\t\tconst cc = new ColorSwitchCCStopLevelChange({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tcolorComponent,\n\t\t});\n\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\tprotected override get [SET_VALUE](): SetValueImplementation {\n\t\treturn async function(\n\t\t\tthis: ColorSwitchCCAPI,\n\t\t\t{ property, propertyKey },\n\t\t\tvalue,\n\t\t\toptions,\n\t\t) {\n\t\t\tif (property === \"targetColor\") {\n\t\t\t\tconst duration = Duration.from(options?.transitionDuration);\n\t\t\t\tif (propertyKey != undefined) {\n\t\t\t\t\t// Single color component, only accepts numbers\n\t\t\t\t\tif (typeof propertyKey !== \"number\") {\n\t\t\t\t\t\tthrowUnsupportedPropertyKey(\n\t\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (typeof value !== \"number\") {\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\"number\",\n\t\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst result = await this.set({\n\t\t\t\t\t\t[propertyKey]: value,\n\t\t\t\t\t\tduration,\n\t\t\t\t\t});\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.isSinglecast()\n\t\t\t\t\t\t&& !supervisedCommandSucceeded(result)\n\t\t\t\t\t) {\n\t\t\t\t\t\t// Verify the current value after a (short) delay, unless the command was supervised and successful\n\t\t\t\t\t\tthis.schedulePoll({ property, propertyKey }, value, {\n\t\t\t\t\t\t\tduration,\n\t\t\t\t\t\t\ttransition: \"fast\",\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\treturn result;\n\t\t\t\t} else {\n\t\t\t\t\t// Set the compound color object\n\n\t\t\t\t\t// Ensure the value is an object with only valid keys\n\t\t\t\t\tif (\n\t\t\t\t\t\t!isObject(value)\n\t\t\t\t\t\t|| !Object.keys(value).every(\n\t\t\t\t\t\t\t(key) => key in ColorComponentMap,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t\t\t`${\n\t\t\t\t\t\t\t\tCommandClasses[this.ccId]\n\t\t\t\t\t\t\t}: \"${property}\" must be set to an object which specifies each color channel`,\n\t\t\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Ensure that each property is numeric\n\t\t\t\t\tfor (const [key, val] of Object.entries(value)) {\n\t\t\t\t\t\tif (typeof val !== \"number\") {\n\t\t\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\t\t\t`${property}.${key}`,\n\t\t\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\t\t\ttypeof val,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// GH#2527: strip unsupported color components, because some devices don't react otherwise\n\t\t\t\t\tif (this.isSinglecast()) {\n\t\t\t\t\t\tconst supportedColors = this.tryGetValueDB()?.getValue<\n\t\t\t\t\t\t\treadonly ColorComponent[]\n\t\t\t\t\t\t>(\n\t\t\t\t\t\t\tColorSwitchCCValues.supportedColorComponents\n\t\t\t\t\t\t\t\t.endpoint(\n\t\t\t\t\t\t\t\t\tthis.endpoint.index,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (supportedColors) {\n\t\t\t\t\t\t\tvalue = pick(\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\tsupportedColors\n\t\t\t\t\t\t\t\t\t.map((c) => colorComponentToTableKey(c))\n\t\t\t\t\t\t\t\t\t.filter((c) => !!c),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Avoid sending empty commands\n\t\t\t\t\tif (Object.keys(value as any).length === 0) return;\n\n\t\t\t\t\treturn this.set({ ...(value as ColorTable), duration });\n\n\t\t\t\t\t// We're not going to poll each color component separately\n\t\t\t\t}\n\t\t\t} else if (property === \"hexColor\") {\n\t\t\t\t// No property key, this is the hex color #rrggbb\n\t\t\t\tif (typeof value !== \"string\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst duration = Duration.from(options?.transitionDuration);\n\t\t\t\treturn this.set({ hexColor: value, duration });\n\t\t\t} else {\n\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic isSetValueOptimistic(_valueId: ValueID): boolean {\n\t\treturn false; // Color Switch CC handles updating the value DB itself\n\t}\n\n\tprotected get [POLL_VALUE](): PollValueImplementation {\n\t\treturn async function(\n\t\t\tthis: ColorSwitchCCAPI,\n\t\t\t{ property, propertyKey },\n\t\t) {\n\t\t\tif (propertyKey == undefined) {\n\t\t\t\tthrowMissingPropertyKey(this.ccId, property);\n\t\t\t} else if (typeof propertyKey !== \"number\") {\n\t\t\t\tthrowUnsupportedPropertyKey(this.ccId, property, propertyKey);\n\t\t\t}\n\n\t\t\tswitch (property) {\n\t\t\t\tcase \"currentColor\":\n\t\t\t\t\treturn (await this.get(propertyKey))?.currentValue;\n\t\t\t\tcase \"targetColor\":\n\t\t\t\t\treturn (await this.get(propertyKey))?.targetValue;\n\t\t\t\tcase \"duration\":\n\t\t\t\t\treturn (await this.get(propertyKey))?.duration;\n\t\t\t\tdefault:\n\t\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n}\n\n@commandClass(CommandClasses[\"Color Switch\"])\n@implementedVersion(3)\n@ccValues(ColorSwitchCCValues)\nexport class ColorSwitchCC extends CommandClass {\n\tdeclare ccCommand: ColorSwitchCommand;\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[\"Color Switch\"],\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 supported colors...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tconst supportedColors = await api.getSupported();\n\t\tif (!supportedColors) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t\"Querying supported colors timed out, skipping interview...\",\n\t\t\t\tlevel: \"warn\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: `received supported colors:${\n\t\t\t\tsupportedColors\n\t\t\t\t\t.map((c) => `\\n\u00B7 ${getEnumMemberName(ColorComponent, c)}`)\n\t\t\t\t\t.join(\"\")\n\t\t\t}`,\n\t\t\tdirection: \"outbound\",\n\t\t});\n\n\t\t// Create metadata for the separate color channels\n\t\tfor (const color of supportedColors) {\n\t\t\tconst currentColorChannelValue = ColorSwitchCCValues\n\t\t\t\t.currentColorChannel(color);\n\t\t\tthis.setMetadata(ctx, currentColorChannelValue);\n\n\t\t\tconst targetColorChannelValue = ColorSwitchCCValues\n\t\t\t\t.targetColorChannel(color);\n\t\t\tthis.setMetadata(ctx, targetColorChannelValue);\n\t\t}\n\t\t// And the compound one\n\t\tconst currentColorValue = ColorSwitchCCValues.currentColor;\n\t\tthis.setMetadata(ctx, currentColorValue);\n\t\tconst targetColorValue = ColorSwitchCCValues.targetColor;\n\t\tthis.setMetadata(ctx, targetColorValue);\n\n\t\t// Create the collective HEX color values\n\t\tconst supportsHex = [\n\t\t\tColorComponent.Red,\n\t\t\tColorComponent.Green,\n\t\t\tColorComponent.Blue,\n\t\t].every((c) => supportedColors.includes(c));\n\t\tthis.setValue(\n\t\t\tctx,\n\t\t\tColorSwitchCCValues.supportsHexColor,\n\t\t\tsupportsHex,\n\t\t);\n\t\tif (supportsHex) {\n\t\t\tconst hexColorValue = ColorSwitchCCValues.hexColor;\n\t\t\tthis.setMetadata(ctx, hexColorValue);\n\t\t}\n\n\t\t// Query all color components\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[\"Color Switch\"],\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\n\n\t\tconst supportedColors: readonly ColorComponent[] = this.getValue(\n\t\t\tctx,\n\t\t\tColorSwitchCCValues.supportedColorComponents,\n\t\t) ?? [];\n\n\t\tfor (const color of supportedColors) {\n\t\t\t// Some devices report invalid colors, but the CC API checks\n\t\t\t// for valid values and throws otherwise.\n\t\t\tif (!isEnumMember(ColorComponent, color)) continue;\n\n\t\t\tconst colorName = getEnumMemberName(ColorComponent, color);\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: `querying current color state (${colorName})`,\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tawait api.get(color);\n\t\t}\n\t}\n\n\tpublic translatePropertyKey(\n\t\tctx: GetValueDB,\n\t\tproperty: string | number,\n\t\tpropertyKey: string | number,\n\t): string | undefined {\n\t\tif (\n\t\t\t(property === \"currentColor\" || property === \"targetColor\")\n\t\t\t&& typeof propertyKey === \"number\"\n\t\t) {\n\t\t\tconst translated = ColorComponent[propertyKey];\n\t\t\tif (translated) return translated;\n\t\t}\n\t\treturn super.translatePropertyKey(ctx, property, propertyKey);\n\t}\n}\n\n// @publicAPI\nexport interface ColorSwitchCCSupportedReportOptions {\n\tsupportedColorComponents: readonly ColorComponent[];\n}\n\n@CCCommand(ColorSwitchCommand.SupportedReport)\n@ccValueProperty(\n\t\"supportedColorComponents\",\n\tColorSwitchCCValues.supportedColorComponents,\n)\nexport class ColorSwitchCCSupportedReport extends ColorSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ColorSwitchCCSupportedReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.supportedColorComponents = options.supportedColorComponents;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ColorSwitchCCSupportedReport {\n\t\t// Docs say 'variable length', but the table shows 2 bytes.\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst supportedColorComponents: ColorComponent[] = parseBitMask(\n\t\t\traw.payload.subarray(0, 2),\n\t\t\tColorComponent[\"Warm White\"],\n\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsupportedColorComponents,\n\t\t});\n\t}\n\n\tpublic readonly supportedColorComponents: readonly ColorComponent[];\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = encodeBitMask(\n\t\t\tthis.supportedColorComponents,\n\t\t\t15, // fixed 2 bytes\n\t\t\tColorComponent[\"Warm White\"],\n\t\t);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"supported color components\": this.supportedColorComponents\n\t\t\t\t\t.map((c) => `\\n\u00B7 ${getEnumMemberName(ColorComponent, c)}`)\n\t\t\t\t\t.join(\"\"),\n\t\t\t},\n\t\t};\n\t}\n}\n\n@CCCommand(ColorSwitchCommand.SupportedGet)\n@expectedCCResponse(ColorSwitchCCSupportedReport)\nexport class ColorSwitchCCSupportedGet extends ColorSwitchCC {}\n\n// @publicAPI\nexport interface ColorSwitchCCReportOptions {\n\tcolorComponent: ColorComponent;\n\tcurrentValue: number;\n\ttargetValue?: number;\n\tduration?: Duration | string;\n}\n\n@CCCommand(ColorSwitchCommand.Report)\n@ccValueProperty(\n\t\"currentValue\",\n\tColorSwitchCCValues.currentColorChannel,\n\t(self) => [self.colorComponent],\n)\n@ccValueProperty(\n\t\"targetValue\",\n\tColorSwitchCCValues.targetColorChannel,\n\t(self) => [self.colorComponent],\n)\n@ccValueProperty(\"duration\", ColorSwitchCCValues.duration)\nexport class ColorSwitchCCReport extends ColorSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ColorSwitchCCReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.colorComponent = options.colorComponent;\n\t\tthis.currentValue = options.currentValue;\n\t\tthis.targetValue = options.targetValue;\n\t\tthis.duration = Duration.from(options.duration);\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): ColorSwitchCCReport {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst colorComponent: ColorComponent = raw.payload[0];\n\t\tconst currentValue = raw.payload[1];\n\t\tlet targetValue: number | undefined;\n\t\tlet duration: Duration | undefined;\n\n\t\tif (raw.payload.length >= 4) {\n\t\t\ttargetValue = raw.payload[2];\n\t\t\tduration = Duration.parseReport(raw.payload[3]);\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tcolorComponent,\n\t\t\tcurrentValue,\n\t\t\ttargetValue,\n\t\t\tduration,\n\t\t});\n\t}\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\t// Duration is stored globally instead of per component\n\t\tif (!super.persistValues(ctx)) return false;\n\n\t\t// Update compound current value\n\t\tconst colorTableKey = colorComponentToTableKey(this.colorComponent);\n\t\tif (colorTableKey) {\n\t\t\tconst compoundCurrentColorValue = ColorSwitchCCValues.currentColor;\n\t\t\tconst compoundCurrentColor: Partial<Record<ColorKey, number>> =\n\t\t\t\tthis.getValue(ctx, compoundCurrentColorValue) ?? {};\n\t\t\tcompoundCurrentColor[colorTableKey] = this.currentValue;\n\t\t\tthis.setValue(\n\t\t\t\tctx,\n\t\t\t\tcompoundCurrentColorValue,\n\t\t\t\tcompoundCurrentColor,\n\t\t\t);\n\n\t\t\t// and target value\n\t\t\tif (this.targetValue != undefined) {\n\t\t\t\tconst compoundTargetColorValue =\n\t\t\t\t\tColorSwitchCCValues.targetColor;\n\t\t\t\tconst compoundTargetColor: Partial<Record<ColorKey, number>> =\n\t\t\t\t\tthis.getValue(ctx, compoundTargetColorValue) ?? {};\n\t\t\t\tcompoundTargetColor[colorTableKey] = this.targetValue;\n\t\t\t\tthis.setValue(\n\t\t\t\t\tctx,\n\t\t\t\t\tcompoundTargetColorValue,\n\t\t\t\t\tcompoundTargetColor,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Update collective hex value if required\n\t\tconst supportsHex = !!this.getValue(\n\t\t\tctx,\n\t\t\tColorSwitchCCValues.supportsHexColor,\n\t\t);\n\t\tif (\n\t\t\tsupportsHex\n\t\t\t&& (this.colorComponent === ColorComponent.Red\n\t\t\t\t|| this.colorComponent === ColorComponent.Green\n\t\t\t\t|| this.colorComponent === ColorComponent.Blue)\n\t\t) {\n\t\t\tconst hexColorValue = ColorSwitchCCValues.hexColor;\n\n\t\t\tconst hexValue: string = this.getValue(ctx, hexColorValue)\n\t\t\t\t?? \"000000\";\n\t\t\tconst byteOffset = ColorComponent.Blue - this.colorComponent;\n\t\t\tconst byteMask = 0xff << (byteOffset * 8);\n\t\t\tlet hexValueNumeric = parseInt(hexValue, 16);\n\t\t\thexValueNumeric = (hexValueNumeric & ~byteMask)\n\t\t\t\t| (this.currentValue << (byteOffset * 8));\n\t\t\tthis.setValue(\n\t\t\t\tctx,\n\t\t\t\thexColorValue,\n\t\t\t\thexValueNumeric.toString(16).padStart(6, \"0\"),\n\t\t\t);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tpublic readonly colorComponent: ColorComponent;\n\n\tpublic readonly currentValue: number;\n\n\tpublic readonly targetValue: number | undefined;\n\n\tpublic readonly duration: Duration | undefined;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.colorComponent,\n\t\t\tthis.currentValue,\n\t\t]);\n\t\tif (this.targetValue != undefined && this.duration != undefined) {\n\t\t\tthis.payload = Bytes.concat([\n\t\t\t\tthis.payload,\n\t\t\t\tBytes.from([\n\t\t\t\t\tthis.targetValue ?? 0xfe,\n\t\t\t\t\t(this.duration ?? Duration.default()).serializeReport(),\n\t\t\t\t]),\n\t\t\t]);\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"color component\": getEnumMemberName(\n\t\t\t\tColorComponent,\n\t\t\t\tthis.colorComponent,\n\t\t\t),\n\t\t\t\"current value\": this.currentValue,\n\t\t};\n\t\tif (this.targetValue != undefined) {\n\t\t\tmessage[\"target value\"] = this.targetValue;\n\t\t}\n\t\tif (this.duration != undefined) {\n\t\t\tmessage.duration = this.duration.toString();\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 ColorSwitchCCGetOptions {\n\tcolorComponent: ColorComponent;\n}\n\nfunction testResponseForColorSwitchGet(\n\tsent: ColorSwitchCCGet,\n\treceived: ColorSwitchCCReport,\n) {\n\treturn sent.colorComponent === received.colorComponent;\n}\n\n@CCCommand(ColorSwitchCommand.Get)\n@expectedCCResponse(ColorSwitchCCReport, testResponseForColorSwitchGet)\nexport class ColorSwitchCCGet extends ColorSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ColorSwitchCCGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis._colorComponent = options.colorComponent;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): ColorSwitchCCGet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst colorComponent: ColorComponent = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tcolorComponent,\n\t\t});\n\t}\n\n\tprivate _colorComponent: ColorComponent;\n\tpublic get colorComponent(): ColorComponent {\n\t\treturn this._colorComponent;\n\t}\n\tpublic set colorComponent(value: ColorComponent) {\n\t\tif (!ColorComponent[value]) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"colorComponent must be a valid color component index.\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis._colorComponent = value;\n\t}\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this._colorComponent]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"color component\": getEnumMemberName(\n\t\t\t\t\tColorComponent,\n\t\t\t\t\tthis.colorComponent,\n\t\t\t\t),\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport type ColorSwitchCCSetOptions = (ColorTable | { hexColor: string }) & {\n\tduration?: Duration | string;\n};\n\n@CCCommand(ColorSwitchCommand.Set)\n@useSupervision()\nexport class ColorSwitchCCSet extends ColorSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ColorSwitchCCSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\t// Populate properties from options object\n\t\tif (\"hexColor\" in options) {\n\t\t\tconst match = hexColorRegex.exec(options.hexColor);\n\t\t\tif (!match) {\n\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t`${options.hexColor} is not a valid HEX color string`,\n\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis.colorTable = {\n\t\t\t\tred: parseInt(match.groups!.red, 16),\n\t\t\t\tgreen: parseInt(match.groups!.green, 16),\n\t\t\t\tblue: parseInt(match.groups!.blue, 16),\n\t\t\t};\n\t\t} else {\n\t\t\tthis.colorTable = pick(options, colorTableKeys as any[]);\n\t\t}\n\t\tthis.duration = Duration.from(options.duration);\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): ColorSwitchCCSet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst populatedColorCount = raw.payload[0] & 0b11111;\n\n\t\tvalidatePayload(raw.payload.length >= 1 + populatedColorCount * 2);\n\t\tconst colorTable: ColorTable = {};\n\t\tlet offset = 1;\n\t\tfor (let color = 0; color < populatedColorCount; color++) {\n\t\t\tconst component = raw.payload[offset];\n\t\t\tconst value = raw.payload[offset + 1];\n\t\t\tconst key = colorComponentToTableKey(component);\n\t\t\t// @ts-expect-error\n\t\t\tif (key) this.colorTable[key] = value;\n\t\t\toffset += 2;\n\t\t}\n\n\t\tlet duration: Duration | undefined;\n\t\tif (raw.payload.length > offset) {\n\t\t\tduration = Duration.parseSet(raw.payload[offset]);\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\t...colorTable,\n\t\t\tduration,\n\t\t});\n\t}\n\n\tpublic colorTable: ColorTable;\n\tpublic duration: Duration | undefined;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tconst populatedColorCount = Object.keys(this.colorTable).length;\n\t\tthis.payload = new Bytes(\n\t\t\t1 + populatedColorCount * 2 + 1,\n\t\t);\n\t\tthis.payload[0] = populatedColorCount & 0b11111;\n\t\tlet i = 1;\n\t\tfor (const [key, value] of Object.entries(this.colorTable)) {\n\t\t\tconst component = colorTableKeyToComponent(key);\n\t\t\tthis.payload[i] = component;\n\t\t\tthis.payload[i + 1] = clamp(value, 0, 0xff);\n\t\t\ti += 2;\n\t\t}\n\t\tthis.payload[i] = (\n\t\t\tthis.duration ?? Duration.default()\n\t\t).serializeSet();\n\n\t\tconst ccVersion = getEffectiveCCVersion(ctx, this);\n\t\tif (\n\t\t\tccVersion < 2 && ctx.getDeviceConfig?.(\n\t\t\t\tthis.nodeId as number,\n\t\t\t)?.compat?.encodeCCsUsingTargetVersion\n\t\t) {\n\t\t\t// When forcing CC version 1, omit the duration byte\n\t\t\tthis.payload = this.payload.subarray(0, -1);\n\t\t}\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {};\n\t\tfor (const [key, value] of Object.entries(this.colorTable)) {\n\t\t\tconst realKey: string = key in ColorComponentMap\n\t\t\t\t? (ColorComponent as any)[(ColorComponentMap as any)[key]]\n\t\t\t\t: (ColorComponent as any)[key];\n\t\t\tmessage[realKey] = value;\n\t\t}\n\t\tif (this.duration != undefined) {\n\t\t\tmessage.duration = this.duration.toString();\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 type ColorSwitchCCStartLevelChangeOptions =\n\t& {\n\t\tcolorComponent: ColorComponent;\n\t\tdirection: keyof typeof LevelChangeDirection;\n\t}\n\t& (\n\t\t| {\n\t\t\tignoreStartLevel: true;\n\t\t\tstartLevel?: number;\n\t\t}\n\t\t| {\n\t\t\tignoreStartLevel: false;\n\t\t\tstartLevel: number;\n\t\t}\n\t)\n\t& {\n\t\t// Version >= 3:\n\t\tduration?: Duration | string;\n\t};\n\n@CCCommand(ColorSwitchCommand.StartLevelChange)\n@useSupervision()\nexport class ColorSwitchCCStartLevelChange extends ColorSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ColorSwitchCCStartLevelChangeOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.duration = Duration.from(options.duration);\n\t\tthis.ignoreStartLevel = options.ignoreStartLevel;\n\t\tthis.startLevel = options.startLevel ?? 0;\n\t\tthis.direction = options.direction;\n\t\tthis.colorComponent = options.colorComponent;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ColorSwitchCCStartLevelChange {\n\t\tvalidatePayload(raw.payload.length >= 3);\n\t\tconst ignoreStartLevel = !!((raw.payload[0] & 0b0_0_1_00000) >>> 5);\n\t\tconst direction = ((raw.payload[0] & 0b0_1_0_00000) >>> 6)\n\t\t\t? \"down\"\n\t\t\t: \"up\";\n\t\tconst colorComponent: ColorComponent = raw.payload[1];\n\t\tconst startLevel = raw.payload[2];\n\t\tlet duration: Duration | undefined;\n\t\tif (raw.payload.length >= 4) {\n\t\t\tduration = Duration.parseSet(raw.payload[3]);\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tignoreStartLevel,\n\t\t\tdirection,\n\t\t\tcolorComponent,\n\t\t\tstartLevel,\n\t\t\tduration,\n\t\t});\n\t}\n\n\tpublic duration: Duration | undefined;\n\tpublic startLevel: number;\n\tpublic ignoreStartLevel: boolean;\n\tpublic direction: keyof typeof LevelChangeDirection;\n\tpublic colorComponent: ColorComponent;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tconst controlByte = (LevelChangeDirection[this.direction] << 6)\n\t\t\t| (this.ignoreStartLevel ? 0b0010_0000 : 0);\n\t\tthis.payload = Bytes.from([\n\t\t\tcontrolByte,\n\t\t\tthis.colorComponent,\n\t\t\tthis.startLevel,\n\t\t\t(this.duration ?? Duration.default()).serializeSet(),\n\t\t]);\n\n\t\tconst ccVersion = getEffectiveCCVersion(ctx, this);\n\t\tif (\n\t\t\tccVersion < 3 && ctx.getDeviceConfig?.(\n\t\t\t\tthis.nodeId as number,\n\t\t\t)?.compat?.encodeCCsUsingTargetVersion\n\t\t) {\n\t\t\t// When forcing CC version 1 or 2, omit the duration byte\n\t\t\tthis.payload = this.payload.subarray(0, -1);\n\t\t}\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"color component\": getEnumMemberName(\n\t\t\t\tColorComponent,\n\t\t\t\tthis.colorComponent,\n\t\t\t),\n\t\t\t\"start level\": `${this.startLevel}${\n\t\t\t\tthis.ignoreStartLevel ? \" (ignored)\" : \"\"\n\t\t\t}`,\n\t\t\tdirection: this.direction,\n\t\t};\n\t\tif (this.duration != undefined) {\n\t\t\tmessage.duration = this.duration.toString();\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 ColorSwitchCCStopLevelChangeOptions {\n\tcolorComponent: ColorComponent;\n}\n\n@CCCommand(ColorSwitchCommand.StopLevelChange)\n@useSupervision()\nexport class ColorSwitchCCStopLevelChange extends ColorSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ColorSwitchCCStopLevelChangeOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.colorComponent = options.colorComponent;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ColorSwitchCCStopLevelChange {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst colorComponent: ColorComponent = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tcolorComponent,\n\t\t});\n\t}\n\n\tpublic readonly colorComponent: ColorComponent;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.colorComponent]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"color component\": getEnumMemberName(\n\t\t\t\t\tColorComponent,\n\t\t\t\t\tthis.colorComponent,\n\t\t\t\t),\n\t\t\t},\n\t\t};\n\t}\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { type CCEncodingContext, type CCParsingContext } from \"@zwave-js/cc\";\nimport {\n\tCommandClasses,\n\tDuration,\n\ttype GetValueDB,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\ttype MessageRecord,\n\ttype SupervisionResult,\n\ttype ValueDB,\n\ttype ValueID,\n\tValueMetadata,\n\ttype WithAddress,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tisUnsupervisedOrSucceeded,\n\tparseBitMask,\n\tsupervisedCommandSucceeded,\n\tvalidatePayload,\n} from \"@zwave-js/core\";\nimport { type MaybeNotKnown, encodeBitMask } from \"@zwave-js/core/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport {\n\tgetEnumMemberName,\n\tisEnumMember,\n\tkeysOf,\n\tpick,\n} from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport { clamp } from \"alcalzone-shared/math\";\nimport { isObject } from \"alcalzone-shared/typeguards\";\nimport {\n\tCCAPI,\n\tPOLL_VALUE,\n\ttype PollValueImplementation,\n\tSET_VALUE,\n\ttype SetValueImplementation,\n\tthrowMissingPropertyKey,\n\tthrowUnsupportedProperty,\n\tthrowUnsupportedPropertyKey,\n\tthrowWrongValueType,\n} from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\n\ttype PersistValuesContext,\n\ttype RefreshValuesContext,\n\tgetEffectiveCCVersion,\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\tColorComponent,\n\tColorComponentMap,\n\ttype ColorKey,\n\tColorSwitchCommand,\n\ttype ColorTable,\n\tLevelChangeDirection,\n} from \"../lib/_Types.js\";\n\nconst hexColorRegex =\n\t/^#?(?<red>[0-9a-f]{2})(?<green>[0-9a-f]{2})(?<blue>[0-9a-f]{2})$/i;\n\nconst colorTableKeys = [\n\t...keysOf(ColorComponent),\n\t...keysOf(ColorComponentMap),\n];\n\nfunction colorTableKeyToComponent(key: string): ColorComponent {\n\tif (/^\\d+$/.test(key)) {\n\t\treturn parseInt(key, 10);\n\t} else if (key in ColorComponentMap) {\n\t\treturn (ColorComponentMap as any)[key];\n\t} else if (key in ColorComponent) {\n\t\treturn (ColorComponent as any)[key];\n\t}\n\tthrow new ZWaveError(\n\t\t`Invalid color key ${key}!`,\n\t\tZWaveErrorCodes.Argument_Invalid,\n\t);\n}\n\nfunction colorComponentToTableKey(\n\tcomponent: ColorComponent,\n): ColorKey | undefined {\n\tfor (const [key, comp] of Object.entries(ColorComponentMap)) {\n\t\tif (comp === component) return key as any;\n\t}\n}\n\nexport const ColorSwitchCCValues = Object.freeze({\n\t...V.defineStaticCCValues(CommandClasses[\"Color Switch\"], {\n\t\t...V.staticProperty(\"supportedColorComponents\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\t\t...V.staticProperty(\"supportsHexColor\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\n\t\t// The compound color (static)\n\t\t...V.staticPropertyWithName(\n\t\t\t\"currentColor\",\n\t\t\t\"currentColor\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.ReadOnly,\n\t\t\t\tlabel: `Current color`,\n\t\t\t} as const,\n\t\t),\n\t\t...V.staticPropertyWithName(\n\t\t\t\"targetColor\",\n\t\t\t\"targetColor\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.Any,\n\t\t\t\tlabel: `Target color`,\n\t\t\t\tvalueChangeOptions: [\"transitionDuration\"],\n\t\t\t} as const,\n\t\t),\n\t\t...V.staticProperty(\n\t\t\t\"duration\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.ReadOnlyDuration,\n\t\t\t\tlabel: \"Remaining duration\",\n\t\t\t} as const,\n\t\t),\n\n\t\t// The compound color as HEX\n\t\t...V.staticProperty(\n\t\t\t\"hexColor\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.Color,\n\t\t\t\tminLength: 6,\n\t\t\t\tmaxLength: 7, // to allow #rrggbb\n\t\t\t\tlabel: `RGB Color`,\n\t\t\t\tvalueChangeOptions: [\"transitionDuration\"],\n\t\t\t} as const,\n\t\t),\n\t}),\n\n\t...V.defineDynamicCCValues(CommandClasses[\"Color Switch\"], {\n\t\t// The individual color channels (dynamic)\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"currentColorChannel\",\n\t\t\t\"currentColor\",\n\t\t\t(component: ColorComponent) => component,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"currentColor\" && typeof propertyKey === \"number\",\n\t\t\t(component: ColorComponent) => {\n\t\t\t\tconst colorName = getEnumMemberName(ColorComponent, component);\n\t\t\t\treturn {\n\t\t\t\t\t...ValueMetadata.ReadOnlyUInt8,\n\t\t\t\t\tlabel: `Current value (${colorName})`,\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t`The current value of the ${colorName} channel.`,\n\t\t\t\t} as const;\n\t\t\t},\n\t\t),\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"targetColorChannel\",\n\t\t\t\"targetColor\",\n\t\t\t(component: ColorComponent) => component,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"targetColor\" && typeof propertyKey === \"number\",\n\t\t\t(component: ColorComponent) => {\n\t\t\t\tconst colorName = getEnumMemberName(ColorComponent, component);\n\t\t\t\treturn {\n\t\t\t\t\t...ValueMetadata.UInt8,\n\t\t\t\t\tlabel: `Target value (${colorName})`,\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t`The target value of the ${colorName} channel.`,\n\t\t\t\t\tvalueChangeOptions: [\"transitionDuration\"],\n\t\t\t\t} as const;\n\t\t\t},\n\t\t),\n\t}),\n});\n\n@API(CommandClasses[\"Color Switch\"])\nexport class ColorSwitchCCAPI extends CCAPI {\n\tpublic supportsCommand(cmd: ColorSwitchCommand): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase ColorSwitchCommand.SupportedGet:\n\t\t\tcase ColorSwitchCommand.Get:\n\t\t\t\treturn this.isSinglecast();\n\t\t\tcase ColorSwitchCommand.Set:\n\t\t\tcase ColorSwitchCommand.StartLevelChange:\n\t\t\tcase ColorSwitchCommand.StopLevelChange:\n\t\t\t\treturn true; // These are mandatory\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\tpublic async getSupported(): Promise<\n\t\tMaybeNotKnown<readonly ColorComponent[]>\n\t> {\n\t\tthis.assertSupportsCommand(\n\t\t\tColorSwitchCommand,\n\t\t\tColorSwitchCommand.SupportedGet,\n\t\t);\n\n\t\tconst cc = new ColorSwitchCCSupportedGet({\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\tColorSwitchCCSupportedReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\treturn response?.supportedColorComponents;\n\t}\n\n\t@validateArgs({ strictEnums: true })\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async get(component: ColorComponent) {\n\t\tthis.assertSupportsCommand(ColorSwitchCommand, ColorSwitchCommand.Get);\n\n\t\tconst cc = new ColorSwitchCCGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tcolorComponent: component,\n\t\t});\n\t\tconst response = await this.host.sendCommand<ColorSwitchCCReport>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn pick(response, [\"currentValue\", \"targetValue\", \"duration\"]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async set(\n\t\toptions: ColorSwitchCCSetOptions,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(ColorSwitchCommand, ColorSwitchCommand.Set);\n\n\t\tconst cc = new ColorSwitchCCSet({\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\tconst result = await this.host.sendCommand(cc, this.commandOptions);\n\n\t\tif (isUnsupervisedOrSucceeded(result)) {\n\t\t\t// If the command did not fail, assume that it succeeded and update the values accordingly\n\t\t\t// TODO: The API methods should not modify the value DB directly, but to do so\n\t\t\t// this requires a nicer way of synchronizing hexColor with the others\n\t\t\tif (this.isSinglecast()) {\n\t\t\t\t// Update each color component separately and record the changes to the compound value\n\t\t\t\tthis.updateCurrentColor(this.getValueDB(), cc.colorTable);\n\t\t\t} else if (this.isMulticast()) {\n\t\t\t\t// Figure out which nodes were affected by this command\n\t\t\t\tconst affectedNodes = this.endpoint.node.physicalNodes.filter(\n\t\t\t\t\t(node) =>\n\t\t\t\t\t\tnode\n\t\t\t\t\t\t\t.getEndpoint(this.endpoint.index)\n\t\t\t\t\t\t\t?.supportsCC(this.ccId),\n\t\t\t\t);\n\t\t\t\t// and optimistically update the currentColor\n\t\t\t\tfor (const node of affectedNodes) {\n\t\t\t\t\tconst valueDB = this.host.tryGetValueDB(node.id);\n\t\t\t\t\tif (valueDB) {\n\t\t\t\t\t\tthis.updateCurrentColor(valueDB, cc.colorTable);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/** Updates the current color for a given node by merging in the given changes */\n\tprivate updateCurrentColor(valueDB: ValueDB, colorTable: ColorTable) {\n\t\tlet updatedRGB = false;\n\t\tconst currentColorValueId = ColorSwitchCCValues.currentColor.endpoint(\n\t\t\tthis.endpoint.index,\n\t\t);\n\t\tconst targetColorValueId = ColorSwitchCCValues.targetColor.endpoint(\n\t\t\tthis.endpoint.index,\n\t\t);\n\t\tconst currentCompoundColor =\n\t\t\tvalueDB.getValue<Partial<Record<ColorKey, number>>>(\n\t\t\t\tcurrentColorValueId,\n\t\t\t) ?? {};\n\t\tconst targetCompoundColor =\n\t\t\tvalueDB.getValue<Partial<Record<ColorKey, number>>>(\n\t\t\t\ttargetColorValueId,\n\t\t\t) ?? {};\n\n\t\tfor (const [key, value] of Object.entries(colorTable)) {\n\t\t\tconst component = colorTableKeyToComponent(key);\n\t\t\tif (\n\t\t\t\tcomponent === ColorComponent.Red\n\t\t\t\t|| component === ColorComponent.Green\n\t\t\t\t|| component === ColorComponent.Blue\n\t\t\t) {\n\t\t\t\tupdatedRGB = true;\n\t\t\t}\n\n\t\t\tvalueDB.setValue(\n\t\t\t\tColorSwitchCCValues.currentColorChannel(component).endpoint(\n\t\t\t\t\tthis.endpoint.index,\n\t\t\t\t),\n\t\t\t\tvalue,\n\t\t\t);\n\n\t\t\t// Update the compound value\n\t\t\tif (key in ColorComponentMap) {\n\t\t\t\tcurrentCompoundColor[key as ColorKey] = value;\n\t\t\t\ttargetCompoundColor[key as ColorKey] = value;\n\t\t\t}\n\t\t}\n\t\t// And store the updated compound values\n\t\tvalueDB.setValue(currentColorValueId, currentCompoundColor);\n\t\tvalueDB.setValue(targetColorValueId, targetCompoundColor);\n\n\t\t// and hex color if necessary\n\t\tconst supportsHex = valueDB.getValue<boolean>(\n\t\t\tColorSwitchCCValues.supportsHexColor.endpoint(this.endpoint.index),\n\t\t);\n\t\tif (supportsHex && updatedRGB) {\n\t\t\tconst hexValueId = ColorSwitchCCValues.hexColor.endpoint(\n\t\t\t\tthis.endpoint.index,\n\t\t\t);\n\t\t\tconst [r, g, b] = [\n\t\t\t\tColorComponent.Red,\n\t\t\t\tColorComponent.Green,\n\t\t\t\tColorComponent.Blue,\n\t\t\t].map(\n\t\t\t\t(c) =>\n\t\t\t\t\tvalueDB.getValue<number>(\n\t\t\t\t\t\tColorSwitchCCValues.currentColorChannel(c).endpoint(\n\t\t\t\t\t\t\tthis.endpoint.index,\n\t\t\t\t\t\t),\n\t\t\t\t\t) ?? 0,\n\t\t\t);\n\t\t\tconst hexValue = (r << 16) | (g << 8) | b;\n\t\t\tvalueDB.setValue(\n\t\t\t\thexValueId,\n\t\t\t\thexValue.toString(16).padStart(6, \"0\"),\n\t\t\t);\n\t\t}\n\t}\n\n\t@validateArgs({ strictEnums: true })\n\tpublic async startLevelChange(\n\t\toptions: ColorSwitchCCStartLevelChangeOptions,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tColorSwitchCommand,\n\t\t\tColorSwitchCommand.StartLevelChange,\n\t\t);\n\n\t\tconst cc = new ColorSwitchCCStartLevelChange({\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({ strictEnums: true })\n\tpublic async stopLevelChange(\n\t\tcolorComponent: ColorComponent,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tColorSwitchCommand,\n\t\t\tColorSwitchCommand.StopLevelChange,\n\t\t);\n\n\t\tconst cc = new ColorSwitchCCStopLevelChange({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tcolorComponent,\n\t\t});\n\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\tprotected override get [SET_VALUE](): SetValueImplementation {\n\t\treturn async function(\n\t\t\tthis: ColorSwitchCCAPI,\n\t\t\t{ property, propertyKey },\n\t\t\tvalue,\n\t\t\toptions,\n\t\t) {\n\t\t\tif (property === \"targetColor\") {\n\t\t\t\tconst duration = Duration.from(options?.transitionDuration);\n\t\t\t\tif (propertyKey != undefined) {\n\t\t\t\t\t// Single color component, only accepts numbers\n\t\t\t\t\tif (typeof propertyKey !== \"number\") {\n\t\t\t\t\t\tthrowUnsupportedPropertyKey(\n\t\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (typeof value !== \"number\") {\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\"number\",\n\t\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst result = await this.set({\n\t\t\t\t\t\t[propertyKey]: value,\n\t\t\t\t\t\tduration,\n\t\t\t\t\t});\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.isSinglecast()\n\t\t\t\t\t\t&& !supervisedCommandSucceeded(result)\n\t\t\t\t\t) {\n\t\t\t\t\t\t// Verify the current value after a (short) delay, unless the command was supervised and successful\n\t\t\t\t\t\tthis.schedulePoll({ property, propertyKey }, value, {\n\t\t\t\t\t\t\tduration,\n\t\t\t\t\t\t\ttransition: \"fast\",\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\treturn result;\n\t\t\t\t} else {\n\t\t\t\t\t// Set the compound color object\n\n\t\t\t\t\t// Ensure the value is an object with only valid keys\n\t\t\t\t\tif (\n\t\t\t\t\t\t!isObject(value)\n\t\t\t\t\t\t|| !Object.keys(value).every(\n\t\t\t\t\t\t\t(key) => key in ColorComponentMap,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t\t\t`${\n\t\t\t\t\t\t\t\tCommandClasses[this.ccId]\n\t\t\t\t\t\t\t}: \"${property}\" must be set to an object which specifies each color channel`,\n\t\t\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Ensure that each property is numeric\n\t\t\t\t\tfor (const [key, val] of Object.entries(value)) {\n\t\t\t\t\t\tif (typeof val !== \"number\") {\n\t\t\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\t\t\t`${property}.${key}`,\n\t\t\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\t\t\ttypeof val,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// GH#2527: strip unsupported color components, because some devices don't react otherwise\n\t\t\t\t\tif (this.isSinglecast()) {\n\t\t\t\t\t\tconst supportedColors = this.tryGetValueDB()?.getValue<\n\t\t\t\t\t\t\treadonly ColorComponent[]\n\t\t\t\t\t\t>(\n\t\t\t\t\t\t\tColorSwitchCCValues.supportedColorComponents\n\t\t\t\t\t\t\t\t.endpoint(\n\t\t\t\t\t\t\t\t\tthis.endpoint.index,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (supportedColors) {\n\t\t\t\t\t\t\tvalue = pick(\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\tsupportedColors\n\t\t\t\t\t\t\t\t\t.map((c) => colorComponentToTableKey(c))\n\t\t\t\t\t\t\t\t\t.filter((c) => !!c),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Avoid sending empty commands\n\t\t\t\t\tif (Object.keys(value as any).length === 0) return;\n\n\t\t\t\t\treturn this.set({ ...(value as ColorTable), duration });\n\n\t\t\t\t\t// We're not going to poll each color component separately\n\t\t\t\t}\n\t\t\t} else if (property === \"hexColor\") {\n\t\t\t\t// No property key, this is the hex color #rrggbb\n\t\t\t\tif (typeof value !== \"string\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst duration = Duration.from(options?.transitionDuration);\n\t\t\t\treturn this.set({ hexColor: value, duration });\n\t\t\t} else {\n\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic isSetValueOptimistic(_valueId: ValueID): boolean {\n\t\treturn false; // Color Switch CC handles updating the value DB itself\n\t}\n\n\tprotected get [POLL_VALUE](): PollValueImplementation {\n\t\treturn async function(\n\t\t\tthis: ColorSwitchCCAPI,\n\t\t\t{ property, propertyKey },\n\t\t) {\n\t\t\tif (propertyKey == undefined) {\n\t\t\t\tthrowMissingPropertyKey(this.ccId, property);\n\t\t\t} else if (typeof propertyKey !== \"number\") {\n\t\t\t\tthrowUnsupportedPropertyKey(this.ccId, property, propertyKey);\n\t\t\t}\n\n\t\t\tswitch (property) {\n\t\t\t\tcase \"currentColor\":\n\t\t\t\t\treturn (await this.get(propertyKey))?.currentValue;\n\t\t\t\tcase \"targetColor\":\n\t\t\t\t\treturn (await this.get(propertyKey))?.targetValue;\n\t\t\t\tcase \"duration\":\n\t\t\t\t\treturn (await this.get(propertyKey))?.duration;\n\t\t\t\tdefault:\n\t\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n}\n\n@commandClass(CommandClasses[\"Color Switch\"])\n@implementedVersion(3)\n@ccValues(ColorSwitchCCValues)\nexport class ColorSwitchCC extends CommandClass {\n\tdeclare ccCommand: ColorSwitchCommand;\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[\"Color Switch\"],\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 supported colors...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tconst supportedColors = await api.getSupported();\n\t\tif (!supportedColors) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t\"Querying supported colors timed out, skipping interview...\",\n\t\t\t\tlevel: \"warn\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: `received supported colors:${\n\t\t\t\tsupportedColors\n\t\t\t\t\t.map((c) => `\\n\u00B7 ${getEnumMemberName(ColorComponent, c)}`)\n\t\t\t\t\t.join(\"\")\n\t\t\t}`,\n\t\t\tdirection: \"outbound\",\n\t\t});\n\n\t\t// Create metadata for the separate color channels\n\t\tfor (const color of supportedColors) {\n\t\t\tconst currentColorChannelValue = ColorSwitchCCValues\n\t\t\t\t.currentColorChannel(color);\n\t\t\tthis.setMetadata(ctx, currentColorChannelValue);\n\n\t\t\tconst targetColorChannelValue = ColorSwitchCCValues\n\t\t\t\t.targetColorChannel(color);\n\t\t\tthis.setMetadata(ctx, targetColorChannelValue);\n\t\t}\n\t\t// And the compound one\n\t\tconst currentColorValue = ColorSwitchCCValues.currentColor;\n\t\tthis.setMetadata(ctx, currentColorValue);\n\t\tconst targetColorValue = ColorSwitchCCValues.targetColor;\n\t\tthis.setMetadata(ctx, targetColorValue);\n\n\t\t// Create the collective HEX color values\n\t\tconst supportsHex = [\n\t\t\tColorComponent.Red,\n\t\t\tColorComponent.Green,\n\t\t\tColorComponent.Blue,\n\t\t].every((c) => supportedColors.includes(c));\n\t\tthis.setValue(\n\t\t\tctx,\n\t\t\tColorSwitchCCValues.supportsHexColor,\n\t\t\tsupportsHex,\n\t\t);\n\t\tif (supportsHex) {\n\t\t\tconst hexColorValue = ColorSwitchCCValues.hexColor;\n\t\t\tthis.setMetadata(ctx, hexColorValue);\n\t\t}\n\n\t\t// Query all color components\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[\"Color Switch\"],\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\n\n\t\tconst supportedColors: readonly ColorComponent[] = this.getValue(\n\t\t\tctx,\n\t\t\tColorSwitchCCValues.supportedColorComponents,\n\t\t) ?? [];\n\n\t\tfor (const color of supportedColors) {\n\t\t\t// Some devices report invalid colors, but the CC API checks\n\t\t\t// for valid values and throws otherwise.\n\t\t\tif (!isEnumMember(ColorComponent, color)) continue;\n\n\t\t\tconst colorName = getEnumMemberName(ColorComponent, color);\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: `querying current color state (${colorName})`,\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tawait api.get(color);\n\t\t}\n\t}\n\n\tpublic translatePropertyKey(\n\t\tctx: GetValueDB,\n\t\tproperty: string | number,\n\t\tpropertyKey: string | number,\n\t): string | undefined {\n\t\tif (\n\t\t\t(property === \"currentColor\" || property === \"targetColor\")\n\t\t\t&& typeof propertyKey === \"number\"\n\t\t) {\n\t\t\tconst translated = ColorComponent[propertyKey];\n\t\t\tif (translated) return translated;\n\t\t}\n\t\treturn super.translatePropertyKey(ctx, property, propertyKey);\n\t}\n}\n\n// @publicAPI\nexport interface ColorSwitchCCSupportedReportOptions {\n\tsupportedColorComponents: readonly ColorComponent[];\n}\n\n@CCCommand(ColorSwitchCommand.SupportedReport)\n@ccValueProperty(\n\t\"supportedColorComponents\",\n\tColorSwitchCCValues.supportedColorComponents,\n)\nexport class ColorSwitchCCSupportedReport extends ColorSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ColorSwitchCCSupportedReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.supportedColorComponents = options.supportedColorComponents;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ColorSwitchCCSupportedReport {\n\t\t// Docs say 'variable length', but the table shows 2 bytes.\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst supportedColorComponents: ColorComponent[] = parseBitMask(\n\t\t\traw.payload.subarray(0, 2),\n\t\t\tColorComponent[\"Warm White\"],\n\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsupportedColorComponents,\n\t\t});\n\t}\n\n\tpublic readonly supportedColorComponents: readonly ColorComponent[];\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = encodeBitMask(\n\t\t\tthis.supportedColorComponents,\n\t\t\t15, // fixed 2 bytes\n\t\t\tColorComponent[\"Warm White\"],\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\"supported color components\": this.supportedColorComponents\n\t\t\t\t\t.map((c) => `\\n\u00B7 ${getEnumMemberName(ColorComponent, c)}`)\n\t\t\t\t\t.join(\"\"),\n\t\t\t},\n\t\t};\n\t}\n}\n\n@CCCommand(ColorSwitchCommand.SupportedGet)\n@expectedCCResponse(ColorSwitchCCSupportedReport)\nexport class ColorSwitchCCSupportedGet extends ColorSwitchCC {}\n\n// @publicAPI\nexport interface ColorSwitchCCReportOptions {\n\tcolorComponent: ColorComponent;\n\tcurrentValue: number;\n\ttargetValue?: number;\n\tduration?: Duration | string;\n}\n\n@CCCommand(ColorSwitchCommand.Report)\n@ccValueProperty(\n\t\"currentValue\",\n\tColorSwitchCCValues.currentColorChannel,\n\t(self) => [self.colorComponent],\n)\n@ccValueProperty(\n\t\"targetValue\",\n\tColorSwitchCCValues.targetColorChannel,\n\t(self) => [self.colorComponent],\n)\n@ccValueProperty(\"duration\", ColorSwitchCCValues.duration)\nexport class ColorSwitchCCReport extends ColorSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ColorSwitchCCReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.colorComponent = options.colorComponent;\n\t\tthis.currentValue = options.currentValue;\n\t\tthis.targetValue = options.targetValue;\n\t\tthis.duration = Duration.from(options.duration);\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): ColorSwitchCCReport {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst colorComponent: ColorComponent = raw.payload[0];\n\t\tconst currentValue = raw.payload[1];\n\t\tlet targetValue: number | undefined;\n\t\tlet duration: Duration | undefined;\n\n\t\tif (raw.payload.length >= 4) {\n\t\t\ttargetValue = raw.payload[2];\n\t\t\tduration = Duration.parseReport(raw.payload[3]);\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tcolorComponent,\n\t\t\tcurrentValue,\n\t\t\ttargetValue,\n\t\t\tduration,\n\t\t});\n\t}\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\t// Duration is stored globally instead of per component\n\t\tif (!super.persistValues(ctx)) return false;\n\n\t\t// Update compound current value\n\t\tconst colorTableKey = colorComponentToTableKey(this.colorComponent);\n\t\tif (colorTableKey) {\n\t\t\tconst compoundCurrentColorValue = ColorSwitchCCValues.currentColor;\n\t\t\tconst compoundCurrentColor: Partial<Record<ColorKey, number>> =\n\t\t\t\tthis.getValue(ctx, compoundCurrentColorValue) ?? {};\n\t\t\tcompoundCurrentColor[colorTableKey] = this.currentValue;\n\t\t\tthis.setValue(\n\t\t\t\tctx,\n\t\t\t\tcompoundCurrentColorValue,\n\t\t\t\tcompoundCurrentColor,\n\t\t\t);\n\n\t\t\t// and target value\n\t\t\tif (this.targetValue != undefined) {\n\t\t\t\tconst compoundTargetColorValue =\n\t\t\t\t\tColorSwitchCCValues.targetColor;\n\t\t\t\tconst compoundTargetColor: Partial<Record<ColorKey, number>> =\n\t\t\t\t\tthis.getValue(ctx, compoundTargetColorValue) ?? {};\n\t\t\t\tcompoundTargetColor[colorTableKey] = this.targetValue;\n\t\t\t\tthis.setValue(\n\t\t\t\t\tctx,\n\t\t\t\t\tcompoundTargetColorValue,\n\t\t\t\t\tcompoundTargetColor,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Update collective hex value if required\n\t\tconst supportsHex = !!this.getValue(\n\t\t\tctx,\n\t\t\tColorSwitchCCValues.supportsHexColor,\n\t\t);\n\t\tif (\n\t\t\tsupportsHex\n\t\t\t&& (this.colorComponent === ColorComponent.Red\n\t\t\t\t|| this.colorComponent === ColorComponent.Green\n\t\t\t\t|| this.colorComponent === ColorComponent.Blue)\n\t\t) {\n\t\t\tconst hexColorValue = ColorSwitchCCValues.hexColor;\n\n\t\t\tconst hexValue: string = this.getValue(ctx, hexColorValue)\n\t\t\t\t?? \"000000\";\n\t\t\tconst byteOffset = ColorComponent.Blue - this.colorComponent;\n\t\t\tconst byteMask = 0xff << (byteOffset * 8);\n\t\t\tlet hexValueNumeric = parseInt(hexValue, 16);\n\t\t\thexValueNumeric = (hexValueNumeric & ~byteMask)\n\t\t\t\t| (this.currentValue << (byteOffset * 8));\n\t\t\tthis.setValue(\n\t\t\t\tctx,\n\t\t\t\thexColorValue,\n\t\t\t\thexValueNumeric.toString(16).padStart(6, \"0\"),\n\t\t\t);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tpublic readonly colorComponent: ColorComponent;\n\n\tpublic readonly currentValue: number;\n\n\tpublic readonly targetValue: number | undefined;\n\n\tpublic readonly duration: Duration | undefined;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.colorComponent,\n\t\t\tthis.currentValue,\n\t\t]);\n\t\tif (this.targetValue != undefined && this.duration != undefined) {\n\t\t\tthis.payload = Bytes.concat([\n\t\t\t\tthis.payload,\n\t\t\t\tBytes.from([\n\t\t\t\t\tthis.targetValue ?? 0xfe,\n\t\t\t\t\t(this.duration ?? Duration.default()).serializeReport(),\n\t\t\t\t]),\n\t\t\t]);\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\"color component\": getEnumMemberName(\n\t\t\t\tColorComponent,\n\t\t\t\tthis.colorComponent,\n\t\t\t),\n\t\t\t\"current value\": this.currentValue,\n\t\t};\n\t\tif (this.targetValue != undefined) {\n\t\t\tmessage[\"target value\"] = this.targetValue;\n\t\t}\n\t\tif (this.duration != undefined) {\n\t\t\tmessage.duration = this.duration.toString();\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 ColorSwitchCCGetOptions {\n\tcolorComponent: ColorComponent;\n}\n\nfunction testResponseForColorSwitchGet(\n\tsent: ColorSwitchCCGet,\n\treceived: ColorSwitchCCReport,\n) {\n\treturn sent.colorComponent === received.colorComponent;\n}\n\n@CCCommand(ColorSwitchCommand.Get)\n@expectedCCResponse(ColorSwitchCCReport, testResponseForColorSwitchGet)\nexport class ColorSwitchCCGet extends ColorSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ColorSwitchCCGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis._colorComponent = options.colorComponent;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): ColorSwitchCCGet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst colorComponent: ColorComponent = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tcolorComponent,\n\t\t});\n\t}\n\n\tprivate _colorComponent: ColorComponent;\n\tpublic get colorComponent(): ColorComponent {\n\t\treturn this._colorComponent;\n\t}\n\tpublic set colorComponent(value: ColorComponent) {\n\t\tif (!ColorComponent[value]) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"colorComponent must be a valid color component index.\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis._colorComponent = value;\n\t}\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this._colorComponent]);\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\"color component\": getEnumMemberName(\n\t\t\t\t\tColorComponent,\n\t\t\t\t\tthis.colorComponent,\n\t\t\t\t),\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport type ColorSwitchCCSetOptions = (ColorTable | { hexColor: string }) & {\n\tduration?: Duration | string;\n};\n\n@CCCommand(ColorSwitchCommand.Set)\n@useSupervision()\nexport class ColorSwitchCCSet extends ColorSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ColorSwitchCCSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\t// Populate properties from options object\n\t\tif (\"hexColor\" in options) {\n\t\t\tconst match = hexColorRegex.exec(options.hexColor);\n\t\t\tif (!match) {\n\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t`${options.hexColor} is not a valid HEX color string`,\n\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis.colorTable = {\n\t\t\t\tred: parseInt(match.groups!.red, 16),\n\t\t\t\tgreen: parseInt(match.groups!.green, 16),\n\t\t\t\tblue: parseInt(match.groups!.blue, 16),\n\t\t\t};\n\t\t} else {\n\t\t\tthis.colorTable = pick(options, colorTableKeys as any[]);\n\t\t}\n\t\tthis.duration = Duration.from(options.duration);\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): ColorSwitchCCSet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst populatedColorCount = raw.payload[0] & 0b11111;\n\n\t\tvalidatePayload(raw.payload.length >= 1 + populatedColorCount * 2);\n\t\tconst colorTable: ColorTable = {};\n\t\tlet offset = 1;\n\t\tfor (let color = 0; color < populatedColorCount; color++) {\n\t\t\tconst component = raw.payload[offset];\n\t\t\tconst value = raw.payload[offset + 1];\n\t\t\tconst key = colorComponentToTableKey(component);\n\t\t\t// @ts-expect-error\n\t\t\tif (key) this.colorTable[key] = value;\n\t\t\toffset += 2;\n\t\t}\n\n\t\tlet duration: Duration | undefined;\n\t\tif (raw.payload.length > offset) {\n\t\t\tduration = Duration.parseSet(raw.payload[offset]);\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\t...colorTable,\n\t\t\tduration,\n\t\t});\n\t}\n\n\tpublic colorTable: ColorTable;\n\tpublic duration: Duration | undefined;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tconst populatedColorCount = Object.keys(this.colorTable).length;\n\t\tthis.payload = new Bytes(\n\t\t\t1 + populatedColorCount * 2 + 1,\n\t\t);\n\t\tthis.payload[0] = populatedColorCount & 0b11111;\n\t\tlet i = 1;\n\t\tfor (const [key, value] of Object.entries(this.colorTable)) {\n\t\t\tconst component = colorTableKeyToComponent(key);\n\t\t\tthis.payload[i] = component;\n\t\t\tthis.payload[i + 1] = clamp(value, 0, 0xff);\n\t\t\ti += 2;\n\t\t}\n\t\tthis.payload[i] = (\n\t\t\tthis.duration ?? Duration.default()\n\t\t).serializeSet();\n\n\t\tconst ccVersion = getEffectiveCCVersion(ctx, this);\n\t\tif (\n\t\t\tccVersion < 2 && ctx.getDeviceConfig?.(\n\t\t\t\tthis.nodeId as number,\n\t\t\t)?.compat?.encodeCCsUsingTargetVersion\n\t\t) {\n\t\t\t// When forcing CC version 1, omit the duration byte\n\t\t\tthis.payload = this.payload.subarray(0, -1);\n\t\t}\n\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {};\n\t\tfor (const [key, value] of Object.entries(this.colorTable)) {\n\t\t\tconst realKey: string = key in ColorComponentMap\n\t\t\t\t? (ColorComponent as any)[(ColorComponentMap as any)[key]]\n\t\t\t\t: (ColorComponent as any)[key];\n\t\t\tmessage[realKey] = value;\n\t\t}\n\t\tif (this.duration != undefined) {\n\t\t\tmessage.duration = this.duration.toString();\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 type ColorSwitchCCStartLevelChangeOptions =\n\t& {\n\t\tcolorComponent: ColorComponent;\n\t\tdirection: keyof typeof LevelChangeDirection;\n\t}\n\t& (\n\t\t| {\n\t\t\tignoreStartLevel: true;\n\t\t\tstartLevel?: number;\n\t\t}\n\t\t| {\n\t\t\tignoreStartLevel: false;\n\t\t\tstartLevel: number;\n\t\t}\n\t)\n\t& {\n\t\t// Version >= 3:\n\t\tduration?: Duration | string;\n\t};\n\n@CCCommand(ColorSwitchCommand.StartLevelChange)\n@useSupervision()\nexport class ColorSwitchCCStartLevelChange extends ColorSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ColorSwitchCCStartLevelChangeOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.duration = Duration.from(options.duration);\n\t\tthis.ignoreStartLevel = options.ignoreStartLevel;\n\t\tthis.startLevel = options.startLevel ?? 0;\n\t\tthis.direction = options.direction;\n\t\tthis.colorComponent = options.colorComponent;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ColorSwitchCCStartLevelChange {\n\t\tvalidatePayload(raw.payload.length >= 3);\n\t\tconst ignoreStartLevel = !!((raw.payload[0] & 0b0_0_1_00000) >>> 5);\n\t\tconst direction = ((raw.payload[0] & 0b0_1_0_00000) >>> 6)\n\t\t\t? \"down\"\n\t\t\t: \"up\";\n\t\tconst colorComponent: ColorComponent = raw.payload[1];\n\t\tconst startLevel = raw.payload[2];\n\t\tlet duration: Duration | undefined;\n\t\tif (raw.payload.length >= 4) {\n\t\t\tduration = Duration.parseSet(raw.payload[3]);\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tignoreStartLevel,\n\t\t\tdirection,\n\t\t\tcolorComponent,\n\t\t\tstartLevel,\n\t\t\tduration,\n\t\t});\n\t}\n\n\tpublic duration: Duration | undefined;\n\tpublic startLevel: number;\n\tpublic ignoreStartLevel: boolean;\n\tpublic direction: keyof typeof LevelChangeDirection;\n\tpublic colorComponent: ColorComponent;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tconst controlByte = (LevelChangeDirection[this.direction] << 6)\n\t\t\t| (this.ignoreStartLevel ? 0b0010_0000 : 0);\n\t\tthis.payload = Bytes.from([\n\t\t\tcontrolByte,\n\t\t\tthis.colorComponent,\n\t\t\tthis.startLevel,\n\t\t\t(this.duration ?? Duration.default()).serializeSet(),\n\t\t]);\n\n\t\tconst ccVersion = getEffectiveCCVersion(ctx, this);\n\t\tif (\n\t\t\tccVersion < 3 && ctx.getDeviceConfig?.(\n\t\t\t\tthis.nodeId as number,\n\t\t\t)?.compat?.encodeCCsUsingTargetVersion\n\t\t) {\n\t\t\t// When forcing CC version 1 or 2, omit the duration byte\n\t\t\tthis.payload = this.payload.subarray(0, -1);\n\t\t}\n\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"color component\": getEnumMemberName(\n\t\t\t\tColorComponent,\n\t\t\t\tthis.colorComponent,\n\t\t\t),\n\t\t\t\"start level\": `${this.startLevel}${\n\t\t\t\tthis.ignoreStartLevel ? \" (ignored)\" : \"\"\n\t\t\t}`,\n\t\t\tdirection: this.direction,\n\t\t};\n\t\tif (this.duration != undefined) {\n\t\t\tmessage.duration = this.duration.toString();\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 ColorSwitchCCStopLevelChangeOptions {\n\tcolorComponent: ColorComponent;\n}\n\n@CCCommand(ColorSwitchCommand.StopLevelChange)\n@useSupervision()\nexport class ColorSwitchCCStopLevelChange extends ColorSwitchCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ColorSwitchCCStopLevelChangeOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.colorComponent = options.colorComponent;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ColorSwitchCCStopLevelChange {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst colorComponent: ColorComponent = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tcolorComponent,\n\t\t});\n\t}\n\n\tpublic readonly colorComponent: ColorComponent;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.colorComponent]);\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\"color component\": getEnumMemberName(\n\t\t\t\t\tColorComponent,\n\t\t\t\t\tthis.colorComponent,\n\t\t\t\t),\n\t\t\t},\n\t\t};\n\t}\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["import_safe"]
|
|
7
7
|
}
|
|
@@ -78,7 +78,7 @@ function validateArgs_ConfigurationCCAPI_setBulk() {
|
|
|
78
78
|
return (__decoratedMethod, { kind }) => {
|
|
79
79
|
if (kind === "method") {
|
|
80
80
|
return /* @__PURE__ */ __name(function setBulk(values) {
|
|
81
|
-
v.assert(v.array({ kind: "parameter", name: "values" }, 'import("/home/runner/work/
|
|
81
|
+
v.assert(v.array({ kind: "parameter", name: "values" }, 'import("/home/runner/work/zwave-js/zwave-js/packages/cc/src/cc/ConfigurationCC").ConfigurationCCAPISetOptions', v.oneOf({ kind: "item", name: "values" }, "ConfigurationCCAPISetOptions", v.allOf({ kind: "item", name: "values" }, void 0, v.object({ kind: "item", name: "values" }, "<anonymous object>", { "parameter": v.primitive({ kind: "property", name: "parameter" }, "number") }), v.object({ kind: "item", name: "values" }, "<anonymous object>", { "bitMask": v.undefined({ kind: "property", name: "bitMask" }), "value": v.primitive({ kind: "property", name: "value" }, "number") })), v.allOf({ kind: "item", name: "values" }, void 0, v.object({ kind: "item", name: "values" }, "<anonymous object>", { "parameter": v.primitive({ kind: "property", name: "parameter" }, "number") }), v.object({ kind: "item", name: "values" }, "<anonymous object>", { "bitMask": v.undefined({ kind: "property", name: "bitMask" }), "value": v.primitive({ kind: "property", name: "value" }, "number"), "valueSize": v.oneOf({ kind: "property", name: "valueSize" }, void 0, v.literal({ kind: "property", name: "valueSize" }, 1), v.literal({ kind: "property", name: "valueSize" }, 2), v.literal({ kind: "property", name: "valueSize" }, 4)), "valueFormat": v.enum({ kind: "property", name: "valueFormat" }, "ConfigValueFormat", [0, 1, 2, 3]) })), v.allOf({ kind: "item", name: "values" }, void 0, v.object({ kind: "item", name: "values" }, "<anonymous object>", { "parameter": v.primitive({ kind: "property", name: "parameter" }, "number") }), v.object({ kind: "item", name: "values" }, "<anonymous object>", { "bitMask": v.primitive({ kind: "property", name: "bitMask" }, "number"), "value": v.primitive({ kind: "property", name: "value" }, "number") }))))(values));
|
|
82
82
|
return __decoratedMethod.call(this, values);
|
|
83
83
|
}, "setBulk");
|
|
84
84
|
}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/cc/ConfigurationCC._validateArgs.ts"],
|
|
4
4
|
"sourcesContent": [null],
|
|
5
|
-
"mappings": "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
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import
|
|
3
|
-
import type
|
|
1
|
+
import { type CCEncodingContext, type CCParsingContext } from "@zwave-js/cc";
|
|
2
|
+
import type { GetDeviceConfig, ParamInfoMap } from "@zwave-js/config";
|
|
3
|
+
import { CommandClasses, ConfigValueFormat, type ConfigurationMetadata, type ControlsCC, type EndpointId, type GetEndpoint, type GetNode, type GetSupportedCCVersion, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, type NodeId, type SupervisionResult, type SupportsCC, type ValueID, ValueMetadata, type WithAddress, ZWaveError, ZWaveErrorCodes } from "@zwave-js/core/safe";
|
|
4
4
|
import { Bytes } from "@zwave-js/shared/safe";
|
|
5
5
|
import { CCAPI, POLL_VALUE, type PollValueImplementation, SET_VALUE, type SetValueImplementation } from "../lib/API.js";
|
|
6
6
|
import { type CCRaw, CommandClass, type InterviewContext, type PersistValuesContext, type RefreshValuesContext } from "../lib/CommandClass.js";
|
|
@@ -13,16 +13,32 @@ export declare class ConfigurationCCError extends ZWaveError {
|
|
|
13
13
|
}
|
|
14
14
|
export declare const ConfigurationCCValues: Readonly<{
|
|
15
15
|
paramInformation: ((parameter: number, bitMask?: number | undefined) => {
|
|
16
|
-
readonly meta: {
|
|
16
|
+
readonly meta: Readonly<(ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
|
|
17
17
|
readonly type: "any";
|
|
18
18
|
readonly readable: true;
|
|
19
19
|
readonly writeable: true;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
}> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
|
|
21
|
+
readonly type: "any";
|
|
22
|
+
readonly readable: true;
|
|
23
|
+
readonly writeable: true;
|
|
24
|
+
}>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>) extends infer T ? { [K in keyof T as [undefined] extends [(ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
|
|
25
|
+
readonly type: "any";
|
|
26
|
+
readonly readable: true;
|
|
27
|
+
readonly writeable: true;
|
|
28
|
+
}> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
|
|
29
|
+
readonly type: "any";
|
|
30
|
+
readonly readable: true;
|
|
31
|
+
readonly writeable: true;
|
|
32
|
+
}>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]] ? never : K]: (ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
|
|
33
|
+
readonly type: "any";
|
|
34
|
+
readonly readable: true;
|
|
35
|
+
readonly writeable: true;
|
|
36
|
+
}> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
|
|
37
|
+
readonly type: "any";
|
|
38
|
+
readonly readable: true;
|
|
39
|
+
readonly writeable: true;
|
|
40
|
+
}>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]; } : never>;
|
|
41
|
+
readonly id: ValueIDBase;
|
|
26
42
|
readonly endpoint: (endpoint?: number | undefined) => {
|
|
27
43
|
readonly commandClass: CommandClasses.Configuration;
|
|
28
44
|
readonly endpoint: number;
|
|
@@ -41,29 +57,81 @@ export declare const ConfigurationCCValues: Readonly<{
|
|
|
41
57
|
};
|
|
42
58
|
};
|
|
43
59
|
isParamInformationFromConfig: {
|
|
44
|
-
readonly id:
|
|
45
|
-
commandClass: CommandClasses.Configuration;
|
|
46
|
-
property: "isParamInformationFromConfig";
|
|
47
|
-
};
|
|
60
|
+
readonly id: ValueIDBase;
|
|
48
61
|
readonly endpoint: (endpoint?: number | undefined) => {
|
|
49
62
|
readonly commandClass: CommandClasses.Configuration;
|
|
50
63
|
readonly endpoint: number;
|
|
51
64
|
readonly property: "isParamInformationFromConfig";
|
|
52
65
|
};
|
|
53
66
|
readonly is: (valueId: ValueID) => boolean;
|
|
54
|
-
readonly meta: {
|
|
67
|
+
readonly meta: Readonly<(ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
|
|
55
68
|
readonly type: "any";
|
|
56
69
|
readonly readable: true;
|
|
57
70
|
readonly writeable: true;
|
|
58
|
-
}
|
|
59
|
-
|
|
71
|
+
}> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
|
|
72
|
+
readonly type: "any";
|
|
73
|
+
readonly readable: true;
|
|
74
|
+
readonly writeable: true;
|
|
75
|
+
}>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>) extends infer T ? { [K in keyof T as [undefined] extends [(ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
|
|
76
|
+
readonly type: "any";
|
|
77
|
+
readonly readable: true;
|
|
78
|
+
readonly writeable: true;
|
|
79
|
+
}> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
|
|
80
|
+
readonly type: "any";
|
|
81
|
+
readonly readable: true;
|
|
82
|
+
readonly writeable: true;
|
|
83
|
+
}>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]] ? never : K]: (ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
|
|
84
|
+
readonly type: "any";
|
|
85
|
+
readonly readable: true;
|
|
86
|
+
readonly writeable: true;
|
|
87
|
+
}> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
|
|
88
|
+
readonly type: "any";
|
|
89
|
+
readonly readable: true;
|
|
90
|
+
readonly writeable: true;
|
|
91
|
+
}>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]; } : never>;
|
|
92
|
+
readonly options: Readonly<(import("@zwave-js/cc").CCValueOptions extends NonNullable<TBlueprint["options"]> ? {
|
|
93
|
+
readonly internal: false;
|
|
94
|
+
readonly minVersion: 1;
|
|
95
|
+
readonly secret: false;
|
|
60
96
|
readonly stateful: true;
|
|
97
|
+
readonly supportsEndpoints: true;
|
|
98
|
+
readonly autoCreate: true;
|
|
99
|
+
} : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<{
|
|
100
|
+
readonly internal: false;
|
|
101
|
+
readonly minVersion: 1;
|
|
61
102
|
readonly secret: false;
|
|
103
|
+
readonly stateful: true;
|
|
104
|
+
readonly supportsEndpoints: true;
|
|
105
|
+
readonly autoCreate: true;
|
|
106
|
+
}, ("stateful" | "secret" | "internal" | "minVersion" | "supportsEndpoints" | "autoCreate") & keyof NonNullable<TBlueprint["options"]>> & TBlueprint["options"]>) extends infer T ? { [K in keyof T as [undefined] extends [(import("@zwave-js/cc").CCValueOptions extends NonNullable<TBlueprint["options"]> ? {
|
|
107
|
+
readonly internal: false;
|
|
62
108
|
readonly minVersion: 1;
|
|
109
|
+
readonly secret: false;
|
|
110
|
+
readonly stateful: true;
|
|
111
|
+
readonly supportsEndpoints: true;
|
|
63
112
|
readonly autoCreate: true;
|
|
64
|
-
|
|
65
|
-
readonly
|
|
66
|
-
|
|
113
|
+
} : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<{
|
|
114
|
+
readonly internal: false;
|
|
115
|
+
readonly minVersion: 1;
|
|
116
|
+
readonly secret: false;
|
|
117
|
+
readonly stateful: true;
|
|
118
|
+
readonly supportsEndpoints: true;
|
|
119
|
+
readonly autoCreate: true;
|
|
120
|
+
}, ("stateful" | "secret" | "internal" | "minVersion" | "supportsEndpoints" | "autoCreate") & keyof NonNullable<TBlueprint["options"]>> & TBlueprint["options"]>)[K]] ? never : K]: (import("@zwave-js/cc").CCValueOptions extends NonNullable<TBlueprint["options"]> ? {
|
|
121
|
+
readonly internal: false;
|
|
122
|
+
readonly minVersion: 1;
|
|
123
|
+
readonly secret: false;
|
|
124
|
+
readonly stateful: true;
|
|
125
|
+
readonly supportsEndpoints: true;
|
|
126
|
+
readonly autoCreate: true;
|
|
127
|
+
} : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<{
|
|
128
|
+
readonly internal: false;
|
|
129
|
+
readonly minVersion: 1;
|
|
130
|
+
readonly secret: false;
|
|
131
|
+
readonly stateful: true;
|
|
132
|
+
readonly supportsEndpoints: true;
|
|
133
|
+
readonly autoCreate: true;
|
|
134
|
+
}, ("stateful" | "secret" | "internal" | "minVersion" | "supportsEndpoints" | "autoCreate") & keyof NonNullable<TBlueprint["options"]>> & TBlueprint["options"]>)[K]; } : never>;
|
|
67
135
|
};
|
|
68
136
|
}>;
|
|
69
137
|
/** @publicAPI */
|
|
@@ -198,7 +266,7 @@ export declare class ConfigurationCCReport extends ConfigurationCC {
|
|
|
198
266
|
valueSize: number;
|
|
199
267
|
private valueFormat?;
|
|
200
268
|
persistValues(ctx: PersistValuesContext): boolean;
|
|
201
|
-
serialize(ctx: CCEncodingContext): Bytes
|
|
269
|
+
serialize(ctx: CCEncodingContext): Promise<Bytes>;
|
|
202
270
|
toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
|
|
203
271
|
}
|
|
204
272
|
export interface ConfigurationCCGetOptions {
|
|
@@ -214,7 +282,7 @@ export declare class ConfigurationCCGet extends ConfigurationCC {
|
|
|
214
282
|
static from(raw: CCRaw, ctx: CCParsingContext): ConfigurationCCGet;
|
|
215
283
|
parameter: number;
|
|
216
284
|
allowUnexpectedResponse: boolean;
|
|
217
|
-
serialize(ctx: CCEncodingContext): Bytes
|
|
285
|
+
serialize(ctx: CCEncodingContext): Promise<Bytes>;
|
|
218
286
|
toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
|
|
219
287
|
}
|
|
220
288
|
export type ConfigurationCCSetOptions = {
|
|
@@ -236,7 +304,7 @@ export declare class ConfigurationCCSet extends ConfigurationCC {
|
|
|
236
304
|
valueSize: number | undefined;
|
|
237
305
|
valueFormat: ConfigValueFormat | undefined;
|
|
238
306
|
value: ConfigValue | undefined;
|
|
239
|
-
serialize(ctx: CCEncodingContext): Bytes
|
|
307
|
+
serialize(ctx: CCEncodingContext): Promise<Bytes>;
|
|
240
308
|
toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
|
|
241
309
|
}
|
|
242
310
|
export type ConfigurationCCBulkSetOptions = {
|
|
@@ -265,7 +333,7 @@ export declare class ConfigurationCCBulkSet extends ConfigurationCC {
|
|
|
265
333
|
get values(): number[];
|
|
266
334
|
private _handshake;
|
|
267
335
|
get handshake(): boolean;
|
|
268
|
-
serialize(ctx: CCEncodingContext): Bytes
|
|
336
|
+
serialize(ctx: CCEncodingContext): Promise<Bytes>;
|
|
269
337
|
toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
|
|
270
338
|
}
|
|
271
339
|
export interface ConfigurationCCBulkReportOptions {
|
|
@@ -297,7 +365,7 @@ export declare class ConfigurationCCBulkGet extends ConfigurationCC {
|
|
|
297
365
|
static from(_raw: CCRaw, _ctx: CCParsingContext): ConfigurationCCBulkGet;
|
|
298
366
|
private _parameters;
|
|
299
367
|
get parameters(): number[];
|
|
300
|
-
serialize(ctx: CCEncodingContext): Bytes
|
|
368
|
+
serialize(ctx: CCEncodingContext): Promise<Bytes>;
|
|
301
369
|
toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
|
|
302
370
|
}
|
|
303
371
|
/** @publicAPI */
|
|
@@ -313,19 +381,17 @@ export declare class ConfigurationCCNameReport extends ConfigurationCC {
|
|
|
313
381
|
name: string;
|
|
314
382
|
readonly reportsToFollow: number;
|
|
315
383
|
persistValues(ctx: PersistValuesContext): boolean;
|
|
316
|
-
serialize(ctx: CCEncodingContext): Bytes
|
|
384
|
+
serialize(ctx: CCEncodingContext): Promise<Bytes>;
|
|
317
385
|
getPartialCCSessionId(): Record<string, any> | undefined;
|
|
318
386
|
expectMoreMessages(): boolean;
|
|
319
|
-
|
|
320
|
-
mergePartialCCs(partials: ConfigurationCCNameReport[], _ctx: CCParsingContext): void;
|
|
321
|
-
mergePartialCCsAsync(partials: ConfigurationCCNameReport[], _ctx: CCParsingContext): Promise<void>;
|
|
387
|
+
mergePartialCCs(partials: ConfigurationCCNameReport[], _ctx: CCParsingContext): Promise<void>;
|
|
322
388
|
toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
|
|
323
389
|
}
|
|
324
390
|
export declare class ConfigurationCCNameGet extends ConfigurationCC {
|
|
325
391
|
constructor(options: WithAddress<ConfigurationCCGetOptions>);
|
|
326
392
|
static from(raw: CCRaw, ctx: CCParsingContext): ConfigurationCCNameGet;
|
|
327
393
|
parameter: number;
|
|
328
|
-
serialize(ctx: CCEncodingContext): Bytes
|
|
394
|
+
serialize(ctx: CCEncodingContext): Promise<Bytes>;
|
|
329
395
|
toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
|
|
330
396
|
}
|
|
331
397
|
/** @publicAPI */
|
|
@@ -341,19 +407,17 @@ export declare class ConfigurationCCInfoReport extends ConfigurationCC {
|
|
|
341
407
|
info: string;
|
|
342
408
|
readonly reportsToFollow: number;
|
|
343
409
|
persistValues(ctx: PersistValuesContext): boolean;
|
|
344
|
-
serialize(ctx: CCEncodingContext): Bytes
|
|
410
|
+
serialize(ctx: CCEncodingContext): Promise<Bytes>;
|
|
345
411
|
getPartialCCSessionId(): Record<string, any> | undefined;
|
|
346
412
|
expectMoreMessages(): boolean;
|
|
347
|
-
|
|
348
|
-
mergePartialCCs(partials: ConfigurationCCInfoReport[], _ctx: CCParsingContext): void;
|
|
349
|
-
mergePartialCCsAsync(partials: ConfigurationCCInfoReport[], _ctx: CCParsingContext): Promise<void>;
|
|
413
|
+
mergePartialCCs(partials: ConfigurationCCInfoReport[], _ctx: CCParsingContext): Promise<void>;
|
|
350
414
|
toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
|
|
351
415
|
}
|
|
352
416
|
export declare class ConfigurationCCInfoGet extends ConfigurationCC {
|
|
353
417
|
constructor(options: WithAddress<ConfigurationCCGetOptions>);
|
|
354
418
|
static from(raw: CCRaw, ctx: CCParsingContext): ConfigurationCCInfoGet;
|
|
355
419
|
parameter: number;
|
|
356
|
-
serialize(ctx: CCEncodingContext): Bytes
|
|
420
|
+
serialize(ctx: CCEncodingContext): Promise<Bytes>;
|
|
357
421
|
toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
|
|
358
422
|
}
|
|
359
423
|
/** @publicAPI */
|
|
@@ -385,14 +449,14 @@ export declare class ConfigurationCCPropertiesReport extends ConfigurationCC {
|
|
|
385
449
|
isReadonly: MaybeNotKnown<boolean>;
|
|
386
450
|
isAdvanced: MaybeNotKnown<boolean>;
|
|
387
451
|
noBulkSupport: MaybeNotKnown<boolean>;
|
|
388
|
-
serialize(ctx: CCEncodingContext): Bytes
|
|
452
|
+
serialize(ctx: CCEncodingContext): Promise<Bytes>;
|
|
389
453
|
toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
|
|
390
454
|
}
|
|
391
455
|
export declare class ConfigurationCCPropertiesGet extends ConfigurationCC {
|
|
392
456
|
constructor(options: WithAddress<ConfigurationCCGetOptions>);
|
|
393
457
|
static from(raw: CCRaw, ctx: CCParsingContext): ConfigurationCCPropertiesGet;
|
|
394
458
|
parameter: number;
|
|
395
|
-
serialize(ctx: CCEncodingContext): Bytes
|
|
459
|
+
serialize(ctx: CCEncodingContext): Promise<Bytes>;
|
|
396
460
|
toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
|
|
397
461
|
}
|
|
398
462
|
export declare class ConfigurationCCDefaultReset extends ConfigurationCC {
|
|
@@ -1622,12 +1622,8 @@ let ConfigurationCCNameReport = (() => {
|
|
|
1622
1622
|
expectMoreMessages() {
|
|
1623
1623
|
return this.reportsToFollow > 0;
|
|
1624
1624
|
}
|
|
1625
|
-
/** @deprecated Use {@link mergePartialCCsAsync} instead */
|
|
1626
1625
|
mergePartialCCs(partials, _ctx) {
|
|
1627
1626
|
this.name = [...partials, this].map((report) => report.name).reduce((prev, cur) => prev + cur, "");
|
|
1628
|
-
}
|
|
1629
|
-
mergePartialCCsAsync(partials, _ctx) {
|
|
1630
|
-
this.name = [...partials, this].map((report) => report.name).reduce((prev, cur) => prev + cur, "");
|
|
1631
1627
|
return Promise.resolve();
|
|
1632
1628
|
}
|
|
1633
1629
|
toLogEntry(ctx) {
|
|
@@ -1772,12 +1768,8 @@ let ConfigurationCCInfoReport = (() => {
|
|
|
1772
1768
|
expectMoreMessages() {
|
|
1773
1769
|
return this.reportsToFollow > 0;
|
|
1774
1770
|
}
|
|
1775
|
-
/** @deprecated Use {@link mergePartialCCsAsync} instead */
|
|
1776
1771
|
mergePartialCCs(partials, _ctx) {
|
|
1777
1772
|
this.info = [...partials, this].map((report) => report.info).reduce((prev, cur) => prev + cur, "");
|
|
1778
|
-
}
|
|
1779
|
-
mergePartialCCsAsync(partials, _ctx) {
|
|
1780
|
-
this.info = [...partials, this].map((report) => report.info).reduce((prev, cur) => prev + cur, "");
|
|
1781
1773
|
return Promise.resolve();
|
|
1782
1774
|
}
|
|
1783
1775
|
toLogEntry(ctx) {
|