@zwave-js/cc 15.0.0-beta.0 → 15.0.0-beta.1
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 +79 -161
- package/build/cjs/cc/AlarmSensorCC.js +12 -50
- package/build/cjs/cc/AlarmSensorCC.js.map +2 -2
- package/build/cjs/cc/AssociationCC.d.ts +63 -199
- package/build/cjs/cc/AssociationCC.js +9 -22
- package/build/cjs/cc/AssociationCC.js.map +2 -2
- package/build/cjs/cc/AssociationGroupInfoCC.d.ts +66 -166
- package/build/cjs/cc/AssociationGroupInfoCC.js +11 -22
- package/build/cjs/cc/AssociationGroupInfoCC.js.map +2 -2
- package/build/cjs/cc/BarrierOperatorCC.d.ts +86 -294
- package/build/cjs/cc/BarrierOperatorCC.js +12 -44
- package/build/cjs/cc/BarrierOperatorCC.js.map +2 -2
- package/build/cjs/cc/BasicCC.d.ts +85 -331
- package/build/cjs/cc/BasicCC.js +15 -46
- package/build/cjs/cc/BasicCC.js.map +2 -2
- package/build/cjs/cc/BatteryCC.d.ts +237 -835
- package/build/cjs/cc/BatteryCC.js +7 -84
- package/build/cjs/cc/BatteryCC.js.map +2 -2
- package/build/cjs/cc/BinarySensorCC.d.ts +34 -99
- package/build/cjs/cc/BinarySensorCC.js +9 -29
- package/build/cjs/cc/BinarySensorCC.js.map +2 -2
- package/build/cjs/cc/BinarySwitchCC.d.ts +45 -197
- package/build/cjs/cc/BinarySwitchCC.js +6 -22
- package/build/cjs/cc/BinarySwitchCC.js.map +2 -2
- package/build/cjs/cc/CentralSceneCC.d.ts +77 -296
- package/build/cjs/cc/CentralSceneCC.js +7 -30
- package/build/cjs/cc/CentralSceneCC.js.map +2 -2
- package/build/cjs/cc/ClimateControlScheduleCC.d.ts +45 -160
- package/build/cjs/cc/ClimateControlScheduleCC.js +5 -24
- package/build/cjs/cc/ClimateControlScheduleCC.js.map +2 -2
- package/build/cjs/cc/ColorSwitchCC.d.ts +130 -457
- package/build/cjs/cc/ColorSwitchCC.js +23 -75
- package/build/cjs/cc/ColorSwitchCC.js.map +2 -2
- package/build/cjs/cc/ConfigurationCC.d.ts +32 -100
- package/build/cjs/cc/ConfigurationCC.js +11 -31
- package/build/cjs/cc/ConfigurationCC.js.map +2 -2
- package/build/cjs/cc/DoorLockCC.d.ts +512 -1823
- package/build/cjs/cc/DoorLockCC.js +51 -156
- package/build/cjs/cc/DoorLockCC.js.map +2 -2
- package/build/cjs/cc/DoorLockLoggingCC.d.ts +11 -63
- package/build/cjs/cc/DoorLockLoggingCC.js +4 -8
- package/build/cjs/cc/DoorLockLoggingCC.js.map +2 -2
- package/build/cjs/cc/EnergyProductionCC.d.ts +14 -29
- package/build/cjs/cc/EnergyProductionCC.js +5 -17
- package/build/cjs/cc/EnergyProductionCC.js.map +2 -2
- package/build/cjs/cc/EntryControlCC.d.ts +73 -324
- package/build/cjs/cc/EntryControlCC.js +9 -36
- package/build/cjs/cc/EntryControlCC.js.map +2 -2
- package/build/cjs/cc/FirmwareUpdateMetaDataCC.d.ts +78 -390
- package/build/cjs/cc/FirmwareUpdateMetaDataCC.js +5 -26
- package/build/cjs/cc/FirmwareUpdateMetaDataCC.js.map +2 -2
- package/build/cjs/cc/HumidityControlModeCC.d.ts +31 -131
- package/build/cjs/cc/HumidityControlModeCC.js +6 -15
- package/build/cjs/cc/HumidityControlModeCC.js.map +2 -2
- package/build/cjs/cc/HumidityControlOperatingStateCC.d.ts +17 -65
- package/build/cjs/cc/HumidityControlOperatingStateCC.js +4 -12
- package/build/cjs/cc/HumidityControlOperatingStateCC.js.map +2 -2
- package/build/cjs/cc/HumidityControlSetpointCC.d.ts +51 -128
- package/build/cjs/cc/HumidityControlSetpointCC.js +10 -28
- package/build/cjs/cc/HumidityControlSetpointCC.js.map +2 -2
- package/build/cjs/cc/IndicatorCC.d.ts +123 -365
- package/build/cjs/cc/IndicatorCC.js +15 -61
- package/build/cjs/cc/IndicatorCC.js.map +2 -2
- package/build/cjs/cc/IrrigationCC.d.ts +826 -2317
- package/build/cjs/cc/IrrigationCC.js +29 -233
- package/build/cjs/cc/IrrigationCC.js.map +2 -2
- package/build/cjs/cc/LanguageCC.d.ts +31 -133
- package/build/cjs/cc/LanguageCC.js +4 -15
- package/build/cjs/cc/LanguageCC.js.map +2 -2
- package/build/cjs/cc/LockCC.d.ts +14 -64
- package/build/cjs/cc/LockCC.js +4 -12
- package/build/cjs/cc/LockCC.js.map +2 -2
- package/build/cjs/cc/ManufacturerProprietaryCC.js.map +2 -2
- package/build/cjs/cc/ManufacturerSpecificCC.d.ts +77 -239
- package/build/cjs/cc/ManufacturerSpecificCC.js +5 -26
- package/build/cjs/cc/ManufacturerSpecificCC.js.map +2 -2
- package/build/cjs/cc/MeterCC.d.ts +119 -393
- package/build/cjs/cc/MeterCC.js +25 -69
- package/build/cjs/cc/MeterCC.js.map +2 -2
- package/build/cjs/cc/MultiChannelAssociationCC.d.ts +66 -166
- package/build/cjs/cc/MultiChannelAssociationCC.js +10 -23
- package/build/cjs/cc/MultiChannelAssociationCC.js.map +2 -2
- package/build/cjs/cc/MultiChannelCC.d.ts +119 -499
- package/build/cjs/cc/MultiChannelCC.js +18 -46
- package/build/cjs/cc/MultiChannelCC.js.map +2 -2
- package/build/cjs/cc/MultilevelSensorCC.d.ts +46 -130
- package/build/cjs/cc/MultilevelSensorCC.js +12 -33
- package/build/cjs/cc/MultilevelSensorCC.js.map +2 -2
- package/build/cjs/cc/MultilevelSwitchCC.d.ts +160 -525
- package/build/cjs/cc/MultilevelSwitchCC.js +13 -107
- package/build/cjs/cc/MultilevelSwitchCC.js.map +2 -2
- package/build/cjs/cc/NodeNamingCC.d.ts +33 -135
- package/build/cjs/cc/NodeNamingCC.js +5 -16
- package/build/cjs/cc/NodeNamingCC.js.map +2 -2
- package/build/cjs/cc/NotificationCC.d.ts +262 -702
- package/build/cjs/cc/NotificationCC.js +29 -112
- package/build/cjs/cc/NotificationCC.js.map +2 -2
- package/build/cjs/cc/ProtectionCC.d.ts +118 -524
- package/build/cjs/cc/ProtectionCC.js +15 -50
- package/build/cjs/cc/ProtectionCC.js.map +2 -2
- package/build/cjs/cc/SceneActivationCC.d.ts +33 -132
- package/build/cjs/cc/SceneActivationCC.js +4 -17
- package/build/cjs/cc/SceneActivationCC.js.map +2 -2
- package/build/cjs/cc/SceneActuatorConfigurationCC.d.ts +34 -61
- package/build/cjs/cc/SceneActuatorConfigurationCC.js +9 -21
- package/build/cjs/cc/SceneActuatorConfigurationCC.js.map +2 -2
- package/build/cjs/cc/SceneControllerConfigurationCC.d.ts +34 -61
- package/build/cjs/cc/SceneControllerConfigurationCC.js +10 -22
- package/build/cjs/cc/SceneControllerConfigurationCC.js.map +2 -2
- package/build/cjs/cc/ScheduleEntryLockCC.d.ts +95 -299
- package/build/cjs/cc/ScheduleEntryLockCC.js +13 -30
- package/build/cjs/cc/ScheduleEntryLockCC.js.map +2 -2
- package/build/cjs/cc/SoundSwitchCC.d.ts +72 -261
- package/build/cjs/cc/SoundSwitchCC.js +11 -43
- package/build/cjs/cc/SoundSwitchCC.js.map +2 -2
- package/build/cjs/cc/SupervisionCC.d.ts +17 -33
- package/build/cjs/cc/SupervisionCC.js +4 -9
- package/build/cjs/cc/SupervisionCC.js.map +2 -2
- package/build/cjs/cc/ThermostatFanModeCC.d.ts +44 -195
- package/build/cjs/cc/ThermostatFanModeCC.js +8 -21
- package/build/cjs/cc/ThermostatFanModeCC.js.map +2 -2
- package/build/cjs/cc/ThermostatFanStateCC.d.ts +17 -65
- package/build/cjs/cc/ThermostatFanStateCC.js +4 -12
- package/build/cjs/cc/ThermostatFanStateCC.js.map +2 -2
- package/build/cjs/cc/ThermostatModeCC.d.ts +44 -195
- package/build/cjs/cc/ThermostatModeCC.js +8 -21
- package/build/cjs/cc/ThermostatModeCC.js.map +2 -2
- package/build/cjs/cc/ThermostatOperatingStateCC.d.ts +17 -65
- package/build/cjs/cc/ThermostatOperatingStateCC.js +4 -12
- package/build/cjs/cc/ThermostatOperatingStateCC.js.map +2 -2
- package/build/cjs/cc/ThermostatSetpointCC.d.ts +49 -129
- package/build/cjs/cc/ThermostatSetpointCC.js +10 -25
- package/build/cjs/cc/ThermostatSetpointCC.js.map +2 -2
- package/build/cjs/cc/TimeParametersCC.d.ts +12 -63
- package/build/cjs/cc/TimeParametersCC.js +4 -11
- package/build/cjs/cc/TimeParametersCC.js.map +2 -2
- package/build/cjs/cc/UserCodeCC.d.ts +311 -1066
- package/build/cjs/cc/UserCodeCC.js +33 -98
- package/build/cjs/cc/UserCodeCC.js.map +2 -2
- package/build/cjs/cc/VersionCC.d.ts +289 -1003
- package/build/cjs/cc/VersionCC.js +7 -98
- package/build/cjs/cc/VersionCC.js.map +2 -2
- package/build/cjs/cc/WakeUpCC.d.ts +49 -201
- package/build/cjs/cc/WakeUpCC.js +6 -26
- package/build/cjs/cc/WakeUpCC.js.map +2 -2
- package/build/cjs/cc/WindowCoveringCC.d.ts +126 -220
- package/build/cjs/cc/WindowCoveringCC.js +16 -128
- package/build/cjs/cc/WindowCoveringCC.js.map +2 -2
- package/build/cjs/cc/ZWavePlusCC.d.ts +69 -329
- package/build/cjs/cc/ZWavePlusCC.js +4 -25
- package/build/cjs/cc/ZWavePlusCC.js.map +2 -2
- package/build/cjs/cc/_CCValues.generated.d.ts +15814 -0
- package/build/cjs/cc/_CCValues.generated.js +8723 -0
- package/build/cjs/cc/_CCValues.generated.js.map +7 -0
- package/build/cjs/lib/CCValueUtils.d.ts +14 -0
- package/build/cjs/lib/CCValueUtils.js +93 -0
- package/build/cjs/lib/CCValueUtils.js.map +7 -0
- package/build/cjs/lib/Values.d.ts +6 -105
- package/build/cjs/lib/Values.js +13 -107
- package/build/cjs/lib/Values.js.map +3 -3
- package/build/esm/cc/AlarmSensorCC.d.ts +79 -161
- package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
- package/build/esm/cc/AlarmSensorCC.js +2 -39
- package/build/esm/cc/AlarmSensorCC.js.map +1 -1
- package/build/esm/cc/AssociationCC.d.ts +63 -199
- package/build/esm/cc/AssociationCC.d.ts.map +1 -1
- package/build/esm/cc/AssociationCC.js +2 -14
- package/build/esm/cc/AssociationCC.js.map +1 -1
- package/build/esm/cc/AssociationGroupInfoCC.d.ts +66 -166
- package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
- package/build/esm/cc/AssociationGroupInfoCC.js +2 -13
- package/build/esm/cc/AssociationGroupInfoCC.js.map +1 -1
- package/build/esm/cc/BarrierOperatorCC.d.ts +86 -294
- package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
- package/build/esm/cc/BarrierOperatorCC.js +2 -34
- package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
- package/build/esm/cc/BasicCC.d.ts +85 -331
- package/build/esm/cc/BasicCC.d.ts.map +1 -1
- package/build/esm/cc/BasicCC.js +2 -32
- package/build/esm/cc/BasicCC.js.map +1 -1
- package/build/esm/cc/BatteryCC.d.ts +237 -835
- package/build/esm/cc/BatteryCC.d.ts.map +1 -1
- package/build/esm/cc/BatteryCC.js +2 -78
- package/build/esm/cc/BatteryCC.js.map +1 -1
- package/build/esm/cc/BinarySensorCC.d.ts +34 -99
- package/build/esm/cc/BinarySensorCC.d.ts.map +1 -1
- package/build/esm/cc/BinarySensorCC.js +2 -16
- package/build/esm/cc/BinarySensorCC.js.map +1 -1
- package/build/esm/cc/BinarySwitchCC.d.ts +45 -197
- package/build/esm/cc/BinarySwitchCC.d.ts.map +1 -1
- package/build/esm/cc/BinarySwitchCC.js +2 -17
- package/build/esm/cc/BinarySwitchCC.js.map +1 -1
- package/build/esm/cc/CentralSceneCC.d.ts +77 -296
- package/build/esm/cc/CentralSceneCC.d.ts.map +1 -1
- package/build/esm/cc/CentralSceneCC.js +2 -26
- package/build/esm/cc/CentralSceneCC.js.map +1 -1
- package/build/esm/cc/ClimateControlScheduleCC.d.ts +45 -160
- package/build/esm/cc/ClimateControlScheduleCC.d.ts.map +1 -1
- package/build/esm/cc/ClimateControlScheduleCC.js +2 -23
- package/build/esm/cc/ClimateControlScheduleCC.js.map +1 -1
- package/build/esm/cc/ColorSwitchCC.d.ts +130 -457
- package/build/esm/cc/ColorSwitchCC.d.ts.map +1 -1
- package/build/esm/cc/ColorSwitchCC.js +2 -52
- package/build/esm/cc/ColorSwitchCC.js.map +1 -1
- package/build/esm/cc/ConfigurationCC.d.ts +32 -100
- package/build/esm/cc/ConfigurationCC.d.ts.map +1 -1
- package/build/esm/cc/ConfigurationCC.js +2 -15
- package/build/esm/cc/ConfigurationCC.js.map +1 -1
- package/build/esm/cc/DoorLockCC.d.ts +512 -1823
- package/build/esm/cc/DoorLockCC.d.ts.map +1 -1
- package/build/esm/cc/DoorLockCC.js +9 -127
- package/build/esm/cc/DoorLockCC.js.map +1 -1
- package/build/esm/cc/DoorLockLoggingCC.d.ts +11 -63
- package/build/esm/cc/DoorLockLoggingCC.d.ts.map +1 -1
- package/build/esm/cc/DoorLockLoggingCC.js +2 -5
- package/build/esm/cc/DoorLockLoggingCC.js.map +1 -1
- package/build/esm/cc/EnergyProductionCC.d.ts +14 -29
- package/build/esm/cc/EnergyProductionCC.d.ts.map +1 -1
- package/build/esm/cc/EnergyProductionCC.js +2 -13
- package/build/esm/cc/EnergyProductionCC.js.map +1 -1
- package/build/esm/cc/EntryControlCC.d.ts +73 -324
- package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
- package/build/esm/cc/EntryControlCC.js +2 -28
- package/build/esm/cc/EntryControlCC.js.map +1 -1
- package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts +78 -390
- package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts.map +1 -1
- package/build/esm/cc/FirmwareUpdateMetaDataCC.js +2 -23
- package/build/esm/cc/FirmwareUpdateMetaDataCC.js.map +1 -1
- package/build/esm/cc/HumidityControlModeCC.d.ts +31 -131
- package/build/esm/cc/HumidityControlModeCC.d.ts.map +1 -1
- package/build/esm/cc/HumidityControlModeCC.js +2 -10
- package/build/esm/cc/HumidityControlModeCC.js.map +1 -1
- package/build/esm/cc/HumidityControlOperatingStateCC.d.ts +17 -65
- package/build/esm/cc/HumidityControlOperatingStateCC.d.ts.map +1 -1
- package/build/esm/cc/HumidityControlOperatingStateCC.js +2 -9
- package/build/esm/cc/HumidityControlOperatingStateCC.js.map +1 -1
- package/build/esm/cc/HumidityControlSetpointCC.d.ts +51 -128
- package/build/esm/cc/HumidityControlSetpointCC.d.ts.map +1 -1
- package/build/esm/cc/HumidityControlSetpointCC.js +2 -19
- package/build/esm/cc/HumidityControlSetpointCC.js.map +1 -1
- package/build/esm/cc/IndicatorCC.d.ts +123 -365
- package/build/esm/cc/IndicatorCC.d.ts.map +1 -1
- package/build/esm/cc/IndicatorCC.js +2 -43
- package/build/esm/cc/IndicatorCC.js.map +1 -1
- package/build/esm/cc/IrrigationCC.d.ts +826 -2317
- package/build/esm/cc/IrrigationCC.d.ts.map +1 -1
- package/build/esm/cc/IrrigationCC.js +3 -222
- package/build/esm/cc/IrrigationCC.js.map +1 -1
- package/build/esm/cc/LanguageCC.d.ts +31 -133
- package/build/esm/cc/LanguageCC.d.ts.map +1 -1
- package/build/esm/cc/LanguageCC.js +2 -12
- package/build/esm/cc/LanguageCC.js.map +1 -1
- package/build/esm/cc/LockCC.d.ts +14 -64
- package/build/esm/cc/LockCC.d.ts.map +1 -1
- package/build/esm/cc/LockCC.js +2 -9
- package/build/esm/cc/LockCC.js.map +1 -1
- 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 +77 -239
- package/build/esm/cc/ManufacturerSpecificCC.d.ts.map +1 -1
- package/build/esm/cc/ManufacturerSpecificCC.js +2 -24
- package/build/esm/cc/ManufacturerSpecificCC.js.map +1 -1
- package/build/esm/cc/MeterCC.d.ts +119 -393
- package/build/esm/cc/MeterCC.d.ts.map +1 -1
- package/build/esm/cc/MeterCC.js +3 -49
- package/build/esm/cc/MeterCC.js.map +1 -1
- package/build/esm/cc/MultiChannelAssociationCC.d.ts +66 -166
- package/build/esm/cc/MultiChannelAssociationCC.d.ts.map +1 -1
- package/build/esm/cc/MultiChannelAssociationCC.js +2 -14
- package/build/esm/cc/MultiChannelAssociationCC.js.map +1 -1
- package/build/esm/cc/MultiChannelCC.d.ts +119 -499
- package/build/esm/cc/MultiChannelCC.d.ts.map +1 -1
- package/build/esm/cc/MultiChannelCC.js +2 -30
- package/build/esm/cc/MultiChannelCC.js.map +1 -1
- package/build/esm/cc/MultilevelSensorCC.d.ts +46 -130
- package/build/esm/cc/MultilevelSensorCC.d.ts.map +1 -1
- package/build/esm/cc/MultilevelSensorCC.js +2 -22
- package/build/esm/cc/MultilevelSensorCC.js.map +1 -1
- package/build/esm/cc/MultilevelSwitchCC.d.ts +160 -525
- package/build/esm/cc/MultilevelSwitchCC.d.ts.map +1 -1
- package/build/esm/cc/MultilevelSwitchCC.js +5 -101
- package/build/esm/cc/MultilevelSwitchCC.js.map +1 -1
- package/build/esm/cc/NodeNamingCC.d.ts +33 -135
- package/build/esm/cc/NodeNamingCC.d.ts.map +1 -1
- package/build/esm/cc/NodeNamingCC.js +2 -12
- package/build/esm/cc/NodeNamingCC.js.map +1 -1
- package/build/esm/cc/NotificationCC.d.ts +262 -702
- package/build/esm/cc/NotificationCC.d.ts.map +1 -1
- package/build/esm/cc/NotificationCC.js +3 -85
- package/build/esm/cc/NotificationCC.js.map +1 -1
- package/build/esm/cc/ProtectionCC.d.ts +118 -524
- package/build/esm/cc/ProtectionCC.d.ts.map +1 -1
- package/build/esm/cc/ProtectionCC.js +2 -36
- package/build/esm/cc/ProtectionCC.js.map +1 -1
- package/build/esm/cc/SceneActivationCC.d.ts +33 -132
- package/build/esm/cc/SceneActivationCC.d.ts.map +1 -1
- package/build/esm/cc/SceneActivationCC.js +2 -14
- package/build/esm/cc/SceneActivationCC.js.map +1 -1
- package/build/esm/cc/SceneActuatorConfigurationCC.d.ts +34 -61
- package/build/esm/cc/SceneActuatorConfigurationCC.d.ts.map +1 -1
- package/build/esm/cc/SceneActuatorConfigurationCC.js +2 -14
- package/build/esm/cc/SceneActuatorConfigurationCC.js.map +1 -1
- package/build/esm/cc/SceneControllerConfigurationCC.d.ts +34 -61
- package/build/esm/cc/SceneControllerConfigurationCC.d.ts.map +1 -1
- package/build/esm/cc/SceneControllerConfigurationCC.js +2 -14
- package/build/esm/cc/SceneControllerConfigurationCC.js.map +1 -1
- package/build/esm/cc/ScheduleEntryLockCC.d.ts +95 -299
- package/build/esm/cc/ScheduleEntryLockCC.d.ts.map +1 -1
- package/build/esm/cc/ScheduleEntryLockCC.js +2 -17
- package/build/esm/cc/ScheduleEntryLockCC.js.map +1 -1
- package/build/esm/cc/SoundSwitchCC.d.ts +72 -261
- package/build/esm/cc/SoundSwitchCC.d.ts.map +1 -1
- package/build/esm/cc/SoundSwitchCC.js +2 -33
- package/build/esm/cc/SoundSwitchCC.js.map +1 -1
- package/build/esm/cc/SupervisionCC.d.ts +17 -33
- package/build/esm/cc/SupervisionCC.d.ts.map +1 -1
- package/build/esm/cc/SupervisionCC.js +2 -7
- package/build/esm/cc/SupervisionCC.js.map +1 -1
- package/build/esm/cc/ThermostatFanModeCC.d.ts +44 -195
- package/build/esm/cc/ThermostatFanModeCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatFanModeCC.js +2 -14
- package/build/esm/cc/ThermostatFanModeCC.js.map +1 -1
- package/build/esm/cc/ThermostatFanStateCC.d.ts +17 -65
- package/build/esm/cc/ThermostatFanStateCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatFanStateCC.js +2 -9
- package/build/esm/cc/ThermostatFanStateCC.js.map +1 -1
- package/build/esm/cc/ThermostatModeCC.d.ts +44 -195
- package/build/esm/cc/ThermostatModeCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatModeCC.js +2 -14
- package/build/esm/cc/ThermostatModeCC.js.map +1 -1
- package/build/esm/cc/ThermostatOperatingStateCC.d.ts +17 -65
- package/build/esm/cc/ThermostatOperatingStateCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatOperatingStateCC.js +2 -9
- package/build/esm/cc/ThermostatOperatingStateCC.js.map +1 -1
- package/build/esm/cc/ThermostatSetpointCC.d.ts +49 -129
- package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatSetpointCC.js +2 -16
- package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
- package/build/esm/cc/TimeParametersCC.d.ts +12 -63
- package/build/esm/cc/TimeParametersCC.d.ts.map +1 -1
- package/build/esm/cc/TimeParametersCC.js +2 -8
- package/build/esm/cc/TimeParametersCC.js.map +1 -1
- package/build/esm/cc/UserCodeCC.d.ts +311 -1066
- package/build/esm/cc/UserCodeCC.d.ts.map +1 -1
- package/build/esm/cc/UserCodeCC.js +2 -60
- package/build/esm/cc/UserCodeCC.js.map +1 -1
- package/build/esm/cc/VersionCC.d.ts +289 -1003
- package/build/esm/cc/VersionCC.d.ts.map +1 -1
- package/build/esm/cc/VersionCC.js +2 -92
- package/build/esm/cc/VersionCC.js.map +1 -1
- package/build/esm/cc/WakeUpCC.d.ts +49 -201
- package/build/esm/cc/WakeUpCC.d.ts.map +1 -1
- package/build/esm/cc/WakeUpCC.js +2 -21
- package/build/esm/cc/WakeUpCC.js.map +1 -1
- package/build/esm/cc/WindowCoveringCC.d.ts +126 -220
- package/build/esm/cc/WindowCoveringCC.d.ts.map +1 -1
- package/build/esm/cc/WindowCoveringCC.js +3 -103
- package/build/esm/cc/WindowCoveringCC.js.map +1 -1
- package/build/esm/cc/ZWavePlusCC.d.ts +69 -329
- package/build/esm/cc/ZWavePlusCC.d.ts.map +1 -1
- package/build/esm/cc/ZWavePlusCC.js +2 -25
- package/build/esm/cc/ZWavePlusCC.js.map +1 -1
- package/build/esm/cc/_CCValues.generated.d.ts +15814 -0
- package/build/esm/cc/_CCValues.generated.d.ts.map +1 -0
- package/build/esm/cc/_CCValues.generated.js +9187 -0
- package/build/esm/cc/_CCValues.generated.js.map +1 -0
- package/build/esm/lib/CCValueUtils.d.ts +14 -0
- package/build/esm/lib/CCValueUtils.d.ts.map +1 -0
- package/build/esm/lib/CCValueUtils.js +62 -0
- package/build/esm/lib/CCValueUtils.js.map +1 -0
- package/build/esm/lib/Values.d.ts +6 -105
- package/build/esm/lib/Values.d.ts.map +1 -1
- package/build/esm/lib/Values.js +7 -104
- package/build/esm/lib/Values.js.map +1 -1
- package/package.json +9 -7
|
@@ -38,7 +38,7 @@ __export(WindowCoveringCC_exports, {
|
|
|
38
38
|
WindowCoveringCCStopLevelChange: () => WindowCoveringCCStopLevelChange,
|
|
39
39
|
WindowCoveringCCSupportedGet: () => WindowCoveringCCSupportedGet,
|
|
40
40
|
WindowCoveringCCSupportedReport: () => WindowCoveringCCSupportedReport,
|
|
41
|
-
WindowCoveringCCValues: () => WindowCoveringCCValues
|
|
41
|
+
WindowCoveringCCValues: () => import_CCValues_generated.WindowCoveringCCValues
|
|
42
42
|
});
|
|
43
43
|
module.exports = __toCommonJS(WindowCoveringCC_exports);
|
|
44
44
|
var __validateArgs = __toESM(require("./WindowCoveringCC._validateArgs.js"), 1);
|
|
@@ -46,10 +46,12 @@ var import_core = require("@zwave-js/core");
|
|
|
46
46
|
var import_safe = require("@zwave-js/shared/safe");
|
|
47
47
|
var import_safe2 = require("@zwave-js/shared/safe");
|
|
48
48
|
var import_API = require("../lib/API.js");
|
|
49
|
+
var import_CCValueUtils = require("../lib/CCValueUtils.js");
|
|
49
50
|
var import_CommandClass = require("../lib/CommandClass.js");
|
|
50
51
|
var import_CommandClassDecorators = require("../lib/CommandClassDecorators.js");
|
|
51
52
|
var import_Values = require("../lib/Values.js");
|
|
52
53
|
var import_Types = require("../lib/_Types.js");
|
|
54
|
+
var import_CCValues_generated = require("./_CCValues.generated.js");
|
|
53
55
|
var __runInitializers = function(thisArg, initializers, value) {
|
|
54
56
|
var useValue = arguments.length > 2;
|
|
55
57
|
for (var i = 0; i < initializers.length; i++) {
|
|
@@ -91,120 +93,6 @@ var __esDecorate = function(ctor, descriptorIn, decorators, contextIn, initializ
|
|
|
91
93
|
done = true;
|
|
92
94
|
};
|
|
93
95
|
const { validateArgs_WindowCoveringCCAPI_get, validateArgs_WindowCoveringCCAPI_set, validateArgs_WindowCoveringCCAPI_startLevelChange, validateArgs_WindowCoveringCCAPI_stopLevelChange } = __validateArgs;
|
|
94
|
-
function parameterToMetadataStates(parameter) {
|
|
95
|
-
switch (parameter) {
|
|
96
|
-
case import_Types.WindowCoveringParameter["Vertical Slats Angle (no position)"]:
|
|
97
|
-
case import_Types.WindowCoveringParameter["Vertical Slats Angle"]:
|
|
98
|
-
return {
|
|
99
|
-
0: "Closed (right inside)",
|
|
100
|
-
50: "Open",
|
|
101
|
-
99: "Closed (left inside)"
|
|
102
|
-
};
|
|
103
|
-
case import_Types.WindowCoveringParameter["Horizontal Slats Angle (no position)"]:
|
|
104
|
-
case import_Types.WindowCoveringParameter["Horizontal Slats Angle"]:
|
|
105
|
-
return {
|
|
106
|
-
0: "Closed (up inside)",
|
|
107
|
-
50: "Open",
|
|
108
|
-
99: "Closed (down inside)"
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
return {
|
|
112
|
-
0: "Closed",
|
|
113
|
-
99: "Open"
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
__name(parameterToMetadataStates, "parameterToMetadataStates");
|
|
117
|
-
function parameterToLevelChangeLabel(parameter, direction) {
|
|
118
|
-
switch (parameter) {
|
|
119
|
-
// For angle control, both directions are closed, so we specify it explicitly
|
|
120
|
-
case import_Types.WindowCoveringParameter["Vertical Slats Angle (no position)"]:
|
|
121
|
-
case import_Types.WindowCoveringParameter["Vertical Slats Angle"]:
|
|
122
|
-
return `Change tilt (${direction === "up" ? "left inside" : "right inside"})`;
|
|
123
|
-
case import_Types.WindowCoveringParameter["Horizontal Slats Angle (no position)"]:
|
|
124
|
-
case import_Types.WindowCoveringParameter["Horizontal Slats Angle"]:
|
|
125
|
-
return `Change tilt (${direction === "up" ? "down inside" : "up inside"})`;
|
|
126
|
-
}
|
|
127
|
-
return direction === "up" ? "Open" : "Close";
|
|
128
|
-
}
|
|
129
|
-
__name(parameterToLevelChangeLabel, "parameterToLevelChangeLabel");
|
|
130
|
-
const WindowCoveringCCValues = Object.freeze({
|
|
131
|
-
...import_Values.V.defineStaticCCValues(import_core.CommandClasses["Window Covering"], {
|
|
132
|
-
...import_Values.V.staticProperty(
|
|
133
|
-
"supportedParameters",
|
|
134
|
-
void 0,
|
|
135
|
-
// meta
|
|
136
|
-
{ internal: true }
|
|
137
|
-
)
|
|
138
|
-
}),
|
|
139
|
-
...import_Values.V.defineDynamicCCValues(import_core.CommandClasses["Window Covering"], {
|
|
140
|
-
...import_Values.V.dynamicPropertyAndKeyWithName("currentValue", "currentValue", (parameter) => parameter, ({ property, propertyKey }) => property === "currentValue" && typeof propertyKey === "number", (parameter) => {
|
|
141
|
-
return {
|
|
142
|
-
...import_core.ValueMetadata.ReadOnlyLevel,
|
|
143
|
-
label: `Current value - ${(0, import_safe2.getEnumMemberName)(import_Types.WindowCoveringParameter, parameter)}`,
|
|
144
|
-
states: parameterToMetadataStates(parameter),
|
|
145
|
-
ccSpecific: { parameter }
|
|
146
|
-
};
|
|
147
|
-
}),
|
|
148
|
-
...import_Values.V.dynamicPropertyAndKeyWithName("targetValue", "targetValue", (parameter) => parameter, ({ property, propertyKey }) => property === "targetValue" && typeof propertyKey === "number", (parameter) => {
|
|
149
|
-
const writeable = parameter % 2 === 1;
|
|
150
|
-
return {
|
|
151
|
-
...import_core.ValueMetadata.Level,
|
|
152
|
-
label: `Target value - ${(0, import_safe2.getEnumMemberName)(import_Types.WindowCoveringParameter, parameter)}`,
|
|
153
|
-
// Only odd-numbered parameters have position support and are writable
|
|
154
|
-
writeable: parameter % 2 === 1,
|
|
155
|
-
states: parameterToMetadataStates(parameter),
|
|
156
|
-
allowManualEntry: writeable,
|
|
157
|
-
ccSpecific: { parameter },
|
|
158
|
-
valueChangeOptions: ["transitionDuration"]
|
|
159
|
-
};
|
|
160
|
-
}),
|
|
161
|
-
...import_Values.V.dynamicPropertyAndKeyWithName("duration", "duration", (parameter) => parameter, ({ property, propertyKey }) => property === "duration" && typeof propertyKey === "number", (parameter) => ({
|
|
162
|
-
...import_core.ValueMetadata.ReadOnlyDuration,
|
|
163
|
-
label: `Remaining duration - ${(0, import_safe2.getEnumMemberName)(import_Types.WindowCoveringParameter, parameter)}`,
|
|
164
|
-
ccSpecific: {
|
|
165
|
-
parameter
|
|
166
|
-
}
|
|
167
|
-
})),
|
|
168
|
-
...import_Values.V.dynamicPropertyAndKeyWithName(
|
|
169
|
-
"levelChangeUp",
|
|
170
|
-
// The direction refers to the change in level, not the physical location
|
|
171
|
-
"levelChangeUp",
|
|
172
|
-
(parameter) => parameter,
|
|
173
|
-
({ property, propertyKey }) => property === "levelChangeUp" && typeof propertyKey === "number",
|
|
174
|
-
(parameter) => {
|
|
175
|
-
return {
|
|
176
|
-
...import_core.ValueMetadata.WriteOnlyBoolean,
|
|
177
|
-
label: `${parameterToLevelChangeLabel(parameter, "up")} - ${(0, import_safe2.getEnumMemberName)(import_Types.WindowCoveringParameter, parameter)}`,
|
|
178
|
-
valueChangeOptions: ["transitionDuration"],
|
|
179
|
-
states: {
|
|
180
|
-
true: "Start",
|
|
181
|
-
false: "Stop"
|
|
182
|
-
},
|
|
183
|
-
ccSpecific: { parameter }
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
),
|
|
187
|
-
...import_Values.V.dynamicPropertyAndKeyWithName(
|
|
188
|
-
"levelChangeDown",
|
|
189
|
-
// The direction refers to the change in level, not the physical location
|
|
190
|
-
"levelChangeDown",
|
|
191
|
-
(parameter) => parameter,
|
|
192
|
-
({ property, propertyKey }) => property === "levelChangeDown" && typeof propertyKey === "number",
|
|
193
|
-
(parameter) => {
|
|
194
|
-
return {
|
|
195
|
-
...import_core.ValueMetadata.WriteOnlyBoolean,
|
|
196
|
-
label: `${parameterToLevelChangeLabel(parameter, "down")} - ${(0, import_safe2.getEnumMemberName)(import_Types.WindowCoveringParameter, parameter)}`,
|
|
197
|
-
valueChangeOptions: ["transitionDuration"],
|
|
198
|
-
states: {
|
|
199
|
-
true: "Start",
|
|
200
|
-
false: "Stop"
|
|
201
|
-
},
|
|
202
|
-
ccSpecific: { parameter }
|
|
203
|
-
};
|
|
204
|
-
}
|
|
205
|
-
)
|
|
206
|
-
})
|
|
207
|
-
});
|
|
208
96
|
let WindowCoveringCCAPI = (() => {
|
|
209
97
|
let _classDecorators = [(0, import_CommandClassDecorators.API)(import_core.CommandClasses["Window Covering"])];
|
|
210
98
|
let _classDescriptor;
|
|
@@ -256,7 +144,7 @@ let WindowCoveringCCAPI = (() => {
|
|
|
256
144
|
property,
|
|
257
145
|
propertyKey
|
|
258
146
|
};
|
|
259
|
-
if (WindowCoveringCCValues.targetValue.is(valueId)) {
|
|
147
|
+
if (import_CCValues_generated.WindowCoveringCCValues.targetValue.is(valueId)) {
|
|
260
148
|
if (typeof propertyKey !== "number" || propertyKey % 2 === 0) {
|
|
261
149
|
(0, import_API.throwUnsupportedPropertyKey)(this.ccId, property, propertyKey);
|
|
262
150
|
}
|
|
@@ -266,12 +154,12 @@ let WindowCoveringCCAPI = (() => {
|
|
|
266
154
|
const parameter = propertyKey;
|
|
267
155
|
const duration = import_core.Duration.from(options?.transitionDuration);
|
|
268
156
|
return this.set([{ parameter, value }], duration);
|
|
269
|
-
} else if (WindowCoveringCCValues.levelChangeUp.is(valueId) || WindowCoveringCCValues.levelChangeDown.is(valueId)) {
|
|
157
|
+
} else if (import_CCValues_generated.WindowCoveringCCValues.levelChangeUp.is(valueId) || import_CCValues_generated.WindowCoveringCCValues.levelChangeDown.is(valueId)) {
|
|
270
158
|
if (typeof value !== "boolean") {
|
|
271
159
|
(0, import_API.throwWrongValueType)(this.ccId, property, "boolean", typeof value);
|
|
272
160
|
}
|
|
273
161
|
const parameter = propertyKey;
|
|
274
|
-
const direction = WindowCoveringCCValues.levelChangeUp.is(valueId) ? "up" : "down";
|
|
162
|
+
const direction = import_CCValues_generated.WindowCoveringCCValues.levelChangeUp.is(valueId) ? "up" : "down";
|
|
275
163
|
if (value) {
|
|
276
164
|
const duration = import_core.Duration.from(options?.transitionDuration);
|
|
277
165
|
return this.startLevelChange(parameter, direction, duration);
|
|
@@ -289,12 +177,12 @@ let WindowCoveringCCAPI = (() => {
|
|
|
289
177
|
property,
|
|
290
178
|
propertyKey
|
|
291
179
|
};
|
|
292
|
-
if (WindowCoveringCCValues.targetValue.is(valueId)) {
|
|
180
|
+
if (import_CCValues_generated.WindowCoveringCCValues.targetValue.is(valueId)) {
|
|
293
181
|
if (typeof propertyKey !== "number")
|
|
294
182
|
return;
|
|
295
183
|
const parameter = propertyKey;
|
|
296
184
|
const duration = import_core.Duration.from(options?.transitionDuration);
|
|
297
|
-
const currentValueValueId = WindowCoveringCCValues.currentValue(parameter).endpoint(this.endpoint.index);
|
|
185
|
+
const currentValueValueId = import_CCValues_generated.WindowCoveringCCValues.currentValue(parameter).endpoint(this.endpoint.index);
|
|
298
186
|
return {
|
|
299
187
|
// Window Covering commands may take some time to be executed.
|
|
300
188
|
// Therefore we try to supervise the command execution and delay the
|
|
@@ -411,7 +299,7 @@ let WindowCoveringCCAPI = (() => {
|
|
|
411
299
|
return WindowCoveringCCAPI2 = _classThis;
|
|
412
300
|
})();
|
|
413
301
|
let WindowCoveringCC = (() => {
|
|
414
|
-
let _classDecorators = [(0, import_CommandClassDecorators.commandClass)(import_core.CommandClasses["Window Covering"]), (0, import_CommandClassDecorators.implementedVersion)(1), (0, import_CommandClassDecorators.ccValues)(WindowCoveringCCValues)];
|
|
302
|
+
let _classDecorators = [(0, import_CommandClassDecorators.commandClass)(import_core.CommandClasses["Window Covering"]), (0, import_CommandClassDecorators.implementedVersion)(1), (0, import_CommandClassDecorators.ccValues)(import_CCValues_generated.WindowCoveringCCValues)];
|
|
415
303
|
let _classDescriptor;
|
|
416
304
|
let _classExtraInitializers = [];
|
|
417
305
|
let _classThis;
|
|
@@ -456,11 +344,11 @@ ${supported.map((p) => `\xB7 ${(0, import_safe2.getEnumMemberName)(import_Types.
|
|
|
456
344
|
direction: "inbound"
|
|
457
345
|
});
|
|
458
346
|
for (const param of supported) {
|
|
459
|
-
this.setMetadata(ctx, WindowCoveringCCValues.currentValue(param));
|
|
460
|
-
this.setMetadata(ctx, WindowCoveringCCValues.targetValue(param));
|
|
461
|
-
this.setMetadata(ctx, WindowCoveringCCValues.duration(param));
|
|
462
|
-
this.setMetadata(ctx, WindowCoveringCCValues.levelChangeUp(param));
|
|
463
|
-
this.setMetadata(ctx, WindowCoveringCCValues.levelChangeDown(param));
|
|
347
|
+
this.setMetadata(ctx, import_CCValues_generated.WindowCoveringCCValues.currentValue(param));
|
|
348
|
+
this.setMetadata(ctx, import_CCValues_generated.WindowCoveringCCValues.targetValue(param));
|
|
349
|
+
this.setMetadata(ctx, import_CCValues_generated.WindowCoveringCCValues.duration(param));
|
|
350
|
+
this.setMetadata(ctx, import_CCValues_generated.WindowCoveringCCValues.levelChangeUp(param));
|
|
351
|
+
this.setMetadata(ctx, import_CCValues_generated.WindowCoveringCCValues.levelChangeDown(param));
|
|
464
352
|
if (param % 2 === 1) {
|
|
465
353
|
ctx.logNode(node.id, {
|
|
466
354
|
endpoint: this.endpointIndex,
|
|
@@ -483,7 +371,7 @@ ${supported.map((p) => `\xB7 ${(0, import_safe2.getEnumMemberName)(import_Types.
|
|
|
483
371
|
return WindowCoveringCC2 = _classThis;
|
|
484
372
|
})();
|
|
485
373
|
let WindowCoveringCCSupportedReport = (() => {
|
|
486
|
-
let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.WindowCoveringCommand.SupportedReport), (0, import_CommandClassDecorators.ccValueProperty)("supportedParameters", WindowCoveringCCValues.supportedParameters)];
|
|
374
|
+
let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.WindowCoveringCommand.SupportedReport), (0, import_CommandClassDecorators.ccValueProperty)("supportedParameters", import_CCValues_generated.WindowCoveringCCValues.supportedParameters)];
|
|
487
375
|
let _classDescriptor;
|
|
488
376
|
let _classExtraInitializers = [];
|
|
489
377
|
let _classThis;
|
|
@@ -563,7 +451,7 @@ let WindowCoveringCCSupportedGet = (() => {
|
|
|
563
451
|
return WindowCoveringCCSupportedGet2 = _classThis;
|
|
564
452
|
})();
|
|
565
453
|
let WindowCoveringCCReport = (() => {
|
|
566
|
-
let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.WindowCoveringCommand.Report), (0, import_CommandClassDecorators.ccValueProperty)("currentValue", WindowCoveringCCValues.currentValue, (self) => [self.parameter]), (0, import_CommandClassDecorators.ccValueProperty)("targetValue", WindowCoveringCCValues.targetValue, (self) => [self.parameter]), (0, import_CommandClassDecorators.ccValueProperty)("duration", WindowCoveringCCValues.duration, (self) => [self.parameter])];
|
|
454
|
+
let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.WindowCoveringCommand.Report), (0, import_CommandClassDecorators.ccValueProperty)("currentValue", import_CCValues_generated.WindowCoveringCCValues.currentValue, (self) => [self.parameter]), (0, import_CommandClassDecorators.ccValueProperty)("targetValue", import_CCValues_generated.WindowCoveringCCValues.targetValue, (self) => [self.parameter]), (0, import_CommandClassDecorators.ccValueProperty)("duration", import_CCValues_generated.WindowCoveringCCValues.duration, (self) => [self.parameter])];
|
|
567
455
|
let _classDescriptor;
|
|
568
456
|
let _classExtraInitializers = [];
|
|
569
457
|
let _classThis;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/cc/WindowCoveringCC.ts"],
|
|
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\tValueMetadata,\n\ttype WithAddress,\n\tencodeBitMask,\n\tparseBitMask,\n\tvalidatePayload,\n} from \"@zwave-js/core\";\nimport { type MaybeNotKnown } from \"@zwave-js/core/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport { getEnumMemberName, pick } from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport {\n\tCCAPI,\n\tPOLL_VALUE,\n\ttype PollValueImplementation,\n\tSET_VALUE,\n\tSET_VALUE_HOOKS,\n\ttype SetValueImplementation,\n\ttype SetValueImplementationHooksFactory,\n\tthrowMissingPropertyKey,\n\tthrowUnsupportedProperty,\n\tthrowUnsupportedPropertyKey,\n\tthrowWrongValueType,\n} from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\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\ttype LevelChangeDirection,\n\tWindowCoveringCommand,\n\tWindowCoveringParameter,\n} from \"../lib/_Types.js\";\n\nfunction parameterToMetadataStates(\n\tparameter: WindowCoveringParameter,\n): Record<number, string> {\n\tswitch (parameter) {\n\t\tcase WindowCoveringParameter[\"Vertical Slats Angle (no position)\"]:\n\t\tcase WindowCoveringParameter[\"Vertical Slats Angle\"]:\n\t\t\treturn {\n\t\t\t\t0: \"Closed (right inside)\",\n\t\t\t\t50: \"Open\",\n\t\t\t\t99: \"Closed (left inside)\",\n\t\t\t};\n\n\t\tcase WindowCoveringParameter[\"Horizontal Slats Angle (no position)\"]:\n\t\tcase WindowCoveringParameter[\"Horizontal Slats Angle\"]:\n\t\t\treturn {\n\t\t\t\t0: \"Closed (up inside)\",\n\t\t\t\t50: \"Open\",\n\t\t\t\t99: \"Closed (down inside)\",\n\t\t\t};\n\t}\n\n\treturn {\n\t\t0: \"Closed\",\n\t\t99: \"Open\",\n\t};\n}\n\nfunction parameterToLevelChangeLabel(\n\tparameter: WindowCoveringParameter,\n\tdirection: \"up\" | \"down\",\n): string {\n\tswitch (parameter) {\n\t\t// For angle control, both directions are closed, so we specify it explicitly\n\t\tcase WindowCoveringParameter[\"Vertical Slats Angle (no position)\"]:\n\t\tcase WindowCoveringParameter[\"Vertical Slats Angle\"]:\n\t\t\treturn `Change tilt (${\n\t\t\t\tdirection === \"up\" ? \"left inside\" : \"right inside\"\n\t\t\t})`;\n\n\t\tcase WindowCoveringParameter[\"Horizontal Slats Angle (no position)\"]:\n\t\tcase WindowCoveringParameter[\"Horizontal Slats Angle\"]:\n\t\t\t// Horizontal slats refer to the position of the inner side of the slats\n\t\t\t// where a high level (99) actually means they face down\n\t\t\treturn `Change tilt (${\n\t\t\t\tdirection === \"up\" ? \"down inside\" : \"up inside\"\n\t\t\t})`;\n\t}\n\t// For all other parameters, refer to the amount of light that is let in\n\treturn direction === \"up\" ? \"Open\" : \"Close\";\n}\n\nexport const WindowCoveringCCValues = Object.freeze({\n\t...V.defineStaticCCValues(CommandClasses[\"Window Covering\"], {\n\t\t...V.staticProperty(\n\t\t\t\"supportedParameters\",\n\t\t\tundefined, // meta\n\t\t\t{ internal: true }, // value options\n\t\t),\n\t}),\n\n\t...V.defineDynamicCCValues(CommandClasses[\"Window Covering\"], {\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"currentValue\",\n\t\t\t\"currentValue\",\n\t\t\t(parameter: WindowCoveringParameter) => parameter,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"currentValue\" && typeof propertyKey === \"number\",\n\t\t\t(parameter: WindowCoveringParameter) => {\n\t\t\t\treturn {\n\t\t\t\t\t...ValueMetadata.ReadOnlyLevel,\n\t\t\t\t\tlabel: `Current value - ${\n\t\t\t\t\t\tgetEnumMemberName(\n\t\t\t\t\t\t\tWindowCoveringParameter,\n\t\t\t\t\t\t\tparameter,\n\t\t\t\t\t\t)\n\t\t\t\t\t}`,\n\t\t\t\t\tstates: parameterToMetadataStates(parameter),\n\t\t\t\t\tccSpecific: { parameter },\n\t\t\t\t} as const;\n\t\t\t},\n\t\t),\n\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"targetValue\",\n\t\t\t\"targetValue\",\n\t\t\t(parameter: WindowCoveringParameter) => parameter,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"targetValue\" && typeof propertyKey === \"number\",\n\t\t\t(parameter: WindowCoveringParameter) => {\n\t\t\t\t// Only odd-numbered parameters have position support and are writable\n\t\t\t\tconst writeable = parameter % 2 === 1;\n\t\t\t\treturn {\n\t\t\t\t\t...ValueMetadata.Level,\n\t\t\t\t\tlabel: `Target value - ${\n\t\t\t\t\t\tgetEnumMemberName(\n\t\t\t\t\t\t\tWindowCoveringParameter,\n\t\t\t\t\t\t\tparameter,\n\t\t\t\t\t\t)\n\t\t\t\t\t}`,\n\t\t\t\t\t// Only odd-numbered parameters have position support and are writable\n\t\t\t\t\twriteable: parameter % 2 === 1,\n\t\t\t\t\tstates: parameterToMetadataStates(parameter),\n\t\t\t\t\tallowManualEntry: writeable,\n\t\t\t\t\tccSpecific: { parameter },\n\t\t\t\t\tvalueChangeOptions: [\"transitionDuration\"],\n\t\t\t\t} as const;\n\t\t\t},\n\t\t),\n\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"duration\",\n\t\t\t\"duration\",\n\t\t\t(parameter: WindowCoveringParameter) => parameter,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"duration\" && typeof propertyKey === \"number\",\n\t\t\t(parameter: WindowCoveringParameter) => ({\n\t\t\t\t...ValueMetadata.ReadOnlyDuration,\n\t\t\t\tlabel: `Remaining duration - ${\n\t\t\t\t\tgetEnumMemberName(\n\t\t\t\t\t\tWindowCoveringParameter,\n\t\t\t\t\t\tparameter,\n\t\t\t\t\t)\n\t\t\t\t}`,\n\t\t\t\tccSpecific: {\n\t\t\t\t\tparameter,\n\t\t\t\t},\n\t\t\t} as const),\n\t\t),\n\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"levelChangeUp\",\n\t\t\t// The direction refers to the change in level, not the physical location\n\t\t\t\"levelChangeUp\",\n\t\t\t(parameter: WindowCoveringParameter) => parameter,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"levelChangeUp\" && typeof propertyKey === \"number\",\n\t\t\t(parameter: WindowCoveringParameter) => {\n\t\t\t\treturn {\n\t\t\t\t\t...ValueMetadata.WriteOnlyBoolean,\n\t\t\t\t\tlabel: `${\n\t\t\t\t\t\tparameterToLevelChangeLabel(\n\t\t\t\t\t\t\tparameter,\n\t\t\t\t\t\t\t\"up\",\n\t\t\t\t\t\t)\n\t\t\t\t\t} - ${\n\t\t\t\t\t\tgetEnumMemberName(\n\t\t\t\t\t\t\tWindowCoveringParameter,\n\t\t\t\t\t\t\tparameter,\n\t\t\t\t\t\t)\n\t\t\t\t\t}`,\n\t\t\t\t\tvalueChangeOptions: [\"transitionDuration\"],\n\t\t\t\t\tstates: {\n\t\t\t\t\t\ttrue: \"Start\",\n\t\t\t\t\t\tfalse: \"Stop\",\n\t\t\t\t\t},\n\t\t\t\t\tccSpecific: { parameter },\n\t\t\t\t} as const;\n\t\t\t},\n\t\t),\n\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"levelChangeDown\",\n\t\t\t// The direction refers to the change in level, not the physical location\n\t\t\t\"levelChangeDown\",\n\t\t\t(parameter: WindowCoveringParameter) => parameter,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"levelChangeDown\"\n\t\t\t\t&& typeof propertyKey === \"number\",\n\t\t\t(parameter: WindowCoveringParameter) => {\n\t\t\t\treturn {\n\t\t\t\t\t...ValueMetadata.WriteOnlyBoolean,\n\t\t\t\t\tlabel: `${\n\t\t\t\t\t\tparameterToLevelChangeLabel(\n\t\t\t\t\t\t\tparameter,\n\t\t\t\t\t\t\t\"down\",\n\t\t\t\t\t\t)\n\t\t\t\t\t} - ${\n\t\t\t\t\t\tgetEnumMemberName(\n\t\t\t\t\t\t\tWindowCoveringParameter,\n\t\t\t\t\t\t\tparameter,\n\t\t\t\t\t\t)\n\t\t\t\t\t}`,\n\t\t\t\t\tvalueChangeOptions: [\"transitionDuration\"],\n\t\t\t\t\tstates: {\n\t\t\t\t\t\ttrue: \"Start\",\n\t\t\t\t\t\tfalse: \"Stop\",\n\t\t\t\t\t},\n\t\t\t\t\tccSpecific: { parameter },\n\t\t\t\t} as const;\n\t\t\t},\n\t\t),\n\t}),\n});\n\n@API(CommandClasses[\"Window Covering\"])\nexport class WindowCoveringCCAPI extends CCAPI {\n\tpublic supportsCommand(cmd: WindowCoveringCommand): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase WindowCoveringCommand.Get:\n\t\t\tcase WindowCoveringCommand.Set:\n\t\t\tcase WindowCoveringCommand.SupportedGet:\n\t\t\tcase WindowCoveringCommand.StartLevelChange:\n\t\t\tcase WindowCoveringCommand.StopLevelChange:\n\t\t\t\treturn true; // This is mandatory\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\tprotected override get [SET_VALUE](): SetValueImplementation {\n\t\treturn async function(\n\t\t\tthis: WindowCoveringCCAPI,\n\t\t\t{ property, propertyKey },\n\t\t\tvalue,\n\t\t\toptions,\n\t\t) {\n\t\t\tconst valueId = {\n\t\t\t\tcommandClass: this.ccId,\n\t\t\t\tproperty,\n\t\t\t\tpropertyKey,\n\t\t\t};\n\n\t\t\tif (WindowCoveringCCValues.targetValue.is(valueId)) {\n\t\t\t\tif (\n\t\t\t\t\ttypeof propertyKey !== \"number\"\n\t\t\t\t\t// Only odd-numbered parameters have position support and are writable\n\t\t\t\t\t|| propertyKey % 2 === 0\n\t\t\t\t) {\n\t\t\t\t\tthrowUnsupportedPropertyKey(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\tpropertyKey!,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst parameter = propertyKey;\n\t\t\t\tconst duration = Duration.from(options?.transitionDuration);\n\n\t\t\t\treturn this.set([{ parameter, value }], duration);\n\t\t\t} else if (\n\t\t\t\tWindowCoveringCCValues.levelChangeUp.is(valueId)\n\t\t\t\t|| WindowCoveringCCValues.levelChangeDown.is(valueId)\n\t\t\t) {\n\t\t\t\tif (typeof value !== \"boolean\") {\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\"boolean\",\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 parameter = propertyKey as number;\n\t\t\t\tconst direction = WindowCoveringCCValues.levelChangeUp.is(\n\t\t\t\t\t\tvalueId,\n\t\t\t\t\t)\n\t\t\t\t\t? \"up\"\n\t\t\t\t\t: \"down\";\n\n\t\t\t\tif (value) {\n\t\t\t\t\t// Perform the level change\n\t\t\t\t\tconst duration = Duration.from(options?.transitionDuration);\n\t\t\t\t\treturn this.startLevelChange(\n\t\t\t\t\t\tparameter,\n\t\t\t\t\t\tdirection,\n\t\t\t\t\t\tduration,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\treturn this.stopLevelChange(parameter);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n\n\tprotected [SET_VALUE_HOOKS]: SetValueImplementationHooksFactory = (\n\t\t{ property, propertyKey },\n\t\tvalue,\n\t\toptions,\n\t) => {\n\t\tconst valueId = {\n\t\t\tcommandClass: this.ccId,\n\t\t\tproperty,\n\t\t\tpropertyKey,\n\t\t};\n\n\t\tif (WindowCoveringCCValues.targetValue.is(valueId)) {\n\t\t\tif (typeof propertyKey !== \"number\") return;\n\t\t\tconst parameter = propertyKey;\n\n\t\t\tconst duration = Duration.from(options?.transitionDuration);\n\n\t\t\tconst currentValueValueId = WindowCoveringCCValues.currentValue(\n\t\t\t\tparameter,\n\t\t\t).endpoint(this.endpoint.index);\n\n\t\t\treturn {\n\t\t\t\t// Window Covering commands may take some time to be executed.\n\t\t\t\t// Therefore we try to supervise the command execution and delay the\n\t\t\t\t// optimistic update until the final result is received.\n\t\t\t\tsupervisionDelayedUpdates: true,\n\t\t\t\tsupervisionOnSuccess: async () => {\n\t\t\t\t\t// Only update currentValue for valid target values\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof value === \"number\"\n\t\t\t\t\t\t&& value >= 0\n\t\t\t\t\t\t&& value <= 99\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.tryGetValueDB()?.setValue(\n\t\t\t\t\t\t\tcurrentValueValueId,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (value === 255) {\n\t\t\t\t\t\t// We don't know the status now, so refresh the current value\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait this.get(parameter);\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsupervisionOnFailure: async () => {\n\t\t\t\t\t// The transition failed, so now we don't know the status - refresh the current value\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait this.get(parameter);\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// ignore\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\toptimisticallyUpdateRelatedValues: (\n\t\t\t\t\t_supervisedAndSuccessful,\n\t\t\t\t) => {\n\t\t\t\t\t// Only update currentValue for valid target values\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof value === \"number\"\n\t\t\t\t\t\t&& value >= 0\n\t\t\t\t\t\t&& value <= 99\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (this.isSinglecast()) {\n\t\t\t\t\t\t\tthis.tryGetValueDB()?.setValue(\n\t\t\t\t\t\t\t\tcurrentValueValueId,\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if (this.isMulticast()) {\n\t\t\t\t\t\t\t// Figure out which nodes were affected by this command\n\t\t\t\t\t\t\tconst affectedNodes = this.endpoint.node\n\t\t\t\t\t\t\t\t.physicalNodes.filter(\n\t\t\t\t\t\t\t\t\t(node) =>\n\t\t\t\t\t\t\t\t\t\tnode\n\t\t\t\t\t\t\t\t\t\t\t.getEndpoint(this.endpoint.index)\n\t\t\t\t\t\t\t\t\t\t\t?.supportsCC(this.ccId),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t// and optimistically update the currentValue\n\t\t\t\t\t\t\tfor (const node of affectedNodes) {\n\t\t\t\t\t\t\t\tthis.host\n\t\t\t\t\t\t\t\t\t.tryGetValueDB(node.id)\n\t\t\t\t\t\t\t\t\t?.setValue(currentValueValueId, value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tverifyChanges: () => {\n\t\t\t\t\tif (this.isSinglecast()) {\n\t\t\t\t\t\t// We query currentValue instead of targetValue to make sure that unsolicited updates cancel the scheduled poll\n\t\t\t\t\t\tthis.schedulePoll(currentValueValueId, value, {\n\t\t\t\t\t\t\tduration,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// For multicasts, do not schedule a refresh - this could cause a LOT of traffic\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t};\n\n\tprotected get [POLL_VALUE](): PollValueImplementation {\n\t\treturn async function(\n\t\t\tthis: WindowCoveringCCAPI,\n\t\t\t{ property, propertyKey },\n\t\t) {\n\t\t\tswitch (property) {\n\t\t\t\tcase \"currentValue\":\n\t\t\t\tcase \"targetValue\":\n\t\t\t\tcase \"duration\":\n\t\t\t\t\tif (propertyKey == undefined) {\n\t\t\t\t\t\tthrowMissingPropertyKey(this.ccId, property);\n\t\t\t\t\t} else if (typeof propertyKey !== \"number\") {\n\t\t\t\t\t\tthrowUnsupportedPropertyKey(\n\t\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn (await this.get(propertyKey))?.[property];\n\t\t\t\tdefault:\n\t\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic async getSupported(): Promise<\n\t\tMaybeNotKnown<readonly WindowCoveringParameter[]>\n\t> {\n\t\tthis.assertSupportsCommand(\n\t\t\tWindowCoveringCommand,\n\t\t\tWindowCoveringCommand.SupportedGet,\n\t\t);\n\n\t\tconst cc = new WindowCoveringCCSupportedGet({\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\tWindowCoveringCCSupportedReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\treturn response?.supportedParameters;\n\t}\n\n\t@validateArgs({ strictEnums: true })\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async get(parameter: WindowCoveringParameter) {\n\t\tthis.assertSupportsCommand(\n\t\t\tWindowCoveringCommand,\n\t\t\tWindowCoveringCommand.Get,\n\t\t);\n\n\t\tconst cc = new WindowCoveringCCGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tparameter,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tWindowCoveringCCReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn pick(response, [\"currentValue\", \"targetValue\", \"duration\"]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async set(\n\t\ttargetValues: {\n\t\t\tparameter: WindowCoveringParameter;\n\t\t\tvalue: number;\n\t\t}[],\n\t\tduration?: Duration | string,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tWindowCoveringCommand,\n\t\t\tWindowCoveringCommand.StartLevelChange,\n\t\t);\n\n\t\tconst cc = new WindowCoveringCCSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\ttargetValues,\n\t\t\tduration,\n\t\t});\n\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t@validateArgs({ strictEnums: true })\n\tpublic async startLevelChange(\n\t\tparameter: WindowCoveringParameter,\n\t\tdirection: keyof typeof LevelChangeDirection,\n\t\tduration?: Duration | string,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tWindowCoveringCommand,\n\t\t\tWindowCoveringCommand.StartLevelChange,\n\t\t);\n\n\t\tconst cc = new WindowCoveringCCStartLevelChange({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tparameter,\n\t\t\tdirection,\n\t\t\tduration,\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\tparameter: WindowCoveringParameter,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tWindowCoveringCommand,\n\t\t\tWindowCoveringCommand.StopLevelChange,\n\t\t);\n\n\t\tconst cc = new WindowCoveringCCStopLevelChange({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tparameter,\n\t\t});\n\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n}\n\n@commandClass(CommandClasses[\"Window Covering\"])\n@implementedVersion(1)\n@ccValues(WindowCoveringCCValues)\nexport class WindowCoveringCC extends CommandClass {\n\tdeclare ccCommand: WindowCoveringCommand;\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[\"Window Covering\"],\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 window covering parameters...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tconst supported = await api.getSupported();\n\t\tif (supported?.length) {\n\t\t\tconst logMessage = `supported window covering parameters:\n${\n\t\t\t\tsupported\n\t\t\t\t\t.map((p) =>\n\t\t\t\t\t\t`\u00B7 ${getEnumMemberName(WindowCoveringParameter, p)}`\n\t\t\t\t\t)\n\t\t\t\t\t.join(\"\\n\")\n\t\t\t}`;\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: logMessage,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\n\t\t\t// Create metadata for all supported parameters\n\t\t\tfor (const param of supported) {\n\t\t\t\t// Default values\n\t\t\t\tthis.setMetadata(\n\t\t\t\t\tctx,\n\t\t\t\t\tWindowCoveringCCValues.currentValue(param),\n\t\t\t\t);\n\t\t\t\tthis.setMetadata(\n\t\t\t\t\tctx,\n\t\t\t\t\tWindowCoveringCCValues.targetValue(param),\n\t\t\t\t);\n\t\t\t\tthis.setMetadata(\n\t\t\t\t\tctx,\n\t\t\t\t\tWindowCoveringCCValues.duration(param),\n\t\t\t\t);\n\n\t\t\t\t// Level change values\n\t\t\t\tthis.setMetadata(\n\t\t\t\t\tctx,\n\t\t\t\t\tWindowCoveringCCValues.levelChangeUp(param),\n\t\t\t\t);\n\t\t\t\tthis.setMetadata(\n\t\t\t\t\tctx,\n\t\t\t\t\tWindowCoveringCCValues.levelChangeDown(param),\n\t\t\t\t);\n\n\t\t\t\t// And for the odd parameters (with position support), query the position\n\t\t\t\tif (param % 2 === 1) {\n\t\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\t\tmessage: `querying position for parameter ${\n\t\t\t\t\t\t\tgetEnumMemberName(\n\t\t\t\t\t\t\t\tWindowCoveringParameter,\n\t\t\t\t\t\t\t\tparam,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}...`,\n\t\t\t\t\t\tdirection: \"outbound\",\n\t\t\t\t\t});\n\t\t\t\t\tawait api.get(param);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Remember that the interview is complete\n\t\tthis.setInterviewComplete(ctx, true);\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 (typeof propertyKey === \"number\") {\n\t\t\treturn getEnumMemberName(WindowCoveringParameter, propertyKey);\n\t\t}\n\t\treturn super.translatePropertyKey(ctx, property, propertyKey);\n\t}\n}\n\n// @publicAPI\nexport interface WindowCoveringCCSupportedReportOptions {\n\tsupportedParameters: readonly WindowCoveringParameter[];\n}\n\n@CCCommand(WindowCoveringCommand.SupportedReport)\n@ccValueProperty(\n\t\"supportedParameters\",\n\tWindowCoveringCCValues.supportedParameters,\n)\nexport class WindowCoveringCCSupportedReport extends WindowCoveringCC {\n\tpublic constructor(\n\t\toptions: WithAddress<WindowCoveringCCSupportedReportOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.supportedParameters = options.supportedParameters;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): WindowCoveringCCSupportedReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\n\t\tconst numBitmaskBytes = raw.payload[0] & 0b1111;\n\t\tvalidatePayload(raw.payload.length >= 1 + numBitmaskBytes);\n\t\tconst bitmask = raw.payload.subarray(1, 1 + numBitmaskBytes);\n\t\tconst supportedParameters: WindowCoveringParameter[] = parseBitMask(\n\t\t\tbitmask,\n\t\t\tWindowCoveringParameter[\"Outbound Left (no position)\"],\n\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsupportedParameters,\n\t\t});\n\t}\n\n\tpublic readonly supportedParameters: readonly WindowCoveringParameter[];\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tconst bitmask = encodeBitMask(\n\t\t\tthis.supportedParameters,\n\t\t\tundefined,\n\t\t\tWindowCoveringParameter[\"Outbound Left (no position)\"],\n\t\t).subarray(0, 15);\n\t\tconst numBitmaskBytes = bitmask.length & 0b1111;\n\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([numBitmaskBytes]),\n\t\t\tbitmask.subarray(0, numBitmaskBytes),\n\t\t]);\n\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 parameters\": this.supportedParameters\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(p) =>\n\t\t\t\t\t\t\t`\\n\u00B7 ${\n\t\t\t\t\t\t\t\tgetEnumMemberName(\n\t\t\t\t\t\t\t\t\tWindowCoveringParameter,\n\t\t\t\t\t\t\t\t\tp,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}`,\n\t\t\t\t\t)\n\t\t\t\t\t.join(\"\"),\n\t\t\t},\n\t\t};\n\t}\n}\n\n@CCCommand(WindowCoveringCommand.SupportedGet)\n@expectedCCResponse(WindowCoveringCCSupportedReport)\nexport class WindowCoveringCCSupportedGet extends WindowCoveringCC {}\n\n// @publicAPI\nexport interface WindowCoveringCCReportOptions {\n\tparameter: WindowCoveringParameter;\n\tcurrentValue: number;\n\ttargetValue: number;\n\tduration: Duration;\n}\n\n@CCCommand(WindowCoveringCommand.Report)\n@ccValueProperty(\n\t\"currentValue\",\n\tWindowCoveringCCValues.currentValue,\n\t(self) => [self.parameter],\n)\n@ccValueProperty(\n\t\"targetValue\",\n\tWindowCoveringCCValues.targetValue,\n\t(self) => [self.parameter],\n)\n@ccValueProperty(\n\t\"duration\",\n\tWindowCoveringCCValues.duration,\n\t(self) => [self.parameter],\n)\nexport class WindowCoveringCCReport extends WindowCoveringCC {\n\tpublic constructor(\n\t\toptions: WithAddress<WindowCoveringCCReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.parameter = options.parameter;\n\t\tthis.currentValue = options.currentValue;\n\t\tthis.targetValue = options.targetValue;\n\t\tthis.duration = options.duration;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): WindowCoveringCCReport {\n\t\tvalidatePayload(raw.payload.length >= 4);\n\t\tconst parameter: WindowCoveringParameter = raw.payload[0];\n\t\tconst currentValue = raw.payload[1];\n\t\tconst targetValue = raw.payload[2];\n\t\tconst duration = Duration.parseReport(raw.payload[3])\n\t\t\t?? Duration.unknown();\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tparameter,\n\t\t\tcurrentValue,\n\t\t\ttargetValue,\n\t\t\tduration,\n\t\t});\n\t}\n\n\tpublic readonly parameter: WindowCoveringParameter;\n\n\tpublic readonly currentValue: number;\n\n\tpublic readonly targetValue: number;\n\n\tpublic readonly duration: Duration;\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\tparameter: getEnumMemberName(\n\t\t\t\t\tWindowCoveringParameter,\n\t\t\t\t\tthis.parameter,\n\t\t\t\t),\n\t\t\t\t\"current value\": this.currentValue,\n\t\t\t\t\"target value\": this.targetValue,\n\t\t\t\tduration: this.duration.toString(),\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface WindowCoveringCCGetOptions {\n\tparameter: WindowCoveringParameter;\n}\n\nfunction testResponseForWindowCoveringGet(\n\tsent: WindowCoveringCCGet,\n\treceived: WindowCoveringCCReport,\n) {\n\treturn received.parameter === sent.parameter;\n}\n\n@CCCommand(WindowCoveringCommand.Get)\n@expectedCCResponse(WindowCoveringCCReport, testResponseForWindowCoveringGet)\nexport class WindowCoveringCCGet extends WindowCoveringCC {\n\tpublic constructor(\n\t\toptions: WithAddress<WindowCoveringCCGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.parameter = options.parameter;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCGet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst parameter: WindowCoveringParameter = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tparameter,\n\t\t});\n\t}\n\n\tpublic parameter: WindowCoveringParameter;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.parameter]);\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\tparameter: getEnumMemberName(\n\t\t\t\t\tWindowCoveringParameter,\n\t\t\t\t\tthis.parameter,\n\t\t\t\t),\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface WindowCoveringCCSetOptions {\n\ttargetValues: {\n\t\tparameter: WindowCoveringParameter;\n\t\tvalue: number;\n\t}[];\n\tduration?: Duration | string;\n}\n\n@CCCommand(WindowCoveringCommand.Set)\n@useSupervision()\nexport class WindowCoveringCCSet extends WindowCoveringCC {\n\tpublic constructor(\n\t\toptions: WithAddress<WindowCoveringCCSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.targetValues = options.targetValues;\n\t\tthis.duration = Duration.from(options.duration);\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCSet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst numEntries = raw.payload[0] & 0b11111;\n\n\t\tvalidatePayload(raw.payload.length >= 1 + numEntries * 2);\n\t\tconst targetValues: WindowCoveringCCSetOptions[\"targetValues\"] = [];\n\n\t\tfor (let i = 0; i < numEntries; i++) {\n\t\t\tconst offset = 1 + i * 2;\n\t\t\ttargetValues.push({\n\t\t\t\tparameter: raw.payload[offset],\n\t\t\t\tvalue: raw.payload[offset + 1],\n\t\t\t});\n\t\t}\n\n\t\tlet duration: Duration | undefined;\n\n\t\tif (raw.payload.length >= 2 + numEntries * 2) {\n\t\t\tduration = Duration.parseSet(\n\t\t\t\traw.payload[1 + numEntries * 2],\n\t\t\t);\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\ttargetValues,\n\t\t\tduration,\n\t\t});\n\t}\n\n\tpublic targetValues: {\n\t\tparameter: WindowCoveringParameter;\n\t\tvalue: number;\n\t}[];\n\tpublic duration: Duration | undefined;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tconst numEntries = this.targetValues.length & 0b11111;\n\t\tthis.payload = new Bytes(2 + numEntries * 2);\n\n\t\tthis.payload[0] = numEntries;\n\t\tfor (let i = 0; i < numEntries; i++) {\n\t\t\tconst offset = 1 + i * 2;\n\t\t\tthis.payload[offset] = this.targetValues[i].parameter;\n\t\t\tthis.payload[offset + 1] = this.targetValues[i].value;\n\t\t}\n\n\t\tthis.payload[this.payload.length - 1] = (\n\t\t\tthis.duration ?? Duration.default()\n\t\t).serializeSet();\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 { parameter, value } of this.targetValues) {\n\t\t\tmessage[getEnumMemberName(WindowCoveringParameter, parameter)] =\n\t\t\t\tvalue;\n\t\t}\n\t\tif (this.duration) {\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 WindowCoveringCCStartLevelChangeOptions {\n\tparameter: WindowCoveringParameter;\n\tdirection: keyof typeof LevelChangeDirection;\n\tduration?: Duration | string;\n}\n\n@CCCommand(WindowCoveringCommand.StartLevelChange)\n@useSupervision()\nexport class WindowCoveringCCStartLevelChange extends WindowCoveringCC {\n\tpublic constructor(\n\t\toptions: WithAddress<WindowCoveringCCStartLevelChangeOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.parameter = options.parameter;\n\t\tthis.direction = options.direction;\n\t\tthis.duration = Duration.from(options.duration);\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): WindowCoveringCCStartLevelChange {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst direction = !!(raw.payload[0] & 0b0100_0000)\n\t\t\t? \"down\"\n\t\t\t: \"up\";\n\t\tconst parameter: WindowCoveringParameter = raw.payload[1];\n\t\tlet duration: Duration | undefined;\n\n\t\tif (raw.payload.length >= 3) {\n\t\t\tduration = Duration.parseSet(raw.payload[2]);\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tdirection,\n\t\t\tparameter,\n\t\t\tduration,\n\t\t});\n\t}\n\n\tpublic parameter: WindowCoveringParameter;\n\tpublic direction: keyof typeof LevelChangeDirection;\n\tpublic duration: Duration | undefined;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.direction === \"down\" ? 0b0100_0000 : 0b0000_0000,\n\t\t\tthis.parameter,\n\t\t\t(this.duration ?? Duration.default()).serializeSet(),\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\tparameter: getEnumMemberName(\n\t\t\t\tWindowCoveringParameter,\n\t\t\t\tthis.parameter,\n\t\t\t),\n\t\t\tdirection: this.direction,\n\t\t};\n\t\tif (this.duration) {\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 WindowCoveringCCStopLevelChangeOptions {\n\tparameter: WindowCoveringParameter;\n}\n\n@CCCommand(WindowCoveringCommand.StopLevelChange)\n@useSupervision()\nexport class WindowCoveringCCStopLevelChange extends WindowCoveringCC {\n\tpublic constructor(\n\t\toptions: WithAddress<WindowCoveringCCStopLevelChangeOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.parameter = options.parameter;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): WindowCoveringCCStopLevelChange {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst parameter: WindowCoveringParameter = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tparameter,\n\t\t});\n\t}\n\n\tpublic parameter: WindowCoveringParameter;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.parameter]);\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\tparameter: getEnumMemberName(\n\t\t\t\t\tWindowCoveringParameter,\n\t\t\t\t\tthis.parameter,\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\tValueMetadata,\n\ttype WithAddress,\n\tencodeBitMask,\n\tparseBitMask,\n\tvalidatePayload,\n} from \"@zwave-js/core\";\nimport { type MaybeNotKnown } from \"@zwave-js/core/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport { getEnumMemberName, pick } from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport {\n\tCCAPI,\n\tPOLL_VALUE,\n\ttype PollValueImplementation,\n\tSET_VALUE,\n\tSET_VALUE_HOOKS,\n\ttype SetValueImplementation,\n\ttype SetValueImplementationHooksFactory,\n\tthrowMissingPropertyKey,\n\tthrowUnsupportedProperty,\n\tthrowUnsupportedPropertyKey,\n\tthrowWrongValueType,\n} from \"../lib/API.js\";\nimport {\n\twindowCoveringParameterToLevelChangeLabel,\n\twindowCoveringParameterToMetadataStates,\n} from \"../lib/CCValueUtils.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\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\ttype LevelChangeDirection,\n\tWindowCoveringCommand,\n\tWindowCoveringParameter,\n} from \"../lib/_Types.js\";\n\nexport const WindowCoveringCCValues = V.defineCCValues(\n\tCommandClasses[\"Window Covering\"],\n\t{\n\t\t...V.staticProperty(\n\t\t\t\"supportedParameters\",\n\t\t\tundefined, // meta\n\t\t\t{ internal: true }, // value options\n\t\t),\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"currentValue\",\n\t\t\t\"currentValue\",\n\t\t\t(parameter: WindowCoveringParameter) => parameter,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"currentValue\" && typeof propertyKey === \"number\",\n\t\t\t(parameter: WindowCoveringParameter) => {\n\t\t\t\treturn {\n\t\t\t\t\t...ValueMetadata.ReadOnlyLevel,\n\t\t\t\t\tlabel: `Current value - ${\n\t\t\t\t\t\tgetEnumMemberName(\n\t\t\t\t\t\t\tWindowCoveringParameter,\n\t\t\t\t\t\t\tparameter,\n\t\t\t\t\t\t)\n\t\t\t\t\t}`,\n\t\t\t\t\tstates: windowCoveringParameterToMetadataStates(parameter),\n\t\t\t\t\tccSpecific: { parameter },\n\t\t\t\t} as const;\n\t\t\t},\n\t\t),\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"targetValue\",\n\t\t\t\"targetValue\",\n\t\t\t(parameter: WindowCoveringParameter) => parameter,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"targetValue\" && typeof propertyKey === \"number\",\n\t\t\t(parameter: WindowCoveringParameter) => {\n\t\t\t\t// Only odd-numbered parameters have position support and are writable\n\t\t\t\tconst writeable = parameter % 2 === 1;\n\t\t\t\treturn {\n\t\t\t\t\t...ValueMetadata.Level,\n\t\t\t\t\tlabel: `Target value - ${\n\t\t\t\t\t\tgetEnumMemberName(\n\t\t\t\t\t\t\tWindowCoveringParameter,\n\t\t\t\t\t\t\tparameter,\n\t\t\t\t\t\t)\n\t\t\t\t\t}`,\n\t\t\t\t\t// Only odd-numbered parameters have position support and are writable\n\t\t\t\t\twriteable: parameter % 2 === 1,\n\t\t\t\t\tstates: windowCoveringParameterToMetadataStates(parameter),\n\t\t\t\t\tallowManualEntry: writeable,\n\t\t\t\t\tccSpecific: { parameter },\n\t\t\t\t\tvalueChangeOptions: [\"transitionDuration\"],\n\t\t\t\t} as const;\n\t\t\t},\n\t\t),\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"duration\",\n\t\t\t\"duration\",\n\t\t\t(parameter: WindowCoveringParameter) => parameter,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"duration\" && typeof propertyKey === \"number\",\n\t\t\t(parameter: WindowCoveringParameter) => ({\n\t\t\t\t...ValueMetadata.ReadOnlyDuration,\n\t\t\t\tlabel: `Remaining duration - ${\n\t\t\t\t\tgetEnumMemberName(\n\t\t\t\t\t\tWindowCoveringParameter,\n\t\t\t\t\t\tparameter,\n\t\t\t\t\t)\n\t\t\t\t}`,\n\t\t\t\tccSpecific: {\n\t\t\t\t\tparameter,\n\t\t\t\t},\n\t\t\t} as const),\n\t\t),\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"levelChangeUp\",\n\t\t\t// The direction refers to the change in level, not the physical location\n\t\t\t\"levelChangeUp\",\n\t\t\t(parameter: WindowCoveringParameter) => parameter,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"levelChangeUp\" && typeof propertyKey === \"number\",\n\t\t\t(parameter: WindowCoveringParameter) => {\n\t\t\t\treturn {\n\t\t\t\t\t...ValueMetadata.WriteOnlyBoolean,\n\t\t\t\t\tlabel: `${\n\t\t\t\t\t\twindowCoveringParameterToLevelChangeLabel(\n\t\t\t\t\t\t\tparameter,\n\t\t\t\t\t\t\t\"up\",\n\t\t\t\t\t\t)\n\t\t\t\t\t} - ${\n\t\t\t\t\t\tgetEnumMemberName(\n\t\t\t\t\t\t\tWindowCoveringParameter,\n\t\t\t\t\t\t\tparameter,\n\t\t\t\t\t\t)\n\t\t\t\t\t}`,\n\t\t\t\t\tvalueChangeOptions: [\"transitionDuration\"],\n\t\t\t\t\tstates: {\n\t\t\t\t\t\ttrue: \"Start\",\n\t\t\t\t\t\tfalse: \"Stop\",\n\t\t\t\t\t},\n\t\t\t\t\tccSpecific: { parameter },\n\t\t\t\t} as const;\n\t\t\t},\n\t\t),\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"levelChangeDown\",\n\t\t\t// The direction refers to the change in level, not the physical location\n\t\t\t\"levelChangeDown\",\n\t\t\t(parameter: WindowCoveringParameter) => parameter,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"levelChangeDown\"\n\t\t\t\t&& typeof propertyKey === \"number\",\n\t\t\t(parameter: WindowCoveringParameter) => {\n\t\t\t\treturn {\n\t\t\t\t\t...ValueMetadata.WriteOnlyBoolean,\n\t\t\t\t\tlabel: `${\n\t\t\t\t\t\twindowCoveringParameterToLevelChangeLabel(\n\t\t\t\t\t\t\tparameter,\n\t\t\t\t\t\t\t\"down\",\n\t\t\t\t\t\t)\n\t\t\t\t\t} - ${\n\t\t\t\t\t\tgetEnumMemberName(\n\t\t\t\t\t\t\tWindowCoveringParameter,\n\t\t\t\t\t\t\tparameter,\n\t\t\t\t\t\t)\n\t\t\t\t\t}`,\n\t\t\t\t\tvalueChangeOptions: [\"transitionDuration\"],\n\t\t\t\t\tstates: {\n\t\t\t\t\t\ttrue: \"Start\",\n\t\t\t\t\t\tfalse: \"Stop\",\n\t\t\t\t\t},\n\t\t\t\t\tccSpecific: { parameter },\n\t\t\t\t} as const;\n\t\t\t},\n\t\t),\n\t},\n);\n\n@API(CommandClasses[\"Window Covering\"])\nexport class WindowCoveringCCAPI extends CCAPI {\n\tpublic supportsCommand(cmd: WindowCoveringCommand): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase WindowCoveringCommand.Get:\n\t\t\tcase WindowCoveringCommand.Set:\n\t\t\tcase WindowCoveringCommand.SupportedGet:\n\t\t\tcase WindowCoveringCommand.StartLevelChange:\n\t\t\tcase WindowCoveringCommand.StopLevelChange:\n\t\t\t\treturn true; // This is mandatory\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\tprotected override get [SET_VALUE](): SetValueImplementation {\n\t\treturn async function(\n\t\t\tthis: WindowCoveringCCAPI,\n\t\t\t{ property, propertyKey },\n\t\t\tvalue,\n\t\t\toptions,\n\t\t) {\n\t\t\tconst valueId = {\n\t\t\t\tcommandClass: this.ccId,\n\t\t\t\tproperty,\n\t\t\t\tpropertyKey,\n\t\t\t};\n\n\t\t\tif (WindowCoveringCCValues.targetValue.is(valueId)) {\n\t\t\t\tif (\n\t\t\t\t\ttypeof propertyKey !== \"number\"\n\t\t\t\t\t// Only odd-numbered parameters have position support and are writable\n\t\t\t\t\t|| propertyKey % 2 === 0\n\t\t\t\t) {\n\t\t\t\t\tthrowUnsupportedPropertyKey(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\tpropertyKey!,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst parameter = propertyKey;\n\t\t\t\tconst duration = Duration.from(options?.transitionDuration);\n\n\t\t\t\treturn this.set([{ parameter, value }], duration);\n\t\t\t} else if (\n\t\t\t\tWindowCoveringCCValues.levelChangeUp.is(valueId)\n\t\t\t\t|| WindowCoveringCCValues.levelChangeDown.is(valueId)\n\t\t\t) {\n\t\t\t\tif (typeof value !== \"boolean\") {\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\"boolean\",\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 parameter = propertyKey as number;\n\t\t\t\tconst direction = WindowCoveringCCValues.levelChangeUp.is(\n\t\t\t\t\t\tvalueId,\n\t\t\t\t\t)\n\t\t\t\t\t? \"up\"\n\t\t\t\t\t: \"down\";\n\n\t\t\t\tif (value) {\n\t\t\t\t\t// Perform the level change\n\t\t\t\t\tconst duration = Duration.from(options?.transitionDuration);\n\t\t\t\t\treturn this.startLevelChange(\n\t\t\t\t\t\tparameter,\n\t\t\t\t\t\tdirection,\n\t\t\t\t\t\tduration,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\treturn this.stopLevelChange(parameter);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n\n\tprotected [SET_VALUE_HOOKS]: SetValueImplementationHooksFactory = (\n\t\t{ property, propertyKey },\n\t\tvalue,\n\t\toptions,\n\t) => {\n\t\tconst valueId = {\n\t\t\tcommandClass: this.ccId,\n\t\t\tproperty,\n\t\t\tpropertyKey,\n\t\t};\n\n\t\tif (WindowCoveringCCValues.targetValue.is(valueId)) {\n\t\t\tif (typeof propertyKey !== \"number\") return;\n\t\t\tconst parameter = propertyKey;\n\n\t\t\tconst duration = Duration.from(options?.transitionDuration);\n\n\t\t\tconst currentValueValueId = WindowCoveringCCValues.currentValue(\n\t\t\t\tparameter,\n\t\t\t).endpoint(this.endpoint.index);\n\n\t\t\treturn {\n\t\t\t\t// Window Covering commands may take some time to be executed.\n\t\t\t\t// Therefore we try to supervise the command execution and delay the\n\t\t\t\t// optimistic update until the final result is received.\n\t\t\t\tsupervisionDelayedUpdates: true,\n\t\t\t\tsupervisionOnSuccess: async () => {\n\t\t\t\t\t// Only update currentValue for valid target values\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof value === \"number\"\n\t\t\t\t\t\t&& value >= 0\n\t\t\t\t\t\t&& value <= 99\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.tryGetValueDB()?.setValue(\n\t\t\t\t\t\t\tcurrentValueValueId,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (value === 255) {\n\t\t\t\t\t\t// We don't know the status now, so refresh the current value\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait this.get(parameter);\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsupervisionOnFailure: async () => {\n\t\t\t\t\t// The transition failed, so now we don't know the status - refresh the current value\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait this.get(parameter);\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// ignore\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\toptimisticallyUpdateRelatedValues: (\n\t\t\t\t\t_supervisedAndSuccessful,\n\t\t\t\t) => {\n\t\t\t\t\t// Only update currentValue for valid target values\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof value === \"number\"\n\t\t\t\t\t\t&& value >= 0\n\t\t\t\t\t\t&& value <= 99\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (this.isSinglecast()) {\n\t\t\t\t\t\t\tthis.tryGetValueDB()?.setValue(\n\t\t\t\t\t\t\t\tcurrentValueValueId,\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if (this.isMulticast()) {\n\t\t\t\t\t\t\t// Figure out which nodes were affected by this command\n\t\t\t\t\t\t\tconst affectedNodes = this.endpoint.node\n\t\t\t\t\t\t\t\t.physicalNodes.filter(\n\t\t\t\t\t\t\t\t\t(node) =>\n\t\t\t\t\t\t\t\t\t\tnode\n\t\t\t\t\t\t\t\t\t\t\t.getEndpoint(this.endpoint.index)\n\t\t\t\t\t\t\t\t\t\t\t?.supportsCC(this.ccId),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t// and optimistically update the currentValue\n\t\t\t\t\t\t\tfor (const node of affectedNodes) {\n\t\t\t\t\t\t\t\tthis.host\n\t\t\t\t\t\t\t\t\t.tryGetValueDB(node.id)\n\t\t\t\t\t\t\t\t\t?.setValue(currentValueValueId, value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tverifyChanges: () => {\n\t\t\t\t\tif (this.isSinglecast()) {\n\t\t\t\t\t\t// We query currentValue instead of targetValue to make sure that unsolicited updates cancel the scheduled poll\n\t\t\t\t\t\tthis.schedulePoll(currentValueValueId, value, {\n\t\t\t\t\t\t\tduration,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// For multicasts, do not schedule a refresh - this could cause a LOT of traffic\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t};\n\n\tprotected get [POLL_VALUE](): PollValueImplementation {\n\t\treturn async function(\n\t\t\tthis: WindowCoveringCCAPI,\n\t\t\t{ property, propertyKey },\n\t\t) {\n\t\t\tswitch (property) {\n\t\t\t\tcase \"currentValue\":\n\t\t\t\tcase \"targetValue\":\n\t\t\t\tcase \"duration\":\n\t\t\t\t\tif (propertyKey == undefined) {\n\t\t\t\t\t\tthrowMissingPropertyKey(this.ccId, property);\n\t\t\t\t\t} else if (typeof propertyKey !== \"number\") {\n\t\t\t\t\t\tthrowUnsupportedPropertyKey(\n\t\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn (await this.get(propertyKey))?.[property];\n\t\t\t\tdefault:\n\t\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic async getSupported(): Promise<\n\t\tMaybeNotKnown<readonly WindowCoveringParameter[]>\n\t> {\n\t\tthis.assertSupportsCommand(\n\t\t\tWindowCoveringCommand,\n\t\t\tWindowCoveringCommand.SupportedGet,\n\t\t);\n\n\t\tconst cc = new WindowCoveringCCSupportedGet({\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\tWindowCoveringCCSupportedReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\treturn response?.supportedParameters;\n\t}\n\n\t@validateArgs({ strictEnums: true })\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async get(parameter: WindowCoveringParameter) {\n\t\tthis.assertSupportsCommand(\n\t\t\tWindowCoveringCommand,\n\t\t\tWindowCoveringCommand.Get,\n\t\t);\n\n\t\tconst cc = new WindowCoveringCCGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tparameter,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tWindowCoveringCCReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn pick(response, [\"currentValue\", \"targetValue\", \"duration\"]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async set(\n\t\ttargetValues: {\n\t\t\tparameter: WindowCoveringParameter;\n\t\t\tvalue: number;\n\t\t}[],\n\t\tduration?: Duration | string,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tWindowCoveringCommand,\n\t\t\tWindowCoveringCommand.StartLevelChange,\n\t\t);\n\n\t\tconst cc = new WindowCoveringCCSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\ttargetValues,\n\t\t\tduration,\n\t\t});\n\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t@validateArgs({ strictEnums: true })\n\tpublic async startLevelChange(\n\t\tparameter: WindowCoveringParameter,\n\t\tdirection: keyof typeof LevelChangeDirection,\n\t\tduration?: Duration | string,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tWindowCoveringCommand,\n\t\t\tWindowCoveringCommand.StartLevelChange,\n\t\t);\n\n\t\tconst cc = new WindowCoveringCCStartLevelChange({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tparameter,\n\t\t\tdirection,\n\t\t\tduration,\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\tparameter: WindowCoveringParameter,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tWindowCoveringCommand,\n\t\t\tWindowCoveringCommand.StopLevelChange,\n\t\t);\n\n\t\tconst cc = new WindowCoveringCCStopLevelChange({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tparameter,\n\t\t});\n\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n}\n\n@commandClass(CommandClasses[\"Window Covering\"])\n@implementedVersion(1)\n@ccValues(WindowCoveringCCValues)\nexport class WindowCoveringCC extends CommandClass {\n\tdeclare ccCommand: WindowCoveringCommand;\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[\"Window Covering\"],\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 window covering parameters...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tconst supported = await api.getSupported();\n\t\tif (supported?.length) {\n\t\t\tconst logMessage = `supported window covering parameters:\n${\n\t\t\t\tsupported\n\t\t\t\t\t.map((p) =>\n\t\t\t\t\t\t`\u00B7 ${getEnumMemberName(WindowCoveringParameter, p)}`\n\t\t\t\t\t)\n\t\t\t\t\t.join(\"\\n\")\n\t\t\t}`;\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: logMessage,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\n\t\t\t// Create metadata for all supported parameters\n\t\t\tfor (const param of supported) {\n\t\t\t\t// Default values\n\t\t\t\tthis.setMetadata(\n\t\t\t\t\tctx,\n\t\t\t\t\tWindowCoveringCCValues.currentValue(param),\n\t\t\t\t);\n\t\t\t\tthis.setMetadata(\n\t\t\t\t\tctx,\n\t\t\t\t\tWindowCoveringCCValues.targetValue(param),\n\t\t\t\t);\n\t\t\t\tthis.setMetadata(\n\t\t\t\t\tctx,\n\t\t\t\t\tWindowCoveringCCValues.duration(param),\n\t\t\t\t);\n\n\t\t\t\t// Level change values\n\t\t\t\tthis.setMetadata(\n\t\t\t\t\tctx,\n\t\t\t\t\tWindowCoveringCCValues.levelChangeUp(param),\n\t\t\t\t);\n\t\t\t\tthis.setMetadata(\n\t\t\t\t\tctx,\n\t\t\t\t\tWindowCoveringCCValues.levelChangeDown(param),\n\t\t\t\t);\n\n\t\t\t\t// And for the odd parameters (with position support), query the position\n\t\t\t\tif (param % 2 === 1) {\n\t\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\t\tmessage: `querying position for parameter ${\n\t\t\t\t\t\t\tgetEnumMemberName(\n\t\t\t\t\t\t\t\tWindowCoveringParameter,\n\t\t\t\t\t\t\t\tparam,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}...`,\n\t\t\t\t\t\tdirection: \"outbound\",\n\t\t\t\t\t});\n\t\t\t\t\tawait api.get(param);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Remember that the interview is complete\n\t\tthis.setInterviewComplete(ctx, true);\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 (typeof propertyKey === \"number\") {\n\t\t\treturn getEnumMemberName(WindowCoveringParameter, propertyKey);\n\t\t}\n\t\treturn super.translatePropertyKey(ctx, property, propertyKey);\n\t}\n}\n\n// @publicAPI\nexport interface WindowCoveringCCSupportedReportOptions {\n\tsupportedParameters: readonly WindowCoveringParameter[];\n}\n\n@CCCommand(WindowCoveringCommand.SupportedReport)\n@ccValueProperty(\n\t\"supportedParameters\",\n\tWindowCoveringCCValues.supportedParameters,\n)\nexport class WindowCoveringCCSupportedReport extends WindowCoveringCC {\n\tpublic constructor(\n\t\toptions: WithAddress<WindowCoveringCCSupportedReportOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.supportedParameters = options.supportedParameters;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): WindowCoveringCCSupportedReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\n\t\tconst numBitmaskBytes = raw.payload[0] & 0b1111;\n\t\tvalidatePayload(raw.payload.length >= 1 + numBitmaskBytes);\n\t\tconst bitmask = raw.payload.subarray(1, 1 + numBitmaskBytes);\n\t\tconst supportedParameters: WindowCoveringParameter[] = parseBitMask(\n\t\t\tbitmask,\n\t\t\tWindowCoveringParameter[\"Outbound Left (no position)\"],\n\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsupportedParameters,\n\t\t});\n\t}\n\n\tpublic readonly supportedParameters: readonly WindowCoveringParameter[];\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tconst bitmask = encodeBitMask(\n\t\t\tthis.supportedParameters,\n\t\t\tundefined,\n\t\t\tWindowCoveringParameter[\"Outbound Left (no position)\"],\n\t\t).subarray(0, 15);\n\t\tconst numBitmaskBytes = bitmask.length & 0b1111;\n\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([numBitmaskBytes]),\n\t\t\tbitmask.subarray(0, numBitmaskBytes),\n\t\t]);\n\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 parameters\": this.supportedParameters\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(p) =>\n\t\t\t\t\t\t\t`\\n\u00B7 ${\n\t\t\t\t\t\t\t\tgetEnumMemberName(\n\t\t\t\t\t\t\t\t\tWindowCoveringParameter,\n\t\t\t\t\t\t\t\t\tp,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}`,\n\t\t\t\t\t)\n\t\t\t\t\t.join(\"\"),\n\t\t\t},\n\t\t};\n\t}\n}\n\n@CCCommand(WindowCoveringCommand.SupportedGet)\n@expectedCCResponse(WindowCoveringCCSupportedReport)\nexport class WindowCoveringCCSupportedGet extends WindowCoveringCC {}\n\n// @publicAPI\nexport interface WindowCoveringCCReportOptions {\n\tparameter: WindowCoveringParameter;\n\tcurrentValue: number;\n\ttargetValue: number;\n\tduration: Duration;\n}\n\n@CCCommand(WindowCoveringCommand.Report)\n@ccValueProperty(\n\t\"currentValue\",\n\tWindowCoveringCCValues.currentValue,\n\t(self) => [self.parameter],\n)\n@ccValueProperty(\n\t\"targetValue\",\n\tWindowCoveringCCValues.targetValue,\n\t(self) => [self.parameter],\n)\n@ccValueProperty(\n\t\"duration\",\n\tWindowCoveringCCValues.duration,\n\t(self) => [self.parameter],\n)\nexport class WindowCoveringCCReport extends WindowCoveringCC {\n\tpublic constructor(\n\t\toptions: WithAddress<WindowCoveringCCReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.parameter = options.parameter;\n\t\tthis.currentValue = options.currentValue;\n\t\tthis.targetValue = options.targetValue;\n\t\tthis.duration = options.duration;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): WindowCoveringCCReport {\n\t\tvalidatePayload(raw.payload.length >= 4);\n\t\tconst parameter: WindowCoveringParameter = raw.payload[0];\n\t\tconst currentValue = raw.payload[1];\n\t\tconst targetValue = raw.payload[2];\n\t\tconst duration = Duration.parseReport(raw.payload[3])\n\t\t\t?? Duration.unknown();\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tparameter,\n\t\t\tcurrentValue,\n\t\t\ttargetValue,\n\t\t\tduration,\n\t\t});\n\t}\n\n\tpublic readonly parameter: WindowCoveringParameter;\n\n\tpublic readonly currentValue: number;\n\n\tpublic readonly targetValue: number;\n\n\tpublic readonly duration: Duration;\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\tparameter: getEnumMemberName(\n\t\t\t\t\tWindowCoveringParameter,\n\t\t\t\t\tthis.parameter,\n\t\t\t\t),\n\t\t\t\t\"current value\": this.currentValue,\n\t\t\t\t\"target value\": this.targetValue,\n\t\t\t\tduration: this.duration.toString(),\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface WindowCoveringCCGetOptions {\n\tparameter: WindowCoveringParameter;\n}\n\nfunction testResponseForWindowCoveringGet(\n\tsent: WindowCoveringCCGet,\n\treceived: WindowCoveringCCReport,\n) {\n\treturn received.parameter === sent.parameter;\n}\n\n@CCCommand(WindowCoveringCommand.Get)\n@expectedCCResponse(WindowCoveringCCReport, testResponseForWindowCoveringGet)\nexport class WindowCoveringCCGet extends WindowCoveringCC {\n\tpublic constructor(\n\t\toptions: WithAddress<WindowCoveringCCGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.parameter = options.parameter;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCGet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst parameter: WindowCoveringParameter = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tparameter,\n\t\t});\n\t}\n\n\tpublic parameter: WindowCoveringParameter;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.parameter]);\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\tparameter: getEnumMemberName(\n\t\t\t\t\tWindowCoveringParameter,\n\t\t\t\t\tthis.parameter,\n\t\t\t\t),\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface WindowCoveringCCSetOptions {\n\ttargetValues: {\n\t\tparameter: WindowCoveringParameter;\n\t\tvalue: number;\n\t}[];\n\tduration?: Duration | string;\n}\n\n@CCCommand(WindowCoveringCommand.Set)\n@useSupervision()\nexport class WindowCoveringCCSet extends WindowCoveringCC {\n\tpublic constructor(\n\t\toptions: WithAddress<WindowCoveringCCSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.targetValues = options.targetValues;\n\t\tthis.duration = Duration.from(options.duration);\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): WindowCoveringCCSet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst numEntries = raw.payload[0] & 0b11111;\n\n\t\tvalidatePayload(raw.payload.length >= 1 + numEntries * 2);\n\t\tconst targetValues: WindowCoveringCCSetOptions[\"targetValues\"] = [];\n\n\t\tfor (let i = 0; i < numEntries; i++) {\n\t\t\tconst offset = 1 + i * 2;\n\t\t\ttargetValues.push({\n\t\t\t\tparameter: raw.payload[offset],\n\t\t\t\tvalue: raw.payload[offset + 1],\n\t\t\t});\n\t\t}\n\n\t\tlet duration: Duration | undefined;\n\n\t\tif (raw.payload.length >= 2 + numEntries * 2) {\n\t\t\tduration = Duration.parseSet(\n\t\t\t\traw.payload[1 + numEntries * 2],\n\t\t\t);\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\ttargetValues,\n\t\t\tduration,\n\t\t});\n\t}\n\n\tpublic targetValues: {\n\t\tparameter: WindowCoveringParameter;\n\t\tvalue: number;\n\t}[];\n\tpublic duration: Duration | undefined;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tconst numEntries = this.targetValues.length & 0b11111;\n\t\tthis.payload = new Bytes(2 + numEntries * 2);\n\n\t\tthis.payload[0] = numEntries;\n\t\tfor (let i = 0; i < numEntries; i++) {\n\t\t\tconst offset = 1 + i * 2;\n\t\t\tthis.payload[offset] = this.targetValues[i].parameter;\n\t\t\tthis.payload[offset + 1] = this.targetValues[i].value;\n\t\t}\n\n\t\tthis.payload[this.payload.length - 1] = (\n\t\t\tthis.duration ?? Duration.default()\n\t\t).serializeSet();\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 { parameter, value } of this.targetValues) {\n\t\t\tmessage[getEnumMemberName(WindowCoveringParameter, parameter)] =\n\t\t\t\tvalue;\n\t\t}\n\t\tif (this.duration) {\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 WindowCoveringCCStartLevelChangeOptions {\n\tparameter: WindowCoveringParameter;\n\tdirection: keyof typeof LevelChangeDirection;\n\tduration?: Duration | string;\n}\n\n@CCCommand(WindowCoveringCommand.StartLevelChange)\n@useSupervision()\nexport class WindowCoveringCCStartLevelChange extends WindowCoveringCC {\n\tpublic constructor(\n\t\toptions: WithAddress<WindowCoveringCCStartLevelChangeOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.parameter = options.parameter;\n\t\tthis.direction = options.direction;\n\t\tthis.duration = Duration.from(options.duration);\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): WindowCoveringCCStartLevelChange {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst direction = !!(raw.payload[0] & 0b0100_0000)\n\t\t\t? \"down\"\n\t\t\t: \"up\";\n\t\tconst parameter: WindowCoveringParameter = raw.payload[1];\n\t\tlet duration: Duration | undefined;\n\n\t\tif (raw.payload.length >= 3) {\n\t\t\tduration = Duration.parseSet(raw.payload[2]);\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tdirection,\n\t\t\tparameter,\n\t\t\tduration,\n\t\t});\n\t}\n\n\tpublic parameter: WindowCoveringParameter;\n\tpublic direction: keyof typeof LevelChangeDirection;\n\tpublic duration: Duration | undefined;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.direction === \"down\" ? 0b0100_0000 : 0b0000_0000,\n\t\t\tthis.parameter,\n\t\t\t(this.duration ?? Duration.default()).serializeSet(),\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\tparameter: getEnumMemberName(\n\t\t\t\tWindowCoveringParameter,\n\t\t\t\tthis.parameter,\n\t\t\t),\n\t\t\tdirection: this.direction,\n\t\t};\n\t\tif (this.duration) {\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 WindowCoveringCCStopLevelChangeOptions {\n\tparameter: WindowCoveringParameter;\n}\n\n@CCCommand(WindowCoveringCommand.StopLevelChange)\n@useSupervision()\nexport class WindowCoveringCCStopLevelChange extends WindowCoveringCC {\n\tpublic constructor(\n\t\toptions: WithAddress<WindowCoveringCCStopLevelChangeOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.parameter = options.parameter;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): WindowCoveringCCStopLevelChange {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst parameter: WindowCoveringParameter = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tparameter,\n\t\t});\n\t}\n\n\tpublic parameter: WindowCoveringParameter;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.parameter]);\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\tparameter: getEnumMemberName(\n\t\t\t\t\tWindowCoveringParameter,\n\t\t\t\t\tthis.parameter,\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
|
}
|