@zwave-js/cc 15.1.0 → 15.1.2
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 +7 -7
- package/build/cjs/cc/AlarmSensorCC.js +22 -23
- package/build/cjs/cc/AlarmSensorCC.js.map +3 -3
- package/build/cjs/cc/AssociationCC.d.ts +8 -9
- package/build/cjs/cc/AssociationCC.js +29 -29
- package/build/cjs/cc/AssociationCC.js.map +3 -3
- package/build/cjs/cc/AssociationGroupInfoCC.d.ts +7 -7
- package/build/cjs/cc/AssociationGroupInfoCC.js +31 -32
- package/build/cjs/cc/AssociationGroupInfoCC.js.map +3 -3
- package/build/cjs/cc/BarrierOperatorCC.d.ts +8 -8
- package/build/cjs/cc/BarrierOperatorCC.js +35 -36
- package/build/cjs/cc/BarrierOperatorCC.js.map +3 -3
- package/build/cjs/cc/BasicCC.d.ts +4 -4
- package/build/cjs/cc/BasicCC.js +23 -24
- package/build/cjs/cc/BasicCC.js.map +3 -3
- package/build/cjs/cc/BatteryCC.d.ts +6 -8
- package/build/cjs/cc/BatteryCC.js +24 -28
- package/build/cjs/cc/BatteryCC.js.map +3 -3
- package/build/cjs/cc/BinarySensorCC.d.ts +5 -5
- package/build/cjs/cc/BinarySensorCC.js +20 -21
- package/build/cjs/cc/BinarySensorCC.js.map +3 -3
- package/build/cjs/cc/BinarySwitchCC._validateArgs.js +2 -2
- package/build/cjs/cc/BinarySwitchCC.d.ts +6 -6
- package/build/cjs/cc/BinarySwitchCC.js +26 -26
- package/build/cjs/cc/BinarySwitchCC.js.map +3 -3
- package/build/cjs/cc/CRC16CC.d.ts +3 -3
- package/build/cjs/cc/CRC16CC.js +15 -15
- package/build/cjs/cc/CRC16CC.js.map +3 -3
- package/build/cjs/cc/CentralSceneCC.d.ts +8 -8
- package/build/cjs/cc/CentralSceneCC.js +23 -24
- package/build/cjs/cc/CentralSceneCC.js.map +3 -3
- package/build/cjs/cc/ClimateControlScheduleCC.d.ts +6 -6
- package/build/cjs/cc/ClimateControlScheduleCC.js +19 -20
- package/build/cjs/cc/ClimateControlScheduleCC.js.map +3 -3
- package/build/cjs/cc/ClockCC.d.ts +3 -4
- package/build/cjs/cc/ClockCC.js +13 -14
- package/build/cjs/cc/ClockCC.js.map +3 -3
- package/build/cjs/cc/ColorSwitchCC.d.ts +3 -4
- package/build/cjs/cc/ColorSwitchCC.js +22 -24
- package/build/cjs/cc/ColorSwitchCC.js.map +3 -3
- package/build/cjs/cc/ConfigurationCC.d.ts +3 -3
- package/build/cjs/cc/ConfigurationCC.js +114 -115
- package/build/cjs/cc/ConfigurationCC.js.map +3 -3
- package/build/cjs/cc/DeviceResetLocallyCC.d.ts +2 -2
- package/build/cjs/cc/DeviceResetLocallyCC.js +5 -5
- package/build/cjs/cc/DeviceResetLocallyCC.js.map +1 -1
- package/build/cjs/cc/DoorLockCC.d.ts +29 -29
- package/build/cjs/cc/DoorLockCC.js +39 -40
- package/build/cjs/cc/DoorLockCC.js.map +3 -3
- package/build/cjs/cc/DoorLockLoggingCC.d.ts +4 -4
- package/build/cjs/cc/DoorLockLoggingCC.js +13 -14
- package/build/cjs/cc/DoorLockLoggingCC.js.map +3 -3
- package/build/cjs/cc/EnergyProductionCC.d.ts +2 -3
- package/build/cjs/cc/EnergyProductionCC.js.map +2 -2
- package/build/cjs/cc/EntryControlCC.d.ts +8 -8
- package/build/cjs/cc/EntryControlCC.js +41 -42
- package/build/cjs/cc/EntryControlCC.js.map +3 -3
- package/build/cjs/cc/FirmwareUpdateMetaDataCC.d.ts +9 -10
- package/build/cjs/cc/FirmwareUpdateMetaDataCC.js +52 -53
- package/build/cjs/cc/FirmwareUpdateMetaDataCC.js.map +3 -3
- package/build/cjs/cc/HailCC.js +2 -2
- package/build/cjs/cc/HailCC.js.map +1 -1
- package/build/cjs/cc/HumidityControlModeCC.d.ts +5 -5
- package/build/cjs/cc/HumidityControlModeCC.js +20 -21
- package/build/cjs/cc/HumidityControlModeCC.js.map +3 -3
- package/build/cjs/cc/HumidityControlOperatingStateCC.d.ts +3 -3
- package/build/cjs/cc/HumidityControlOperatingStateCC.js +9 -9
- package/build/cjs/cc/HumidityControlOperatingStateCC.js.map +3 -3
- package/build/cjs/cc/HumidityControlSetpointCC.d.ts +6 -6
- package/build/cjs/cc/HumidityControlSetpointCC.js +43 -44
- package/build/cjs/cc/HumidityControlSetpointCC.js.map +3 -3
- package/build/cjs/cc/InclusionControllerCC.d.ts +2 -3
- package/build/cjs/cc/InclusionControllerCC.js.map +2 -2
- package/build/cjs/cc/IndicatorCC.d.ts +3 -3
- package/build/cjs/cc/IndicatorCC.js +50 -52
- package/build/cjs/cc/IndicatorCC.js.map +3 -3
- package/build/cjs/cc/IrrigationCC.d.ts +3 -3
- package/build/cjs/cc/IrrigationCC.js +74 -75
- package/build/cjs/cc/IrrigationCC.js.map +3 -3
- package/build/cjs/cc/LanguageCC.d.ts +5 -6
- package/build/cjs/cc/LanguageCC.js +14 -15
- package/build/cjs/cc/LanguageCC.js.map +3 -3
- package/build/cjs/cc/LockCC.d.ts +4 -4
- package/build/cjs/cc/LockCC.js +10 -10
- package/build/cjs/cc/LockCC.js.map +3 -3
- package/build/cjs/cc/ManufacturerProprietaryCC.d.ts +4 -3
- package/build/cjs/cc/ManufacturerProprietaryCC.js +14 -12
- package/build/cjs/cc/ManufacturerProprietaryCC.js.map +3 -3
- package/build/cjs/cc/ManufacturerSpecificCC.d.ts +7 -8
- package/build/cjs/cc/ManufacturerSpecificCC.js +20 -21
- package/build/cjs/cc/ManufacturerSpecificCC.js.map +3 -3
- package/build/cjs/cc/MeterCC.d.ts +4 -6
- package/build/cjs/cc/MeterCC.js +52 -54
- package/build/cjs/cc/MeterCC.js.map +3 -3
- package/build/cjs/cc/MultiChannelAssociationCC.d.ts +7 -8
- package/build/cjs/cc/MultiChannelAssociationCC.js +34 -35
- package/build/cjs/cc/MultiChannelAssociationCC.js.map +3 -3
- package/build/cjs/cc/MultiChannelCC.d.ts +13 -12
- package/build/cjs/cc/MultiChannelCC.js +104 -56
- package/build/cjs/cc/MultiChannelCC.js.map +3 -3
- package/build/cjs/cc/MultiCommandCC.d.ts +3 -3
- package/build/cjs/cc/MultiCommandCC.js +13 -13
- package/build/cjs/cc/MultiCommandCC.js.map +3 -3
- package/build/cjs/cc/MultilevelSensorCC.d.ts +4 -7
- package/build/cjs/cc/MultilevelSensorCC.js +26 -28
- package/build/cjs/cc/MultilevelSensorCC.js.map +3 -3
- package/build/cjs/cc/MultilevelSwitchCC._validateArgs.js +3 -3
- package/build/cjs/cc/MultilevelSwitchCC.d.ts +13 -13
- package/build/cjs/cc/MultilevelSwitchCC.js +36 -37
- package/build/cjs/cc/MultilevelSwitchCC.js.map +3 -3
- package/build/cjs/cc/NoOperationCC.js +4 -4
- package/build/cjs/cc/NoOperationCC.js.map +1 -1
- package/build/cjs/cc/NodeNamingCC.d.ts +5 -5
- package/build/cjs/cc/NodeNamingCC.js +20 -20
- package/build/cjs/cc/NodeNamingCC.js.map +3 -3
- package/build/cjs/cc/NotificationCC.d.ts +4 -5
- package/build/cjs/cc/NotificationCC.js +66 -68
- package/build/cjs/cc/NotificationCC.js.map +3 -3
- package/build/cjs/cc/PowerlevelCC.d.ts +3 -3
- package/build/cjs/cc/PowerlevelCC.js +25 -26
- package/build/cjs/cc/PowerlevelCC.js.map +3 -3
- package/build/cjs/cc/ProtectionCC._validateArgs.js +2 -2
- package/build/cjs/cc/ProtectionCC.d.ts +11 -11
- package/build/cjs/cc/ProtectionCC.js +35 -36
- package/build/cjs/cc/ProtectionCC.js.map +3 -3
- package/build/cjs/cc/SceneActivationCC._validateArgs.js +2 -2
- package/build/cjs/cc/SceneActivationCC.d.ts +5 -6
- package/build/cjs/cc/SceneActivationCC.js +10 -10
- package/build/cjs/cc/SceneActivationCC.js.map +3 -3
- package/build/cjs/cc/SceneActuatorConfigurationCC._validateArgs.js +2 -2
- package/build/cjs/cc/SceneActuatorConfigurationCC.d.ts +5 -5
- package/build/cjs/cc/SceneActuatorConfigurationCC.js +19 -20
- package/build/cjs/cc/SceneActuatorConfigurationCC.js.map +3 -3
- package/build/cjs/cc/SceneControllerConfigurationCC._validateArgs.js +2 -2
- package/build/cjs/cc/SceneControllerConfigurationCC.d.ts +6 -6
- package/build/cjs/cc/SceneControllerConfigurationCC.js +25 -26
- package/build/cjs/cc/SceneControllerConfigurationCC.js.map +3 -3
- package/build/cjs/cc/ScheduleEntryLockCC.d.ts +2 -3
- package/build/cjs/cc/ScheduleEntryLockCC.js.map +2 -2
- package/build/cjs/cc/Security2CC.d.ts +3 -4
- package/build/cjs/cc/Security2CC.js +60 -62
- package/build/cjs/cc/Security2CC.js.map +3 -3
- package/build/cjs/cc/SecurityCC.d.ts +3 -4
- package/build/cjs/cc/SecurityCC.js +25 -26
- package/build/cjs/cc/SecurityCC.js.map +3 -3
- package/build/cjs/cc/SoundSwitchCC.d.ts +7 -7
- package/build/cjs/cc/SoundSwitchCC.js +28 -29
- package/build/cjs/cc/SoundSwitchCC.js.map +3 -3
- package/build/cjs/cc/SupervisionCC.d.ts +4 -4
- package/build/cjs/cc/SupervisionCC.js +28 -29
- package/build/cjs/cc/SupervisionCC.js.map +3 -3
- package/build/cjs/cc/ThermostatFanModeCC.d.ts +6 -6
- package/build/cjs/cc/ThermostatFanModeCC.js +21 -22
- package/build/cjs/cc/ThermostatFanModeCC.js.map +3 -3
- package/build/cjs/cc/ThermostatFanStateCC.d.ts +3 -3
- package/build/cjs/cc/ThermostatFanStateCC.js +9 -9
- package/build/cjs/cc/ThermostatFanStateCC.js.map +3 -3
- package/build/cjs/cc/ThermostatModeCC.d.ts +6 -6
- package/build/cjs/cc/ThermostatModeCC.js +30 -31
- package/build/cjs/cc/ThermostatModeCC.js.map +3 -3
- package/build/cjs/cc/ThermostatOperatingStateCC.d.ts +3 -4
- package/build/cjs/cc/ThermostatOperatingStateCC.js +9 -9
- package/build/cjs/cc/ThermostatOperatingStateCC.js.map +3 -3
- package/build/cjs/cc/ThermostatSetbackCC.d.ts +3 -3
- package/build/cjs/cc/ThermostatSetbackCC.js +14 -15
- package/build/cjs/cc/ThermostatSetbackCC.js.map +3 -3
- package/build/cjs/cc/ThermostatSetpointCC.d.ts +6 -6
- package/build/cjs/cc/ThermostatSetpointCC.js +48 -49
- package/build/cjs/cc/ThermostatSetpointCC.js.map +3 -3
- package/build/cjs/cc/TimeCC.d.ts +3 -4
- package/build/cjs/cc/TimeCC.js +9 -10
- package/build/cjs/cc/TimeCC.js.map +3 -3
- package/build/cjs/cc/TimeParametersCC.d.ts +3 -4
- package/build/cjs/cc/TimeParametersCC.js +2 -2
- package/build/cjs/cc/TimeParametersCC.js.map +2 -2
- package/build/cjs/cc/TransportServiceCC.d.ts +3 -3
- package/build/cjs/cc/TransportServiceCC.js +44 -45
- package/build/cjs/cc/TransportServiceCC.js.map +3 -3
- package/build/cjs/cc/UserCodeCC.d.ts +19 -19
- package/build/cjs/cc/UserCodeCC.js +102 -103
- package/build/cjs/cc/UserCodeCC.js.map +3 -3
- package/build/cjs/cc/VersionCC.d.ts +17 -17
- package/build/cjs/cc/VersionCC.js +46 -47
- package/build/cjs/cc/VersionCC.js.map +3 -3
- package/build/cjs/cc/WakeUpCC.d.ts +6 -6
- package/build/cjs/cc/WakeUpCC.js +16 -17
- package/build/cjs/cc/WakeUpCC.js.map +3 -3
- package/build/cjs/cc/WindowCoveringCC.d.ts +3 -4
- package/build/cjs/cc/WindowCoveringCC.js +17 -18
- package/build/cjs/cc/WindowCoveringCC.js.map +3 -3
- package/build/cjs/cc/ZWavePlusCC.d.ts +8 -8
- package/build/cjs/cc/ZWavePlusCC.js +15 -16
- package/build/cjs/cc/ZWavePlusCC.js.map +3 -3
- package/build/cjs/cc/ZWaveProtocolCC.d.ts +2 -2
- package/build/cjs/cc/ZWaveProtocolCC.js +35 -35
- package/build/cjs/cc/ZWaveProtocolCC.js.map +2 -2
- package/build/cjs/cc/_CCValues.generated.d.ts +2 -0
- package/build/cjs/cc/_CCValues.generated.js +28 -27
- package/build/cjs/cc/_CCValues.generated.js.map +3 -3
- package/build/cjs/cc/manufacturerProprietary/FibaroCC.d.ts +3 -3
- package/build/cjs/cc/manufacturerProprietary/FibaroCC.js +14 -14
- package/build/cjs/cc/manufacturerProprietary/FibaroCC.js.map +1 -1
- package/build/cjs/lib/API.d.ts +3 -3
- package/build/cjs/lib/API.js.map +2 -2
- package/build/cjs/lib/CommandClass.d.ts +5 -6
- package/build/cjs/lib/CommandClass.js +45 -45
- package/build/cjs/lib/CommandClass.js.map +3 -3
- package/build/cjs/lib/CommandClassDecorators.d.ts +2 -2
- package/build/cjs/lib/CommandClassDecorators.js +3 -3
- package/build/cjs/lib/CommandClassDecorators.js.map +2 -2
- package/build/cjs/lib/Security2/Extension.d.ts +2 -2
- package/build/cjs/lib/Security2/Extension.js +17 -17
- package/build/cjs/lib/Security2/Extension.js.map +3 -3
- package/build/cjs/lib/SetValueResult.d.ts +1 -1
- package/build/cjs/lib/SetValueResult.js.map +1 -1
- package/build/cjs/lib/Values.d.ts +3 -3
- package/build/cjs/lib/Values.js +6 -6
- package/build/cjs/lib/Values.js.map +2 -2
- package/build/cjs/lib/_Types.d.ts +2 -2
- package/build/cjs/lib/_Types.js +3 -3
- package/build/cjs/lib/_Types.js.map +1 -1
- package/build/cjs/lib/serializers.d.ts +1 -1
- package/build/cjs/lib/serializers.js +5 -5
- package/build/cjs/lib/serializers.js.map +2 -2
- package/build/cjs/lib/traits.d.ts +2 -2
- package/build/cjs/lib/utils.d.ts +2 -2
- package/build/cjs/lib/utils.js +60 -60
- package/build/cjs/lib/utils.js.map +3 -3
- package/build/esm/cc/AlarmSensorCC.d.ts +7 -7
- package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
- package/build/esm/cc/AlarmSensorCC.js +2 -3
- package/build/esm/cc/AlarmSensorCC.js.map +1 -1
- package/build/esm/cc/AssociationCC.d.ts +8 -9
- package/build/esm/cc/AssociationCC.d.ts.map +1 -1
- package/build/esm/cc/AssociationCC.js +2 -2
- package/build/esm/cc/AssociationCC.js.map +1 -1
- package/build/esm/cc/AssociationGroupInfoCC.d.ts +7 -7
- package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
- package/build/esm/cc/AssociationGroupInfoCC.js +2 -3
- package/build/esm/cc/AssociationGroupInfoCC.js.map +1 -1
- package/build/esm/cc/BarrierOperatorCC.d.ts +8 -8
- package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
- package/build/esm/cc/BarrierOperatorCC.js +2 -3
- package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
- package/build/esm/cc/BasicCC.d.ts +4 -4
- package/build/esm/cc/BasicCC.d.ts.map +1 -1
- package/build/esm/cc/BasicCC.js +2 -3
- package/build/esm/cc/BasicCC.js.map +1 -1
- package/build/esm/cc/BatteryCC.d.ts +6 -8
- package/build/esm/cc/BatteryCC.d.ts.map +1 -1
- package/build/esm/cc/BatteryCC.js +13 -15
- package/build/esm/cc/BatteryCC.js.map +1 -1
- package/build/esm/cc/BinarySensorCC.d.ts +5 -5
- package/build/esm/cc/BinarySensorCC.d.ts.map +1 -1
- package/build/esm/cc/BinarySensorCC.js +2 -3
- package/build/esm/cc/BinarySensorCC.js.map +1 -1
- package/build/esm/cc/BinarySwitchCC._validateArgs.js +1 -1
- package/build/esm/cc/BinarySwitchCC._validateArgs.js.map +1 -1
- package/build/esm/cc/BinarySwitchCC.d.ts +6 -6
- package/build/esm/cc/BinarySwitchCC.d.ts.map +1 -1
- package/build/esm/cc/BinarySwitchCC.js +2 -2
- package/build/esm/cc/BinarySwitchCC.js.map +1 -1
- package/build/esm/cc/CRC16CC.d.ts +3 -3
- package/build/esm/cc/CRC16CC.d.ts.map +1 -1
- package/build/esm/cc/CRC16CC.js +2 -2
- package/build/esm/cc/CRC16CC.js.map +1 -1
- package/build/esm/cc/CentralSceneCC.d.ts +8 -8
- package/build/esm/cc/CentralSceneCC.d.ts.map +1 -1
- package/build/esm/cc/CentralSceneCC.js +2 -3
- package/build/esm/cc/CentralSceneCC.js.map +1 -1
- package/build/esm/cc/ClimateControlScheduleCC.d.ts +6 -6
- package/build/esm/cc/ClimateControlScheduleCC.d.ts.map +1 -1
- package/build/esm/cc/ClimateControlScheduleCC.js +2 -3
- package/build/esm/cc/ClimateControlScheduleCC.js.map +1 -1
- package/build/esm/cc/ClockCC.d.ts +3 -4
- package/build/esm/cc/ClockCC.d.ts.map +1 -1
- package/build/esm/cc/ClockCC.js +2 -3
- package/build/esm/cc/ClockCC.js.map +1 -1
- package/build/esm/cc/ColorSwitchCC.d.ts +3 -4
- package/build/esm/cc/ColorSwitchCC.d.ts.map +1 -1
- package/build/esm/cc/ColorSwitchCC.js +2 -4
- package/build/esm/cc/ColorSwitchCC.js.map +1 -1
- package/build/esm/cc/ConfigurationCC.d.ts +3 -3
- package/build/esm/cc/ConfigurationCC.d.ts.map +1 -1
- package/build/esm/cc/ConfigurationCC.js +2 -3
- package/build/esm/cc/ConfigurationCC.js.map +1 -1
- package/build/esm/cc/DeviceResetLocallyCC.d.ts +2 -2
- package/build/esm/cc/DeviceResetLocallyCC.d.ts.map +1 -1
- package/build/esm/cc/DeviceResetLocallyCC.js +1 -1
- package/build/esm/cc/DeviceResetLocallyCC.js.map +1 -1
- package/build/esm/cc/DoorLockCC.d.ts +29 -29
- package/build/esm/cc/DoorLockCC.d.ts.map +1 -1
- package/build/esm/cc/DoorLockCC.js +2 -3
- package/build/esm/cc/DoorLockCC.js.map +1 -1
- package/build/esm/cc/DoorLockLoggingCC.d.ts +4 -4
- package/build/esm/cc/DoorLockLoggingCC.d.ts.map +1 -1
- package/build/esm/cc/DoorLockLoggingCC.js +2 -3
- package/build/esm/cc/DoorLockLoggingCC.js.map +1 -1
- package/build/esm/cc/EnergyProductionCC.d.ts +2 -3
- package/build/esm/cc/EnergyProductionCC.d.ts.map +1 -1
- package/build/esm/cc/EnergyProductionCC.js.map +1 -1
- package/build/esm/cc/EntryControlCC.d.ts +8 -8
- package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
- package/build/esm/cc/EntryControlCC.js +2 -3
- package/build/esm/cc/EntryControlCC.js.map +1 -1
- package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts +9 -10
- package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts.map +1 -1
- package/build/esm/cc/FirmwareUpdateMetaDataCC.js +2 -3
- package/build/esm/cc/FirmwareUpdateMetaDataCC.js.map +1 -1
- package/build/esm/cc/HailCC.js +1 -1
- package/build/esm/cc/HailCC.js.map +1 -1
- package/build/esm/cc/HumidityControlModeCC.d.ts +5 -5
- package/build/esm/cc/HumidityControlModeCC.d.ts.map +1 -1
- package/build/esm/cc/HumidityControlModeCC.js +2 -3
- package/build/esm/cc/HumidityControlModeCC.js.map +1 -1
- package/build/esm/cc/HumidityControlOperatingStateCC.d.ts +3 -3
- package/build/esm/cc/HumidityControlOperatingStateCC.d.ts.map +1 -1
- package/build/esm/cc/HumidityControlOperatingStateCC.js +2 -2
- package/build/esm/cc/HumidityControlOperatingStateCC.js.map +1 -1
- package/build/esm/cc/HumidityControlSetpointCC.d.ts +6 -6
- package/build/esm/cc/HumidityControlSetpointCC.d.ts.map +1 -1
- package/build/esm/cc/HumidityControlSetpointCC.js +2 -3
- package/build/esm/cc/HumidityControlSetpointCC.js.map +1 -1
- package/build/esm/cc/InclusionControllerCC.d.ts +2 -3
- package/build/esm/cc/InclusionControllerCC.d.ts.map +1 -1
- package/build/esm/cc/InclusionControllerCC.js.map +1 -1
- package/build/esm/cc/IndicatorCC.d.ts +3 -3
- package/build/esm/cc/IndicatorCC.d.ts.map +1 -1
- package/build/esm/cc/IndicatorCC.js +2 -4
- package/build/esm/cc/IndicatorCC.js.map +1 -1
- package/build/esm/cc/IrrigationCC.d.ts +3 -3
- package/build/esm/cc/IrrigationCC.d.ts.map +1 -1
- package/build/esm/cc/IrrigationCC.js +2 -3
- package/build/esm/cc/IrrigationCC.js.map +1 -1
- package/build/esm/cc/LanguageCC.d.ts +5 -6
- package/build/esm/cc/LanguageCC.d.ts.map +1 -1
- package/build/esm/cc/LanguageCC.js +2 -3
- package/build/esm/cc/LanguageCC.js.map +1 -1
- package/build/esm/cc/LockCC.d.ts +4 -4
- package/build/esm/cc/LockCC.d.ts.map +1 -1
- package/build/esm/cc/LockCC.js +2 -2
- package/build/esm/cc/LockCC.js.map +1 -1
- package/build/esm/cc/ManufacturerProprietaryCC.d.ts +4 -3
- package/build/esm/cc/ManufacturerProprietaryCC.d.ts.map +1 -1
- package/build/esm/cc/ManufacturerProprietaryCC.js +5 -3
- package/build/esm/cc/ManufacturerProprietaryCC.js.map +1 -1
- package/build/esm/cc/ManufacturerSpecificCC.d.ts +7 -8
- package/build/esm/cc/ManufacturerSpecificCC.d.ts.map +1 -1
- package/build/esm/cc/ManufacturerSpecificCC.js +2 -3
- package/build/esm/cc/ManufacturerSpecificCC.js.map +1 -1
- package/build/esm/cc/MeterCC.d.ts +4 -6
- package/build/esm/cc/MeterCC.d.ts.map +1 -1
- package/build/esm/cc/MeterCC.js +2 -4
- package/build/esm/cc/MeterCC.js.map +1 -1
- package/build/esm/cc/MultiChannelAssociationCC.d.ts +7 -8
- package/build/esm/cc/MultiChannelAssociationCC.d.ts.map +1 -1
- package/build/esm/cc/MultiChannelAssociationCC.js +2 -3
- package/build/esm/cc/MultiChannelAssociationCC.js.map +1 -1
- package/build/esm/cc/MultiChannelCC.d.ts +13 -12
- package/build/esm/cc/MultiChannelCC.d.ts.map +1 -1
- package/build/esm/cc/MultiChannelCC.js +65 -16
- package/build/esm/cc/MultiChannelCC.js.map +1 -1
- package/build/esm/cc/MultiCommandCC.d.ts +3 -3
- package/build/esm/cc/MultiCommandCC.d.ts.map +1 -1
- package/build/esm/cc/MultiCommandCC.js +2 -2
- package/build/esm/cc/MultiCommandCC.js.map +1 -1
- package/build/esm/cc/MultilevelSensorCC.d.ts +4 -7
- package/build/esm/cc/MultilevelSensorCC.d.ts.map +1 -1
- package/build/esm/cc/MultilevelSensorCC.js +2 -4
- package/build/esm/cc/MultilevelSensorCC.js.map +1 -1
- package/build/esm/cc/MultilevelSwitchCC._validateArgs.js +1 -1
- package/build/esm/cc/MultilevelSwitchCC._validateArgs.js.map +1 -1
- package/build/esm/cc/MultilevelSwitchCC.d.ts +13 -13
- package/build/esm/cc/MultilevelSwitchCC.d.ts.map +1 -1
- package/build/esm/cc/MultilevelSwitchCC.js +2 -3
- package/build/esm/cc/MultilevelSwitchCC.js.map +1 -1
- package/build/esm/cc/NoOperationCC.js +1 -1
- package/build/esm/cc/NoOperationCC.js.map +1 -1
- package/build/esm/cc/NodeNamingCC.d.ts +5 -5
- package/build/esm/cc/NodeNamingCC.d.ts.map +1 -1
- package/build/esm/cc/NodeNamingCC.js +2 -2
- package/build/esm/cc/NodeNamingCC.js.map +1 -1
- package/build/esm/cc/NotificationCC.d.ts +4 -5
- package/build/esm/cc/NotificationCC.d.ts.map +1 -1
- package/build/esm/cc/NotificationCC.js +2 -4
- package/build/esm/cc/NotificationCC.js.map +1 -1
- package/build/esm/cc/PowerlevelCC.d.ts +3 -3
- package/build/esm/cc/PowerlevelCC.d.ts.map +1 -1
- package/build/esm/cc/PowerlevelCC.js +2 -3
- package/build/esm/cc/PowerlevelCC.js.map +1 -1
- package/build/esm/cc/ProtectionCC._validateArgs.js +1 -1
- package/build/esm/cc/ProtectionCC._validateArgs.js.map +1 -1
- package/build/esm/cc/ProtectionCC.d.ts +11 -11
- package/build/esm/cc/ProtectionCC.d.ts.map +1 -1
- package/build/esm/cc/ProtectionCC.js +2 -3
- package/build/esm/cc/ProtectionCC.js.map +1 -1
- package/build/esm/cc/SceneActivationCC._validateArgs.js +1 -1
- package/build/esm/cc/SceneActivationCC._validateArgs.js.map +1 -1
- package/build/esm/cc/SceneActivationCC.d.ts +5 -6
- package/build/esm/cc/SceneActivationCC.d.ts.map +1 -1
- package/build/esm/cc/SceneActivationCC.js +2 -2
- package/build/esm/cc/SceneActivationCC.js.map +1 -1
- package/build/esm/cc/SceneActuatorConfigurationCC._validateArgs.js +1 -1
- package/build/esm/cc/SceneActuatorConfigurationCC._validateArgs.js.map +1 -1
- package/build/esm/cc/SceneActuatorConfigurationCC.d.ts +5 -5
- package/build/esm/cc/SceneActuatorConfigurationCC.d.ts.map +1 -1
- package/build/esm/cc/SceneActuatorConfigurationCC.js +2 -3
- package/build/esm/cc/SceneActuatorConfigurationCC.js.map +1 -1
- package/build/esm/cc/SceneControllerConfigurationCC._validateArgs.js +1 -1
- package/build/esm/cc/SceneControllerConfigurationCC._validateArgs.js.map +1 -1
- package/build/esm/cc/SceneControllerConfigurationCC.d.ts +6 -6
- package/build/esm/cc/SceneControllerConfigurationCC.d.ts.map +1 -1
- package/build/esm/cc/SceneControllerConfigurationCC.js +2 -3
- package/build/esm/cc/SceneControllerConfigurationCC.js.map +1 -1
- package/build/esm/cc/ScheduleEntryLockCC.d.ts +2 -3
- package/build/esm/cc/ScheduleEntryLockCC.d.ts.map +1 -1
- package/build/esm/cc/ScheduleEntryLockCC.js.map +1 -1
- package/build/esm/cc/Security2CC.d.ts +3 -4
- package/build/esm/cc/Security2CC.d.ts.map +1 -1
- package/build/esm/cc/Security2CC.js +2 -4
- package/build/esm/cc/Security2CC.js.map +1 -1
- package/build/esm/cc/SecurityCC.d.ts +3 -4
- package/build/esm/cc/SecurityCC.d.ts.map +1 -1
- package/build/esm/cc/SecurityCC.js +1 -2
- package/build/esm/cc/SecurityCC.js.map +1 -1
- package/build/esm/cc/SoundSwitchCC.d.ts +7 -7
- package/build/esm/cc/SoundSwitchCC.d.ts.map +1 -1
- package/build/esm/cc/SoundSwitchCC.js +2 -3
- package/build/esm/cc/SoundSwitchCC.js.map +1 -1
- package/build/esm/cc/SupervisionCC.d.ts +4 -4
- package/build/esm/cc/SupervisionCC.d.ts.map +1 -1
- package/build/esm/cc/SupervisionCC.js +2 -3
- package/build/esm/cc/SupervisionCC.js.map +1 -1
- package/build/esm/cc/ThermostatFanModeCC.d.ts +6 -6
- package/build/esm/cc/ThermostatFanModeCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatFanModeCC.js +2 -3
- package/build/esm/cc/ThermostatFanModeCC.js.map +1 -1
- package/build/esm/cc/ThermostatFanStateCC.d.ts +3 -3
- package/build/esm/cc/ThermostatFanStateCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatFanStateCC.js +2 -2
- package/build/esm/cc/ThermostatFanStateCC.js.map +1 -1
- package/build/esm/cc/ThermostatModeCC.d.ts +6 -6
- package/build/esm/cc/ThermostatModeCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatModeCC.js +2 -3
- package/build/esm/cc/ThermostatModeCC.js.map +1 -1
- package/build/esm/cc/ThermostatOperatingStateCC.d.ts +3 -4
- package/build/esm/cc/ThermostatOperatingStateCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatOperatingStateCC.js +2 -2
- package/build/esm/cc/ThermostatOperatingStateCC.js.map +1 -1
- package/build/esm/cc/ThermostatSetbackCC.d.ts +3 -3
- package/build/esm/cc/ThermostatSetbackCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatSetbackCC.js +2 -3
- package/build/esm/cc/ThermostatSetbackCC.js.map +1 -1
- package/build/esm/cc/ThermostatSetpointCC.d.ts +6 -6
- package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatSetpointCC.js +2 -3
- package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
- package/build/esm/cc/TimeCC.d.ts +3 -4
- package/build/esm/cc/TimeCC.d.ts.map +1 -1
- package/build/esm/cc/TimeCC.js +1 -2
- package/build/esm/cc/TimeCC.js.map +1 -1
- package/build/esm/cc/TimeParametersCC.d.ts +3 -4
- package/build/esm/cc/TimeParametersCC.d.ts.map +1 -1
- package/build/esm/cc/TimeParametersCC.js +1 -1
- package/build/esm/cc/TimeParametersCC.js.map +1 -1
- package/build/esm/cc/TransportServiceCC.d.ts +3 -3
- package/build/esm/cc/TransportServiceCC.d.ts.map +1 -1
- package/build/esm/cc/TransportServiceCC.js +2 -3
- package/build/esm/cc/TransportServiceCC.js.map +1 -1
- package/build/esm/cc/UserCodeCC.d.ts +19 -19
- package/build/esm/cc/UserCodeCC.d.ts.map +1 -1
- package/build/esm/cc/UserCodeCC.js +2 -3
- package/build/esm/cc/UserCodeCC.js.map +1 -1
- package/build/esm/cc/VersionCC.d.ts +17 -17
- package/build/esm/cc/VersionCC.d.ts.map +1 -1
- package/build/esm/cc/VersionCC.js +2 -3
- package/build/esm/cc/VersionCC.js.map +1 -1
- package/build/esm/cc/WakeUpCC.d.ts +6 -6
- package/build/esm/cc/WakeUpCC.d.ts.map +1 -1
- package/build/esm/cc/WakeUpCC.js +2 -3
- package/build/esm/cc/WakeUpCC.js.map +1 -1
- package/build/esm/cc/WindowCoveringCC.d.ts +3 -4
- package/build/esm/cc/WindowCoveringCC.d.ts.map +1 -1
- package/build/esm/cc/WindowCoveringCC.js +1 -2
- package/build/esm/cc/WindowCoveringCC.js.map +1 -1
- package/build/esm/cc/ZWavePlusCC.d.ts +8 -8
- package/build/esm/cc/ZWavePlusCC.d.ts.map +1 -1
- package/build/esm/cc/ZWavePlusCC.js +2 -3
- package/build/esm/cc/ZWavePlusCC.js.map +1 -1
- package/build/esm/cc/ZWaveProtocolCC.d.ts +2 -2
- package/build/esm/cc/ZWaveProtocolCC.d.ts.map +1 -1
- package/build/esm/cc/ZWaveProtocolCC.js +1 -1
- package/build/esm/cc/ZWaveProtocolCC.js.map +1 -1
- package/build/esm/cc/_CCValues.generated.d.ts +2 -0
- package/build/esm/cc/_CCValues.generated.d.ts.map +1 -1
- package/build/esm/cc/_CCValues.generated.js +5 -4
- package/build/esm/cc/_CCValues.generated.js.map +1 -1
- package/build/esm/cc/manufacturerProprietary/FibaroCC.d.ts +3 -3
- package/build/esm/cc/manufacturerProprietary/FibaroCC.d.ts.map +1 -1
- package/build/esm/cc/manufacturerProprietary/FibaroCC.js +1 -1
- package/build/esm/cc/manufacturerProprietary/FibaroCC.js.map +1 -1
- package/build/esm/lib/API.d.ts +3 -3
- package/build/esm/lib/API.d.ts.map +1 -1
- package/build/esm/lib/API.js.map +1 -1
- package/build/esm/lib/CommandClass.d.ts +5 -6
- package/build/esm/lib/CommandClass.d.ts.map +1 -1
- package/build/esm/lib/CommandClass.js +2 -2
- package/build/esm/lib/CommandClass.js.map +1 -1
- package/build/esm/lib/CommandClassDecorators.d.ts +2 -2
- package/build/esm/lib/CommandClassDecorators.d.ts.map +1 -1
- package/build/esm/lib/CommandClassDecorators.js +1 -1
- package/build/esm/lib/CommandClassDecorators.js.map +1 -1
- package/build/esm/lib/Security2/Extension.d.ts +2 -2
- package/build/esm/lib/Security2/Extension.d.ts.map +1 -1
- package/build/esm/lib/Security2/Extension.js +2 -2
- package/build/esm/lib/Security2/Extension.js.map +1 -1
- package/build/esm/lib/SetValueResult.d.ts +1 -1
- package/build/esm/lib/SetValueResult.d.ts.map +1 -1
- package/build/esm/lib/Values.d.ts +3 -3
- package/build/esm/lib/Values.d.ts.map +1 -1
- package/build/esm/lib/Values.js +1 -1
- package/build/esm/lib/Values.js.map +1 -1
- package/build/esm/lib/_Types.d.ts +2 -2
- package/build/esm/lib/_Types.d.ts.map +1 -1
- package/build/esm/lib/_Types.js +1 -1
- package/build/esm/lib/_Types.js.map +1 -1
- package/build/esm/lib/serializers.d.ts +1 -1
- package/build/esm/lib/serializers.d.ts.map +1 -1
- package/build/esm/lib/serializers.js +1 -1
- package/build/esm/lib/serializers.js.map +1 -1
- package/build/esm/lib/traits.d.ts +2 -2
- package/build/esm/lib/traits.d.ts.map +1 -1
- package/build/esm/lib/utils.d.ts +2 -2
- package/build/esm/lib/utils.d.ts.map +1 -1
- package/build/esm/lib/utils.js +2 -2
- package/build/esm/lib/utils.js.map +1 -1
- package/package.json +6 -6
|
@@ -42,9 +42,7 @@ __export(MultilevelSensorCC_exports, {
|
|
|
42
42
|
module.exports = __toCommonJS(MultilevelSensorCC_exports);
|
|
43
43
|
var __validateArgs = __toESM(require("./MultilevelSensorCC._validateArgs.js"), 1);
|
|
44
44
|
var import_core = require("@zwave-js/core");
|
|
45
|
-
var
|
|
46
|
-
var import_safe2 = require("@zwave-js/shared/safe");
|
|
47
|
-
var import_safe3 = require("@zwave-js/shared/safe");
|
|
45
|
+
var import_shared = require("@zwave-js/shared");
|
|
48
46
|
var import_API = require("../lib/API.js");
|
|
49
47
|
var import_CommandClass = require("../lib/CommandClass.js");
|
|
50
48
|
var import_CommandClassDecorators = require("../lib/CommandClassDecorators.js");
|
|
@@ -157,7 +155,7 @@ function getPreferredSensorScale(ctx, nodeId, endpointIndex, sensorType, support
|
|
|
157
155
|
}
|
|
158
156
|
__name(getPreferredSensorScale, "getPreferredSensorScale");
|
|
159
157
|
let MultilevelSensorCCAPI = (() => {
|
|
160
|
-
let _classDecorators = [(0, import_CommandClassDecorators.API)(
|
|
158
|
+
let _classDecorators = [(0, import_CommandClassDecorators.API)(import_core.CommandClasses["Multilevel Sensor"])];
|
|
161
159
|
let _classDescriptor;
|
|
162
160
|
let _classExtraInitializers = [];
|
|
163
161
|
let _classThis;
|
|
@@ -201,7 +199,7 @@ let MultilevelSensorCCAPI = (() => {
|
|
|
201
199
|
get [import_API.POLL_VALUE]() {
|
|
202
200
|
return async function({ property }) {
|
|
203
201
|
const valueId = {
|
|
204
|
-
commandClass:
|
|
202
|
+
commandClass: import_core.CommandClasses["Multilevel Sensor"],
|
|
205
203
|
endpoint: this.endpoint.index,
|
|
206
204
|
property
|
|
207
205
|
};
|
|
@@ -288,7 +286,7 @@ let MultilevelSensorCCAPI = (() => {
|
|
|
288
286
|
return MultilevelSensorCCAPI2 = _classThis;
|
|
289
287
|
})();
|
|
290
288
|
let MultilevelSensorCC = (() => {
|
|
291
|
-
let _classDecorators = [(0, import_CommandClassDecorators.commandClass)(
|
|
289
|
+
let _classDecorators = [(0, import_CommandClassDecorators.commandClass)(import_core.CommandClasses["Multilevel Sensor"]), (0, import_CommandClassDecorators.implementedVersion)(11), (0, import_CommandClassDecorators.ccValues)(import_CCValues_generated.MultilevelSensorCCValues)];
|
|
292
290
|
let _classDescriptor;
|
|
293
291
|
let _classExtraInitializers = [];
|
|
294
292
|
let _classThis;
|
|
@@ -310,8 +308,8 @@ let MultilevelSensorCC = (() => {
|
|
|
310
308
|
async interview(ctx) {
|
|
311
309
|
const node = this.getNode(ctx);
|
|
312
310
|
const endpoint = this.getEndpoint(ctx);
|
|
313
|
-
const api = import_API.CCAPI.create(
|
|
314
|
-
priority:
|
|
311
|
+
const api = import_API.CCAPI.create(import_core.CommandClasses["Multilevel Sensor"], ctx, endpoint).withOptions({
|
|
312
|
+
priority: import_core.MessagePriority.NodeQuery
|
|
315
313
|
});
|
|
316
314
|
ctx.logNode(node.id, {
|
|
317
315
|
endpoint: this.endpointIndex,
|
|
@@ -370,8 +368,8 @@ let MultilevelSensorCC = (() => {
|
|
|
370
368
|
async refreshValues(ctx) {
|
|
371
369
|
const node = this.getNode(ctx);
|
|
372
370
|
const endpoint = this.getEndpoint(ctx);
|
|
373
|
-
const api = import_API.CCAPI.create(
|
|
374
|
-
priority:
|
|
371
|
+
const api = import_API.CCAPI.create(import_core.CommandClasses["Multilevel Sensor"], ctx, endpoint).withOptions({
|
|
372
|
+
priority: import_core.MessagePriority.NodeQuery
|
|
375
373
|
});
|
|
376
374
|
const valueDB = this.getValueDB(ctx);
|
|
377
375
|
if (api.version <= 4) {
|
|
@@ -478,9 +476,9 @@ let MultilevelSensorCCReport = (() => {
|
|
|
478
476
|
this.scale = typeof options.scale === "number" ? options.scale : options.scale.key;
|
|
479
477
|
}
|
|
480
478
|
static from(raw, ctx) {
|
|
481
|
-
(0,
|
|
479
|
+
(0, import_core.validatePayload)(raw.payload.length >= 1);
|
|
482
480
|
const type = raw.payload[0];
|
|
483
|
-
const { value, scale } = (0,
|
|
481
|
+
const { value, scale } = (0, import_core.parseFloatWithScale)(raw.payload.subarray(1));
|
|
484
482
|
return new this({
|
|
485
483
|
nodeId: ctx.sourceNodeId,
|
|
486
484
|
type,
|
|
@@ -499,15 +497,15 @@ let MultilevelSensorCCReport = (() => {
|
|
|
499
497
|
if (ccVersion >= 5) {
|
|
500
498
|
const supportedSensorTypes = this.getValue(ctx, import_CCValues_generated.MultilevelSensorCCValues.supportedSensorTypes);
|
|
501
499
|
if (supportedSensorTypes?.length) {
|
|
502
|
-
|
|
500
|
+
import_core.validatePayload.withReason(`Unsupported sensor type ${(0, import_core.getSensorName)(this.type)} or corrupted data`)(supportedSensorTypes.includes(this.type));
|
|
503
501
|
}
|
|
504
502
|
const supportedScales = this.getValue(ctx, import_CCValues_generated.MultilevelSensorCCValues.supportedScales(this.type));
|
|
505
503
|
if (supportedScales?.length) {
|
|
506
|
-
|
|
504
|
+
import_core.validatePayload.withReason(`Unsupported scale ${scale.label} or corrupted data`)(supportedScales.includes(scale.key));
|
|
507
505
|
}
|
|
508
506
|
} else {
|
|
509
|
-
|
|
510
|
-
|
|
507
|
+
import_core.validatePayload.withReason(`Unknown sensor type ${(0, import_shared.num2hex)(this.type)} or corrupted data`)(!!sensor);
|
|
508
|
+
import_core.validatePayload.withReason(`Unknown scale ${(0, import_shared.num2hex)(this.scale)} or corrupted data`)(scale.label !== (0, import_core.getUnknownScale)(this.scale).label);
|
|
511
509
|
}
|
|
512
510
|
}
|
|
513
511
|
const sensorName = (0, import_core.getSensorName)(this.type);
|
|
@@ -527,9 +525,9 @@ let MultilevelSensorCCReport = (() => {
|
|
|
527
525
|
scale;
|
|
528
526
|
value;
|
|
529
527
|
serialize(ctx) {
|
|
530
|
-
this.payload =
|
|
531
|
-
|
|
532
|
-
(0,
|
|
528
|
+
this.payload = import_shared.Bytes.concat([
|
|
529
|
+
import_shared.Bytes.from([this.type]),
|
|
530
|
+
(0, import_core.encodeFloatWithScale)(this.value, this.scale)
|
|
533
531
|
]);
|
|
534
532
|
return super.serialize(ctx);
|
|
535
533
|
}
|
|
@@ -595,7 +593,7 @@ let MultilevelSensorCCGet = (() => {
|
|
|
595
593
|
scale;
|
|
596
594
|
serialize(ctx) {
|
|
597
595
|
if (this.sensorType != void 0 && this.scale != void 0) {
|
|
598
|
-
this.payload =
|
|
596
|
+
this.payload = import_shared.Bytes.from([
|
|
599
597
|
this.sensorType,
|
|
600
598
|
(this.scale & 3) << 3
|
|
601
599
|
]);
|
|
@@ -643,8 +641,8 @@ let MultilevelSensorCCSupportedSensorReport = (() => {
|
|
|
643
641
|
this.supportedSensorTypes = options.supportedSensorTypes;
|
|
644
642
|
}
|
|
645
643
|
static from(raw, ctx) {
|
|
646
|
-
(0,
|
|
647
|
-
const supportedSensorTypes = (0,
|
|
644
|
+
(0, import_core.validatePayload)(raw.payload.length >= 1);
|
|
645
|
+
const supportedSensorTypes = (0, import_core.parseBitMask)(raw.payload);
|
|
648
646
|
return new this({
|
|
649
647
|
nodeId: ctx.sourceNodeId,
|
|
650
648
|
supportedSensorTypes
|
|
@@ -717,9 +715,9 @@ let MultilevelSensorCCSupportedScaleReport = (() => {
|
|
|
717
715
|
this.supportedScales = options.supportedScales;
|
|
718
716
|
}
|
|
719
717
|
static from(raw, ctx) {
|
|
720
|
-
(0,
|
|
718
|
+
(0, import_core.validatePayload)(raw.payload.length >= 2);
|
|
721
719
|
const sensorType = raw.payload[0];
|
|
722
|
-
const supportedScales = (0,
|
|
720
|
+
const supportedScales = (0, import_core.parseBitMask)(import_shared.Bytes.from([raw.payload[1] & 15]), 0);
|
|
723
721
|
return new this({
|
|
724
722
|
nodeId: ctx.sourceNodeId,
|
|
725
723
|
sensorType,
|
|
@@ -729,8 +727,8 @@ let MultilevelSensorCCSupportedScaleReport = (() => {
|
|
|
729
727
|
sensorType;
|
|
730
728
|
supportedScales;
|
|
731
729
|
serialize(ctx) {
|
|
732
|
-
this.payload =
|
|
733
|
-
|
|
730
|
+
this.payload = import_shared.Bytes.concat([
|
|
731
|
+
import_shared.Bytes.from([this.sensorType]),
|
|
734
732
|
(0, import_core.encodeBitMask)(this.supportedScales, 4, 0)
|
|
735
733
|
]);
|
|
736
734
|
return super.serialize(ctx);
|
|
@@ -773,7 +771,7 @@ let MultilevelSensorCCGetSupportedScale = (() => {
|
|
|
773
771
|
this.sensorType = options.sensorType;
|
|
774
772
|
}
|
|
775
773
|
static from(raw, ctx) {
|
|
776
|
-
(0,
|
|
774
|
+
(0, import_core.validatePayload)(raw.payload.length >= 1);
|
|
777
775
|
const sensorType = raw.payload[0];
|
|
778
776
|
return new this({
|
|
779
777
|
nodeId: ctx.sourceNodeId,
|
|
@@ -782,7 +780,7 @@ let MultilevelSensorCCGetSupportedScale = (() => {
|
|
|
782
780
|
}
|
|
783
781
|
sensorType;
|
|
784
782
|
serialize(ctx) {
|
|
785
|
-
this.payload =
|
|
783
|
+
this.payload = import_shared.Bytes.from([this.sensorType]);
|
|
786
784
|
return super.serialize(ctx);
|
|
787
785
|
}
|
|
788
786
|
toLogEntry(ctx) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/cc/MultilevelSensorCC.ts"],
|
|
4
|
-
"sourcesContent": ["import { type CCEncodingContext, type CCParsingContext } from \"@zwave-js/cc\";\nimport { type GetDeviceConfig } from \"@zwave-js/config\";\nimport {\n\ttype GetNode,\n\ttype GetSupportedCCVersion,\n\ttype GetValueDB,\n\ttype LogNode,\n\ttype WithAddress,\n\tencodeBitMask,\n\tgetSensor,\n\tgetSensorName,\n\tgetSensorScale,\n\tgetUnknownScale,\n\ttimespan,\n} from \"@zwave-js/core\";\nimport type {\n\tControlsCC,\n\tEndpointId,\n\tGetEndpoint,\n\tMessageOrCCLogEntry,\n\tMessageRecord,\n\tNodeId,\n\tScale,\n\tSinglecastCC,\n\tSupervisionResult,\n\tSupportsCC,\n\tValueID,\n} from \"@zwave-js/core/safe\";\nimport {\n\tCommandClasses,\n\ttype MaybeNotKnown,\n\tMessagePriority,\n\tValueMetadata,\n\tencodeFloatWithScale,\n\tparseBitMask,\n\tparseFloatWithScale,\n\tvalidatePayload,\n} from \"@zwave-js/core/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport { type AllOrNone, num2hex } from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport {\n\tCCAPI,\n\tPOLL_VALUE,\n\tPhysicalCCAPI,\n\ttype PollValueImplementation,\n\tthrowUnsupportedProperty,\n} from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\ttype CCResponsePredicate,\n\tCommandClass,\n\ttype InterviewContext,\n\ttype PersistValuesContext,\n\ttype RefreshValuesContext,\n\tgetEffectiveCCVersion,\n} from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValueProperty,\n\tccValues,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n\tuseSupervision,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport {\n\tMultilevelSensorCommand,\n\ttype MultilevelSensorValue,\n} from \"../lib/_Types.js\";\nimport { type GetUserPreferences } from \"../lib/traits.js\";\n\nexport const MultilevelSensorCCValues = V.defineCCValues(\n\tCommandClasses[\"Multilevel Sensor\"],\n\t{\n\t\t...V.staticProperty(\"supportedSensorTypes\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"supportedScales\",\n\t\t\t\"supportedScales\",\n\t\t\t(sensorType: number) => sensorType,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"supportedScales\"\n\t\t\t\t&& typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\t\t...V.dynamicPropertyWithName(\n\t\t\t\"value\",\n\t\t\t// This should have been the sensor type, but it is too late to change now\n\t\t\t// Maybe we can migrate this without breaking in the future\n\t\t\t(sensorTypeName: string) => sensorTypeName,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\ttypeof property === \"string\"\n\t\t\t\t&& property !== \"supportedSensorTypes\"\n\t\t\t\t&& property !== \"supportedScales\"\n\t\t\t\t&& propertyKey == undefined,\n\t\t\t(sensorTypeName: string) => ({\n\t\t\t\t// Just the base metadata, to be extended using a config manager\n\t\t\t\t...ValueMetadata.ReadOnlyNumber,\n\t\t\t\tlabel: sensorTypeName,\n\t\t\t} as const),\n\t\t),\n\t},\n);\n\n/**\n * Determine the scale to use to query a sensor reading. Uses the user-preferred scale if given,\n * followed by the most recently used scale, otherwile falls back to the first supported one.\n */\nfunction getPreferredSensorScale(\n\tctx: GetValueDB & GetUserPreferences & LogNode,\n\tnodeId: number,\n\tendpointIndex: number,\n\tsensorType: number,\n\tsupportedScales: readonly number[],\n): number {\n\tconst preferences = ctx.getUserPreferences();\n\tconst sensor = getSensor(sensorType);\n\t// If the sensor type is unknown, we have no default. Use the user-provided scale or 0\n\tif (!sensor) {\n\t\tconst preferred = preferences?.scales[sensorType];\n\t\t// We cannot look up strings for unknown sensor types, so this must be a number or we use the fallback\n\t\tif (typeof preferred !== \"number\") return 0;\n\t\treturn preferred;\n\t}\n\n\t// Look up the preference for the scale\n\tlet preferred: number | string | undefined;\n\t// Named scales apply to multiple sensor types. To be able to override the scale for single types\n\t// we need to look at the preferences by sensor type first\n\tpreferred = preferences?.scales[sensorType];\n\t// If the scale is named, we can then try to use the named preference\n\tconst scaleGroupName = sensor.scaleGroupName;\n\tif (preferred == undefined && scaleGroupName) {\n\t\tpreferred = preferences?.scales[scaleGroupName];\n\t}\n\t// Then attempt reading the scale from the corresponding value\n\tif (preferred == undefined) {\n\t\tconst sensorName = getSensorName(sensorType);\n\t\tconst sensorValue = MultilevelSensorCCValues.value(sensorName);\n\t\tconst metadata = ctx\n\t\t\t.tryGetValueDB(nodeId)\n\t\t\t?.getMetadata(sensorValue.endpoint(endpointIndex));\n\t\tconst scale = metadata?.ccSpecific?.scale;\n\t\tif (typeof scale === \"number\" && supportedScales.includes(scale)) {\n\t\t\tpreferred = scale;\n\t\t\tctx.logNode(nodeId, {\n\t\t\t\tendpoint: endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t`No scale preference for sensor type ${sensorType}, using the last-used scale ${preferred}`,\n\t\t\t});\n\t\t}\n\t}\n\t// Then fall back to the first supported scale\n\tif (preferred == undefined) {\n\t\tpreferred = supportedScales[0] ?? 0;\n\t\tctx.logNode(nodeId, {\n\t\t\tendpoint: endpointIndex,\n\t\t\tmessage:\n\t\t\t\t`No scale preference for sensor type ${sensorType}, using the first supported scale ${preferred}`,\n\t\t});\n\t\treturn preferred;\n\t}\n\n\t// If the scale name or unit was given, try to look it up\n\tif (typeof preferred === \"string\") {\n\t\tfor (const [key, scale] of Object.entries(sensor.scales)) {\n\t\t\tif (scale.label === preferred || scale.unit === preferred) {\n\t\t\t\tpreferred = parseInt(key, 10);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (typeof preferred === \"string\") {\n\t\t// Looking up failed\n\t\tctx.logNode(nodeId, {\n\t\t\tendpoint: endpointIndex,\n\t\t\tmessage:\n\t\t\t\t`Preferred scale \"${preferred}\" for sensor type ${sensorType} not found, using the first supported scale ${\n\t\t\t\t\tsupportedScales[0] ?? 0\n\t\t\t\t}`,\n\t\t});\n\t\treturn supportedScales[0] ?? 0;\n\t}\n\n\t// We have a numeric scale key, nothing to look up. Make sure it is supported though\n\tif (!supportedScales.length) {\n\t\t// No info about supported scales, just use the preferred one\n\t\treturn preferred;\n\t} else if (!supportedScales.includes(preferred)) {\n\t\tctx.logNode(nodeId, {\n\t\t\tendpoint: endpointIndex,\n\t\t\tmessage:\n\t\t\t\t`Preferred scale ${preferred} not supported for sensor type ${sensorType}, using the first supported scale`,\n\t\t});\n\t\treturn supportedScales[0];\n\t} else {\n\t\treturn preferred;\n\t}\n}\n\n// @noSetValueAPI This CC is read-only\n\n@API(CommandClasses[\"Multilevel Sensor\"])\nexport class MultilevelSensorCCAPI extends PhysicalCCAPI {\n\tpublic supportsCommand(\n\t\tcmd: MultilevelSensorCommand,\n\t): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase MultilevelSensorCommand.Get:\n\t\t\tcase MultilevelSensorCommand.Report:\n\t\t\t\treturn true; // This is mandatory\n\t\t\tcase MultilevelSensorCommand.GetSupportedSensor:\n\t\t\tcase MultilevelSensorCommand.GetSupportedScale:\n\t\t\t\treturn this.version >= 5;\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\tprotected get [POLL_VALUE](): PollValueImplementation {\n\t\treturn async function(this: MultilevelSensorCCAPI, { property }) {\n\t\t\t// Look up the necessary information\n\t\t\tconst valueId: ValueID = {\n\t\t\t\tcommandClass: CommandClasses[\"Multilevel Sensor\"],\n\t\t\t\tendpoint: this.endpoint.index,\n\t\t\t\tproperty,\n\t\t\t};\n\t\t\tconst ccSpecific = this.tryGetValueDB()?.getMetadata(valueId)\n\t\t\t\t?.ccSpecific;\n\t\t\tif (!ccSpecific) {\n\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\n\t\t\tconst { sensorType, scale } = ccSpecific;\n\t\t\treturn this.get(sensorType, scale);\n\t\t};\n\t}\n\n\t/** Query the default sensor value */\n\tpublic async get(): Promise<\n\t\tMaybeNotKnown<MultilevelSensorValue & { type: number }>\n\t>;\n\t/** Query the sensor value for the given sensor type using the preferred sensor scale */\n\tpublic async get(\n\t\tsensorType: number,\n\t): Promise<MaybeNotKnown<MultilevelSensorValue>>;\n\t/** Query the sensor value for the given sensor type using the given sensor scale */\n\tpublic async get(\n\t\tsensorType: number,\n\t\tscale: number,\n\t): Promise<MaybeNotKnown<number>>;\n\n\t@validateArgs()\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async get(sensorType?: number, scale?: number) {\n\t\tthis.assertSupportsCommand(\n\t\t\tMultilevelSensorCommand,\n\t\t\tMultilevelSensorCommand.Get,\n\t\t);\n\n\t\t// Figure out the preferred scale if none was given\n\t\tlet preferredScale: number | undefined;\n\t\tif (sensorType != undefined && scale == undefined) {\n\t\t\tconst supportedScales: readonly number[] =\n\t\t\t\tthis.tryGetValueDB()?.getValue({\n\t\t\t\t\tcommandClass: this.ccId,\n\t\t\t\t\tendpoint: this.endpoint.index,\n\t\t\t\t\tproperty: \"supportedScales\",\n\t\t\t\t\tpropertyKey: sensorType,\n\t\t\t\t}) ?? [];\n\n\t\t\tpreferredScale = getPreferredSensorScale(\n\t\t\t\tthis.host,\n\t\t\t\tthis.endpoint.nodeId,\n\t\t\t\tthis.endpoint.index,\n\t\t\t\tsensorType,\n\t\t\t\tsupportedScales,\n\t\t\t);\n\t\t}\n\n\t\tconst cc = new MultilevelSensorCCGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tsensorType: sensorType!,\n\t\t\tscale: (scale ?? preferredScale)!,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tMultilevelSensorCCReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (!response) return;\n\n\t\tconst responseScale = getSensorScale(response.type, response.scale);\n\n\t\tif (sensorType == undefined) {\n\t\t\t// Overload #1: return the full response\n\t\t\treturn {\n\t\t\t\ttype: response.type,\n\t\t\t\tvalue: response.value,\n\t\t\t\tscale: responseScale,\n\t\t\t};\n\t\t} else if (scale == undefined) {\n\t\t\t// Overload #2: return value and scale\n\t\t\treturn {\n\t\t\t\tvalue: response.value,\n\t\t\t\tscale: responseScale,\n\t\t\t};\n\t\t} else {\n\t\t\t// Overload #3: return only the value\n\t\t\treturn response.value;\n\t\t}\n\t}\n\n\tpublic async getSupportedSensorTypes(): Promise<\n\t\tMaybeNotKnown<readonly number[]>\n\t> {\n\t\tthis.assertSupportsCommand(\n\t\t\tMultilevelSensorCommand,\n\t\t\tMultilevelSensorCommand.GetSupportedSensor,\n\t\t);\n\n\t\tconst cc = new MultilevelSensorCCGetSupportedSensor({\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\tMultilevelSensorCCSupportedSensorReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\treturn response?.supportedSensorTypes;\n\t}\n\n\t@validateArgs()\n\tpublic async getSupportedScales(\n\t\tsensorType: number,\n\t): Promise<MaybeNotKnown<readonly number[]>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tMultilevelSensorCommand,\n\t\t\tMultilevelSensorCommand.GetSupportedScale,\n\t\t);\n\n\t\tconst cc = new MultilevelSensorCCGetSupportedScale({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tsensorType,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tMultilevelSensorCCSupportedScaleReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\treturn response?.supportedScales;\n\t}\n\n\t@validateArgs()\n\tpublic async sendReport(\n\t\tsensorType: number,\n\t\tscale: number | Scale,\n\t\tvalue: number,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tMultilevelSensorCommand,\n\t\t\tMultilevelSensorCommand.Report,\n\t\t);\n\n\t\tconst cc = new MultilevelSensorCCReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\ttype: sensorType,\n\t\t\tscale,\n\t\t\tvalue,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n}\n\n@commandClass(CommandClasses[\"Multilevel Sensor\"])\n@implementedVersion(11)\n@ccValues(MultilevelSensorCCValues)\nexport class MultilevelSensorCC extends CommandClass {\n\tdeclare ccCommand: MultilevelSensorCommand;\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[\"Multilevel Sensor\"],\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\tif (api.version >= 5) {\n\t\t\t// Query the supported sensor types\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: \"retrieving supported sensor types...\",\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst sensorTypes = await api.getSupportedSensorTypes();\n\t\t\tif (sensorTypes) {\n\t\t\t\tconst logMessage = \"received supported sensor types:\\n\"\n\t\t\t\t\t+ sensorTypes\n\t\t\t\t\t\t.map((t) => getSensorName(t))\n\t\t\t\t\t\t.map((name) => `\u00B7 ${name}`)\n\t\t\t\t\t\t.join(\"\\n\");\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\tmessage: logMessage,\n\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"Querying supported sensor types timed out, skipping interview...\",\n\t\t\t\t\tlevel: \"warn\",\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// As well as the supported scales for each sensor\n\n\t\t\tfor (const type of sensorTypes) {\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\tmessage: `querying supported scales for ${\n\t\t\t\t\t\tgetSensorName(type)\n\t\t\t\t\t} sensor`,\n\t\t\t\t\tdirection: \"outbound\",\n\t\t\t\t});\n\t\t\t\tconst sensorScales = await api.getSupportedScales(type);\n\t\t\t\tif (sensorScales) {\n\t\t\t\t\tconst logMessage = \"received supported scales:\\n\"\n\t\t\t\t\t\t+ sensorScales\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(s) =>\n\t\t\t\t\t\t\t\t\t(getSensorScale(type, s)\n\t\t\t\t\t\t\t\t\t\t?? getUnknownScale(s)).label,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.map((name) => `\u00B7 ${name}`)\n\t\t\t\t\t\t\t.join(\"\\n\");\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: logMessage,\n\t\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t\t});\n\t\t\t\t} else {\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:\n\t\t\t\t\t\t\t\"Querying supported scales timed out, skipping interview...\",\n\t\t\t\t\t\tlevel: \"warn\",\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tawait this.refreshValues(ctx);\n\n\t\t// Remember that the interview is complete\n\t\tthis.setInterviewComplete(ctx, true);\n\t}\n\n\tpublic async refreshValues(\n\t\tctx: RefreshValuesContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\t\tconst api = CCAPI.create(\n\t\t\tCommandClasses[\"Multilevel Sensor\"],\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\n\t\tconst valueDB = this.getValueDB(ctx);\n\n\t\tif (api.version <= 4) {\n\t\t\t// Sensors up to V4 only support a single value\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: \"querying current sensor reading...\",\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst mlsResponse = await api.get();\n\t\t\tif (mlsResponse) {\n\t\t\t\tconst sensorScale = getSensorScale(\n\t\t\t\t\tmlsResponse.type,\n\t\t\t\t\tmlsResponse.scale.key,\n\t\t\t\t);\n\t\t\t\tconst logMessage = `received current sensor reading:\nsensor type: ${getSensorName(mlsResponse.type)}\nvalue: ${mlsResponse.value}${\n\t\t\t\t\tsensorScale?.unit ? ` ${sensorScale.unit}` : \"\"\n\t\t\t\t}`;\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\tmessage: logMessage,\n\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\t// Query all sensor values\n\t\t\tconst sensorTypes: readonly number[] = valueDB.getValue({\n\t\t\t\tcommandClass: this.ccId,\n\t\t\t\tproperty: \"supportedSensorTypes\",\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t}) || [];\n\n\t\t\tfor (const type of sensorTypes) {\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\tmessage: `querying ${\n\t\t\t\t\t\tgetSensorName(type)\n\t\t\t\t\t} sensor reading...`,\n\t\t\t\t\tdirection: \"outbound\",\n\t\t\t\t});\n\n\t\t\t\tconst value = await api.get(type);\n\t\t\t\tif (value) {\n\t\t\t\t\tconst logMessage = `received current ${\n\t\t\t\t\t\tgetSensorName(type)\n\t\t\t\t\t} sensor reading: ${value.value} ${value.scale.unit || \"\"}`;\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: logMessage,\n\t\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic shouldRefreshValues(\n\t\tthis: SinglecastCC<this>,\n\t\tctx:\n\t\t\t& GetValueDB\n\t\t\t& GetSupportedCCVersion\n\t\t\t& GetDeviceConfig\n\t\t\t& GetNode<\n\t\t\t\tNodeId & GetEndpoint<EndpointId & SupportsCC & ControlsCC>\n\t\t\t>,\n\t): boolean {\n\t\t// Poll the device when all of the supported values were last updated longer than 6 hours ago.\n\t\t// This may lead to some values not being updated, but the user may have disabled some unnecessary\n\t\t// reports to reduce traffic.\n\t\tconst valueDB = ctx.tryGetValueDB(this.nodeId);\n\t\tif (!valueDB) return true;\n\n\t\tconst values = this.getDefinedValueIDs(ctx).filter((v) =>\n\t\t\tMultilevelSensorCCValues.value.is(v)\n\t\t);\n\t\treturn values.every((v) => {\n\t\t\tconst lastUpdated = valueDB.getTimestamp(v);\n\t\t\treturn (\n\t\t\t\tlastUpdated == undefined\n\t\t\t\t|| Date.now() - lastUpdated > timespan.hours(6)\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Returns which sensor types are supported.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getSupportedSensorTypesCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): MaybeNotKnown<number[]> {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tMultilevelSensorCCValues.supportedSensorTypes.endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t);\n\t}\n\n\t/**\n\t * Returns which scales are supported for a given sensor type.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getSupportedScalesCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tsensorType: number,\n\t): MaybeNotKnown<number[]> {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tMultilevelSensorCCValues.supportedScales(sensorType).endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t);\n\t}\n\n\tpublic translatePropertyKey(\n\t\tctx: GetValueDB,\n\t\tproperty: string | number,\n\t\tpropertyKey: string | number,\n\t): string | undefined {\n\t\t// TODO: check this\n\t\tif (property === \"values\" && typeof propertyKey === \"number\") {\n\t\t\tconst sensor = getSensor(propertyKey);\n\t\t\tif (sensor) return sensor.label;\n\t\t}\n\t\treturn super.translatePropertyKey(ctx, property, propertyKey);\n\t}\n}\n\n// @publicAPI\nexport interface MultilevelSensorCCReportOptions {\n\ttype: number;\n\tscale: number | Scale;\n\tvalue: number;\n}\n\n@CCCommand(MultilevelSensorCommand.Report)\n@useSupervision()\nexport class MultilevelSensorCCReport extends MultilevelSensorCC {\n\tpublic constructor(\n\t\toptions: WithAddress<MultilevelSensorCCReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.type = options.type;\n\t\tthis.value = options.value;\n\t\tthis.scale = typeof options.scale === \"number\"\n\t\t\t? options.scale\n\t\t\t: options.scale.key;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): MultilevelSensorCCReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst type = raw.payload[0];\n\n\t\t// parseFloatWithScale does its own validation\n\t\tconst { value, scale } = parseFloatWithScale(\n\t\t\traw.payload.subarray(1),\n\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\ttype,\n\t\t\tvalue,\n\t\t\tscale,\n\t\t});\n\t}\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\n\t\tconst sensor = getSensor(this.type);\n\t\tconst scale = getSensorScale(\n\t\t\tthis.type,\n\t\t\tthis.scale,\n\t\t) ?? getUnknownScale(this.scale);\n\n\t\t// Filter out unknown sensor types and scales, unless the strict validation is disabled\n\t\tconst measurementValidation = !ctx.getDeviceConfig?.(\n\t\t\tthis.nodeId as number,\n\t\t)?.compat?.disableStrictMeasurementValidation;\n\n\t\tconst ccVersion = getEffectiveCCVersion(ctx, this);\n\n\t\tif (measurementValidation) {\n\t\t\t// Filter out unsupported sensor types and scales if possible\n\t\t\tif (ccVersion >= 5) {\n\t\t\t\tconst supportedSensorTypes = this.getValue<number[]>(\n\t\t\t\t\tctx,\n\t\t\t\t\tMultilevelSensorCCValues.supportedSensorTypes,\n\t\t\t\t);\n\t\t\t\tif (supportedSensorTypes?.length) {\n\t\t\t\t\tvalidatePayload.withReason(\n\t\t\t\t\t\t`Unsupported sensor type ${\n\t\t\t\t\t\t\tgetSensorName(this.type)\n\t\t\t\t\t\t} or corrupted data`,\n\t\t\t\t\t)(supportedSensorTypes.includes(this.type));\n\t\t\t\t}\n\n\t\t\t\tconst supportedScales = this.getValue<number[]>(\n\t\t\t\t\tctx,\n\t\t\t\t\tMultilevelSensorCCValues.supportedScales(this.type),\n\t\t\t\t);\n\t\t\t\tif (supportedScales?.length) {\n\t\t\t\t\tvalidatePayload.withReason(\n\t\t\t\t\t\t`Unsupported scale ${scale.label} or corrupted data`,\n\t\t\t\t\t)(supportedScales.includes(scale.key));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We support a higher CC version than the device, so any types and scales it uses should be known to us\n\t\t\t\t// Filter out unknown ones.\n\t\t\t\tvalidatePayload.withReason(\n\t\t\t\t\t`Unknown sensor type ${\n\t\t\t\t\t\tnum2hex(\n\t\t\t\t\t\t\tthis.type,\n\t\t\t\t\t\t)\n\t\t\t\t\t} or corrupted data`,\n\t\t\t\t)(!!sensor);\n\t\t\t\tvalidatePayload.withReason(\n\t\t\t\t\t`Unknown scale ${num2hex(this.scale)} or corrupted data`,\n\t\t\t\t)(scale.label !== getUnknownScale(this.scale).label);\n\t\t\t}\n\t\t}\n\n\t\tconst sensorName = getSensorName(this.type);\n\t\tconst sensorValue = MultilevelSensorCCValues.value(sensorName);\n\n\t\tthis.setMetadata(ctx, sensorValue, {\n\t\t\t...sensorValue.meta,\n\t\t\tunit: scale.unit,\n\t\t\tccSpecific: {\n\t\t\t\tsensorType: this.type,\n\t\t\t\tscale: scale.key,\n\t\t\t},\n\t\t});\n\t\tthis.setValue(ctx, sensorValue, this.value);\n\n\t\treturn true;\n\t}\n\n\tpublic type: number;\n\tpublic scale: number;\n\tpublic value: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([this.type]),\n\t\t\tencodeFloatWithScale(this.value, this.scale),\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"sensor type\": getSensorName(this.type),\n\t\t\t\tscale: (getSensorScale(this.type, this.scale)\n\t\t\t\t\t?? getUnknownScale(this.scale)).label,\n\t\t\t\tvalue: this.value,\n\t\t\t},\n\t\t};\n\t}\n}\n\nconst testResponseForMultilevelSensorGet: CCResponsePredicate<\n\tMultilevelSensorCCGet,\n\tMultilevelSensorCCReport\n> = (sent, received) => {\n\t// We expect a Multilevel Sensor Report that matches the requested sensor type (if a type was requested)\n\treturn sent.sensorType == undefined || received.type === sent.sensorType;\n};\n\n// These options are supported starting in V5\n// @publicAPI\nexport type MultilevelSensorCCGetOptions = AllOrNone<{\n\tsensorType: number;\n\tscale: number;\n}>;\n\n@CCCommand(MultilevelSensorCommand.Get)\n@expectedCCResponse(\n\tMultilevelSensorCCReport,\n\ttestResponseForMultilevelSensorGet,\n)\nexport class MultilevelSensorCCGet extends MultilevelSensorCC {\n\tpublic constructor(\n\t\toptions: WithAddress<MultilevelSensorCCGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tif (\"sensorType\" in options) {\n\t\t\tthis.sensorType = options.sensorType;\n\t\t\tthis.scale = options.scale;\n\t\t}\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): MultilevelSensorCCGet {\n\t\tif (raw.payload.length >= 2) {\n\t\t\tconst sensorType = raw.payload[0];\n\t\t\tconst scale = (raw.payload[1] >> 3) & 0b11;\n\t\t\treturn new this({\n\t\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\t\tsensorType,\n\t\t\t\tscale,\n\t\t\t});\n\t\t} else {\n\t\t\treturn new this({\n\t\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic sensorType: number | undefined;\n\tpublic scale: number | undefined;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tif (\n\t\t\tthis.sensorType != undefined\n\t\t\t&& this.scale != undefined\n\t\t) {\n\t\t\tthis.payload = Bytes.from([\n\t\t\t\tthis.sensorType,\n\t\t\t\t(this.scale & 0b11) << 3,\n\t\t\t]);\n\t\t}\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tlet message: MessageRecord = {};\n\t\tif (\n\t\t\tthis.sensorType != undefined\n\t\t\t&& this.scale != undefined\n\t\t) {\n\t\t\tmessage = {\n\t\t\t\t\"sensor type\": getSensorName(\n\t\t\t\t\tthis.sensorType,\n\t\t\t\t),\n\t\t\t\tscale: (getSensorScale(\n\t\t\t\t\tthis.sensorType,\n\t\t\t\t\tthis.scale,\n\t\t\t\t) ?? getUnknownScale(this.scale)).label,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface MultilevelSensorCCSupportedSensorReportOptions {\n\tsupportedSensorTypes: readonly number[];\n}\n\n@CCCommand(MultilevelSensorCommand.SupportedSensorReport)\n@ccValueProperty(\n\t\"supportedSensorTypes\",\n\tMultilevelSensorCCValues.supportedSensorTypes,\n)\nexport class MultilevelSensorCCSupportedSensorReport\n\textends MultilevelSensorCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<MultilevelSensorCCSupportedSensorReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.supportedSensorTypes = options.supportedSensorTypes;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): MultilevelSensorCCSupportedSensorReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst supportedSensorTypes = parseBitMask(raw.payload);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsupportedSensorTypes,\n\t\t});\n\t}\n\n\t// TODO: Use this during interview to precreate values\n\n\tpublic supportedSensorTypes: readonly number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = encodeBitMask(this.supportedSensorTypes);\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 sensor types\": this.supportedSensorTypes\n\t\t\t\t\t.map((t) => `\\n\u00B7 ${getSensorName(t)}`)\n\t\t\t\t\t.join(\"\"),\n\t\t\t},\n\t\t};\n\t}\n}\n\n@CCCommand(MultilevelSensorCommand.GetSupportedSensor)\n@expectedCCResponse(MultilevelSensorCCSupportedSensorReport)\nexport class MultilevelSensorCCGetSupportedSensor extends MultilevelSensorCC {}\n\n// @publicAPI\nexport interface MultilevelSensorCCSupportedScaleReportOptions {\n\tsensorType: number;\n\tsupportedScales: readonly number[];\n}\n\n@CCCommand(MultilevelSensorCommand.SupportedScaleReport)\n@ccValueProperty(\n\t\"supportedScales\",\n\tMultilevelSensorCCValues.supportedScales,\n\t(self) => [self.sensorType],\n)\nexport class MultilevelSensorCCSupportedScaleReport extends MultilevelSensorCC {\n\tpublic constructor(\n\t\toptions: WithAddress<MultilevelSensorCCSupportedScaleReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.sensorType = options.sensorType;\n\t\tthis.supportedScales = options.supportedScales;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): MultilevelSensorCCSupportedScaleReport {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst sensorType = raw.payload[0];\n\t\tconst supportedScales = parseBitMask(\n\t\t\tBytes.from([raw.payload[1] & 0b1111]),\n\t\t\t0,\n\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsensorType,\n\t\t\tsupportedScales,\n\t\t});\n\t}\n\n\tpublic readonly sensorType: number;\n\n\tpublic readonly supportedScales: readonly number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([this.sensorType]),\n\t\t\tencodeBitMask(this.supportedScales, 4, 0),\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"sensor type\": getSensorName(this.sensorType),\n\t\t\t\t\"supported scales\": this.supportedScales\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(s) =>\n\t\t\t\t\t\t\t`\\n\u00B7 ${\n\t\t\t\t\t\t\t\t(getSensorScale(this.sensorType, s)\n\t\t\t\t\t\t\t\t\t?? getUnknownScale(s)).label\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// @publicAPI\nexport interface MultilevelSensorCCGetSupportedScaleOptions {\n\tsensorType: number;\n}\n\n@CCCommand(MultilevelSensorCommand.GetSupportedScale)\n@expectedCCResponse(MultilevelSensorCCSupportedScaleReport)\nexport class MultilevelSensorCCGetSupportedScale extends MultilevelSensorCC {\n\tpublic constructor(\n\t\toptions: WithAddress<MultilevelSensorCCGetSupportedScaleOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.sensorType = options.sensorType;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): MultilevelSensorCCGetSupportedScale {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst sensorType = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsensorType,\n\t\t});\n\t}\n\n\tpublic sensorType: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.sensorType]);\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\"sensor type\": getSensorName(this.sensorType),\n\t\t\t},\n\t\t};\n\t}\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,kBAYO;AAcP,kBASO;AACP,IAAAA,eAAsB;AACtB,IAAAA,eAAwC;AAExC,iBAMO;AACP,0BAQO;AACP,oCASO;AACP,oBAAkB;AAClB,mBAGO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CP,SAAS,wBACR,KACA,QACA,eACA,YACA,iBAAkC;AAElC,QAAM,cAAc,IAAI,mBAAkB;AAC1C,QAAM,aAAS,uBAAU,UAAU;AAEnC,MAAI,CAAC,QAAQ;AACZ,UAAMC,aAAY,aAAa,OAAO,UAAU;AAEhD,QAAI,OAAOA,eAAc;AAAU,aAAO;AAC1C,WAAOA;EACR;AAGA,MAAI;AAGJ,cAAY,aAAa,OAAO,UAAU;AAE1C,QAAM,iBAAiB,OAAO;AAC9B,MAAI,aAAa,UAAa,gBAAgB;AAC7C,gBAAY,aAAa,OAAO,cAAc;EAC/C;AAEA,MAAI,aAAa,QAAW;AAC3B,UAAM,iBAAa,2BAAc,UAAU;AAC3C,UAAM,cAAc,mDAAyB,MAAM,UAAU;AAC7D,UAAM,WAAW,IACf,cAAc,MAAM,GACnB,YAAY,YAAY,SAAS,aAAa,CAAC;AAClD,UAAM,QAAQ,UAAU,YAAY;AACpC,QAAI,OAAO,UAAU,YAAY,gBAAgB,SAAS,KAAK,GAAG;AACjE,kBAAY;AACZ,UAAI,QAAQ,QAAQ;QACnB,UAAU;QACV,SACC,uCAAuC,UAAU,+BAA+B,SAAS;OAC1F;IACF;EACD;AAEA,MAAI,aAAa,QAAW;AAC3B,gBAAY,gBAAgB,CAAC,KAAK;AAClC,QAAI,QAAQ,QAAQ;MACnB,UAAU;MACV,SACC,uCAAuC,UAAU,qCAAqC,SAAS;KAChG;AACD,WAAO;EACR;AAGA,MAAI,OAAO,cAAc,UAAU;AAClC,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,OAAO,MAAM,GAAG;AACzD,UAAI,MAAM,UAAU,aAAa,MAAM,SAAS,WAAW;AAC1D,oBAAY,SAAS,KAAK,EAAE;AAC5B;MACD;IACD;EACD;AAEA,MAAI,OAAO,cAAc,UAAU;AAElC,QAAI,QAAQ,QAAQ;MACnB,UAAU;MACV,SACC,oBAAoB,SAAS,qBAAqB,UAAU,+CAC3D,gBAAgB,CAAC,KAAK,CACvB;KACD;AACD,WAAO,gBAAgB,CAAC,KAAK;EAC9B;AAGA,MAAI,CAAC,gBAAgB,QAAQ;AAE5B,WAAO;EACR,WAAW,CAAC,gBAAgB,SAAS,SAAS,GAAG;AAChD,QAAI,QAAQ,QAAQ;MACnB,UAAU;MACV,SACC,mBAAmB,SAAS,kCAAkC,UAAU;KACzE;AACD,WAAO,gBAAgB,CAAC;EACzB,OAAO;AACN,WAAO;EACR;AACD;AA3FS;IAgGI,yBAAqB,MAAA;8BADjC,mCAAI,2BAAe,mBAAmB,CAAC,CAAC;;;;oBACE;;;;;6CAAA,YAAa;WAAA;;;;;;;;yBAgDtD,uCAAA,CAAc;wCAoFd,sDAAA,CAAc;gCAuBd,8CAAA,CAAc;AAzGf,mBAAA,MAAA,MAAA,iBAAA,EAAA,MAAA,UAAA,MAAA,OAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,SAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,KAAb,OAAgB,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AAmFhB,mBAAA,MAAA,MAAA,gCAAA,EAAA,MAAA,UAAA,MAAA,sBAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,wBAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,oBAAb,OAA+B,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AAuB/B,mBAAA,MAAA,MAAA,wBAAA,EAAA,MAAA,UAAA,MAAA,cAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,gBAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,YAAb,OAAuB,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AA5JxB,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACL,gBACN,KAA4B;AAE5B,cAAQ,KAAK;QACZ,KAAK,qCAAwB;QAC7B,KAAK,qCAAwB;AAC5B,iBAAO;;QACR,KAAK,qCAAwB;QAC7B,KAAK,qCAAwB;AAC5B,iBAAO,KAAK,WAAW;MACzB;AACA,aAAO,MAAM,gBAAgB,GAAG;IACjC;IAEA,KAAe,qBAAU,IAAC;AACzB,aAAO,eAA4C,EAAE,SAAQ,GAAE;AAE9D,cAAM,UAAmB;UACxB,cAAc,2BAAe,mBAAmB;UAChD,UAAU,KAAK,SAAS;UACxB;;AAED,cAAM,aAAa,KAAK,cAAa,GAAI,YAAY,OAAO,GACzD;AACH,YAAI,CAAC,YAAY;AAChB,mDAAyB,KAAK,MAAM,QAAQ;QAC7C;AAEA,cAAM,EAAE,YAAY,MAAK,IAAK;AAC9B,eAAO,KAAK,IAAI,YAAY,KAAK;MAClC;IACD;IAkBO,MAAM,IAAI,YAAqB,OAAc;AACnD,WAAK,sBACJ,sCACA,qCAAwB,GAAG;AAI5B,UAAI;AACJ,UAAI,cAAc,UAAa,SAAS,QAAW;AAClD,cAAM,kBACL,KAAK,cAAa,GAAI,SAAS;UAC9B,cAAc,KAAK;UACnB,UAAU,KAAK,SAAS;UACxB,UAAU;UACV,aAAa;SACb,KAAK,CAAA;AAEP,yBAAiB,wBAChB,KAAK,MACL,KAAK,SAAS,QACd,KAAK,SAAS,OACd,YACA,eAAe;MAEjB;AAEA,YAAM,KAAK,IAAI,sBAAsB;QACpC,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B;QACA,OAAQ,SAAS;OACjB;AACD,YAAM,WAAW,MAAM,KAAK,KAAK,YAGhC,IACA,KAAK,cAAc;AAEpB,UAAI,CAAC;AAAU;AAEf,YAAM,oBAAgB,4BAAe,SAAS,MAAM,SAAS,KAAK;AAElE,UAAI,cAAc,QAAW;AAE5B,eAAO;UACN,MAAM,SAAS;UACf,OAAO,SAAS;UAChB,OAAO;;MAET,WAAW,SAAS,QAAW;AAE9B,eAAO;UACN,OAAO,SAAS;UAChB,OAAO;;MAET,OAAO;AAEN,eAAO,SAAS;MACjB;IACD;IAEO,MAAM,0BAAuB;AAGnC,WAAK,sBACJ,sCACA,qCAAwB,kBAAkB;AAG3C,YAAM,KAAK,IAAI,qCAAqC;QACnD,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;OAC7B;AACD,YAAM,WAAW,MAAM,KAAK,KAAK,YAGhC,IACA,KAAK,cAAc;AAEpB,aAAO,UAAU;IAClB;IAGO,MAAM,mBACZ,YAAkB;AAElB,WAAK,sBACJ,sCACA,qCAAwB,iBAAiB;AAG1C,YAAM,KAAK,IAAI,oCAAoC;QAClD,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B;OACA;AACD,YAAM,WAAW,MAAM,KAAK,KAAK,YAGhC,IACA,KAAK,cAAc;AAEpB,aAAO,UAAU;IAClB;IAGO,MAAM,WACZ,YACA,OACA,OAAa;AAEb,WAAK,sBACJ,sCACA,qCAAwB,MAAM;AAG/B,YAAM,KAAK,IAAI,yBAAyB;QACvC,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B,MAAM;QACN;QACA;OACA;AACD,aAAO,KAAK,KAAK,YAAY,IAAI,KAAK,cAAc;IACrD;;;AA9KY,wBAAA,MAAA,0BAAA;;;;;IAoLA,sBAAkB,MAAA;8BAH9B,4CAAa,2BAAe,mBAAmB,CAAC,OAChD,kDAAmB,EAAE,OACrB,wCAAS,kDAAwB,CAAC;;;;oBACK;0CAAA,YAAY;WAAA;;;;;;;;AAApD,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IAGL,MAAM,UACZ,KAAqB;AAErB,YAAM,OAAO,KAAK,QAAQ,GAAG;AAC7B,YAAM,WAAW,KAAK,YAAY,GAAG;AACrC,YAAM,MAAM,iBAAM,OACjB,2BAAe,mBAAmB,GAClC,KACA,QAAQ,EACP,YAAY;QACb,UAAU,4BAAgB;OAC1B;AAED,UAAI,QAAQ,KAAK,IAAI;QACpB,UAAU,KAAK;QACf,SAAS,gBAAgB,KAAK,MAAM;QACpC,WAAW;OACX;AAED,UAAI,IAAI,WAAW,GAAG;AAErB,YAAI,QAAQ,KAAK,IAAI;UACpB,UAAU,KAAK;UACf,SAAS;UACT,WAAW;SACX;AACD,cAAM,cAAc,MAAM,IAAI,wBAAuB;AACrD,YAAI,aAAa;AAChB,gBAAM,aAAa,uCAChB,YACA,IAAI,CAAC,UAAM,2BAAc,CAAC,CAAC,EAC3B,IAAI,CAAC,SAAS,QAAK,IAAI,EAAE,EACzB,KAAK,IAAI;AACZ,cAAI,QAAQ,KAAK,IAAI;YACpB,UAAU,KAAK;YACf,SAAS;YACT,WAAW;WACX;QACF,OAAO;AACN,cAAI,QAAQ,KAAK,IAAI;YACpB,UAAU,KAAK;YACf,SACC;YACD,OAAO;WACP;AACD;QACD;AAIA,mBAAW,QAAQ,aAAa;AAC/B,cAAI,QAAQ,KAAK,IAAI;YACpB,UAAU,KAAK;YACf,SAAS,qCACR,2BAAc,IAAI,CACnB;YACA,WAAW;WACX;AACD,gBAAM,eAAe,MAAM,IAAI,mBAAmB,IAAI;AACtD,cAAI,cAAc;AACjB,kBAAM,aAAa,iCAChB,aACA,IACA,CAAC,WACC,4BAAe,MAAM,CAAC,SACnB,6BAAgB,CAAC,GAAG,KAAK,EAE9B,IAAI,CAAC,SAAS,QAAK,IAAI,EAAE,EACzB,KAAK,IAAI;AACZ,gBAAI,QAAQ,KAAK,IAAI;cACpB,UAAU,KAAK;cACf,SAAS;cACT,WAAW;aACX;UACF,OAAO;AACN,gBAAI,QAAQ,KAAK,IAAI;cACpB,UAAU,KAAK;cACf,SACC;cACD,OAAO;aACP;AACD;UACD;QACD;MACD;AAEA,YAAM,KAAK,cAAc,GAAG;AAG5B,WAAK,qBAAqB,KAAK,IAAI;IACpC;IAEO,MAAM,cACZ,KAAyB;AAEzB,YAAM,OAAO,KAAK,QAAQ,GAAG;AAC7B,YAAM,WAAW,KAAK,YAAY,GAAG;AACrC,YAAM,MAAM,iBAAM,OACjB,2BAAe,mBAAmB,GAClC,KACA,QAAQ,EACP,YAAY;QACb,UAAU,4BAAgB;OAC1B;AACD,YAAM,UAAU,KAAK,WAAW,GAAG;AAEnC,UAAI,IAAI,WAAW,GAAG;AAErB,YAAI,QAAQ,KAAK,IAAI;UACpB,UAAU,KAAK;UACf,SAAS;UACT,WAAW;SACX;AACD,cAAM,cAAc,MAAM,IAAI,IAAG;AACjC,YAAI,aAAa;AAChB,gBAAM,kBAAc,4BACnB,YAAY,MACZ,YAAY,MAAM,GAAG;AAEtB,gBAAM,aAAa;mBACR,2BAAc,YAAY,IAAI,CAAC;eAC/B,YAAY,KAAK,GAC3B,aAAa,OAAO,IAAI,YAAY,IAAI,KAAK,EAC9C;AACA,cAAI,QAAQ,KAAK,IAAI;YACpB,UAAU,KAAK;YACf,SAAS;YACT,WAAW;WACX;QACF;MACD,OAAO;AAEN,cAAM,cAAiC,QAAQ,SAAS;UACvD,cAAc,KAAK;UACnB,UAAU;UACV,UAAU,KAAK;SACf,KAAK,CAAA;AAEN,mBAAW,QAAQ,aAAa;AAC/B,cAAI,QAAQ,KAAK,IAAI;YACpB,UAAU,KAAK;YACf,SAAS,gBACR,2BAAc,IAAI,CACnB;YACA,WAAW;WACX;AAED,gBAAM,QAAQ,MAAM,IAAI,IAAI,IAAI;AAChC,cAAI,OAAO;AACV,kBAAM,aAAa,wBAClB,2BAAc,IAAI,CACnB,oBAAoB,MAAM,KAAK,IAAI,MAAM,MAAM,QAAQ,EAAE;AACzD,gBAAI,QAAQ,KAAK,IAAI;cACpB,UAAU,KAAK;cACf,SAAS;cACT,WAAW;aACX;UACF;QACD;MACD;IACD;IAEO,oBAEN,KAME;AAKF,YAAM,UAAU,IAAI,cAAc,KAAK,MAAM;AAC7C,UAAI,CAAC;AAAS,eAAO;AAErB,YAAM,SAAS,KAAK,mBAAmB,GAAG,EAAE,OAAO,CAAC,MACnD,mDAAyB,MAAM,GAAG,CAAC,CAAC;AAErC,aAAO,OAAO,MAAM,CAAC,MAAK;AACzB,cAAM,cAAc,QAAQ,aAAa,CAAC;AAC1C,eACC,eAAe,UACZ,KAAK,IAAG,IAAK,cAAc,qBAAS,MAAM,CAAC;MAEhD,CAAC;IACF;;;;;IAMO,OAAO,8BACb,KACA,UAAoB;AAEpB,aAAO,IACL,WAAW,SAAS,MAAM,EAC1B,SACA,mDAAyB,qBAAqB,SAC7C,SAAS,KAAK,CACd;IAEJ;;;;;IAMO,OAAO,yBACb,KACA,UACA,YAAkB;AAElB,aAAO,IACL,WAAW,SAAS,MAAM,EAC1B,SACA,mDAAyB,gBAAgB,UAAU,EAAE,SACpD,SAAS,KAAK,CACd;IAEJ;IAEO,qBACN,KACA,UACA,aAA4B;AAG5B,UAAI,aAAa,YAAY,OAAO,gBAAgB,UAAU;AAC7D,cAAM,aAAS,uBAAU,WAAW;AACpC,YAAI;AAAQ,iBAAO,OAAO;MAC3B;AACA,aAAO,MAAM,qBAAqB,KAAK,UAAU,WAAW;IAC7D;;;;IAYY,4BAAwB,MAAA;8BAFpC,yCAAU,qCAAwB,MAAM,OACxC,8CAAc,CAAE;;;;oBAC6B;gDAAA,YAAkB;WAAA;;;;;;;;AAAhE,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAqD;AAErD,YAAM,OAAO;AAEb,WAAK,OAAO,QAAQ;AACpB,WAAK,QAAQ,QAAQ;AACrB,WAAK,QAAQ,OAAO,QAAQ,UAAU,WACnC,QAAQ,QACR,QAAQ,MAAM;IAClB;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,OAAO,IAAI,QAAQ,CAAC;AAG1B,YAAM,EAAE,OAAO,MAAK,QAAK,iCACxB,IAAI,QAAQ,SAAS,CAAC,CAAC;AAGxB,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;QACA;QACA;OACA;IACF;IAEO,cAAc,KAAyB;AAC7C,UAAI,CAAC,MAAM,cAAc,GAAG;AAAG,eAAO;AAEtC,YAAM,aAAS,uBAAU,KAAK,IAAI;AAClC,YAAM,YAAQ,4BACb,KAAK,MACL,KAAK,KAAK,SACN,6BAAgB,KAAK,KAAK;AAG/B,YAAM,wBAAwB,CAAC,IAAI,kBAClC,KAAK,MAAgB,GACnB,QAAQ;AAEX,YAAM,gBAAY,2CAAsB,KAAK,IAAI;AAEjD,UAAI,uBAAuB;AAE1B,YAAI,aAAa,GAAG;AACnB,gBAAM,uBAAuB,KAAK,SACjC,KACA,mDAAyB,oBAAoB;AAE9C,cAAI,sBAAsB,QAAQ;AACjC,wCAAgB,WACf,+BACC,2BAAc,KAAK,IAAI,CACxB,oBAAoB,EACnB,qBAAqB,SAAS,KAAK,IAAI,CAAC;UAC3C;AAEA,gBAAM,kBAAkB,KAAK,SAC5B,KACA,mDAAyB,gBAAgB,KAAK,IAAI,CAAC;AAEpD,cAAI,iBAAiB,QAAQ;AAC5B,wCAAgB,WACf,qBAAqB,MAAM,KAAK,oBAAoB,EACnD,gBAAgB,SAAS,MAAM,GAAG,CAAC;UACtC;QACD,OAAO;AAGN,sCAAgB,WACf,2BACC,sBACC,KAAK,IAAI,CAEX,oBAAoB,EACnB,CAAC,CAAC,MAAM;AACV,sCAAgB,WACf,qBAAiB,sBAAQ,KAAK,KAAK,CAAC,oBAAoB,EACvD,MAAM,cAAU,6BAAgB,KAAK,KAAK,EAAE,KAAK;QACpD;MACD;AAEA,YAAM,iBAAa,2BAAc,KAAK,IAAI;AAC1C,YAAM,cAAc,mDAAyB,MAAM,UAAU;AAE7D,WAAK,YAAY,KAAK,aAAa;QAClC,GAAG,YAAY;QACf,MAAM,MAAM;QACZ,YAAY;UACX,YAAY,KAAK;UACjB,OAAO,MAAM;;OAEd;AACD,WAAK,SAAS,KAAK,aAAa,KAAK,KAAK;AAE1C,aAAO;IACR;IAEO;IACA;IACA;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,mBAAM,OAAO;QAC3B,mBAAM,KAAK,CAAC,KAAK,IAAI,CAAC;YACtB,kCAAqB,KAAK,OAAO,KAAK,KAAK;OAC3C;AACD,aAAO,MAAM,UAAU,GAAG;IAC3B;IAEO,WAAW,KAAgB;AACjC,aAAO;QACN,GAAG,MAAM,WAAW,GAAG;QACvB,SAAS;UACR,mBAAe,2BAAc,KAAK,IAAI;UACtC,YAAQ,4BAAe,KAAK,MAAM,KAAK,KAAK,SACxC,6BAAgB,KAAK,KAAK,GAAG;UACjC,OAAO,KAAK;;;IAGf;;;;AAGD,MAAM,qCAGF,wBAAC,MAAM,aAAY;AAEtB,SAAO,KAAK,cAAc,UAAa,SAAS,SAAS,KAAK;AAC/D,GAHI;IAiBS,yBAAqB,MAAA;8BALjC,yCAAU,qCAAwB,GAAG,OACrC,kDACA,0BACA,kCAAkC,CAClC;;;;oBAC0C;6CAAA,YAAkB;WAAA;;;;;;;;AAA7D,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAkD;AAElD,YAAM,OAAO;AACb,UAAI,gBAAgB,SAAS;AAC5B,aAAK,aAAa,QAAQ;AAC1B,aAAK,QAAQ,QAAQ;MACtB;IACD;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,UAAI,IAAI,QAAQ,UAAU,GAAG;AAC5B,cAAM,aAAa,IAAI,QAAQ,CAAC;AAChC,cAAM,QAAS,IAAI,QAAQ,CAAC,KAAK,IAAK;AACtC,eAAO,IAAI,KAAK;UACf,QAAQ,IAAI;UACZ;UACA;SACA;MACF,OAAO;AACN,eAAO,IAAI,KAAK;UACf,QAAQ,IAAI;SACZ;MACF;IACD;IAEO;IACA;IAEA,UAAU,KAAsB;AACtC,UACC,KAAK,cAAc,UAChB,KAAK,SAAS,QAChB;AACD,aAAK,UAAU,mBAAM,KAAK;UACzB,KAAK;WACJ,KAAK,QAAQ,MAAS;SACvB;MACF;AACA,aAAO,MAAM,UAAU,GAAG;IAC3B;IAEO,WAAW,KAAgB;AACjC,UAAI,UAAyB,CAAA;AAC7B,UACC,KAAK,cAAc,UAChB,KAAK,SAAS,QAChB;AACD,kBAAU;UACT,mBAAe,2BACd,KAAK,UAAU;UAEhB,YAAQ,4BACP,KAAK,YACL,KAAK,KAAK,SACN,6BAAgB,KAAK,KAAK,GAAG;;MAEpC;AACA,aAAO;QACN,GAAG,MAAM,WAAW,GAAG;QACvB;;IAEF;;;;IAaY,2CAAuC,MAAA;8BALnD,yCAAU,qCAAwB,qBAAqB,OACvD,+CACA,wBACA,mDAAyB,oBAAoB,CAC7C;;;;oBAEQ;+DAAA,YAAkB;WAAA;;;;;;;;AAD3B,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IAGZ,YACC,SAAoE;AAEpE,YAAM,OAAO;AAEb,WAAK,uBAAuB,QAAQ;IACrC;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,2BAAuB,0BAAa,IAAI,OAAO;AAErD,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;OACA;IACF;;IAIO;IAEA,UAAU,KAAsB;AACtC,WAAK,cAAU,2BAAc,KAAK,oBAAoB;AACtD,aAAO,MAAM,UAAU,GAAG;IAC3B;IAEO,WAAW,KAAgB;AACjC,aAAO;QACN,GAAG,MAAM,WAAW,GAAG;QACvB,SAAS;UACR,0BAA0B,KAAK,qBAC7B,IAAI,CAAC,MAAM;WAAO,2BAAc,CAAC,CAAC,EAAE,EACpC,KAAK,EAAE;;;IAGZ;;;;IAKY,wCAAoC,MAAA;8BAFhD,yCAAU,qCAAwB,kBAAkB,OACpD,kDAAmB,uCAAuC,CAAC;;;;oBACF;4DAAA,YAAkB;WAAA;;;;;;;;AAA5E,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;;;;IAcA,0CAAsC,MAAA;8BANlD,yCAAU,qCAAwB,oBAAoB,OACtD,+CACA,mBACA,mDAAyB,iBACzB,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAC3B;;;;oBAC2D;8DAAA,YAAkB;WAAA;;;;;;;;AAA9E,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAmE;AAEnE,YAAM,OAAO;AAEb,WAAK,aAAa,QAAQ;AAC1B,WAAK,kBAAkB,QAAQ;IAChC;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,aAAa,IAAI,QAAQ,CAAC;AAChC,YAAM,sBAAkB,0BACvB,mBAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAM,CAAC,GACpC,CAAC;AAGF,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;QACA;OACA;IACF;IAEgB;IAEA;IAET,UAAU,KAAsB;AACtC,WAAK,UAAU,mBAAM,OAAO;QAC3B,mBAAM,KAAK,CAAC,KAAK,UAAU,CAAC;YAC5B,2BAAc,KAAK,iBAAiB,GAAG,CAAC;OACxC;AACD,aAAO,MAAM,UAAU,GAAG;IAC3B;IAEO,WAAW,KAAgB;AACjC,aAAO;QACN,GAAG,MAAM,WAAW,GAAG;QACvB,SAAS;UACR,mBAAe,2BAAc,KAAK,UAAU;UAC5C,oBAAoB,KAAK,gBACvB,IACA,CAAC,MACA;YACE,4BAAe,KAAK,YAAY,CAAC,SAC9B,6BAAgB,CAAC,GAAG,KACzB,EAAE,EAEH,KAAK,EAAE;;;IAGZ;;;;IAUY,uCAAmC,MAAA;8BAF/C,yCAAU,qCAAwB,iBAAiB,OACnD,kDAAmB,sCAAsC,CAAC;;;;oBACF;2DAAA,YAAkB;WAAA;;;;;;;;AAA3E,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAgE;AAEhE,YAAM,OAAO;AACb,WAAK,aAAa,QAAQ;IAC3B;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,aAAa,IAAI,QAAQ,CAAC;AAEhC,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;OACA;IACF;IAEO;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,mBAAM,KAAK,CAAC,KAAK,UAAU,CAAC;AAC3C,aAAO,MAAM,UAAU,GAAG;IAC3B;IAEO,WAAW,KAAgB;AACjC,aAAO;QACN,GAAG,MAAM,WAAW,GAAG;QACvB,SAAS;UACR,mBAAe,2BAAc,KAAK,UAAU;;;IAG/C;;;;",
|
|
6
|
-
"names": ["
|
|
4
|
+
"sourcesContent": ["import type { CCEncodingContext, CCParsingContext } from \"@zwave-js/cc\";\nimport type { GetDeviceConfig } from \"@zwave-js/config\";\nimport {\n\tCommandClasses,\n\ttype ControlsCC,\n\ttype EndpointId,\n\ttype GetEndpoint,\n\ttype GetNode,\n\ttype GetSupportedCCVersion,\n\ttype GetValueDB,\n\ttype LogNode,\n\ttype MaybeNotKnown,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\ttype MessageRecord,\n\ttype NodeId,\n\ttype Scale,\n\ttype SinglecastCC,\n\ttype SupervisionResult,\n\ttype SupportsCC,\n\ttype ValueID,\n\tValueMetadata,\n\ttype WithAddress,\n\tencodeBitMask,\n\tencodeFloatWithScale,\n\tgetSensor,\n\tgetSensorName,\n\tgetSensorScale,\n\tgetUnknownScale,\n\tparseBitMask,\n\tparseFloatWithScale,\n\ttimespan,\n\tvalidatePayload,\n} from \"@zwave-js/core\";\nimport { type AllOrNone, Bytes, num2hex } from \"@zwave-js/shared\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport {\n\tCCAPI,\n\tPOLL_VALUE,\n\tPhysicalCCAPI,\n\ttype PollValueImplementation,\n\tthrowUnsupportedProperty,\n} from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\ttype CCResponsePredicate,\n\tCommandClass,\n\ttype InterviewContext,\n\ttype PersistValuesContext,\n\ttype RefreshValuesContext,\n\tgetEffectiveCCVersion,\n} from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValueProperty,\n\tccValues,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n\tuseSupervision,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport {\n\tMultilevelSensorCommand,\n\ttype MultilevelSensorValue,\n} from \"../lib/_Types.js\";\nimport type { GetUserPreferences } from \"../lib/traits.js\";\n\nexport const MultilevelSensorCCValues = V.defineCCValues(\n\tCommandClasses[\"Multilevel Sensor\"],\n\t{\n\t\t...V.staticProperty(\"supportedSensorTypes\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"supportedScales\",\n\t\t\t\"supportedScales\",\n\t\t\t(sensorType: number) => sensorType,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"supportedScales\"\n\t\t\t\t&& typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\t\t...V.dynamicPropertyWithName(\n\t\t\t\"value\",\n\t\t\t// This should have been the sensor type, but it is too late to change now\n\t\t\t// Maybe we can migrate this without breaking in the future\n\t\t\t(sensorTypeName: string) => sensorTypeName,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\ttypeof property === \"string\"\n\t\t\t\t&& property !== \"supportedSensorTypes\"\n\t\t\t\t&& property !== \"supportedScales\"\n\t\t\t\t&& propertyKey == undefined,\n\t\t\t(sensorTypeName: string) => ({\n\t\t\t\t// Just the base metadata, to be extended using a config manager\n\t\t\t\t...ValueMetadata.ReadOnlyNumber,\n\t\t\t\tlabel: sensorTypeName,\n\t\t\t} as const),\n\t\t),\n\t},\n);\n\n/**\n * Determine the scale to use to query a sensor reading. Uses the user-preferred scale if given,\n * followed by the most recently used scale, otherwile falls back to the first supported one.\n */\nfunction getPreferredSensorScale(\n\tctx: GetValueDB & GetUserPreferences & LogNode,\n\tnodeId: number,\n\tendpointIndex: number,\n\tsensorType: number,\n\tsupportedScales: readonly number[],\n): number {\n\tconst preferences = ctx.getUserPreferences();\n\tconst sensor = getSensor(sensorType);\n\t// If the sensor type is unknown, we have no default. Use the user-provided scale or 0\n\tif (!sensor) {\n\t\tconst preferred = preferences?.scales[sensorType];\n\t\t// We cannot look up strings for unknown sensor types, so this must be a number or we use the fallback\n\t\tif (typeof preferred !== \"number\") return 0;\n\t\treturn preferred;\n\t}\n\n\t// Look up the preference for the scale\n\tlet preferred: number | string | undefined;\n\t// Named scales apply to multiple sensor types. To be able to override the scale for single types\n\t// we need to look at the preferences by sensor type first\n\tpreferred = preferences?.scales[sensorType];\n\t// If the scale is named, we can then try to use the named preference\n\tconst scaleGroupName = sensor.scaleGroupName;\n\tif (preferred == undefined && scaleGroupName) {\n\t\tpreferred = preferences?.scales[scaleGroupName];\n\t}\n\t// Then attempt reading the scale from the corresponding value\n\tif (preferred == undefined) {\n\t\tconst sensorName = getSensorName(sensorType);\n\t\tconst sensorValue = MultilevelSensorCCValues.value(sensorName);\n\t\tconst metadata = ctx\n\t\t\t.tryGetValueDB(nodeId)\n\t\t\t?.getMetadata(sensorValue.endpoint(endpointIndex));\n\t\tconst scale = metadata?.ccSpecific?.scale;\n\t\tif (typeof scale === \"number\" && supportedScales.includes(scale)) {\n\t\t\tpreferred = scale;\n\t\t\tctx.logNode(nodeId, {\n\t\t\t\tendpoint: endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t`No scale preference for sensor type ${sensorType}, using the last-used scale ${preferred}`,\n\t\t\t});\n\t\t}\n\t}\n\t// Then fall back to the first supported scale\n\tif (preferred == undefined) {\n\t\tpreferred = supportedScales[0] ?? 0;\n\t\tctx.logNode(nodeId, {\n\t\t\tendpoint: endpointIndex,\n\t\t\tmessage:\n\t\t\t\t`No scale preference for sensor type ${sensorType}, using the first supported scale ${preferred}`,\n\t\t});\n\t\treturn preferred;\n\t}\n\n\t// If the scale name or unit was given, try to look it up\n\tif (typeof preferred === \"string\") {\n\t\tfor (const [key, scale] of Object.entries(sensor.scales)) {\n\t\t\tif (scale.label === preferred || scale.unit === preferred) {\n\t\t\t\tpreferred = parseInt(key, 10);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (typeof preferred === \"string\") {\n\t\t// Looking up failed\n\t\tctx.logNode(nodeId, {\n\t\t\tendpoint: endpointIndex,\n\t\t\tmessage:\n\t\t\t\t`Preferred scale \"${preferred}\" for sensor type ${sensorType} not found, using the first supported scale ${\n\t\t\t\t\tsupportedScales[0] ?? 0\n\t\t\t\t}`,\n\t\t});\n\t\treturn supportedScales[0] ?? 0;\n\t}\n\n\t// We have a numeric scale key, nothing to look up. Make sure it is supported though\n\tif (!supportedScales.length) {\n\t\t// No info about supported scales, just use the preferred one\n\t\treturn preferred;\n\t} else if (!supportedScales.includes(preferred)) {\n\t\tctx.logNode(nodeId, {\n\t\t\tendpoint: endpointIndex,\n\t\t\tmessage:\n\t\t\t\t`Preferred scale ${preferred} not supported for sensor type ${sensorType}, using the first supported scale`,\n\t\t});\n\t\treturn supportedScales[0];\n\t} else {\n\t\treturn preferred;\n\t}\n}\n\n// @noSetValueAPI This CC is read-only\n\n@API(CommandClasses[\"Multilevel Sensor\"])\nexport class MultilevelSensorCCAPI extends PhysicalCCAPI {\n\tpublic supportsCommand(\n\t\tcmd: MultilevelSensorCommand,\n\t): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase MultilevelSensorCommand.Get:\n\t\t\tcase MultilevelSensorCommand.Report:\n\t\t\t\treturn true; // This is mandatory\n\t\t\tcase MultilevelSensorCommand.GetSupportedSensor:\n\t\t\tcase MultilevelSensorCommand.GetSupportedScale:\n\t\t\t\treturn this.version >= 5;\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\tprotected get [POLL_VALUE](): PollValueImplementation {\n\t\treturn async function(this: MultilevelSensorCCAPI, { property }) {\n\t\t\t// Look up the necessary information\n\t\t\tconst valueId: ValueID = {\n\t\t\t\tcommandClass: CommandClasses[\"Multilevel Sensor\"],\n\t\t\t\tendpoint: this.endpoint.index,\n\t\t\t\tproperty,\n\t\t\t};\n\t\t\tconst ccSpecific = this.tryGetValueDB()?.getMetadata(valueId)\n\t\t\t\t?.ccSpecific;\n\t\t\tif (!ccSpecific) {\n\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\n\t\t\tconst { sensorType, scale } = ccSpecific;\n\t\t\treturn this.get(sensorType, scale);\n\t\t};\n\t}\n\n\t/** Query the default sensor value */\n\tpublic async get(): Promise<\n\t\tMaybeNotKnown<MultilevelSensorValue & { type: number }>\n\t>;\n\t/** Query the sensor value for the given sensor type using the preferred sensor scale */\n\tpublic async get(\n\t\tsensorType: number,\n\t): Promise<MaybeNotKnown<MultilevelSensorValue>>;\n\t/** Query the sensor value for the given sensor type using the given sensor scale */\n\tpublic async get(\n\t\tsensorType: number,\n\t\tscale: number,\n\t): Promise<MaybeNotKnown<number>>;\n\n\t@validateArgs()\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async get(sensorType?: number, scale?: number) {\n\t\tthis.assertSupportsCommand(\n\t\t\tMultilevelSensorCommand,\n\t\t\tMultilevelSensorCommand.Get,\n\t\t);\n\n\t\t// Figure out the preferred scale if none was given\n\t\tlet preferredScale: number | undefined;\n\t\tif (sensorType != undefined && scale == undefined) {\n\t\t\tconst supportedScales: readonly number[] =\n\t\t\t\tthis.tryGetValueDB()?.getValue({\n\t\t\t\t\tcommandClass: this.ccId,\n\t\t\t\t\tendpoint: this.endpoint.index,\n\t\t\t\t\tproperty: \"supportedScales\",\n\t\t\t\t\tpropertyKey: sensorType,\n\t\t\t\t}) ?? [];\n\n\t\t\tpreferredScale = getPreferredSensorScale(\n\t\t\t\tthis.host,\n\t\t\t\tthis.endpoint.nodeId,\n\t\t\t\tthis.endpoint.index,\n\t\t\t\tsensorType,\n\t\t\t\tsupportedScales,\n\t\t\t);\n\t\t}\n\n\t\tconst cc = new MultilevelSensorCCGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tsensorType: sensorType!,\n\t\t\tscale: (scale ?? preferredScale)!,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tMultilevelSensorCCReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (!response) return;\n\n\t\tconst responseScale = getSensorScale(response.type, response.scale);\n\n\t\tif (sensorType == undefined) {\n\t\t\t// Overload #1: return the full response\n\t\t\treturn {\n\t\t\t\ttype: response.type,\n\t\t\t\tvalue: response.value,\n\t\t\t\tscale: responseScale,\n\t\t\t};\n\t\t} else if (scale == undefined) {\n\t\t\t// Overload #2: return value and scale\n\t\t\treturn {\n\t\t\t\tvalue: response.value,\n\t\t\t\tscale: responseScale,\n\t\t\t};\n\t\t} else {\n\t\t\t// Overload #3: return only the value\n\t\t\treturn response.value;\n\t\t}\n\t}\n\n\tpublic async getSupportedSensorTypes(): Promise<\n\t\tMaybeNotKnown<readonly number[]>\n\t> {\n\t\tthis.assertSupportsCommand(\n\t\t\tMultilevelSensorCommand,\n\t\t\tMultilevelSensorCommand.GetSupportedSensor,\n\t\t);\n\n\t\tconst cc = new MultilevelSensorCCGetSupportedSensor({\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\tMultilevelSensorCCSupportedSensorReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\treturn response?.supportedSensorTypes;\n\t}\n\n\t@validateArgs()\n\tpublic async getSupportedScales(\n\t\tsensorType: number,\n\t): Promise<MaybeNotKnown<readonly number[]>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tMultilevelSensorCommand,\n\t\t\tMultilevelSensorCommand.GetSupportedScale,\n\t\t);\n\n\t\tconst cc = new MultilevelSensorCCGetSupportedScale({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tsensorType,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tMultilevelSensorCCSupportedScaleReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\treturn response?.supportedScales;\n\t}\n\n\t@validateArgs()\n\tpublic async sendReport(\n\t\tsensorType: number,\n\t\tscale: number | Scale,\n\t\tvalue: number,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tMultilevelSensorCommand,\n\t\t\tMultilevelSensorCommand.Report,\n\t\t);\n\n\t\tconst cc = new MultilevelSensorCCReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\ttype: sensorType,\n\t\t\tscale,\n\t\t\tvalue,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n}\n\n@commandClass(CommandClasses[\"Multilevel Sensor\"])\n@implementedVersion(11)\n@ccValues(MultilevelSensorCCValues)\nexport class MultilevelSensorCC extends CommandClass {\n\tdeclare ccCommand: MultilevelSensorCommand;\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[\"Multilevel Sensor\"],\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\tif (api.version >= 5) {\n\t\t\t// Query the supported sensor types\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: \"retrieving supported sensor types...\",\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst sensorTypes = await api.getSupportedSensorTypes();\n\t\t\tif (sensorTypes) {\n\t\t\t\tconst logMessage = \"received supported sensor types:\\n\"\n\t\t\t\t\t+ sensorTypes\n\t\t\t\t\t\t.map((t) => getSensorName(t))\n\t\t\t\t\t\t.map((name) => `\u00B7 ${name}`)\n\t\t\t\t\t\t.join(\"\\n\");\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\tmessage: logMessage,\n\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"Querying supported sensor types timed out, skipping interview...\",\n\t\t\t\t\tlevel: \"warn\",\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// As well as the supported scales for each sensor\n\n\t\t\tfor (const type of sensorTypes) {\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\tmessage: `querying supported scales for ${\n\t\t\t\t\t\tgetSensorName(type)\n\t\t\t\t\t} sensor`,\n\t\t\t\t\tdirection: \"outbound\",\n\t\t\t\t});\n\t\t\t\tconst sensorScales = await api.getSupportedScales(type);\n\t\t\t\tif (sensorScales) {\n\t\t\t\t\tconst logMessage = \"received supported scales:\\n\"\n\t\t\t\t\t\t+ sensorScales\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(s) =>\n\t\t\t\t\t\t\t\t\t(getSensorScale(type, s)\n\t\t\t\t\t\t\t\t\t\t?? getUnknownScale(s)).label,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.map((name) => `\u00B7 ${name}`)\n\t\t\t\t\t\t\t.join(\"\\n\");\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: logMessage,\n\t\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t\t});\n\t\t\t\t} else {\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:\n\t\t\t\t\t\t\t\"Querying supported scales timed out, skipping interview...\",\n\t\t\t\t\t\tlevel: \"warn\",\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tawait this.refreshValues(ctx);\n\n\t\t// Remember that the interview is complete\n\t\tthis.setInterviewComplete(ctx, true);\n\t}\n\n\tpublic async refreshValues(\n\t\tctx: RefreshValuesContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\t\tconst api = CCAPI.create(\n\t\t\tCommandClasses[\"Multilevel Sensor\"],\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\n\t\tconst valueDB = this.getValueDB(ctx);\n\n\t\tif (api.version <= 4) {\n\t\t\t// Sensors up to V4 only support a single value\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: \"querying current sensor reading...\",\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst mlsResponse = await api.get();\n\t\t\tif (mlsResponse) {\n\t\t\t\tconst sensorScale = getSensorScale(\n\t\t\t\t\tmlsResponse.type,\n\t\t\t\t\tmlsResponse.scale.key,\n\t\t\t\t);\n\t\t\t\tconst logMessage = `received current sensor reading:\nsensor type: ${getSensorName(mlsResponse.type)}\nvalue: ${mlsResponse.value}${\n\t\t\t\t\tsensorScale?.unit ? ` ${sensorScale.unit}` : \"\"\n\t\t\t\t}`;\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\tmessage: logMessage,\n\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\t// Query all sensor values\n\t\t\tconst sensorTypes: readonly number[] = valueDB.getValue({\n\t\t\t\tcommandClass: this.ccId,\n\t\t\t\tproperty: \"supportedSensorTypes\",\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t}) || [];\n\n\t\t\tfor (const type of sensorTypes) {\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\tmessage: `querying ${\n\t\t\t\t\t\tgetSensorName(type)\n\t\t\t\t\t} sensor reading...`,\n\t\t\t\t\tdirection: \"outbound\",\n\t\t\t\t});\n\n\t\t\t\tconst value = await api.get(type);\n\t\t\t\tif (value) {\n\t\t\t\t\tconst logMessage = `received current ${\n\t\t\t\t\t\tgetSensorName(type)\n\t\t\t\t\t} sensor reading: ${value.value} ${value.scale.unit || \"\"}`;\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: logMessage,\n\t\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic shouldRefreshValues(\n\t\tthis: SinglecastCC<this>,\n\t\tctx:\n\t\t\t& GetValueDB\n\t\t\t& GetSupportedCCVersion\n\t\t\t& GetDeviceConfig\n\t\t\t& GetNode<\n\t\t\t\tNodeId & GetEndpoint<EndpointId & SupportsCC & ControlsCC>\n\t\t\t>,\n\t): boolean {\n\t\t// Poll the device when all of the supported values were last updated longer than 6 hours ago.\n\t\t// This may lead to some values not being updated, but the user may have disabled some unnecessary\n\t\t// reports to reduce traffic.\n\t\tconst valueDB = ctx.tryGetValueDB(this.nodeId);\n\t\tif (!valueDB) return true;\n\n\t\tconst values = this.getDefinedValueIDs(ctx).filter((v) =>\n\t\t\tMultilevelSensorCCValues.value.is(v)\n\t\t);\n\t\treturn values.every((v) => {\n\t\t\tconst lastUpdated = valueDB.getTimestamp(v);\n\t\t\treturn (\n\t\t\t\tlastUpdated == undefined\n\t\t\t\t|| Date.now() - lastUpdated > timespan.hours(6)\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Returns which sensor types are supported.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getSupportedSensorTypesCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): MaybeNotKnown<number[]> {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tMultilevelSensorCCValues.supportedSensorTypes.endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t);\n\t}\n\n\t/**\n\t * Returns which scales are supported for a given sensor type.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getSupportedScalesCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tsensorType: number,\n\t): MaybeNotKnown<number[]> {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tMultilevelSensorCCValues.supportedScales(sensorType).endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t);\n\t}\n\n\tpublic translatePropertyKey(\n\t\tctx: GetValueDB,\n\t\tproperty: string | number,\n\t\tpropertyKey: string | number,\n\t): string | undefined {\n\t\t// TODO: check this\n\t\tif (property === \"values\" && typeof propertyKey === \"number\") {\n\t\t\tconst sensor = getSensor(propertyKey);\n\t\t\tif (sensor) return sensor.label;\n\t\t}\n\t\treturn super.translatePropertyKey(ctx, property, propertyKey);\n\t}\n}\n\n// @publicAPI\nexport interface MultilevelSensorCCReportOptions {\n\ttype: number;\n\tscale: number | Scale;\n\tvalue: number;\n}\n\n@CCCommand(MultilevelSensorCommand.Report)\n@useSupervision()\nexport class MultilevelSensorCCReport extends MultilevelSensorCC {\n\tpublic constructor(\n\t\toptions: WithAddress<MultilevelSensorCCReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.type = options.type;\n\t\tthis.value = options.value;\n\t\tthis.scale = typeof options.scale === \"number\"\n\t\t\t? options.scale\n\t\t\t: options.scale.key;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): MultilevelSensorCCReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst type = raw.payload[0];\n\n\t\t// parseFloatWithScale does its own validation\n\t\tconst { value, scale } = parseFloatWithScale(\n\t\t\traw.payload.subarray(1),\n\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\ttype,\n\t\t\tvalue,\n\t\t\tscale,\n\t\t});\n\t}\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\n\t\tconst sensor = getSensor(this.type);\n\t\tconst scale = getSensorScale(\n\t\t\tthis.type,\n\t\t\tthis.scale,\n\t\t) ?? getUnknownScale(this.scale);\n\n\t\t// Filter out unknown sensor types and scales, unless the strict validation is disabled\n\t\tconst measurementValidation = !ctx.getDeviceConfig?.(\n\t\t\tthis.nodeId as number,\n\t\t)?.compat?.disableStrictMeasurementValidation;\n\n\t\tconst ccVersion = getEffectiveCCVersion(ctx, this);\n\n\t\tif (measurementValidation) {\n\t\t\t// Filter out unsupported sensor types and scales if possible\n\t\t\tif (ccVersion >= 5) {\n\t\t\t\tconst supportedSensorTypes = this.getValue<number[]>(\n\t\t\t\t\tctx,\n\t\t\t\t\tMultilevelSensorCCValues.supportedSensorTypes,\n\t\t\t\t);\n\t\t\t\tif (supportedSensorTypes?.length) {\n\t\t\t\t\tvalidatePayload.withReason(\n\t\t\t\t\t\t`Unsupported sensor type ${\n\t\t\t\t\t\t\tgetSensorName(this.type)\n\t\t\t\t\t\t} or corrupted data`,\n\t\t\t\t\t)(supportedSensorTypes.includes(this.type));\n\t\t\t\t}\n\n\t\t\t\tconst supportedScales = this.getValue<number[]>(\n\t\t\t\t\tctx,\n\t\t\t\t\tMultilevelSensorCCValues.supportedScales(this.type),\n\t\t\t\t);\n\t\t\t\tif (supportedScales?.length) {\n\t\t\t\t\tvalidatePayload.withReason(\n\t\t\t\t\t\t`Unsupported scale ${scale.label} or corrupted data`,\n\t\t\t\t\t)(supportedScales.includes(scale.key));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We support a higher CC version than the device, so any types and scales it uses should be known to us\n\t\t\t\t// Filter out unknown ones.\n\t\t\t\tvalidatePayload.withReason(\n\t\t\t\t\t`Unknown sensor type ${\n\t\t\t\t\t\tnum2hex(\n\t\t\t\t\t\t\tthis.type,\n\t\t\t\t\t\t)\n\t\t\t\t\t} or corrupted data`,\n\t\t\t\t)(!!sensor);\n\t\t\t\tvalidatePayload.withReason(\n\t\t\t\t\t`Unknown scale ${num2hex(this.scale)} or corrupted data`,\n\t\t\t\t)(scale.label !== getUnknownScale(this.scale).label);\n\t\t\t}\n\t\t}\n\n\t\tconst sensorName = getSensorName(this.type);\n\t\tconst sensorValue = MultilevelSensorCCValues.value(sensorName);\n\n\t\tthis.setMetadata(ctx, sensorValue, {\n\t\t\t...sensorValue.meta,\n\t\t\tunit: scale.unit,\n\t\t\tccSpecific: {\n\t\t\t\tsensorType: this.type,\n\t\t\t\tscale: scale.key,\n\t\t\t},\n\t\t});\n\t\tthis.setValue(ctx, sensorValue, this.value);\n\n\t\treturn true;\n\t}\n\n\tpublic type: number;\n\tpublic scale: number;\n\tpublic value: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([this.type]),\n\t\t\tencodeFloatWithScale(this.value, this.scale),\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"sensor type\": getSensorName(this.type),\n\t\t\t\tscale: (getSensorScale(this.type, this.scale)\n\t\t\t\t\t?? getUnknownScale(this.scale)).label,\n\t\t\t\tvalue: this.value,\n\t\t\t},\n\t\t};\n\t}\n}\n\nconst testResponseForMultilevelSensorGet: CCResponsePredicate<\n\tMultilevelSensorCCGet,\n\tMultilevelSensorCCReport\n> = (sent, received) => {\n\t// We expect a Multilevel Sensor Report that matches the requested sensor type (if a type was requested)\n\treturn sent.sensorType == undefined || received.type === sent.sensorType;\n};\n\n// These options are supported starting in V5\n// @publicAPI\nexport type MultilevelSensorCCGetOptions = AllOrNone<{\n\tsensorType: number;\n\tscale: number;\n}>;\n\n@CCCommand(MultilevelSensorCommand.Get)\n@expectedCCResponse(\n\tMultilevelSensorCCReport,\n\ttestResponseForMultilevelSensorGet,\n)\nexport class MultilevelSensorCCGet extends MultilevelSensorCC {\n\tpublic constructor(\n\t\toptions: WithAddress<MultilevelSensorCCGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tif (\"sensorType\" in options) {\n\t\t\tthis.sensorType = options.sensorType;\n\t\t\tthis.scale = options.scale;\n\t\t}\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): MultilevelSensorCCGet {\n\t\tif (raw.payload.length >= 2) {\n\t\t\tconst sensorType = raw.payload[0];\n\t\t\tconst scale = (raw.payload[1] >> 3) & 0b11;\n\t\t\treturn new this({\n\t\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\t\tsensorType,\n\t\t\t\tscale,\n\t\t\t});\n\t\t} else {\n\t\t\treturn new this({\n\t\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic sensorType: number | undefined;\n\tpublic scale: number | undefined;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tif (\n\t\t\tthis.sensorType != undefined\n\t\t\t&& this.scale != undefined\n\t\t) {\n\t\t\tthis.payload = Bytes.from([\n\t\t\t\tthis.sensorType,\n\t\t\t\t(this.scale & 0b11) << 3,\n\t\t\t]);\n\t\t}\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tlet message: MessageRecord = {};\n\t\tif (\n\t\t\tthis.sensorType != undefined\n\t\t\t&& this.scale != undefined\n\t\t) {\n\t\t\tmessage = {\n\t\t\t\t\"sensor type\": getSensorName(\n\t\t\t\t\tthis.sensorType,\n\t\t\t\t),\n\t\t\t\tscale: (getSensorScale(\n\t\t\t\t\tthis.sensorType,\n\t\t\t\t\tthis.scale,\n\t\t\t\t) ?? getUnknownScale(this.scale)).label,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface MultilevelSensorCCSupportedSensorReportOptions {\n\tsupportedSensorTypes: readonly number[];\n}\n\n@CCCommand(MultilevelSensorCommand.SupportedSensorReport)\n@ccValueProperty(\n\t\"supportedSensorTypes\",\n\tMultilevelSensorCCValues.supportedSensorTypes,\n)\nexport class MultilevelSensorCCSupportedSensorReport\n\textends MultilevelSensorCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<MultilevelSensorCCSupportedSensorReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.supportedSensorTypes = options.supportedSensorTypes;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): MultilevelSensorCCSupportedSensorReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst supportedSensorTypes = parseBitMask(raw.payload);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsupportedSensorTypes,\n\t\t});\n\t}\n\n\t// TODO: Use this during interview to precreate values\n\n\tpublic supportedSensorTypes: readonly number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = encodeBitMask(this.supportedSensorTypes);\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 sensor types\": this.supportedSensorTypes\n\t\t\t\t\t.map((t) => `\\n\u00B7 ${getSensorName(t)}`)\n\t\t\t\t\t.join(\"\"),\n\t\t\t},\n\t\t};\n\t}\n}\n\n@CCCommand(MultilevelSensorCommand.GetSupportedSensor)\n@expectedCCResponse(MultilevelSensorCCSupportedSensorReport)\nexport class MultilevelSensorCCGetSupportedSensor extends MultilevelSensorCC {}\n\n// @publicAPI\nexport interface MultilevelSensorCCSupportedScaleReportOptions {\n\tsensorType: number;\n\tsupportedScales: readonly number[];\n}\n\n@CCCommand(MultilevelSensorCommand.SupportedScaleReport)\n@ccValueProperty(\n\t\"supportedScales\",\n\tMultilevelSensorCCValues.supportedScales,\n\t(self) => [self.sensorType],\n)\nexport class MultilevelSensorCCSupportedScaleReport extends MultilevelSensorCC {\n\tpublic constructor(\n\t\toptions: WithAddress<MultilevelSensorCCSupportedScaleReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.sensorType = options.sensorType;\n\t\tthis.supportedScales = options.supportedScales;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): MultilevelSensorCCSupportedScaleReport {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst sensorType = raw.payload[0];\n\t\tconst supportedScales = parseBitMask(\n\t\t\tBytes.from([raw.payload[1] & 0b1111]),\n\t\t\t0,\n\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsensorType,\n\t\t\tsupportedScales,\n\t\t});\n\t}\n\n\tpublic readonly sensorType: number;\n\n\tpublic readonly supportedScales: readonly number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([this.sensorType]),\n\t\t\tencodeBitMask(this.supportedScales, 4, 0),\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"sensor type\": getSensorName(this.sensorType),\n\t\t\t\t\"supported scales\": this.supportedScales\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(s) =>\n\t\t\t\t\t\t\t`\\n\u00B7 ${\n\t\t\t\t\t\t\t\t(getSensorScale(this.sensorType, s)\n\t\t\t\t\t\t\t\t\t?? getUnknownScale(s)).label\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// @publicAPI\nexport interface MultilevelSensorCCGetSupportedScaleOptions {\n\tsensorType: number;\n}\n\n@CCCommand(MultilevelSensorCommand.GetSupportedScale)\n@expectedCCResponse(MultilevelSensorCCSupportedScaleReport)\nexport class MultilevelSensorCCGetSupportedScale extends MultilevelSensorCC {\n\tpublic constructor(\n\t\toptions: WithAddress<MultilevelSensorCCGetSupportedScaleOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.sensorType = options.sensorType;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): MultilevelSensorCCGetSupportedScale {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst sensorType = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsensorType,\n\t\t});\n\t}\n\n\tpublic sensorType: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.sensorType]);\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\"sensor type\": getSensorName(this.sensorType),\n\t\t\t},\n\t\t};\n\t}\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["preferred"]
|
|
7
7
|
}
|
|
@@ -33,13 +33,13 @@ __export(MultilevelSwitchCC_validateArgs_exports, {
|
|
|
33
33
|
validateArgs_MultilevelSwitchCCAPI_startLevelChange: () => validateArgs_MultilevelSwitchCCAPI_startLevelChange
|
|
34
34
|
});
|
|
35
35
|
module.exports = __toCommonJS(MultilevelSwitchCC_validateArgs_exports);
|
|
36
|
-
var
|
|
36
|
+
var import_core = require("@zwave-js/core");
|
|
37
37
|
var v = __toESM(require("@zwave-js/core/validation"), 1);
|
|
38
38
|
function validateArgs_MultilevelSwitchCCAPI_set() {
|
|
39
39
|
return (__decoratedMethod, { kind }) => {
|
|
40
40
|
if (kind === "method") {
|
|
41
41
|
return /* @__PURE__ */ __name(function set(targetValue, duration) {
|
|
42
|
-
v.assert(v.primitive({ kind: "parameter", name: "targetValue" }, "number")(targetValue), v.optional({ kind: "parameter", name: "duration" }, v.oneOf({ kind: "parameter", name: "duration" }, void 0, v.primitive({ kind: "parameter", name: "duration" }, "string"), v.class({ kind: "parameter", name: "duration" }, "Duration",
|
|
42
|
+
v.assert(v.primitive({ kind: "parameter", name: "targetValue" }, "number")(targetValue), v.optional({ kind: "parameter", name: "duration" }, v.oneOf({ kind: "parameter", name: "duration" }, void 0, v.primitive({ kind: "parameter", name: "duration" }, "string"), v.class({ kind: "parameter", name: "duration" }, "Duration", import_core.Duration)))(duration));
|
|
43
43
|
return __decoratedMethod.call(this, targetValue, duration);
|
|
44
44
|
}, "set");
|
|
45
45
|
}
|
|
@@ -50,7 +50,7 @@ function validateArgs_MultilevelSwitchCCAPI_startLevelChange() {
|
|
|
50
50
|
return (__decoratedMethod, { kind }) => {
|
|
51
51
|
if (kind === "method") {
|
|
52
52
|
return /* @__PURE__ */ __name(function startLevelChange(options) {
|
|
53
|
-
v.assert(v.oneOf({ kind: "parameter", name: "options" }, "MultilevelSwitchCCStartLevelChangeOptions", v.allOf({ kind: "parameter", name: "options" }, void 0, v.object({ kind: "parameter", name: "options" }, "<anonymous object>", { "direction": v.oneOf({ kind: "property", name: "direction" }, void 0, v.literal({ kind: "property", name: "direction" }, "up"), v.literal({ kind: "property", name: "direction" }, "down")) }), v.object({ kind: "parameter", name: "options" }, "<anonymous object>", { "ignoreStartLevel": v.literal({ kind: "property", name: "ignoreStartLevel" }, true), "startLevel": v.optional({ kind: "property", name: "startLevel" }, v.primitive({ kind: "property", name: "startLevel" }, "number")) }), v.object({ kind: "parameter", name: "options" }, "<anonymous object>", { "duration": v.optional({ kind: "property", name: "duration" }, v.oneOf({ kind: "property", name: "duration" }, void 0, v.primitive({ kind: "property", name: "duration" }, "string"), v.class({ kind: "property", name: "duration" }, "Duration",
|
|
53
|
+
v.assert(v.oneOf({ kind: "parameter", name: "options" }, "MultilevelSwitchCCStartLevelChangeOptions", v.allOf({ kind: "parameter", name: "options" }, void 0, v.object({ kind: "parameter", name: "options" }, "<anonymous object>", { "direction": v.oneOf({ kind: "property", name: "direction" }, void 0, v.literal({ kind: "property", name: "direction" }, "up"), v.literal({ kind: "property", name: "direction" }, "down")) }), v.object({ kind: "parameter", name: "options" }, "<anonymous object>", { "ignoreStartLevel": v.literal({ kind: "property", name: "ignoreStartLevel" }, true), "startLevel": v.optional({ kind: "property", name: "startLevel" }, v.primitive({ kind: "property", name: "startLevel" }, "number")) }), v.object({ kind: "parameter", name: "options" }, "<anonymous object>", { "duration": v.optional({ kind: "property", name: "duration" }, v.oneOf({ kind: "property", name: "duration" }, void 0, v.primitive({ kind: "property", name: "duration" }, "string"), v.class({ kind: "property", name: "duration" }, "Duration", import_core.Duration))) })), v.allOf({ kind: "parameter", name: "options" }, void 0, v.object({ kind: "parameter", name: "options" }, "<anonymous object>", { "direction": v.oneOf({ kind: "property", name: "direction" }, void 0, v.literal({ kind: "property", name: "direction" }, "up"), v.literal({ kind: "property", name: "direction" }, "down")) }), v.object({ kind: "parameter", name: "options" }, "<anonymous object>", { "ignoreStartLevel": v.literal({ kind: "property", name: "ignoreStartLevel" }, false), "startLevel": v.primitive({ kind: "property", name: "startLevel" }, "number") }), v.object({ kind: "parameter", name: "options" }, "<anonymous object>", { "duration": v.optional({ kind: "property", name: "duration" }, v.oneOf({ kind: "property", name: "duration" }, void 0, v.primitive({ kind: "property", name: "duration" }, "string"), v.class({ kind: "property", name: "duration" }, "Duration", import_core.Duration))) })))(options));
|
|
54
54
|
return __decoratedMethod.call(this, options);
|
|
55
55
|
}, "startLevelChange");
|
|
56
56
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { CommandClasses, Duration, type GetValueDB, type MaybeNotKnown, type MaybeUnknown, type MessageOrCCLogEntry, type SupervisionResult, type WithAddress } from "@zwave-js/core
|
|
3
|
-
import { Bytes } from "@zwave-js/shared
|
|
1
|
+
import type { CCEncodingContext, CCParsingContext } from "@zwave-js/cc";
|
|
2
|
+
import { CommandClasses, Duration, type GetValueDB, type MaybeNotKnown, type MaybeUnknown, type MessageOrCCLogEntry, type SupervisionResult, type WithAddress } from "@zwave-js/core";
|
|
3
|
+
import { Bytes } from "@zwave-js/shared";
|
|
4
4
|
import { CCAPI, POLL_VALUE, type PollValueImplementation, SET_VALUE, SET_VALUE_HOOKS, type SetValueImplementation, type SetValueImplementationHooksFactory } from "../lib/API.js";
|
|
5
5
|
import { type CCRaw, CommandClass, type InterviewContext, type PersistValuesContext, type RefreshValuesContext } from "../lib/CommandClass.js";
|
|
6
6
|
import { LevelChangeDirection, MultilevelSwitchCommand, SwitchType } from "../lib/_Types.js";
|
|
@@ -15,7 +15,7 @@ export declare const MultilevelSwitchCCValues: Readonly<{
|
|
|
15
15
|
readonly endpoint: number;
|
|
16
16
|
readonly property: "currentValue";
|
|
17
17
|
};
|
|
18
|
-
is: (valueId: import("@zwave-js/core
|
|
18
|
+
is: (valueId: import("@zwave-js/core").ValueID) => boolean;
|
|
19
19
|
readonly meta: {
|
|
20
20
|
readonly label: "Current value";
|
|
21
21
|
readonly writeable: false;
|
|
@@ -43,7 +43,7 @@ export declare const MultilevelSwitchCCValues: Readonly<{
|
|
|
43
43
|
readonly endpoint: number;
|
|
44
44
|
readonly property: "targetValue";
|
|
45
45
|
};
|
|
46
|
-
is: (valueId: import("@zwave-js/core
|
|
46
|
+
is: (valueId: import("@zwave-js/core").ValueID) => boolean;
|
|
47
47
|
readonly meta: {
|
|
48
48
|
readonly label: "Target value";
|
|
49
49
|
readonly valueChangeOptions: readonly ["transitionDuration"];
|
|
@@ -72,7 +72,7 @@ export declare const MultilevelSwitchCCValues: Readonly<{
|
|
|
72
72
|
readonly endpoint: number;
|
|
73
73
|
readonly property: "duration";
|
|
74
74
|
};
|
|
75
|
-
is: (valueId: import("@zwave-js/core
|
|
75
|
+
is: (valueId: import("@zwave-js/core").ValueID) => boolean;
|
|
76
76
|
readonly meta: {
|
|
77
77
|
readonly label: "Remaining duration";
|
|
78
78
|
readonly writeable: false;
|
|
@@ -98,7 +98,7 @@ export declare const MultilevelSwitchCCValues: Readonly<{
|
|
|
98
98
|
readonly endpoint: number;
|
|
99
99
|
readonly property: "restorePrevious";
|
|
100
100
|
};
|
|
101
|
-
is: (valueId: import("@zwave-js/core
|
|
101
|
+
is: (valueId: import("@zwave-js/core").ValueID) => boolean;
|
|
102
102
|
readonly meta: {
|
|
103
103
|
readonly label: "Restore previous value";
|
|
104
104
|
readonly states: {
|
|
@@ -127,7 +127,7 @@ export declare const MultilevelSwitchCCValues: Readonly<{
|
|
|
127
127
|
readonly endpoint: number;
|
|
128
128
|
readonly property: "event";
|
|
129
129
|
};
|
|
130
|
-
is: (valueId: import("@zwave-js/core
|
|
130
|
+
is: (valueId: import("@zwave-js/core").ValueID) => boolean;
|
|
131
131
|
readonly meta: {
|
|
132
132
|
readonly label: "Event value";
|
|
133
133
|
readonly writeable: false;
|
|
@@ -142,7 +142,7 @@ export declare const MultilevelSwitchCCValues: Readonly<{
|
|
|
142
142
|
readonly secret: false;
|
|
143
143
|
readonly stateful: false;
|
|
144
144
|
readonly supportsEndpoints: true;
|
|
145
|
-
readonly autoCreate: (applHost: GetValueDB & import("@zwave-js/config").GetDeviceConfig, endpoint: import("@zwave-js/core
|
|
145
|
+
readonly autoCreate: (applHost: GetValueDB & import("@zwave-js/config").GetDeviceConfig, endpoint: import("@zwave-js/core").EndpointId) => boolean;
|
|
146
146
|
};
|
|
147
147
|
};
|
|
148
148
|
switchType: {
|
|
@@ -155,7 +155,7 @@ export declare const MultilevelSwitchCCValues: Readonly<{
|
|
|
155
155
|
readonly endpoint: number;
|
|
156
156
|
readonly property: "switchType";
|
|
157
157
|
};
|
|
158
|
-
is: (valueId: import("@zwave-js/core
|
|
158
|
+
is: (valueId: import("@zwave-js/core").ValueID) => boolean;
|
|
159
159
|
readonly meta: Readonly<{
|
|
160
160
|
readonly type: "any";
|
|
161
161
|
readonly readable: true;
|
|
@@ -180,7 +180,7 @@ export declare const MultilevelSwitchCCValues: Readonly<{
|
|
|
180
180
|
readonly endpoint: 0;
|
|
181
181
|
readonly property: "superviseStartStopLevelChange";
|
|
182
182
|
};
|
|
183
|
-
is: (valueId: import("@zwave-js/core
|
|
183
|
+
is: (valueId: import("@zwave-js/core").ValueID) => boolean;
|
|
184
184
|
readonly meta: Readonly<{
|
|
185
185
|
readonly type: "any";
|
|
186
186
|
readonly readable: true;
|
|
@@ -220,7 +220,7 @@ export declare const MultilevelSwitchCCValues: Readonly<{
|
|
|
220
220
|
readonly writeable: true;
|
|
221
221
|
};
|
|
222
222
|
}) & {
|
|
223
|
-
is: (valueId: import("@zwave-js/core
|
|
223
|
+
is: (valueId: import("@zwave-js/core").ValueID) => boolean;
|
|
224
224
|
options: {
|
|
225
225
|
readonly internal: false;
|
|
226
226
|
readonly minVersion: 1;
|
|
@@ -255,7 +255,7 @@ export declare const MultilevelSwitchCCValues: Readonly<{
|
|
|
255
255
|
readonly writeable: true;
|
|
256
256
|
};
|
|
257
257
|
}) & {
|
|
258
|
-
is: (valueId: import("@zwave-js/core
|
|
258
|
+
is: (valueId: import("@zwave-js/core").ValueID) => boolean;
|
|
259
259
|
options: {
|
|
260
260
|
readonly internal: false;
|
|
261
261
|
readonly minVersion: 1;
|