@zwave-js/cc 14.0.0-beta.4 → 14.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/cc/AlarmSensorCC.js +381 -266
- package/build/cjs/cc/AlarmSensorCC.js.map +3 -3
- package/build/cjs/cc/AssociationCC.js +669 -503
- package/build/cjs/cc/AssociationCC.js.map +3 -3
- package/build/cjs/cc/AssociationGroupInfoCC.js +633 -492
- package/build/cjs/cc/AssociationGroupInfoCC.js.map +3 -3
- package/build/cjs/cc/BarrierOperatorCC.js +595 -429
- package/build/cjs/cc/BarrierOperatorCC.js.map +3 -3
- package/build/cjs/cc/BasicCC.js +354 -260
- package/build/cjs/cc/BasicCC.js.map +3 -3
- package/build/cjs/cc/BatteryCC.js +427 -345
- package/build/cjs/cc/BatteryCC.js.map +3 -3
- package/build/cjs/cc/BinarySensorCC.js +391 -276
- package/build/cjs/cc/BinarySensorCC.js.map +3 -3
- package/build/cjs/cc/BinarySwitchCC.js +347 -253
- package/build/cjs/cc/BinarySwitchCC.js.map +3 -3
- package/build/cjs/cc/CRC16CC.js +160 -85
- package/build/cjs/cc/CRC16CC.js.map +3 -3
- package/build/cjs/cc/CentralSceneCC.js +459 -324
- package/build/cjs/cc/CentralSceneCC.js.map +3 -3
- package/build/cjs/cc/ClimateControlScheduleCC.js +459 -293
- package/build/cjs/cc/ClimateControlScheduleCC.js.map +3 -3
- package/build/cjs/cc/ClockCC.js +254 -150
- package/build/cjs/cc/ClockCC.js.map +3 -3
- package/build/cjs/cc/ColorSwitchCC.js +758 -610
- package/build/cjs/cc/ColorSwitchCC.js.map +3 -3
- package/build/cjs/cc/ConfigurationCC.js +1700 -1453
- package/build/cjs/cc/ConfigurationCC.js.map +3 -3
- package/build/cjs/cc/DeviceResetLocallyCC.js +125 -49
- package/build/cjs/cc/DeviceResetLocallyCC.js.map +3 -3
- package/build/cjs/cc/DoorLockCC.js +904 -777
- package/build/cjs/cc/DoorLockCC.js.map +3 -3
- package/build/cjs/cc/DoorLockLoggingCC.js +321 -206
- package/build/cjs/cc/DoorLockLoggingCC.js.map +3 -3
- package/build/cjs/cc/EnergyProductionCC.js +249 -160
- package/build/cjs/cc/EnergyProductionCC.js.map +3 -3
- package/build/cjs/cc/EntryControlCC.js +619 -458
- package/build/cjs/cc/EntryControlCC.js.map +3 -3
- package/build/cjs/cc/FirmwareUpdateMetaDataCC.js +898 -698
- package/build/cjs/cc/FirmwareUpdateMetaDataCC.js.map +3 -3
- package/build/cjs/cc/HailCC.js +57 -11
- package/build/cjs/cc/HailCC.js.map +2 -2
- package/build/cjs/cc/HumidityControlModeCC.js +359 -233
- package/build/cjs/cc/HumidityControlModeCC.js.map +3 -3
- package/build/cjs/cc/HumidityControlOperatingStateCC.js +189 -103
- package/build/cjs/cc/HumidityControlOperatingStateCC.js.map +3 -3
- package/build/cjs/cc/HumidityControlSetpointCC.js +682 -495
- package/build/cjs/cc/HumidityControlSetpointCC.js.map +3 -3
- package/build/cjs/cc/InclusionControllerCC.js +205 -114
- package/build/cjs/cc/InclusionControllerCC.js.map +3 -3
- package/build/cjs/cc/IndicatorCC.js +897 -736
- package/build/cjs/cc/IndicatorCC.js.map +3 -3
- package/build/cjs/cc/IrrigationCC.js +1651 -1405
- package/build/cjs/cc/IrrigationCC.js.map +3 -3
- package/build/cjs/cc/LanguageCC.js +268 -171
- package/build/cjs/cc/LanguageCC.js.map +3 -3
- package/build/cjs/cc/LockCC.js +254 -154
- package/build/cjs/cc/LockCC.js.map +3 -3
- package/build/cjs/cc/ManufacturerProprietaryCC.js +189 -129
- package/build/cjs/cc/ManufacturerProprietaryCC.js.map +2 -2
- package/build/cjs/cc/ManufacturerSpecificCC.js +319 -213
- package/build/cjs/cc/ManufacturerSpecificCC.js.map +3 -3
- package/build/cjs/cc/MeterCC.js +827 -707
- package/build/cjs/cc/MeterCC.js.map +3 -3
- package/build/cjs/cc/MultiChannelAssociationCC.js +612 -478
- package/build/cjs/cc/MultiChannelAssociationCC.js.map +3 -3
- package/build/cjs/cc/MultiChannelCC.js +1037 -819
- package/build/cjs/cc/MultiChannelCC.js.map +3 -3
- package/build/cjs/cc/MultiCommandCC.js +172 -97
- package/build/cjs/cc/MultiCommandCC.js.map +3 -3
- package/build/cjs/cc/MultilevelSensorCC.js +589 -449
- package/build/cjs/cc/MultilevelSensorCC.js.map +3 -3
- package/build/cjs/cc/MultilevelSwitchCC.js +587 -439
- package/build/cjs/cc/MultilevelSwitchCC.js.map +3 -3
- package/build/cjs/cc/NoOperationCC.js +89 -27
- package/build/cjs/cc/NoOperationCC.js.map +2 -2
- package/build/cjs/cc/NodeNamingCC.js +417 -277
- package/build/cjs/cc/NodeNamingCC.js.map +3 -3
- package/build/cjs/cc/NotificationCC.js +972 -818
- package/build/cjs/cc/NotificationCC.js.map +3 -3
- package/build/cjs/cc/PowerlevelCC.js +450 -303
- package/build/cjs/cc/PowerlevelCC.js.map +3 -3
- package/build/cjs/cc/ProtectionCC.js +686 -494
- package/build/cjs/cc/ProtectionCC.js.map +3 -3
- package/build/cjs/cc/SceneActivationCC.js +165 -97
- package/build/cjs/cc/SceneActivationCC.js.map +3 -3
- package/build/cjs/cc/SceneActuatorConfigurationCC.js +346 -243
- package/build/cjs/cc/SceneActuatorConfigurationCC.js.map +3 -3
- package/build/cjs/cc/SceneControllerConfigurationCC.js +401 -298
- package/build/cjs/cc/SceneControllerConfigurationCC.js.map +3 -3
- package/build/cjs/cc/ScheduleEntryLockCC.js +1552 -1272
- package/build/cjs/cc/ScheduleEntryLockCC.js.map +3 -3
- package/build/cjs/cc/Security2CC.js +1483 -1219
- package/build/cjs/cc/Security2CC.js.map +3 -3
- package/build/cjs/cc/SecurityCC.js +839 -619
- package/build/cjs/cc/SecurityCC.js.map +3 -3
- package/build/cjs/cc/SoundSwitchCC.js +707 -515
- package/build/cjs/cc/SoundSwitchCC.js.map +3 -3
- package/build/cjs/cc/SupervisionCC.js +327 -237
- package/build/cjs/cc/SupervisionCC.js.map +3 -3
- package/build/cjs/cc/ThermostatFanModeCC.js +386 -263
- package/build/cjs/cc/ThermostatFanModeCC.js.map +3 -3
- package/build/cjs/cc/ThermostatFanStateCC.js +192 -106
- package/build/cjs/cc/ThermostatFanStateCC.js.map +3 -3
- package/build/cjs/cc/ThermostatModeCC.js +425 -302
- package/build/cjs/cc/ThermostatModeCC.js.map +3 -3
- package/build/cjs/cc/ThermostatOperatingStateCC.js +188 -102
- package/build/cjs/cc/ThermostatOperatingStateCC.js.map +3 -3
- package/build/cjs/cc/ThermostatSetbackCC.js +277 -173
- package/build/cjs/cc/ThermostatSetbackCC.js.map +3 -3
- package/build/cjs/cc/ThermostatSetpointCC.js +645 -491
- package/build/cjs/cc/ThermostatSetpointCC.js.map +3 -3
- package/build/cjs/cc/TimeCC.js +515 -353
- package/build/cjs/cc/TimeCC.js.map +3 -3
- package/build/cjs/cc/TimeParametersCC.js +302 -202
- package/build/cjs/cc/TimeParametersCC.js.map +3 -3
- package/build/cjs/cc/TransportServiceCC.js +433 -315
- package/build/cjs/cc/TransportServiceCC.js.map +3 -3
- package/build/cjs/cc/UserCodeCC.js +1385 -1102
- package/build/cjs/cc/UserCodeCC.js.map +3 -3
- package/build/cjs/cc/VersionCC.js +696 -562
- package/build/cjs/cc/VersionCC.js.map +3 -3
- package/build/cjs/cc/WakeUpCC.js +499 -346
- package/build/cjs/cc/WakeUpCC.js.map +3 -3
- package/build/cjs/cc/WindowCoveringCC.js +626 -478
- package/build/cjs/cc/WindowCoveringCC.js.map +3 -3
- package/build/cjs/cc/ZWaveLongRangeCC.js +57 -10
- package/build/cjs/cc/ZWaveLongRangeCC.js.map +2 -2
- package/build/cjs/cc/ZWavePlusCC.js +233 -159
- package/build/cjs/cc/ZWavePlusCC.js.map +3 -3
- package/build/cjs/cc/ZWaveProtocolCC.js +1515 -948
- package/build/cjs/cc/ZWaveProtocolCC.js.map +3 -3
- package/build/cjs/cc/manufacturerProprietary/Decorators.d.ts +4 -4
- package/build/cjs/cc/manufacturerProprietary/Decorators.js.map +1 -1
- package/build/cjs/cc/manufacturerProprietary/FibaroCC.js +395 -274
- package/build/cjs/cc/manufacturerProprietary/FibaroCC.js.map +3 -3
- package/build/cjs/lib/CommandClassDecorators.d.ts +11 -15
- package/build/cjs/lib/CommandClassDecorators.js +19 -20
- package/build/cjs/lib/CommandClassDecorators.js.map +2 -2
- package/build/cjs/lib/Security2/Extension.d.ts +1 -1
- package/build/cjs/lib/Security2/Extension.js +217 -126
- package/build/cjs/lib/Security2/Extension.js.map +3 -3
- package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
- package/build/esm/cc/AlarmSensorCC.js +389 -291
- package/build/esm/cc/AlarmSensorCC.js.map +1 -1
- package/build/esm/cc/AssociationCC.d.ts.map +1 -1
- package/build/esm/cc/AssociationCC.js +678 -537
- package/build/esm/cc/AssociationCC.js.map +1 -1
- package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
- package/build/esm/cc/AssociationGroupInfoCC.js +659 -539
- package/build/esm/cc/AssociationGroupInfoCC.js.map +1 -1
- package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
- package/build/esm/cc/BarrierOperatorCC.js +634 -493
- package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
- package/build/esm/cc/BasicCC.d.ts.map +1 -1
- package/build/esm/cc/BasicCC.js +380 -302
- package/build/esm/cc/BasicCC.js.map +1 -1
- package/build/esm/cc/BatteryCC.d.ts.map +1 -1
- package/build/esm/cc/BatteryCC.js +449 -384
- package/build/esm/cc/BatteryCC.js.map +1 -1
- package/build/esm/cc/BinarySensorCC.d.ts.map +1 -1
- package/build/esm/cc/BinarySensorCC.js +395 -297
- package/build/esm/cc/BinarySensorCC.js.map +1 -1
- package/build/esm/cc/BinarySwitchCC.d.ts.map +1 -1
- package/build/esm/cc/BinarySwitchCC.js +353 -274
- package/build/esm/cc/BinarySwitchCC.js.map +1 -1
- package/build/esm/cc/CRC16CC.js +162 -98
- package/build/esm/cc/CRC16CC.js.map +1 -1
- package/build/esm/cc/CentralSceneCC.d.ts.map +1 -1
- package/build/esm/cc/CentralSceneCC.js +465 -351
- package/build/esm/cc/CentralSceneCC.js.map +1 -1
- package/build/esm/cc/ClimateControlScheduleCC.d.ts.map +1 -1
- package/build/esm/cc/ClimateControlScheduleCC.js +454 -313
- package/build/esm/cc/ClimateControlScheduleCC.js.map +1 -1
- package/build/esm/cc/ClockCC.js +248 -159
- package/build/esm/cc/ClockCC.js.map +1 -1
- package/build/esm/cc/ColorSwitchCC.d.ts.map +1 -1
- package/build/esm/cc/ColorSwitchCC.js +802 -677
- package/build/esm/cc/ColorSwitchCC.js.map +1 -1
- package/build/esm/cc/ConfigurationCC.js +1899 -1687
- package/build/esm/cc/ConfigurationCC.js.map +1 -1
- package/build/esm/cc/DeviceResetLocallyCC.js +124 -59
- package/build/esm/cc/DeviceResetLocallyCC.js.map +1 -1
- package/build/esm/cc/DoorLockCC.d.ts.map +1 -1
- package/build/esm/cc/DoorLockCC.js +951 -849
- package/build/esm/cc/DoorLockCC.js.map +1 -1
- package/build/esm/cc/DoorLockLoggingCC.d.ts.map +1 -1
- package/build/esm/cc/DoorLockLoggingCC.js +316 -218
- package/build/esm/cc/DoorLockLoggingCC.js.map +1 -1
- package/build/esm/cc/EnergyProductionCC.js +240 -164
- package/build/esm/cc/EnergyProductionCC.js.map +1 -1
- package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
- package/build/esm/cc/EntryControlCC.js +629 -493
- package/build/esm/cc/EntryControlCC.js.map +1 -1
- package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts.map +1 -1
- package/build/esm/cc/FirmwareUpdateMetaDataCC.js +938 -769
- package/build/esm/cc/FirmwareUpdateMetaDataCC.js.map +1 -1
- package/build/esm/cc/HailCC.js +51 -12
- package/build/esm/cc/HailCC.js.map +1 -1
- package/build/esm/cc/HumidityControlModeCC.d.ts.map +1 -1
- package/build/esm/cc/HumidityControlModeCC.js +357 -250
- package/build/esm/cc/HumidityControlModeCC.js.map +1 -1
- package/build/esm/cc/HumidityControlOperatingStateCC.d.ts.map +1 -1
- package/build/esm/cc/HumidityControlOperatingStateCC.js +182 -109
- package/build/esm/cc/HumidityControlOperatingStateCC.js.map +1 -1
- package/build/esm/cc/HumidityControlSetpointCC.d.ts.map +1 -1
- package/build/esm/cc/HumidityControlSetpointCC.js +706 -546
- package/build/esm/cc/HumidityControlSetpointCC.js.map +1 -1
- package/build/esm/cc/InclusionControllerCC.js +197 -119
- package/build/esm/cc/InclusionControllerCC.js.map +1 -1
- package/build/esm/cc/IndicatorCC.js +973 -835
- package/build/esm/cc/IndicatorCC.js.map +1 -1
- package/build/esm/cc/IrrigationCC.d.ts.map +1 -1
- package/build/esm/cc/IrrigationCC.js +1697 -1496
- package/build/esm/cc/IrrigationCC.js.map +1 -1
- package/build/esm/cc/LanguageCC.d.ts.map +1 -1
- package/build/esm/cc/LanguageCC.js +266 -184
- package/build/esm/cc/LanguageCC.js.map +1 -1
- package/build/esm/cc/LockCC.d.ts.map +1 -1
- package/build/esm/cc/LockCC.js +247 -162
- package/build/esm/cc/LockCC.js.map +1 -1
- package/build/esm/cc/ManufacturerProprietaryCC.js +192 -141
- package/build/esm/cc/ManufacturerProprietaryCC.js.map +1 -1
- package/build/esm/cc/ManufacturerSpecificCC.d.ts.map +1 -1
- package/build/esm/cc/ManufacturerSpecificCC.js +312 -223
- package/build/esm/cc/ManufacturerSpecificCC.js.map +1 -1
- package/build/esm/cc/MeterCC.d.ts.map +1 -1
- package/build/esm/cc/MeterCC.js +896 -795
- package/build/esm/cc/MeterCC.js.map +1 -1
- package/build/esm/cc/MultiChannelAssociationCC.d.ts.map +1 -1
- package/build/esm/cc/MultiChannelAssociationCC.js +631 -518
- package/build/esm/cc/MultiChannelAssociationCC.js.map +1 -1
- package/build/esm/cc/MultiChannelCC.d.ts.map +1 -1
- package/build/esm/cc/MultiChannelCC.js +1106 -921
- package/build/esm/cc/MultiChannelCC.js.map +1 -1
- package/build/esm/cc/MultiCommandCC.js +166 -102
- package/build/esm/cc/MultiCommandCC.js.map +1 -1
- package/build/esm/cc/MultilevelSensorCC.d.ts.map +1 -1
- package/build/esm/cc/MultilevelSensorCC.js +616 -497
- package/build/esm/cc/MultilevelSensorCC.js.map +1 -1
- package/build/esm/cc/MultilevelSwitchCC.d.ts.map +1 -1
- package/build/esm/cc/MultilevelSwitchCC.js +621 -496
- package/build/esm/cc/MultilevelSwitchCC.js.map +1 -1
- package/build/esm/cc/NoOperationCC.js +82 -29
- package/build/esm/cc/NoOperationCC.js.map +1 -1
- package/build/esm/cc/NodeNamingCC.d.ts.map +1 -1
- package/build/esm/cc/NodeNamingCC.js +413 -294
- package/build/esm/cc/NodeNamingCC.js.map +1 -1
- package/build/esm/cc/NotificationCC.d.ts.map +1 -1
- package/build/esm/cc/NotificationCC.js +1097 -966
- package/build/esm/cc/NotificationCC.js.map +1 -1
- package/build/esm/cc/PowerlevelCC.js +437 -311
- package/build/esm/cc/PowerlevelCC.js.map +1 -1
- package/build/esm/cc/ProtectionCC.d.ts.map +1 -1
- package/build/esm/cc/ProtectionCC.js +704 -543
- package/build/esm/cc/ProtectionCC.js.map +1 -1
- package/build/esm/cc/SceneActivationCC.d.ts.map +1 -1
- package/build/esm/cc/SceneActivationCC.js +157 -100
- package/build/esm/cc/SceneActivationCC.js.map +1 -1
- package/build/esm/cc/SceneActuatorConfigurationCC.js +357 -269
- package/build/esm/cc/SceneActuatorConfigurationCC.js.map +1 -1
- package/build/esm/cc/SceneControllerConfigurationCC.js +434 -346
- package/build/esm/cc/SceneControllerConfigurationCC.js.map +1 -1
- package/build/esm/cc/ScheduleEntryLockCC.d.ts.map +1 -1
- package/build/esm/cc/ScheduleEntryLockCC.js +1596 -1357
- package/build/esm/cc/ScheduleEntryLockCC.js.map +1 -1
- package/build/esm/cc/Security2CC.js +1633 -1406
- package/build/esm/cc/Security2CC.js.map +1 -1
- package/build/esm/cc/SecurityCC.js +876 -687
- package/build/esm/cc/SecurityCC.js.map +1 -1
- package/build/esm/cc/SoundSwitchCC.d.ts.map +1 -1
- package/build/esm/cc/SoundSwitchCC.js +689 -526
- package/build/esm/cc/SoundSwitchCC.js.map +1 -1
- package/build/esm/cc/SupervisionCC.js +349 -272
- package/build/esm/cc/SupervisionCC.js.map +1 -1
- package/build/esm/cc/ThermostatFanModeCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatFanModeCC.js +388 -284
- package/build/esm/cc/ThermostatFanModeCC.js.map +1 -1
- package/build/esm/cc/ThermostatFanStateCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatFanStateCC.js +184 -111
- package/build/esm/cc/ThermostatFanStateCC.js.map +1 -1
- package/build/esm/cc/ThermostatModeCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatModeCC.js +435 -331
- package/build/esm/cc/ThermostatModeCC.js.map +1 -1
- package/build/esm/cc/ThermostatOperatingStateCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatOperatingStateCC.js +180 -107
- package/build/esm/cc/ThermostatOperatingStateCC.js.map +1 -1
- package/build/esm/cc/ThermostatSetbackCC.js +274 -185
- package/build/esm/cc/ThermostatSetbackCC.js.map +1 -1
- package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatSetpointCC.js +674 -543
- package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
- package/build/esm/cc/TimeCC.js +499 -360
- package/build/esm/cc/TimeCC.js.map +1 -1
- package/build/esm/cc/TimeParametersCC.d.ts.map +1 -1
- package/build/esm/cc/TimeParametersCC.js +296 -211
- package/build/esm/cc/TimeParametersCC.js.map +1 -1
- package/build/esm/cc/TransportServiceCC.js +464 -363
- package/build/esm/cc/TransportServiceCC.js.map +1 -1
- package/build/esm/cc/UserCodeCC.d.ts.map +1 -1
- package/build/esm/cc/UserCodeCC.js +1443 -1205
- package/build/esm/cc/UserCodeCC.js.map +1 -1
- package/build/esm/cc/VersionCC.d.ts.map +1 -1
- package/build/esm/cc/VersionCC.js +744 -635
- package/build/esm/cc/VersionCC.js.map +1 -1
- package/build/esm/cc/WakeUpCC.d.ts.map +1 -1
- package/build/esm/cc/WakeUpCC.js +494 -364
- package/build/esm/cc/WakeUpCC.js.map +1 -1
- package/build/esm/cc/WindowCoveringCC.d.ts.map +1 -1
- package/build/esm/cc/WindowCoveringCC.js +655 -530
- package/build/esm/cc/WindowCoveringCC.js.map +1 -1
- package/build/esm/cc/ZWaveLongRangeCC.js +51 -11
- package/build/esm/cc/ZWaveLongRangeCC.js.map +1 -1
- package/build/esm/cc/ZWavePlusCC.d.ts.map +1 -1
- package/build/esm/cc/ZWavePlusCC.js +223 -162
- package/build/esm/cc/ZWavePlusCC.js.map +1 -1
- package/build/esm/cc/ZWaveProtocolCC.js +1443 -953
- package/build/esm/cc/ZWaveProtocolCC.js.map +1 -1
- package/build/esm/cc/manufacturerProprietary/Decorators.d.ts +4 -4
- package/build/esm/cc/manufacturerProprietary/Decorators.d.ts.map +1 -1
- package/build/esm/cc/manufacturerProprietary/FibaroCC.js +390 -286
- package/build/esm/cc/manufacturerProprietary/FibaroCC.js.map +1 -1
- package/build/esm/lib/CommandClassDecorators.d.ts +11 -15
- package/build/esm/lib/CommandClassDecorators.d.ts.map +1 -1
- package/build/esm/lib/CommandClassDecorators.js +24 -24
- package/build/esm/lib/CommandClassDecorators.js.map +1 -1
- package/build/esm/lib/Security2/Extension.d.ts +1 -1
- package/build/esm/lib/Security2/Extension.d.ts.map +1 -1
- package/build/esm/lib/Security2/Extension.js +207 -123
- package/build/esm/lib/Security2/Extension.js.map +1 -1
- package/package.json +6 -6
|
@@ -1,10 +1,37 @@
|
|
|
1
|
-
var
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
+
var _, done = false;
|
|
7
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
+
var context = {};
|
|
9
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
+
if (kind === "accessor") {
|
|
14
|
+
if (result === void 0) continue;
|
|
15
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
+
}
|
|
20
|
+
else if (_ = accept(result)) {
|
|
21
|
+
if (kind === "field") initializers.unshift(_);
|
|
22
|
+
else descriptor[key] = _;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
+
done = true;
|
|
27
|
+
};
|
|
28
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
+
var useValue = arguments.length > 2;
|
|
30
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
+
}
|
|
33
|
+
return useValue ? value : void 0;
|
|
6
34
|
};
|
|
7
|
-
var IndicatorCCSet_1, IndicatorCCReport_1, IndicatorCCGet_1, IndicatorCCSupportedReport_1, IndicatorCCSupportedGet_1, IndicatorCCDescriptionReport_1, IndicatorCCDescriptionGet_1;
|
|
8
35
|
function __assertType(argName, typeName, boundHasError) {
|
|
9
36
|
const { ZWaveError, ZWaveErrorCodes } = require("@zwave-js/core");
|
|
10
37
|
if (boundHasError()) {
|
|
@@ -402,916 +429,1027 @@ function getIndicatorName(indicatorId) {
|
|
|
402
429
|
}
|
|
403
430
|
}
|
|
404
431
|
const MAX_INDICATOR_OBJECTS = 31;
|
|
405
|
-
let IndicatorCCAPI =
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
432
|
+
let IndicatorCCAPI = (() => {
|
|
433
|
+
let _classDecorators = [API(CommandClasses.Indicator)];
|
|
434
|
+
let _classDescriptor;
|
|
435
|
+
let _classExtraInitializers = [];
|
|
436
|
+
let _classThis;
|
|
437
|
+
let _classSuper = CCAPI;
|
|
438
|
+
var IndicatorCCAPI = class extends _classSuper {
|
|
439
|
+
static { _classThis = this; }
|
|
440
|
+
static {
|
|
441
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
442
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
443
|
+
IndicatorCCAPI = _classThis = _classDescriptor.value;
|
|
444
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
445
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
446
|
+
}
|
|
447
|
+
supportsCommand(cmd) {
|
|
448
|
+
switch (cmd) {
|
|
449
|
+
case IndicatorCommand.Get:
|
|
450
|
+
case IndicatorCommand.Report:
|
|
451
|
+
return this.isSinglecast();
|
|
452
|
+
case IndicatorCommand.Set:
|
|
453
|
+
return true; // This is mandatory
|
|
454
|
+
case IndicatorCommand.SupportedGet:
|
|
455
|
+
case IndicatorCommand.SupportedReport:
|
|
456
|
+
return this.version >= 2 && this.isSinglecast();
|
|
457
|
+
case IndicatorCommand.DescriptionGet:
|
|
458
|
+
case IndicatorCommand.DescriptionReport:
|
|
459
|
+
return this.version >= 4 && this.isSinglecast();
|
|
430
460
|
}
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
461
|
+
return super.supportsCommand(cmd);
|
|
462
|
+
}
|
|
463
|
+
get [SET_VALUE]() {
|
|
464
|
+
return async function ({ property, propertyKey }, value) {
|
|
465
|
+
if (property === "value") {
|
|
466
|
+
// V1 value
|
|
467
|
+
if (typeof value !== "number") {
|
|
468
|
+
throwWrongValueType(this.ccId, property, "number", typeof value);
|
|
469
|
+
}
|
|
470
|
+
return this.set(value);
|
|
439
471
|
}
|
|
440
|
-
|
|
441
|
-
{
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
472
|
+
else if (typeof property === "number"
|
|
473
|
+
&& typeof propertyKey === "number") {
|
|
474
|
+
const indicatorId = property;
|
|
475
|
+
const propertyId = propertyKey;
|
|
476
|
+
const expectedType = getIndicatorMetadata(indicatorId, propertyId).type;
|
|
477
|
+
// V2+ value
|
|
478
|
+
if (typeof value !== expectedType) {
|
|
479
|
+
throwWrongValueType(this.ccId, property, expectedType, typeof value);
|
|
480
|
+
}
|
|
481
|
+
return this.set([
|
|
482
|
+
{
|
|
483
|
+
indicatorId: property,
|
|
484
|
+
propertyId: propertyKey,
|
|
485
|
+
value: value,
|
|
486
|
+
},
|
|
487
|
+
]);
|
|
488
|
+
}
|
|
489
|
+
else if (property === "identify") {
|
|
490
|
+
if (typeof value !== "boolean") {
|
|
491
|
+
throwWrongValueType(this.ccId, property, "boolean", typeof value);
|
|
492
|
+
}
|
|
493
|
+
return this.identify();
|
|
494
|
+
}
|
|
495
|
+
else {
|
|
496
|
+
throwUnsupportedProperty(this.ccId, property);
|
|
497
|
+
}
|
|
498
|
+
};
|
|
499
|
+
}
|
|
500
|
+
get [POLL_VALUE]() {
|
|
501
|
+
return async function ({ property }) {
|
|
502
|
+
if (property === "value")
|
|
503
|
+
return this.get();
|
|
504
|
+
if (typeof property === "number") {
|
|
505
|
+
return this.get(property);
|
|
451
506
|
}
|
|
452
|
-
return this.identify();
|
|
453
|
-
}
|
|
454
|
-
else {
|
|
455
507
|
throwUnsupportedProperty(this.ccId, property);
|
|
508
|
+
};
|
|
509
|
+
}
|
|
510
|
+
async get(indicatorId) {
|
|
511
|
+
__assertType("indicatorId", "(optional) number", __assertType__optional_number.bind(void 0, indicatorId));
|
|
512
|
+
this.assertSupportsCommand(IndicatorCommand, IndicatorCommand.Get);
|
|
513
|
+
const cc = new IndicatorCCGet({
|
|
514
|
+
nodeId: this.endpoint.nodeId,
|
|
515
|
+
endpointIndex: this.endpoint.index,
|
|
516
|
+
indicatorId,
|
|
517
|
+
});
|
|
518
|
+
const response = await this.host.sendCommand(cc, this.commandOptions);
|
|
519
|
+
if (!response)
|
|
520
|
+
return;
|
|
521
|
+
if (response.values)
|
|
522
|
+
return response.values;
|
|
523
|
+
return response.indicator0Value;
|
|
524
|
+
}
|
|
525
|
+
async set(value) {
|
|
526
|
+
__assertType("value", undefined, __assertType__su__number_sa__5_ea_5_5_5_eu.bind(void 0, value));
|
|
527
|
+
this.assertSupportsCommand(IndicatorCommand, IndicatorCommand.Set);
|
|
528
|
+
if (this.version === 1 && typeof value !== "number") {
|
|
529
|
+
throw new ZWaveError(`Node ${this.endpoint
|
|
530
|
+
.nodeId} only supports IndicatorCC V1 which requires a single value to be set`, ZWaveErrorCodes.Argument_Invalid);
|
|
456
531
|
}
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
if (property === "value")
|
|
462
|
-
return this.get();
|
|
463
|
-
if (typeof property === "number") {
|
|
464
|
-
return this.get(property);
|
|
532
|
+
else if (this.version >= 2
|
|
533
|
+
&& isArray(value)
|
|
534
|
+
&& value.length > MAX_INDICATOR_OBJECTS) {
|
|
535
|
+
throw new ZWaveError(`Only ${MAX_INDICATOR_OBJECTS} indicator values can be set at a time!`, ZWaveErrorCodes.Argument_Invalid);
|
|
465
536
|
}
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
const cc = new IndicatorCCGet({
|
|
473
|
-
nodeId: this.endpoint.nodeId,
|
|
474
|
-
endpointIndex: this.endpoint.index,
|
|
475
|
-
indicatorId,
|
|
476
|
-
});
|
|
477
|
-
const response = await this.host.sendCommand(cc, this.commandOptions);
|
|
478
|
-
if (!response)
|
|
479
|
-
return;
|
|
480
|
-
if (response.values)
|
|
481
|
-
return response.values;
|
|
482
|
-
return response.indicator0Value;
|
|
483
|
-
}
|
|
484
|
-
async set(value) {
|
|
485
|
-
__assertType("value", undefined, __assertType__su__number_sa__5_ea_5_5_5_eu.bind(void 0, value));
|
|
486
|
-
this.assertSupportsCommand(IndicatorCommand, IndicatorCommand.Set);
|
|
487
|
-
if (this.version === 1 && typeof value !== "number") {
|
|
488
|
-
throw new ZWaveError(`Node ${this.endpoint
|
|
489
|
-
.nodeId} only supports IndicatorCC V1 which requires a single value to be set`, ZWaveErrorCodes.Argument_Invalid);
|
|
490
|
-
}
|
|
491
|
-
else if (this.version >= 2
|
|
492
|
-
&& isArray(value)
|
|
493
|
-
&& value.length > MAX_INDICATOR_OBJECTS) {
|
|
494
|
-
throw new ZWaveError(`Only ${MAX_INDICATOR_OBJECTS} indicator values can be set at a time!`, ZWaveErrorCodes.Argument_Invalid);
|
|
495
|
-
}
|
|
496
|
-
const cc = new IndicatorCCSet({
|
|
497
|
-
nodeId: this.endpoint.nodeId,
|
|
498
|
-
endpointIndex: this.endpoint.index,
|
|
499
|
-
...(typeof value === "number" ? { value } : { values: value }),
|
|
500
|
-
});
|
|
501
|
-
return this.host.sendCommand(cc, this.commandOptions);
|
|
502
|
-
}
|
|
503
|
-
async sendReport(options) {
|
|
504
|
-
__assertType("options", "IndicatorCCReportOptions", __assertType__IndicatorCCReportOptions.bind(void 0, options));
|
|
505
|
-
this.assertSupportsCommand(IndicatorCommand, IndicatorCommand.Report);
|
|
506
|
-
const cc = new IndicatorCCReport({
|
|
507
|
-
nodeId: this.endpoint.nodeId,
|
|
508
|
-
endpointIndex: this.endpoint.index,
|
|
509
|
-
...options,
|
|
510
|
-
});
|
|
511
|
-
await this.host.sendCommand(cc, this.commandOptions);
|
|
512
|
-
}
|
|
513
|
-
async getSupported(indicatorId) {
|
|
514
|
-
__assertType("indicatorId", "number", __assertType__number.bind(void 0, indicatorId));
|
|
515
|
-
this.assertSupportsCommand(IndicatorCommand, IndicatorCommand.SupportedGet);
|
|
516
|
-
const cc = new IndicatorCCSupportedGet({
|
|
517
|
-
nodeId: this.endpoint.nodeId,
|
|
518
|
-
endpointIndex: this.endpoint.index,
|
|
519
|
-
indicatorId,
|
|
520
|
-
});
|
|
521
|
-
const response = await this.host.sendCommand(cc, this.commandOptions);
|
|
522
|
-
if (response) {
|
|
523
|
-
return {
|
|
524
|
-
// Include the actual indicator ID if 0x00 was requested
|
|
525
|
-
...(indicatorId === 0x00
|
|
526
|
-
? { indicatorId: response.indicatorId }
|
|
527
|
-
: undefined),
|
|
528
|
-
supportedProperties: response.supportedProperties,
|
|
529
|
-
nextIndicatorId: response.nextIndicatorId,
|
|
530
|
-
};
|
|
537
|
+
const cc = new IndicatorCCSet({
|
|
538
|
+
nodeId: this.endpoint.nodeId,
|
|
539
|
+
endpointIndex: this.endpoint.index,
|
|
540
|
+
...(typeof value === "number" ? { value } : { values: value }),
|
|
541
|
+
});
|
|
542
|
+
return this.host.sendCommand(cc, this.commandOptions);
|
|
531
543
|
}
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
* Instructs the node to identify itself. Available starting with V3 of this CC.
|
|
561
|
-
*/
|
|
562
|
-
async identify() {
|
|
563
|
-
if (this.version < 3) {
|
|
564
|
-
throw new ZWaveError(`The identify command is only supported in Indicator CC version 3 and above`, ZWaveErrorCodes.CC_NotSupported);
|
|
565
|
-
}
|
|
566
|
-
return this.set([
|
|
567
|
-
{
|
|
568
|
-
indicatorId: 0x50,
|
|
569
|
-
propertyId: 0x03,
|
|
570
|
-
value: 0x08,
|
|
571
|
-
},
|
|
572
|
-
{
|
|
573
|
-
indicatorId: 0x50,
|
|
574
|
-
propertyId: 0x04,
|
|
575
|
-
value: 0x03,
|
|
576
|
-
},
|
|
577
|
-
{
|
|
578
|
-
indicatorId: 0x50,
|
|
579
|
-
propertyId: 0x05,
|
|
580
|
-
value: 0x06,
|
|
581
|
-
},
|
|
582
|
-
]);
|
|
583
|
-
}
|
|
584
|
-
/**
|
|
585
|
-
* Set a timeout for a given indicator ID after which the indicator will be turned off.
|
|
586
|
-
* @param timeout The timeout in one of the supported forms:
|
|
587
|
-
* - a timeout string in the form `12h18m17.59s`. All parts (hours, minutes, seconds, hundredths) are optional, but must be specified in this order. An empty string will be treated like `undefined`.
|
|
588
|
-
* - an object specifying the timeout parts. An empty object will be treated like `undefined`.
|
|
589
|
-
* - `undefined` to disable the timeout.
|
|
590
|
-
*/
|
|
591
|
-
async setTimeout(indicatorId, timeout) {
|
|
592
|
-
__assertType("indicatorId", "number", __assertType__number.bind(void 0, indicatorId));
|
|
593
|
-
__assertType("timeout", undefined, __assertType__su__undefined__string__3_eu.bind(void 0, timeout));
|
|
594
|
-
this.assertPhysicalEndpoint(this.endpoint);
|
|
595
|
-
if (this.version < 3) {
|
|
596
|
-
throw new ZWaveError(`The setTimeout command is only supported in Indicator CC version 3 and above`, ZWaveErrorCodes.CC_NotSupported);
|
|
597
|
-
}
|
|
598
|
-
if (typeof timeout === "string") {
|
|
599
|
-
if (timeout === "") {
|
|
600
|
-
timeout = undefined;
|
|
544
|
+
async sendReport(options) {
|
|
545
|
+
__assertType("options", "IndicatorCCReportOptions", __assertType__IndicatorCCReportOptions.bind(void 0, options));
|
|
546
|
+
this.assertSupportsCommand(IndicatorCommand, IndicatorCommand.Report);
|
|
547
|
+
const cc = new IndicatorCCReport({
|
|
548
|
+
nodeId: this.endpoint.nodeId,
|
|
549
|
+
endpointIndex: this.endpoint.index,
|
|
550
|
+
...options,
|
|
551
|
+
});
|
|
552
|
+
await this.host.sendCommand(cc, this.commandOptions);
|
|
553
|
+
}
|
|
554
|
+
async getSupported(indicatorId) {
|
|
555
|
+
__assertType("indicatorId", "number", __assertType__number.bind(void 0, indicatorId));
|
|
556
|
+
this.assertSupportsCommand(IndicatorCommand, IndicatorCommand.SupportedGet);
|
|
557
|
+
const cc = new IndicatorCCSupportedGet({
|
|
558
|
+
nodeId: this.endpoint.nodeId,
|
|
559
|
+
endpointIndex: this.endpoint.index,
|
|
560
|
+
indicatorId,
|
|
561
|
+
});
|
|
562
|
+
const response = await this.host.sendCommand(cc, this.commandOptions);
|
|
563
|
+
if (response) {
|
|
564
|
+
return {
|
|
565
|
+
// Include the actual indicator ID if 0x00 was requested
|
|
566
|
+
...(indicatorId === 0x00
|
|
567
|
+
? { indicatorId: response.indicatorId }
|
|
568
|
+
: undefined),
|
|
569
|
+
supportedProperties: response.supportedProperties,
|
|
570
|
+
nextIndicatorId: response.nextIndicatorId,
|
|
571
|
+
};
|
|
601
572
|
}
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
573
|
+
}
|
|
574
|
+
async reportSupported(indicatorId, supportedProperties, nextIndicatorId) {
|
|
575
|
+
__assertType("indicatorId", "number", __assertType__number.bind(void 0, indicatorId));
|
|
576
|
+
__assertType("supportedProperties", undefined, __assertType__sa__number_ea_2.bind(void 0, supportedProperties));
|
|
577
|
+
__assertType("nextIndicatorId", "number", __assertType__number.bind(void 0, nextIndicatorId));
|
|
578
|
+
this.assertSupportsCommand(IndicatorCommand, IndicatorCommand.SupportedReport);
|
|
579
|
+
const cc = new IndicatorCCSupportedReport({
|
|
580
|
+
nodeId: this.endpoint.nodeId,
|
|
581
|
+
endpointIndex: this.endpoint.index,
|
|
582
|
+
indicatorId,
|
|
583
|
+
supportedProperties,
|
|
584
|
+
nextIndicatorId,
|
|
585
|
+
});
|
|
586
|
+
await this.host.sendCommand(cc, this.commandOptions);
|
|
587
|
+
}
|
|
588
|
+
async reportDescription(indicatorId, description) {
|
|
589
|
+
__assertType("indicatorId", "number", __assertType__number.bind(void 0, indicatorId));
|
|
590
|
+
__assertType("description", "string", __assertType__string.bind(void 0, description));
|
|
591
|
+
this.assertSupportsCommand(IndicatorCommand, IndicatorCommand.DescriptionReport);
|
|
592
|
+
const cc = new IndicatorCCDescriptionReport({
|
|
593
|
+
nodeId: this.endpoint.nodeId,
|
|
594
|
+
endpointIndex: this.endpoint.index,
|
|
595
|
+
indicatorId,
|
|
596
|
+
description,
|
|
597
|
+
});
|
|
598
|
+
await this.host.sendCommand(cc, this.commandOptions);
|
|
599
|
+
}
|
|
600
|
+
/**
|
|
601
|
+
* Instructs the node to identify itself. Available starting with V3 of this CC.
|
|
602
|
+
*/
|
|
603
|
+
async identify() {
|
|
604
|
+
if (this.version < 3) {
|
|
605
|
+
throw new ZWaveError(`The identify command is only supported in Indicator CC version 3 and above`, ZWaveErrorCodes.CC_NotSupported);
|
|
608
606
|
}
|
|
607
|
+
return this.set([
|
|
608
|
+
{
|
|
609
|
+
indicatorId: 0x50,
|
|
610
|
+
propertyId: 0x03,
|
|
611
|
+
value: 0x08,
|
|
612
|
+
},
|
|
613
|
+
{
|
|
614
|
+
indicatorId: 0x50,
|
|
615
|
+
propertyId: 0x04,
|
|
616
|
+
value: 0x03,
|
|
617
|
+
},
|
|
618
|
+
{
|
|
619
|
+
indicatorId: 0x50,
|
|
620
|
+
propertyId: 0x05,
|
|
621
|
+
value: 0x06,
|
|
622
|
+
},
|
|
623
|
+
]);
|
|
609
624
|
}
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
propertyId: 0x0a,
|
|
624
|
-
value: hours,
|
|
625
|
-
});
|
|
625
|
+
/**
|
|
626
|
+
* Set a timeout for a given indicator ID after which the indicator will be turned off.
|
|
627
|
+
* @param timeout The timeout in one of the supported forms:
|
|
628
|
+
* - a timeout string in the form `12h18m17.59s`. All parts (hours, minutes, seconds, hundredths) are optional, but must be specified in this order. An empty string will be treated like `undefined`.
|
|
629
|
+
* - an object specifying the timeout parts. An empty object will be treated like `undefined`.
|
|
630
|
+
* - `undefined` to disable the timeout.
|
|
631
|
+
*/
|
|
632
|
+
async setTimeout(indicatorId, timeout) {
|
|
633
|
+
__assertType("indicatorId", "number", __assertType__number.bind(void 0, indicatorId));
|
|
634
|
+
__assertType("timeout", undefined, __assertType__su__undefined__string__3_eu.bind(void 0, timeout));
|
|
635
|
+
this.assertPhysicalEndpoint(this.endpoint);
|
|
636
|
+
if (this.version < 3) {
|
|
637
|
+
throw new ZWaveError(`The setTimeout command is only supported in Indicator CC version 3 and above`, ZWaveErrorCodes.CC_NotSupported);
|
|
626
638
|
}
|
|
627
|
-
if (
|
|
628
|
-
if (
|
|
629
|
-
|
|
639
|
+
if (typeof timeout === "string") {
|
|
640
|
+
if (timeout === "") {
|
|
641
|
+
timeout = undefined;
|
|
630
642
|
}
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
if (seconds) {
|
|
638
|
-
if (!supportedPropertyIDs?.includes(0x07)) {
|
|
639
|
-
throw new ZWaveError(`The indicator ${indicatorId} does not support setting the timeout in seconds`, ZWaveErrorCodes.Argument_Invalid);
|
|
643
|
+
else {
|
|
644
|
+
const parsed = parseIndicatorTimeoutString(timeout);
|
|
645
|
+
if (!parsed) {
|
|
646
|
+
throw new ZWaveError(`The timeout string "${timeout}" is not valid`, ZWaveErrorCodes.Argument_Invalid);
|
|
647
|
+
}
|
|
648
|
+
timeout = parsed;
|
|
640
649
|
}
|
|
641
|
-
objects.push({
|
|
642
|
-
indicatorId,
|
|
643
|
-
propertyId: 0x07,
|
|
644
|
-
value: seconds,
|
|
645
|
-
});
|
|
646
650
|
}
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
651
|
+
const supportedPropertyIDs = IndicatorCC.getSupportedPropertyIDsCached(this.host, this.endpoint, indicatorId);
|
|
652
|
+
const objects = [];
|
|
653
|
+
if (timeout) {
|
|
654
|
+
const hours = timeout.hours ?? 0;
|
|
655
|
+
const minutes = timeout.minutes ?? 0;
|
|
656
|
+
const seconds = Math.floor(timeout.seconds ?? 0);
|
|
657
|
+
const hundredths = Math.round(((timeout.seconds ?? 0) % 1) * 100);
|
|
658
|
+
if (hours) {
|
|
659
|
+
if (!supportedPropertyIDs?.includes(0x0a)) {
|
|
660
|
+
throw new ZWaveError(`The indicator ${indicatorId} does not support setting the timeout in hours`, ZWaveErrorCodes.Argument_Invalid);
|
|
661
|
+
}
|
|
662
|
+
objects.push({
|
|
663
|
+
indicatorId,
|
|
664
|
+
propertyId: 0x0a,
|
|
665
|
+
value: hours,
|
|
666
|
+
});
|
|
667
|
+
}
|
|
668
|
+
if (minutes) {
|
|
669
|
+
if (!supportedPropertyIDs?.includes(0x06)) {
|
|
670
|
+
throw new ZWaveError(`The indicator ${indicatorId} does not support setting the timeout in minutes`, ZWaveErrorCodes.Argument_Invalid);
|
|
671
|
+
}
|
|
672
|
+
objects.push({
|
|
673
|
+
indicatorId,
|
|
674
|
+
propertyId: 0x06,
|
|
675
|
+
value: minutes,
|
|
676
|
+
});
|
|
677
|
+
}
|
|
678
|
+
if (seconds) {
|
|
679
|
+
if (!supportedPropertyIDs?.includes(0x07)) {
|
|
680
|
+
throw new ZWaveError(`The indicator ${indicatorId} does not support setting the timeout in seconds`, ZWaveErrorCodes.Argument_Invalid);
|
|
681
|
+
}
|
|
682
|
+
objects.push({
|
|
683
|
+
indicatorId,
|
|
684
|
+
propertyId: 0x07,
|
|
685
|
+
value: seconds,
|
|
686
|
+
});
|
|
687
|
+
}
|
|
688
|
+
if (hundredths) {
|
|
689
|
+
if (!supportedPropertyIDs?.includes(0x08)) {
|
|
690
|
+
throw new ZWaveError(`The indicator ${indicatorId} does not support setting the timeout in 1/100 seconds`, ZWaveErrorCodes.Argument_Invalid);
|
|
691
|
+
}
|
|
692
|
+
objects.push({
|
|
693
|
+
indicatorId,
|
|
694
|
+
propertyId: 0x08,
|
|
695
|
+
value: hundredths,
|
|
696
|
+
});
|
|
650
697
|
}
|
|
651
|
-
|
|
698
|
+
}
|
|
699
|
+
if (!objects.length) {
|
|
700
|
+
objects.push(...(supportedPropertyIDs ?? []).map((p) => ({
|
|
652
701
|
indicatorId,
|
|
653
|
-
propertyId:
|
|
654
|
-
value:
|
|
655
|
-
});
|
|
702
|
+
propertyId: p,
|
|
703
|
+
value: 0,
|
|
704
|
+
})));
|
|
656
705
|
}
|
|
706
|
+
return this.set(objects);
|
|
707
|
+
}
|
|
708
|
+
/**
|
|
709
|
+
* Returns the timeout after which the given indicator will be turned off.
|
|
710
|
+
*/
|
|
711
|
+
async getTimeout(indicatorId) {
|
|
712
|
+
__assertType("indicatorId", "number", __assertType__number.bind(void 0, indicatorId));
|
|
713
|
+
const values = await this.get(indicatorId);
|
|
714
|
+
if (!isArray(values))
|
|
715
|
+
return;
|
|
716
|
+
return indicatorObjectsToTimeout(values);
|
|
657
717
|
}
|
|
658
|
-
|
|
659
|
-
|
|
718
|
+
async getDescription(indicatorId) {
|
|
719
|
+
__assertType("indicatorId", "number", __assertType__number.bind(void 0, indicatorId));
|
|
720
|
+
this.assertSupportsCommand(IndicatorCommand, IndicatorCommand.DescriptionGet);
|
|
721
|
+
const cc = new IndicatorCCDescriptionGet({
|
|
722
|
+
nodeId: this.endpoint.nodeId,
|
|
723
|
+
endpointIndex: this.endpoint.index,
|
|
660
724
|
indicatorId,
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
725
|
+
});
|
|
726
|
+
const response = await this.host.sendCommand(cc, this.commandOptions);
|
|
727
|
+
return response?.description;
|
|
664
728
|
}
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
* Returns the timeout after which the given indicator will be turned off.
|
|
669
|
-
*/
|
|
670
|
-
async getTimeout(indicatorId) {
|
|
671
|
-
__assertType("indicatorId", "number", __assertType__number.bind(void 0, indicatorId));
|
|
672
|
-
const values = await this.get(indicatorId);
|
|
673
|
-
if (!isArray(values))
|
|
674
|
-
return;
|
|
675
|
-
return indicatorObjectsToTimeout(values);
|
|
676
|
-
}
|
|
677
|
-
async getDescription(indicatorId) {
|
|
678
|
-
__assertType("indicatorId", "number", __assertType__number.bind(void 0, indicatorId));
|
|
679
|
-
this.assertSupportsCommand(IndicatorCommand, IndicatorCommand.DescriptionGet);
|
|
680
|
-
const cc = new IndicatorCCDescriptionGet({
|
|
681
|
-
nodeId: this.endpoint.nodeId,
|
|
682
|
-
endpointIndex: this.endpoint.index,
|
|
683
|
-
indicatorId,
|
|
684
|
-
});
|
|
685
|
-
const response = await this.host.sendCommand(cc, this.commandOptions);
|
|
686
|
-
return response?.description;
|
|
687
|
-
}
|
|
688
|
-
};
|
|
689
|
-
IndicatorCCAPI = __decorate([
|
|
690
|
-
API(CommandClasses.Indicator)
|
|
691
|
-
], IndicatorCCAPI);
|
|
729
|
+
};
|
|
730
|
+
return IndicatorCCAPI = _classThis;
|
|
731
|
+
})();
|
|
692
732
|
export { IndicatorCCAPI };
|
|
693
|
-
let IndicatorCC =
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
733
|
+
let IndicatorCC = (() => {
|
|
734
|
+
let _classDecorators = [commandClass(CommandClasses.Indicator), implementedVersion(4), ccValues(IndicatorCCValues)];
|
|
735
|
+
let _classDescriptor;
|
|
736
|
+
let _classExtraInitializers = [];
|
|
737
|
+
let _classThis;
|
|
738
|
+
let _classSuper = CommandClass;
|
|
739
|
+
var IndicatorCC = class extends _classSuper {
|
|
740
|
+
static { _classThis = this; }
|
|
741
|
+
static {
|
|
742
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
743
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
744
|
+
IndicatorCC = _classThis = _classDescriptor.value;
|
|
745
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
746
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
747
|
+
}
|
|
748
|
+
async interview(ctx) {
|
|
749
|
+
const node = this.getNode(ctx);
|
|
750
|
+
const endpoint = this.getEndpoint(ctx);
|
|
751
|
+
const api = CCAPI.create(CommandClasses.Indicator, ctx, endpoint).withOptions({
|
|
752
|
+
priority: MessagePriority.NodeQuery,
|
|
710
753
|
});
|
|
711
|
-
// Query ID 0 to get the first supported ID
|
|
712
|
-
let curId = 0x00;
|
|
713
|
-
const supportedIndicatorIds = [];
|
|
714
|
-
do {
|
|
715
|
-
const supportedResponse = await api.getSupported(curId);
|
|
716
|
-
if (!supportedResponse) {
|
|
717
|
-
ctx.logNode(node.id, {
|
|
718
|
-
endpoint: this.endpointIndex,
|
|
719
|
-
message: "Time out while scanning supported indicator IDs, skipping interview...",
|
|
720
|
-
level: "warn",
|
|
721
|
-
});
|
|
722
|
-
return;
|
|
723
|
-
}
|
|
724
|
-
supportedIndicatorIds.push(supportedResponse.indicatorId ?? curId);
|
|
725
|
-
curId = supportedResponse.nextIndicatorId;
|
|
726
|
-
} while (curId !== 0x00);
|
|
727
|
-
// The IDs are not stored by the report CCs so store them here once we have all of them
|
|
728
|
-
this.setValue(ctx, IndicatorCCValues.supportedIndicatorIds, supportedIndicatorIds);
|
|
729
|
-
const logMessage = `supported indicator IDs: ${supportedIndicatorIds.join(", ")}`;
|
|
730
754
|
ctx.logNode(node.id, {
|
|
731
755
|
endpoint: this.endpointIndex,
|
|
732
|
-
message:
|
|
733
|
-
direction: "
|
|
756
|
+
message: `Interviewing ${this.ccName}...`,
|
|
757
|
+
direction: "none",
|
|
734
758
|
});
|
|
735
|
-
if (api.version
|
|
736
|
-
|
|
737
|
-
.
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
759
|
+
if (api.version > 1) {
|
|
760
|
+
ctx.logNode(node.id, {
|
|
761
|
+
endpoint: this.endpointIndex,
|
|
762
|
+
message: "scanning supported indicator IDs...",
|
|
763
|
+
direction: "outbound",
|
|
764
|
+
});
|
|
765
|
+
// Query ID 0 to get the first supported ID
|
|
766
|
+
let curId = 0x00;
|
|
767
|
+
const supportedIndicatorIds = [];
|
|
768
|
+
do {
|
|
769
|
+
const supportedResponse = await api.getSupported(curId);
|
|
770
|
+
if (!supportedResponse) {
|
|
771
|
+
ctx.logNode(node.id, {
|
|
772
|
+
endpoint: this.endpointIndex,
|
|
773
|
+
message: "Time out while scanning supported indicator IDs, skipping interview...",
|
|
774
|
+
level: "warn",
|
|
775
|
+
});
|
|
776
|
+
return;
|
|
777
|
+
}
|
|
778
|
+
supportedIndicatorIds.push(supportedResponse.indicatorId ?? curId);
|
|
779
|
+
curId = supportedResponse.nextIndicatorId;
|
|
780
|
+
} while (curId !== 0x00);
|
|
781
|
+
// The IDs are not stored by the report CCs so store them here once we have all of them
|
|
782
|
+
this.setValue(ctx, IndicatorCCValues.supportedIndicatorIds, supportedIndicatorIds);
|
|
783
|
+
const logMessage = `supported indicator IDs: ${supportedIndicatorIds.join(", ")}`;
|
|
784
|
+
ctx.logNode(node.id, {
|
|
785
|
+
endpoint: this.endpointIndex,
|
|
786
|
+
message: logMessage,
|
|
787
|
+
direction: "inbound",
|
|
788
|
+
});
|
|
789
|
+
if (api.version >= 4) {
|
|
790
|
+
const manufacturerDefinedIndicatorIds = supportedIndicatorIds
|
|
791
|
+
.filter((id) => isManufacturerDefinedIndicator(id));
|
|
792
|
+
if (manufacturerDefinedIndicatorIds.length > 0) {
|
|
793
|
+
ctx.logNode(node.id, {
|
|
794
|
+
endpoint: this.endpointIndex,
|
|
795
|
+
message: "retrieving description for manufacturer-defined indicator IDs...",
|
|
796
|
+
direction: "outbound",
|
|
797
|
+
});
|
|
798
|
+
for (const id of manufacturerDefinedIndicatorIds) {
|
|
799
|
+
await api.getDescription(id);
|
|
800
|
+
}
|
|
746
801
|
}
|
|
747
802
|
}
|
|
748
803
|
}
|
|
804
|
+
// Query current values
|
|
805
|
+
await this.refreshValues(ctx);
|
|
806
|
+
// Remember that the interview is complete
|
|
807
|
+
this.setInterviewComplete(ctx, true);
|
|
749
808
|
}
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
async refreshValues(ctx) {
|
|
756
|
-
const node = this.getNode(ctx);
|
|
757
|
-
const endpoint = this.getEndpoint(ctx);
|
|
758
|
-
const api = CCAPI.create(CommandClasses.Indicator, ctx, endpoint).withOptions({
|
|
759
|
-
priority: MessagePriority.NodeQuery,
|
|
760
|
-
});
|
|
761
|
-
if (api.version === 1) {
|
|
762
|
-
ctx.logNode(node.id, {
|
|
763
|
-
endpoint: this.endpointIndex,
|
|
764
|
-
message: "requesting current indicator value...",
|
|
765
|
-
direction: "outbound",
|
|
809
|
+
async refreshValues(ctx) {
|
|
810
|
+
const node = this.getNode(ctx);
|
|
811
|
+
const endpoint = this.getEndpoint(ctx);
|
|
812
|
+
const api = CCAPI.create(CommandClasses.Indicator, ctx, endpoint).withOptions({
|
|
813
|
+
priority: MessagePriority.NodeQuery,
|
|
766
814
|
});
|
|
767
|
-
|
|
768
|
-
}
|
|
769
|
-
else {
|
|
770
|
-
const supportedIndicatorIds = this.getValue(ctx, IndicatorCCValues.supportedIndicatorIds) ?? [];
|
|
771
|
-
for (const indicatorId of supportedIndicatorIds) {
|
|
815
|
+
if (api.version === 1) {
|
|
772
816
|
ctx.logNode(node.id, {
|
|
773
817
|
endpoint: this.endpointIndex,
|
|
774
|
-
message:
|
|
818
|
+
message: "requesting current indicator value...",
|
|
775
819
|
direction: "outbound",
|
|
776
820
|
});
|
|
777
|
-
await api.get(
|
|
821
|
+
await api.get();
|
|
822
|
+
}
|
|
823
|
+
else {
|
|
824
|
+
const supportedIndicatorIds = this.getValue(ctx, IndicatorCCValues.supportedIndicatorIds) ?? [];
|
|
825
|
+
for (const indicatorId of supportedIndicatorIds) {
|
|
826
|
+
ctx.logNode(node.id, {
|
|
827
|
+
endpoint: this.endpointIndex,
|
|
828
|
+
message: `requesting current indicator value (id = ${num2hex(indicatorId)})...`,
|
|
829
|
+
direction: "outbound",
|
|
830
|
+
});
|
|
831
|
+
await api.get(indicatorId);
|
|
832
|
+
}
|
|
778
833
|
}
|
|
779
834
|
}
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
return super.translatePropertyKey(ctx, property, propertyKey);
|
|
794
|
-
}
|
|
795
|
-
translateProperty(ctx, property, propertyKey) {
|
|
796
|
-
if (typeof property === "number" && typeof propertyKey === "number") {
|
|
797
|
-
// The indicator corresponds to our property
|
|
798
|
-
if (property in Indicator)
|
|
799
|
-
return Indicator[property];
|
|
835
|
+
translatePropertyKey(ctx, property, propertyKey) {
|
|
836
|
+
if (property === "value") {
|
|
837
|
+
// CC version 1 only has a single value that doesn't need to be translated
|
|
838
|
+
return undefined;
|
|
839
|
+
}
|
|
840
|
+
else if (typeof property === "number"
|
|
841
|
+
&& typeof propertyKey === "number") {
|
|
842
|
+
// The indicator property is our property key
|
|
843
|
+
const prop = getIndicatorProperty(propertyKey);
|
|
844
|
+
if (prop)
|
|
845
|
+
return prop.label;
|
|
846
|
+
}
|
|
847
|
+
return super.translatePropertyKey(ctx, property, propertyKey);
|
|
800
848
|
}
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
return
|
|
808
|
-
// Then test if there are any property ids defined
|
|
809
|
-
return supportedIndicatorIds.some((indicatorId) => !!this.getValue(ctx, IndicatorCCValues.supportedPropertyIDs(indicatorId))?.length);
|
|
810
|
-
}
|
|
811
|
-
static getSupportedPropertyIDsCached(ctx, endpoint, indicatorId) {
|
|
812
|
-
return ctx
|
|
813
|
-
.getValueDB(endpoint.nodeId)
|
|
814
|
-
.getValue(IndicatorCCValues.supportedPropertyIDs(indicatorId).endpoint(endpoint.index));
|
|
815
|
-
}
|
|
816
|
-
};
|
|
817
|
-
IndicatorCC = __decorate([
|
|
818
|
-
commandClass(CommandClasses.Indicator),
|
|
819
|
-
implementedVersion(4),
|
|
820
|
-
ccValues(IndicatorCCValues)
|
|
821
|
-
], IndicatorCC);
|
|
822
|
-
export { IndicatorCC };
|
|
823
|
-
let IndicatorCCSet = IndicatorCCSet_1 = class IndicatorCCSet extends IndicatorCC {
|
|
824
|
-
constructor(options) {
|
|
825
|
-
super(options);
|
|
826
|
-
if ("value" in options) {
|
|
827
|
-
this.indicator0Value = options.value;
|
|
849
|
+
translateProperty(ctx, property, propertyKey) {
|
|
850
|
+
if (typeof property === "number" && typeof propertyKey === "number") {
|
|
851
|
+
// The indicator corresponds to our property
|
|
852
|
+
if (property in Indicator)
|
|
853
|
+
return Indicator[property];
|
|
854
|
+
}
|
|
855
|
+
return super.translateProperty(ctx, property, propertyKey);
|
|
828
856
|
}
|
|
829
|
-
|
|
830
|
-
|
|
857
|
+
supportsV2Indicators(ctx) {
|
|
858
|
+
// First test if there are any indicator ids defined
|
|
859
|
+
const supportedIndicatorIds = this.getValue(ctx, IndicatorCCValues.supportedIndicatorIds);
|
|
860
|
+
if (!supportedIndicatorIds?.length)
|
|
861
|
+
return false;
|
|
862
|
+
// Then test if there are any property ids defined
|
|
863
|
+
return supportedIndicatorIds.some((indicatorId) => !!this.getValue(ctx, IndicatorCCValues.supportedPropertyIDs(indicatorId))?.length);
|
|
831
864
|
}
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
? raw.payload[1] & 0b11111
|
|
837
|
-
: 0;
|
|
838
|
-
if (objCount === 0) {
|
|
839
|
-
const indicator0Value = raw.payload[0];
|
|
840
|
-
return new IndicatorCCSet_1({
|
|
841
|
-
nodeId: ctx.sourceNodeId,
|
|
842
|
-
value: indicator0Value,
|
|
843
|
-
});
|
|
865
|
+
static getSupportedPropertyIDsCached(ctx, endpoint, indicatorId) {
|
|
866
|
+
return ctx
|
|
867
|
+
.getValueDB(endpoint.nodeId)
|
|
868
|
+
.getValue(IndicatorCCValues.supportedPropertyIDs(indicatorId).endpoint(endpoint.index));
|
|
844
869
|
}
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
870
|
+
};
|
|
871
|
+
return IndicatorCC = _classThis;
|
|
872
|
+
})();
|
|
873
|
+
export { IndicatorCC };
|
|
874
|
+
let IndicatorCCSet = (() => {
|
|
875
|
+
let _classDecorators = [CCCommand(IndicatorCommand.Set), useSupervision()];
|
|
876
|
+
let _classDescriptor;
|
|
877
|
+
let _classExtraInitializers = [];
|
|
878
|
+
let _classThis;
|
|
879
|
+
let _classSuper = IndicatorCC;
|
|
880
|
+
var IndicatorCCSet = class extends _classSuper {
|
|
881
|
+
static { _classThis = this; }
|
|
882
|
+
static {
|
|
883
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
884
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
885
|
+
IndicatorCCSet = _classThis = _classDescriptor.value;
|
|
886
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
887
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
855
888
|
}
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
889
|
+
constructor(options) {
|
|
890
|
+
super(options);
|
|
891
|
+
if ("value" in options) {
|
|
892
|
+
this.indicator0Value = options.value;
|
|
893
|
+
}
|
|
894
|
+
else {
|
|
895
|
+
this.values = options.values;
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
static from(raw, ctx) {
|
|
899
|
+
validatePayload(raw.payload.length >= 1);
|
|
900
|
+
const objCount = raw.payload.length >= 2
|
|
901
|
+
? raw.payload[1] & 0b11111
|
|
902
|
+
: 0;
|
|
903
|
+
if (objCount === 0) {
|
|
904
|
+
const indicator0Value = raw.payload[0];
|
|
905
|
+
return new this({
|
|
906
|
+
nodeId: ctx.sourceNodeId,
|
|
907
|
+
value: indicator0Value,
|
|
908
|
+
});
|
|
909
|
+
}
|
|
910
|
+
validatePayload(raw.payload.length >= 2 + 3 * objCount);
|
|
911
|
+
const values = [];
|
|
870
912
|
for (let i = 0; i < objCount; i++) {
|
|
871
913
|
const offset = 2 + 3 * i;
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
? 0x00
|
|
879
|
-
: value;
|
|
914
|
+
const value = {
|
|
915
|
+
indicatorId: raw.payload[offset],
|
|
916
|
+
propertyId: raw.payload[offset + 1],
|
|
917
|
+
value: raw.payload[offset + 2],
|
|
918
|
+
};
|
|
919
|
+
values.push(value);
|
|
880
920
|
}
|
|
921
|
+
return new this({
|
|
922
|
+
nodeId: ctx.sourceNodeId,
|
|
923
|
+
values,
|
|
924
|
+
});
|
|
881
925
|
}
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
926
|
+
indicator0Value;
|
|
927
|
+
values;
|
|
928
|
+
serialize(ctx) {
|
|
929
|
+
if (this.values != undefined) {
|
|
930
|
+
// V2+
|
|
931
|
+
this.payload = Bytes.alloc(2 + 3 * this.values.length, 0);
|
|
932
|
+
// Byte 0 is the legacy value
|
|
933
|
+
const objCount = this.values.length & MAX_INDICATOR_OBJECTS;
|
|
934
|
+
this.payload[1] = objCount;
|
|
935
|
+
for (let i = 0; i < objCount; i++) {
|
|
936
|
+
const offset = 2 + 3 * i;
|
|
937
|
+
this.payload[offset] = this.values[i].indicatorId;
|
|
938
|
+
this.payload[offset + 1] = this.values[i].propertyId;
|
|
939
|
+
const value = this.values[i].value;
|
|
940
|
+
this.payload[offset + 2] = value === true
|
|
941
|
+
? 0xff
|
|
942
|
+
: value === false
|
|
943
|
+
? 0x00
|
|
944
|
+
: value;
|
|
945
|
+
}
|
|
946
|
+
}
|
|
947
|
+
else {
|
|
948
|
+
// V1
|
|
949
|
+
this.payload = Bytes.from([this.indicator0Value ?? 0]);
|
|
950
|
+
}
|
|
951
|
+
return super.serialize(ctx);
|
|
885
952
|
}
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
message.values = `${this.values
|
|
895
|
-
.map((v) => `
|
|
953
|
+
toLogEntry(ctx) {
|
|
954
|
+
const message = {};
|
|
955
|
+
if (this.indicator0Value != undefined) {
|
|
956
|
+
message["indicator 0 value"] = this.indicator0Value;
|
|
957
|
+
}
|
|
958
|
+
if (this.values != undefined) {
|
|
959
|
+
message.values = `${this.values
|
|
960
|
+
.map((v) => `
|
|
896
961
|
· indicatorId: ${v.indicatorId}
|
|
897
962
|
propertyId: ${v.propertyId}
|
|
898
963
|
value: ${v.value}`)
|
|
899
|
-
|
|
964
|
+
.join("")}`;
|
|
965
|
+
}
|
|
966
|
+
return {
|
|
967
|
+
...super.toLogEntry(ctx),
|
|
968
|
+
message,
|
|
969
|
+
};
|
|
900
970
|
}
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
};
|
|
905
|
-
}
|
|
906
|
-
};
|
|
907
|
-
IndicatorCCSet = IndicatorCCSet_1 = __decorate([
|
|
908
|
-
CCCommand(IndicatorCommand.Set),
|
|
909
|
-
useSupervision()
|
|
910
|
-
], IndicatorCCSet);
|
|
971
|
+
};
|
|
972
|
+
return IndicatorCCSet = _classThis;
|
|
973
|
+
})();
|
|
911
974
|
export { IndicatorCCSet };
|
|
912
|
-
let IndicatorCCReport =
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
975
|
+
let IndicatorCCReport = (() => {
|
|
976
|
+
let _classDecorators = [CCCommand(IndicatorCommand.Report)];
|
|
977
|
+
let _classDescriptor;
|
|
978
|
+
let _classExtraInitializers = [];
|
|
979
|
+
let _classThis;
|
|
980
|
+
let _classSuper = IndicatorCC;
|
|
981
|
+
var IndicatorCCReport = class extends _classSuper {
|
|
982
|
+
static { _classThis = this; }
|
|
983
|
+
static {
|
|
984
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
985
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
986
|
+
IndicatorCCReport = _classThis = _classDescriptor.value;
|
|
987
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
988
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
989
|
+
}
|
|
990
|
+
constructor(options) {
|
|
991
|
+
super(options);
|
|
992
|
+
if ("value" in options) {
|
|
993
|
+
this.indicator0Value = options.value;
|
|
994
|
+
}
|
|
995
|
+
else if ("values" in options) {
|
|
996
|
+
if (options.values.length > MAX_INDICATOR_OBJECTS) {
|
|
997
|
+
throw new ZWaveError(`Only ${MAX_INDICATOR_OBJECTS} indicator values can be set at a time!`, ZWaveErrorCodes.Argument_Invalid);
|
|
998
|
+
}
|
|
999
|
+
this.values = options.values;
|
|
921
1000
|
}
|
|
922
|
-
this.values = options.values;
|
|
923
1001
|
}
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
1002
|
+
static from(raw, ctx) {
|
|
1003
|
+
validatePayload(raw.payload.length >= 1);
|
|
1004
|
+
const objCount = raw.payload.length >= 2
|
|
1005
|
+
? raw.payload[1] & 0b11111
|
|
1006
|
+
: 0;
|
|
1007
|
+
if (objCount === 0) {
|
|
1008
|
+
const indicator0Value = raw.payload[0];
|
|
1009
|
+
return new this({
|
|
1010
|
+
nodeId: ctx.sourceNodeId,
|
|
1011
|
+
value: indicator0Value,
|
|
1012
|
+
});
|
|
1013
|
+
}
|
|
1014
|
+
validatePayload(raw.payload.length >= 2 + 3 * objCount);
|
|
1015
|
+
const values = [];
|
|
1016
|
+
for (let i = 0; i < objCount; i++) {
|
|
1017
|
+
const offset = 2 + 3 * i;
|
|
1018
|
+
const value = {
|
|
1019
|
+
indicatorId: raw.payload[offset],
|
|
1020
|
+
propertyId: raw.payload[offset + 1],
|
|
1021
|
+
value: raw.payload[offset + 2],
|
|
1022
|
+
};
|
|
1023
|
+
values.push(value);
|
|
1024
|
+
}
|
|
1025
|
+
return new this({
|
|
933
1026
|
nodeId: ctx.sourceNodeId,
|
|
934
|
-
|
|
1027
|
+
values,
|
|
935
1028
|
});
|
|
1029
|
+
// TODO: Think if we want this:
|
|
1030
|
+
// // If not all Property IDs are included in the command for the actual Indicator ID,
|
|
1031
|
+
// // a controlling node MUST assume non-specified Property IDs values to be 0x00.
|
|
1032
|
+
// const indicatorId = this.values[0].indicatorId;
|
|
1033
|
+
// const supportedIndicatorProperties =
|
|
1034
|
+
// valueDB.getValue<number[]>(
|
|
1035
|
+
// getSupportedPropertyIDsValueID(
|
|
1036
|
+
// this.endpointIndex,
|
|
1037
|
+
// indicatorId,
|
|
1038
|
+
// ),
|
|
1039
|
+
// ) ?? [];
|
|
1040
|
+
// // Find out which ones are missing
|
|
1041
|
+
// const missingIndicatorProperties = supportedIndicatorProperties.filter(
|
|
1042
|
+
// prop =>
|
|
1043
|
+
// !this.values!.find(({ propertyId }) => prop === propertyId),
|
|
1044
|
+
// );
|
|
1045
|
+
// // And assume they are 0 (false)
|
|
1046
|
+
// for (const missing of missingIndicatorProperties) {
|
|
1047
|
+
// this.setIndicatorValue({
|
|
1048
|
+
// indicatorId,
|
|
1049
|
+
// propertyId: missing,
|
|
1050
|
+
// value: 0,
|
|
1051
|
+
// });
|
|
1052
|
+
// }
|
|
936
1053
|
}
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
// valueDB.getValue<number[]>(
|
|
958
|
-
// getSupportedPropertyIDsValueID(
|
|
959
|
-
// this.endpointIndex,
|
|
960
|
-
// indicatorId,
|
|
961
|
-
// ),
|
|
962
|
-
// ) ?? [];
|
|
963
|
-
// // Find out which ones are missing
|
|
964
|
-
// const missingIndicatorProperties = supportedIndicatorProperties.filter(
|
|
965
|
-
// prop =>
|
|
966
|
-
// !this.values!.find(({ propertyId }) => prop === propertyId),
|
|
967
|
-
// );
|
|
968
|
-
// // And assume they are 0 (false)
|
|
969
|
-
// for (const missing of missingIndicatorProperties) {
|
|
970
|
-
// this.setIndicatorValue({
|
|
971
|
-
// indicatorId,
|
|
972
|
-
// propertyId: missing,
|
|
973
|
-
// value: 0,
|
|
974
|
-
// });
|
|
975
|
-
// }
|
|
976
|
-
}
|
|
977
|
-
persistValues(ctx) {
|
|
978
|
-
if (!super.persistValues(ctx))
|
|
979
|
-
return false;
|
|
980
|
-
if (this.indicator0Value != undefined) {
|
|
981
|
-
if (!this.supportsV2Indicators(ctx)) {
|
|
982
|
-
// Publish the value
|
|
983
|
-
const valueV1 = IndicatorCCValues.valueV1;
|
|
984
|
-
this.setMetadata(ctx, valueV1);
|
|
985
|
-
this.setValue(ctx, valueV1, this.indicator0Value);
|
|
1054
|
+
persistValues(ctx) {
|
|
1055
|
+
if (!super.persistValues(ctx))
|
|
1056
|
+
return false;
|
|
1057
|
+
if (this.indicator0Value != undefined) {
|
|
1058
|
+
if (!this.supportsV2Indicators(ctx)) {
|
|
1059
|
+
// Publish the value
|
|
1060
|
+
const valueV1 = IndicatorCCValues.valueV1;
|
|
1061
|
+
this.setMetadata(ctx, valueV1);
|
|
1062
|
+
this.setValue(ctx, valueV1, this.indicator0Value);
|
|
1063
|
+
}
|
|
1064
|
+
else {
|
|
1065
|
+
if (this.isSinglecast()) {
|
|
1066
|
+
// Don't!
|
|
1067
|
+
ctx.logNode(this.nodeId, {
|
|
1068
|
+
message: `ignoring V1 indicator report because the node supports V2 indicators`,
|
|
1069
|
+
direction: "none",
|
|
1070
|
+
endpoint: this.endpointIndex,
|
|
1071
|
+
});
|
|
1072
|
+
}
|
|
1073
|
+
}
|
|
986
1074
|
}
|
|
987
|
-
else {
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
1075
|
+
else if (this.values) {
|
|
1076
|
+
// Store the simple values first
|
|
1077
|
+
for (const value of this.values) {
|
|
1078
|
+
this.setIndicatorValue(ctx, value);
|
|
1079
|
+
}
|
|
1080
|
+
// Then group values into the convenience properties
|
|
1081
|
+
// ... timeout
|
|
1082
|
+
const timeout = indicatorObjectsToTimeout(this.values);
|
|
1083
|
+
if (timeout) {
|
|
1084
|
+
let timeoutString = "";
|
|
1085
|
+
if (timeout?.hours)
|
|
1086
|
+
timeoutString += `${timeout.hours}h`;
|
|
1087
|
+
if (timeout?.minutes)
|
|
1088
|
+
timeoutString += `${timeout.minutes}m`;
|
|
1089
|
+
if (timeout?.seconds)
|
|
1090
|
+
timeoutString += `${timeout.seconds}s`;
|
|
1091
|
+
this.setValue(ctx, IndicatorCCValues.timeout, timeoutString);
|
|
995
1092
|
}
|
|
996
1093
|
}
|
|
1094
|
+
return true;
|
|
997
1095
|
}
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
const
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
timeoutString += `${timeout.hours}h`;
|
|
1010
|
-
if (timeout?.minutes)
|
|
1011
|
-
timeoutString += `${timeout.minutes}m`;
|
|
1012
|
-
if (timeout?.seconds)
|
|
1013
|
-
timeoutString += `${timeout.seconds}s`;
|
|
1014
|
-
this.setValue(ctx, IndicatorCCValues.timeout, timeoutString);
|
|
1096
|
+
indicator0Value;
|
|
1097
|
+
values;
|
|
1098
|
+
setIndicatorValue(ctx, value) {
|
|
1099
|
+
// Manufacturer-defined indicators may need a custom label
|
|
1100
|
+
const overrideIndicatorLabel = isManufacturerDefinedIndicator(value.indicatorId)
|
|
1101
|
+
? this.getValue(ctx, IndicatorCCValues.indicatorDescription(value.indicatorId))
|
|
1102
|
+
: undefined;
|
|
1103
|
+
const metadata = getIndicatorMetadata(value.indicatorId, value.propertyId, overrideIndicatorLabel);
|
|
1104
|
+
// Some values need to be converted
|
|
1105
|
+
if (metadata.type === "boolean") {
|
|
1106
|
+
value.value = !!value.value;
|
|
1015
1107
|
}
|
|
1108
|
+
// Publish the value
|
|
1109
|
+
const valueV2 = IndicatorCCValues.valueV2(value.indicatorId, value.propertyId);
|
|
1110
|
+
this.setMetadata(ctx, valueV2, metadata);
|
|
1111
|
+
this.setValue(ctx, valueV2, value.value);
|
|
1016
1112
|
}
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
}
|
|
1036
|
-
serialize(ctx) {
|
|
1037
|
-
if (this.values != undefined) {
|
|
1038
|
-
// V2+
|
|
1039
|
-
this.payload = Bytes.alloc(2 + 3 * this.values.length, 0);
|
|
1040
|
-
// Byte 0 is the legacy value
|
|
1041
|
-
const objCount = this.values.length & MAX_INDICATOR_OBJECTS;
|
|
1042
|
-
this.payload[1] = objCount;
|
|
1043
|
-
for (let i = 0; i < objCount; i++) {
|
|
1044
|
-
const offset = 2 + 3 * i;
|
|
1045
|
-
this.payload[offset] = this.values[i].indicatorId;
|
|
1046
|
-
this.payload[offset + 1] = this.values[i].propertyId;
|
|
1047
|
-
const value = this.values[i].value;
|
|
1048
|
-
this.payload[offset + 2] = value === true
|
|
1049
|
-
? 0xff
|
|
1050
|
-
: value === false
|
|
1051
|
-
? 0x00
|
|
1052
|
-
: value;
|
|
1113
|
+
serialize(ctx) {
|
|
1114
|
+
if (this.values != undefined) {
|
|
1115
|
+
// V2+
|
|
1116
|
+
this.payload = Bytes.alloc(2 + 3 * this.values.length, 0);
|
|
1117
|
+
// Byte 0 is the legacy value
|
|
1118
|
+
const objCount = this.values.length & MAX_INDICATOR_OBJECTS;
|
|
1119
|
+
this.payload[1] = objCount;
|
|
1120
|
+
for (let i = 0; i < objCount; i++) {
|
|
1121
|
+
const offset = 2 + 3 * i;
|
|
1122
|
+
this.payload[offset] = this.values[i].indicatorId;
|
|
1123
|
+
this.payload[offset + 1] = this.values[i].propertyId;
|
|
1124
|
+
const value = this.values[i].value;
|
|
1125
|
+
this.payload[offset + 2] = value === true
|
|
1126
|
+
? 0xff
|
|
1127
|
+
: value === false
|
|
1128
|
+
? 0x00
|
|
1129
|
+
: value;
|
|
1130
|
+
}
|
|
1053
1131
|
}
|
|
1132
|
+
else {
|
|
1133
|
+
// V1
|
|
1134
|
+
this.payload = Bytes.from([this.indicator0Value ?? 0]);
|
|
1135
|
+
}
|
|
1136
|
+
return super.serialize(ctx);
|
|
1054
1137
|
}
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
if (this.indicator0Value != undefined) {
|
|
1064
|
-
message["indicator 0 value"] = this.indicator0Value;
|
|
1065
|
-
}
|
|
1066
|
-
if (this.values != undefined) {
|
|
1067
|
-
message.values = `${this.values
|
|
1068
|
-
.map((v) => `
|
|
1138
|
+
toLogEntry(ctx) {
|
|
1139
|
+
const message = {};
|
|
1140
|
+
if (this.indicator0Value != undefined) {
|
|
1141
|
+
message["indicator 0 value"] = this.indicator0Value;
|
|
1142
|
+
}
|
|
1143
|
+
if (this.values != undefined) {
|
|
1144
|
+
message.values = `${this.values
|
|
1145
|
+
.map((v) => `
|
|
1069
1146
|
· indicatorId: ${v.indicatorId}
|
|
1070
1147
|
propertyId: ${v.propertyId}
|
|
1071
1148
|
value: ${v.value}`)
|
|
1072
|
-
|
|
1149
|
+
.join("")}`;
|
|
1150
|
+
}
|
|
1151
|
+
return {
|
|
1152
|
+
...super.toLogEntry(ctx),
|
|
1153
|
+
message,
|
|
1154
|
+
};
|
|
1073
1155
|
}
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
};
|
|
1078
|
-
}
|
|
1079
|
-
};
|
|
1080
|
-
IndicatorCCReport = IndicatorCCReport_1 = __decorate([
|
|
1081
|
-
CCCommand(IndicatorCommand.Report)
|
|
1082
|
-
], IndicatorCCReport);
|
|
1156
|
+
};
|
|
1157
|
+
return IndicatorCCReport = _classThis;
|
|
1158
|
+
})();
|
|
1083
1159
|
export { IndicatorCCReport };
|
|
1084
|
-
let IndicatorCCGet =
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
}
|
|
1099
|
-
indicatorId;
|
|
1100
|
-
serialize(ctx) {
|
|
1101
|
-
if (this.indicatorId != undefined) {
|
|
1102
|
-
this.payload = Bytes.from([this.indicatorId]);
|
|
1160
|
+
let IndicatorCCGet = (() => {
|
|
1161
|
+
let _classDecorators = [CCCommand(IndicatorCommand.Get), expectedCCResponse(IndicatorCCReport)];
|
|
1162
|
+
let _classDescriptor;
|
|
1163
|
+
let _classExtraInitializers = [];
|
|
1164
|
+
let _classThis;
|
|
1165
|
+
let _classSuper = IndicatorCC;
|
|
1166
|
+
var IndicatorCCGet = class extends _classSuper {
|
|
1167
|
+
static { _classThis = this; }
|
|
1168
|
+
static {
|
|
1169
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
1170
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
1171
|
+
IndicatorCCGet = _classThis = _classDescriptor.value;
|
|
1172
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
1173
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
1103
1174
|
}
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1175
|
+
constructor(options) {
|
|
1176
|
+
super(options);
|
|
1177
|
+
this.indicatorId = options.indicatorId;
|
|
1178
|
+
}
|
|
1179
|
+
static from(raw, ctx) {
|
|
1180
|
+
let indicatorId;
|
|
1181
|
+
if (raw.payload.length > 0) {
|
|
1182
|
+
indicatorId = raw.payload[0];
|
|
1183
|
+
}
|
|
1184
|
+
return new this({
|
|
1185
|
+
nodeId: ctx.sourceNodeId,
|
|
1186
|
+
indicatorId,
|
|
1187
|
+
});
|
|
1188
|
+
}
|
|
1189
|
+
indicatorId;
|
|
1190
|
+
serialize(ctx) {
|
|
1191
|
+
if (this.indicatorId != undefined) {
|
|
1192
|
+
this.payload = Bytes.from([this.indicatorId]);
|
|
1193
|
+
}
|
|
1194
|
+
return super.serialize(ctx);
|
|
1195
|
+
}
|
|
1196
|
+
toLogEntry(ctx) {
|
|
1197
|
+
return {
|
|
1198
|
+
...super.toLogEntry(ctx),
|
|
1199
|
+
message: {
|
|
1200
|
+
indicator: getIndicatorName(this.indicatorId),
|
|
1201
|
+
},
|
|
1202
|
+
};
|
|
1203
|
+
}
|
|
1204
|
+
};
|
|
1205
|
+
return IndicatorCCGet = _classThis;
|
|
1206
|
+
})();
|
|
1119
1207
|
export { IndicatorCCGet };
|
|
1120
|
-
let IndicatorCCSupportedReport =
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
supportedProperties = [];
|
|
1208
|
+
let IndicatorCCSupportedReport = (() => {
|
|
1209
|
+
let _classDecorators = [CCCommand(IndicatorCommand.SupportedReport)];
|
|
1210
|
+
let _classDescriptor;
|
|
1211
|
+
let _classExtraInitializers = [];
|
|
1212
|
+
let _classThis;
|
|
1213
|
+
let _classSuper = IndicatorCC;
|
|
1214
|
+
var IndicatorCCSupportedReport = class extends _classSuper {
|
|
1215
|
+
static { _classThis = this; }
|
|
1216
|
+
static {
|
|
1217
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
1218
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
1219
|
+
IndicatorCCSupportedReport = _classThis = _classDescriptor.value;
|
|
1220
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
1221
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
1135
1222
|
}
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
.
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1223
|
+
constructor(options) {
|
|
1224
|
+
super(options);
|
|
1225
|
+
this.indicatorId = options.indicatorId;
|
|
1226
|
+
this.nextIndicatorId = options.nextIndicatorId;
|
|
1227
|
+
this.supportedProperties = options.supportedProperties;
|
|
1228
|
+
}
|
|
1229
|
+
static from(raw, ctx) {
|
|
1230
|
+
validatePayload(raw.payload.length >= 3);
|
|
1231
|
+
const indicatorId = raw.payload[0];
|
|
1232
|
+
const nextIndicatorId = raw.payload[1];
|
|
1233
|
+
const bitMaskLength = raw.payload[2] & 0b11111;
|
|
1234
|
+
let supportedProperties;
|
|
1235
|
+
if (bitMaskLength === 0) {
|
|
1236
|
+
supportedProperties = [];
|
|
1237
|
+
}
|
|
1238
|
+
else {
|
|
1239
|
+
validatePayload(raw.payload.length >= 3 + bitMaskLength);
|
|
1240
|
+
// The bit mask starts at 0, but bit 0 is not used
|
|
1241
|
+
supportedProperties = parseBitMask(raw.payload.subarray(3, 3 + bitMaskLength), 0).filter((v) => v !== 0);
|
|
1242
|
+
}
|
|
1243
|
+
return new this({
|
|
1244
|
+
nodeId: ctx.sourceNodeId,
|
|
1245
|
+
indicatorId,
|
|
1246
|
+
nextIndicatorId,
|
|
1247
|
+
supportedProperties,
|
|
1248
|
+
});
|
|
1249
|
+
}
|
|
1250
|
+
persistValues(ctx) {
|
|
1251
|
+
if (!super.persistValues(ctx))
|
|
1252
|
+
return false;
|
|
1253
|
+
if (this.indicatorId !== 0x00) {
|
|
1254
|
+
// Remember which property IDs are supported
|
|
1255
|
+
this.setValue(ctx, IndicatorCCValues.supportedPropertyIDs(this.indicatorId), this.supportedProperties);
|
|
1256
|
+
}
|
|
1257
|
+
return true;
|
|
1258
|
+
}
|
|
1259
|
+
indicatorId;
|
|
1260
|
+
nextIndicatorId;
|
|
1261
|
+
supportedProperties;
|
|
1262
|
+
serialize(ctx) {
|
|
1263
|
+
const bitmask = this.supportedProperties.length > 0
|
|
1264
|
+
? encodeBitMask(this.supportedProperties, undefined, 0)
|
|
1265
|
+
: new Bytes();
|
|
1266
|
+
this.payload = Bytes.concat([
|
|
1267
|
+
Bytes.from([
|
|
1268
|
+
this.indicatorId,
|
|
1269
|
+
this.nextIndicatorId,
|
|
1270
|
+
bitmask.length,
|
|
1271
|
+
]),
|
|
1272
|
+
bitmask,
|
|
1273
|
+
]);
|
|
1274
|
+
return super.serialize(ctx);
|
|
1275
|
+
}
|
|
1276
|
+
toLogEntry(ctx) {
|
|
1277
|
+
return {
|
|
1278
|
+
...super.toLogEntry(ctx),
|
|
1279
|
+
message: {
|
|
1280
|
+
indicator: getIndicatorName(this.indicatorId),
|
|
1281
|
+
"supported properties": `${this.supportedProperties
|
|
1282
|
+
.map((id) => getIndicatorProperty(id)?.label
|
|
1283
|
+
?? `Unknown (${num2hex(id)})`)
|
|
1284
|
+
.join(", ")}`,
|
|
1285
|
+
"next indicator": getIndicatorName(this.nextIndicatorId),
|
|
1286
|
+
},
|
|
1287
|
+
};
|
|
1288
|
+
}
|
|
1289
|
+
};
|
|
1290
|
+
return IndicatorCCSupportedReport = _classThis;
|
|
1291
|
+
})();
|
|
1191
1292
|
export { IndicatorCCSupportedReport };
|
|
1192
1293
|
function testResponseForIndicatorSupportedGet(sent, received) {
|
|
1193
1294
|
return sent.indicatorId === 0 || received.indicatorId === sent.indicatorId;
|
|
1194
1295
|
}
|
|
1195
|
-
let IndicatorCCSupportedGet =
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
}
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1296
|
+
let IndicatorCCSupportedGet = (() => {
|
|
1297
|
+
let _classDecorators = [CCCommand(IndicatorCommand.SupportedGet), expectedCCResponse(IndicatorCCSupportedReport, testResponseForIndicatorSupportedGet)];
|
|
1298
|
+
let _classDescriptor;
|
|
1299
|
+
let _classExtraInitializers = [];
|
|
1300
|
+
let _classThis;
|
|
1301
|
+
let _classSuper = IndicatorCC;
|
|
1302
|
+
var IndicatorCCSupportedGet = class extends _classSuper {
|
|
1303
|
+
static { _classThis = this; }
|
|
1304
|
+
static {
|
|
1305
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
1306
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
1307
|
+
IndicatorCCSupportedGet = _classThis = _classDescriptor.value;
|
|
1308
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
1309
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
1310
|
+
}
|
|
1311
|
+
constructor(options) {
|
|
1312
|
+
super(options);
|
|
1313
|
+
this.indicatorId = options.indicatorId;
|
|
1314
|
+
}
|
|
1315
|
+
static from(raw, ctx) {
|
|
1316
|
+
validatePayload(raw.payload.length >= 1);
|
|
1317
|
+
const indicatorId = raw.payload[0];
|
|
1318
|
+
return new this({
|
|
1319
|
+
nodeId: ctx.sourceNodeId,
|
|
1320
|
+
indicatorId,
|
|
1321
|
+
});
|
|
1322
|
+
}
|
|
1323
|
+
indicatorId;
|
|
1324
|
+
serialize(ctx) {
|
|
1325
|
+
this.payload = Bytes.from([this.indicatorId]);
|
|
1326
|
+
return super.serialize(ctx);
|
|
1327
|
+
}
|
|
1328
|
+
toLogEntry(ctx) {
|
|
1329
|
+
return {
|
|
1330
|
+
...super.toLogEntry(ctx),
|
|
1331
|
+
message: {
|
|
1332
|
+
indicator: getIndicatorName(this.indicatorId),
|
|
1333
|
+
},
|
|
1334
|
+
};
|
|
1335
|
+
}
|
|
1336
|
+
};
|
|
1337
|
+
return IndicatorCCSupportedGet = _classThis;
|
|
1338
|
+
})();
|
|
1226
1339
|
export { IndicatorCCSupportedGet };
|
|
1227
|
-
let IndicatorCCDescriptionReport =
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
.
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1340
|
+
let IndicatorCCDescriptionReport = (() => {
|
|
1341
|
+
let _classDecorators = [CCCommand(IndicatorCommand.DescriptionReport)];
|
|
1342
|
+
let _classDescriptor;
|
|
1343
|
+
let _classExtraInitializers = [];
|
|
1344
|
+
let _classThis;
|
|
1345
|
+
let _classSuper = IndicatorCC;
|
|
1346
|
+
var IndicatorCCDescriptionReport = class extends _classSuper {
|
|
1347
|
+
static { _classThis = this; }
|
|
1348
|
+
static {
|
|
1349
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
1350
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
1351
|
+
IndicatorCCDescriptionReport = _classThis = _classDescriptor.value;
|
|
1352
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
1353
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
1354
|
+
}
|
|
1355
|
+
constructor(options) {
|
|
1356
|
+
super(options);
|
|
1357
|
+
this.indicatorId = options.indicatorId;
|
|
1358
|
+
this.description = options.description;
|
|
1359
|
+
}
|
|
1360
|
+
static from(raw, ctx) {
|
|
1361
|
+
validatePayload(raw.payload.length >= 2);
|
|
1362
|
+
const indicatorId = raw.payload[0];
|
|
1363
|
+
const descrptionLength = raw.payload[1];
|
|
1364
|
+
validatePayload(raw.payload.length >= 2 + descrptionLength);
|
|
1365
|
+
const description = raw.payload
|
|
1366
|
+
.subarray(2, 2 + descrptionLength)
|
|
1367
|
+
.toString("utf8");
|
|
1368
|
+
return new this({
|
|
1369
|
+
nodeId: ctx.sourceNodeId,
|
|
1370
|
+
indicatorId,
|
|
1371
|
+
description,
|
|
1372
|
+
});
|
|
1373
|
+
}
|
|
1374
|
+
indicatorId;
|
|
1375
|
+
description;
|
|
1376
|
+
persistValues(ctx) {
|
|
1377
|
+
if (!super.persistValues(ctx))
|
|
1378
|
+
return false;
|
|
1379
|
+
if (this.description) {
|
|
1380
|
+
this.setValue(ctx, IndicatorCCValues.indicatorDescription(this.indicatorId), this.description);
|
|
1381
|
+
}
|
|
1382
|
+
return true;
|
|
1383
|
+
}
|
|
1384
|
+
serialize(ctx) {
|
|
1385
|
+
const description = Bytes.from(this.description, "utf8");
|
|
1386
|
+
this.payload = Bytes.concat([
|
|
1387
|
+
Bytes.from([this.indicatorId, description.length]),
|
|
1388
|
+
description,
|
|
1389
|
+
]);
|
|
1390
|
+
return super.serialize(ctx);
|
|
1391
|
+
}
|
|
1392
|
+
toLogEntry(ctx) {
|
|
1393
|
+
return {
|
|
1394
|
+
...super.toLogEntry(ctx),
|
|
1395
|
+
message: {
|
|
1396
|
+
"indicator ID": this.indicatorId,
|
|
1397
|
+
description: this.description || "(none)",
|
|
1398
|
+
},
|
|
1399
|
+
};
|
|
1400
|
+
}
|
|
1401
|
+
};
|
|
1402
|
+
return IndicatorCCDescriptionReport = _classThis;
|
|
1403
|
+
})();
|
|
1278
1404
|
export { IndicatorCCDescriptionReport };
|
|
1279
1405
|
function testResponseForIndicatorDescriptionGet(sent, received) {
|
|
1280
1406
|
return received.indicatorId === sent.indicatorId;
|
|
1281
1407
|
}
|
|
1282
|
-
let IndicatorCCDescriptionGet =
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1408
|
+
let IndicatorCCDescriptionGet = (() => {
|
|
1409
|
+
let _classDecorators = [CCCommand(IndicatorCommand.DescriptionGet), expectedCCResponse(IndicatorCCDescriptionReport, testResponseForIndicatorDescriptionGet)];
|
|
1410
|
+
let _classDescriptor;
|
|
1411
|
+
let _classExtraInitializers = [];
|
|
1412
|
+
let _classThis;
|
|
1413
|
+
let _classSuper = IndicatorCC;
|
|
1414
|
+
var IndicatorCCDescriptionGet = class extends _classSuper {
|
|
1415
|
+
static { _classThis = this; }
|
|
1416
|
+
static {
|
|
1417
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
1418
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
1419
|
+
IndicatorCCDescriptionGet = _classThis = _classDescriptor.value;
|
|
1420
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
1421
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
1288
1422
|
}
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1423
|
+
constructor(options) {
|
|
1424
|
+
super(options);
|
|
1425
|
+
this.indicatorId = options.indicatorId;
|
|
1426
|
+
if (!isManufacturerDefinedIndicator(this.indicatorId)) {
|
|
1427
|
+
throw new ZWaveError("The indicator ID must be between 0x80 and 0x9f", ZWaveErrorCodes.Argument_Invalid);
|
|
1428
|
+
}
|
|
1429
|
+
}
|
|
1430
|
+
static from(raw, ctx) {
|
|
1431
|
+
validatePayload(raw.payload.length >= 1);
|
|
1432
|
+
const indicatorId = raw.payload[0];
|
|
1433
|
+
return new this({
|
|
1434
|
+
nodeId: ctx.sourceNodeId,
|
|
1435
|
+
indicatorId,
|
|
1436
|
+
});
|
|
1437
|
+
}
|
|
1438
|
+
indicatorId;
|
|
1439
|
+
serialize(ctx) {
|
|
1440
|
+
this.payload = Bytes.from([this.indicatorId]);
|
|
1441
|
+
return super.serialize(ctx);
|
|
1442
|
+
}
|
|
1443
|
+
toLogEntry(ctx) {
|
|
1444
|
+
return {
|
|
1445
|
+
...super.toLogEntry(ctx),
|
|
1446
|
+
message: {
|
|
1447
|
+
"indicator ID": this.indicatorId,
|
|
1448
|
+
},
|
|
1449
|
+
};
|
|
1450
|
+
}
|
|
1451
|
+
};
|
|
1452
|
+
return IndicatorCCDescriptionGet = _classThis;
|
|
1453
|
+
})();
|
|
1316
1454
|
export { IndicatorCCDescriptionGet };
|
|
1317
1455
|
//# sourceMappingURL=IndicatorCC.js.map
|