@zwave-js/cc 15.28.0 → 15.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/cc/AlarmSensorCC.d.ts +3 -1
- package/build/cjs/cc/AlarmSensorCC.js +22 -2
- package/build/cjs/cc/AlarmSensorCC.js.map +2 -2
- package/build/cjs/cc/AssociationCC.js +6 -5
- package/build/cjs/cc/AssociationCC.js.map +2 -2
- package/build/cjs/cc/AssociationGroupInfoCC.js +4 -5
- package/build/cjs/cc/AssociationGroupInfoCC.js.map +2 -2
- package/build/cjs/cc/BarrierOperatorCC.d.ts +6 -3
- package/build/cjs/cc/BarrierOperatorCC.js +40 -6
- package/build/cjs/cc/BarrierOperatorCC.js.map +2 -2
- package/build/cjs/cc/BasicCC.d.ts +4 -1
- package/build/cjs/cc/BasicCC.js +18 -0
- package/build/cjs/cc/BasicCC.js.map +3 -3
- package/build/cjs/cc/BasicWindowCoveringCC.js.map +2 -2
- package/build/cjs/cc/BatteryCC.js +16 -3
- package/build/cjs/cc/BatteryCC.js.map +2 -2
- package/build/cjs/cc/BinarySensorCC.js.map +2 -2
- package/build/cjs/cc/BinarySwitchCC.d.ts +4 -1
- package/build/cjs/cc/BinarySwitchCC.js +18 -0
- package/build/cjs/cc/BinarySwitchCC.js.map +3 -3
- package/build/cjs/cc/CRC16CC.d.ts +3 -2
- package/build/cjs/cc/CRC16CC.js +7 -1
- package/build/cjs/cc/CRC16CC.js.map +3 -3
- package/build/cjs/cc/CentralSceneCC.d.ts +4 -1
- package/build/cjs/cc/CentralSceneCC.js +34 -2
- package/build/cjs/cc/CentralSceneCC.js.map +2 -2
- package/build/cjs/cc/ClimateControlScheduleCC.d.ts +6 -3
- package/build/cjs/cc/ClimateControlScheduleCC.js +54 -6
- package/build/cjs/cc/ClimateControlScheduleCC.js.map +2 -2
- package/build/cjs/cc/ClockCC.d.ts +2 -1
- package/build/cjs/cc/ClockCC.js +19 -2
- package/build/cjs/cc/ClockCC.js.map +2 -2
- package/build/cjs/cc/ColorSwitchCC.js +1 -4
- package/build/cjs/cc/ColorSwitchCC.js.map +2 -2
- package/build/cjs/cc/ConfigurationCC.d.ts +3 -2
- package/build/cjs/cc/ConfigurationCC.js +62 -8
- package/build/cjs/cc/ConfigurationCC.js.map +2 -2
- package/build/cjs/cc/DeviceResetLocallyCC.js.map +2 -2
- package/build/cjs/cc/DoorLockCC.js.map +2 -2
- package/build/cjs/cc/DoorLockLoggingCC.d.ts +3 -1
- package/build/cjs/cc/DoorLockLoggingCC.js +35 -2
- package/build/cjs/cc/DoorLockLoggingCC.js.map +2 -2
- package/build/cjs/cc/EntryControlCC.d.ts +5 -1
- package/build/cjs/cc/EntryControlCC.js +57 -2
- package/build/cjs/cc/EntryControlCC.js.map +2 -2
- package/build/cjs/cc/FirmwareUpdateMetaDataCC.js +4 -16
- package/build/cjs/cc/FirmwareUpdateMetaDataCC.js.map +2 -2
- package/build/cjs/cc/HumidityControlModeCC.d.ts +3 -1
- package/build/cjs/cc/HumidityControlModeCC.js +14 -2
- package/build/cjs/cc/HumidityControlModeCC.js.map +2 -2
- package/build/cjs/cc/HumidityControlOperatingStateCC.d.ts +3 -1
- package/build/cjs/cc/HumidityControlOperatingStateCC.js +4 -0
- package/build/cjs/cc/HumidityControlOperatingStateCC.js.map +2 -2
- package/build/cjs/cc/HumidityControlSetpointCC.d.ts +8 -4
- package/build/cjs/cc/HumidityControlSetpointCC.js +61 -12
- package/build/cjs/cc/HumidityControlSetpointCC.js.map +2 -2
- package/build/cjs/cc/IndicatorCC.js +1 -5
- package/build/cjs/cc/IndicatorCC.js.map +2 -2
- package/build/cjs/cc/IrrigationCC.d.ts +15 -9
- package/build/cjs/cc/IrrigationCC.js +260 -24
- package/build/cjs/cc/IrrigationCC.js.map +2 -2
- package/build/cjs/cc/LanguageCC.d.ts +2 -1
- package/build/cjs/cc/LanguageCC.js +18 -2
- package/build/cjs/cc/LanguageCC.js.map +2 -2
- package/build/cjs/cc/ManufacturerProprietaryCC.js.map +2 -2
- package/build/cjs/cc/ManufacturerSpecificCC.js +4 -5
- package/build/cjs/cc/ManufacturerSpecificCC.js.map +2 -2
- package/build/cjs/cc/MeterCC.js +8 -21
- package/build/cjs/cc/MeterCC.js.map +2 -2
- package/build/cjs/cc/MultiChannelAssociationCC.js +11 -7
- package/build/cjs/cc/MultiChannelAssociationCC.js.map +2 -2
- package/build/cjs/cc/MultiChannelCC.d.ts +5 -2
- package/build/cjs/cc/MultiChannelCC.js +35 -12
- package/build/cjs/cc/MultiChannelCC.js.map +3 -3
- package/build/cjs/cc/MultilevelSensorCC.js.map +2 -2
- package/build/cjs/cc/MultilevelSwitchCC.d.ts +5 -1
- package/build/cjs/cc/MultilevelSwitchCC.js +30 -0
- package/build/cjs/cc/MultilevelSwitchCC.js.map +3 -3
- package/build/cjs/cc/NotificationCC.js +29 -11
- package/build/cjs/cc/NotificationCC.js.map +2 -2
- package/build/cjs/cc/PowerlevelCC.js.map +1 -1
- package/build/cjs/cc/ProtectionCC.js.map +2 -2
- package/build/cjs/cc/SceneActuatorConfigurationCC.d.ts +3 -2
- package/build/cjs/cc/SceneActuatorConfigurationCC.js +38 -5
- package/build/cjs/cc/SceneActuatorConfigurationCC.js.map +2 -2
- package/build/cjs/cc/SceneControllerConfigurationCC.d.ts +3 -2
- package/build/cjs/cc/SceneControllerConfigurationCC.js +25 -4
- package/build/cjs/cc/SceneControllerConfigurationCC.js.map +2 -2
- package/build/cjs/cc/ScheduleEntryLockCC.js.map +2 -2
- package/build/cjs/cc/Security2CC.d.ts +2 -1
- package/build/cjs/cc/Security2CC.js +31 -3
- package/build/cjs/cc/Security2CC.js.map +2 -2
- package/build/cjs/cc/SecurityCC.d.ts +2 -1
- package/build/cjs/cc/SecurityCC.js +7 -6
- package/build/cjs/cc/SecurityCC.js.map +2 -2
- package/build/cjs/cc/SoundSwitchCC.js +6 -6
- package/build/cjs/cc/SoundSwitchCC.js.map +2 -2
- package/build/cjs/cc/SupervisionCC.d.ts +2 -1
- package/build/cjs/cc/SupervisionCC.js +6 -0
- package/build/cjs/cc/SupervisionCC.js.map +3 -3
- package/build/cjs/cc/ThermostatFanModeCC.d.ts +3 -1
- package/build/cjs/cc/ThermostatFanModeCC.js +17 -2
- package/build/cjs/cc/ThermostatFanModeCC.js.map +2 -2
- package/build/cjs/cc/ThermostatFanStateCC.d.ts +3 -1
- package/build/cjs/cc/ThermostatFanStateCC.js +4 -0
- package/build/cjs/cc/ThermostatFanStateCC.js.map +2 -2
- package/build/cjs/cc/ThermostatModeCC.js +2 -4
- package/build/cjs/cc/ThermostatModeCC.js.map +2 -2
- package/build/cjs/cc/ThermostatOperatingStateCC.js.map +2 -2
- package/build/cjs/cc/ThermostatSetpointCC.d.ts +4 -1
- package/build/cjs/cc/ThermostatSetpointCC.js +18 -0
- package/build/cjs/cc/ThermostatSetpointCC.js.map +3 -3
- package/build/cjs/cc/TimeCC.d.ts +1 -1
- package/build/cjs/cc/TimeCC.js +11 -2
- package/build/cjs/cc/TimeCC.js.map +2 -2
- package/build/cjs/cc/TransportServiceCC.js.map +2 -2
- package/build/cjs/cc/UserCodeCC.d.ts +2 -1
- package/build/cjs/cc/UserCodeCC.js +32 -8
- package/build/cjs/cc/UserCodeCC.js.map +2 -2
- package/build/cjs/cc/UserCredentialCC.js +4 -6
- package/build/cjs/cc/UserCredentialCC.js.map +2 -2
- package/build/cjs/cc/VersionCC.d.ts +1 -0
- package/build/cjs/cc/VersionCC.js +32 -0
- package/build/cjs/cc/VersionCC.js.map +2 -2
- package/build/cjs/cc/WakeUpCC.d.ts +2 -0
- package/build/cjs/cc/WakeUpCC.js +14 -0
- package/build/cjs/cc/WakeUpCC.js.map +2 -2
- package/build/cjs/cc/WindowCoveringCC.js +5 -1
- package/build/cjs/cc/WindowCoveringCC.js.map +2 -2
- package/build/cjs/cc/ZWaveProtocolCC.js +3 -11
- package/build/cjs/cc/ZWaveProtocolCC.js.map +2 -2
- package/build/cjs/cc/_CCValues.generated.d.ts +2 -2
- package/build/cjs/cc/_CCValues.generated.js.map +2 -2
- package/build/cjs/cc/index.d.ts +179 -179
- package/build/cjs/cc/index.js.map +1 -1
- package/build/cjs/cc/manufacturerProprietary/Decorators.js.map +2 -2
- package/build/cjs/cc/manufacturerProprietary/FibaroCC.d.ts +2 -1
- package/build/cjs/cc/manufacturerProprietary/FibaroCC.js +30 -2
- package/build/cjs/cc/manufacturerProprietary/FibaroCC.js.map +2 -2
- package/build/cjs/lib/API.d.ts +3 -2
- package/build/cjs/lib/API.js.map +2 -2
- package/build/cjs/lib/CommandClass.d.ts +20 -0
- package/build/cjs/lib/CommandClass.js +52 -11
- package/build/cjs/lib/CommandClass.js.map +3 -3
- package/build/cjs/lib/CommandClassDecorators.js.map +2 -2
- package/build/cjs/lib/EncapsulatingCommandClass.js.map +2 -2
- package/build/cjs/lib/NotificationEventPayload.js.map +2 -2
- package/build/cjs/lib/Security2/Extension.js +1 -4
- package/build/cjs/lib/Security2/Extension.js.map +2 -2
- package/build/cjs/lib/Security2/shared.js.map +2 -2
- package/build/cjs/lib/SetValueResult.js.map +1 -1
- package/build/cjs/lib/Values.d.ts +1 -1
- package/build/cjs/lib/Values.js.map +2 -2
- package/build/cjs/lib/_CCAPI.generated.js.map +1 -1
- package/build/cjs/lib/_Types.d.ts +30 -30
- package/build/cjs/lib/_Types.js.map +2 -2
- package/build/cjs/lib/serializers.js +1 -4
- package/build/cjs/lib/serializers.js.map +2 -2
- package/build/cjs/lib/utils.js.map +2 -2
- package/build/esm/cc/AlarmSensorCC.d.ts +3 -1
- package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
- package/build/esm/cc/AlarmSensorCC.js +26 -9
- 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 +8 -7
- 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 +10 -12
- package/build/esm/cc/AssociationGroupInfoCC.js.map +1 -1
- package/build/esm/cc/BarrierOperatorCC.d.ts +6 -3
- package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
- package/build/esm/cc/BarrierOperatorCC.js +55 -27
- package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
- package/build/esm/cc/BasicCC.d.ts +4 -1
- package/build/esm/cc/BasicCC.d.ts.map +1 -1
- package/build/esm/cc/BasicCC.js +30 -7
- package/build/esm/cc/BasicCC.js.map +1 -1
- package/build/esm/cc/BasicWindowCoveringCC.d.ts.map +1 -1
- package/build/esm/cc/BasicWindowCoveringCC.js +2 -5
- package/build/esm/cc/BasicWindowCoveringCC.js.map +1 -1
- package/build/esm/cc/BatteryCC.d.ts.map +1 -1
- package/build/esm/cc/BatteryCC.js +12 -12
- 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 +4 -5
- package/build/esm/cc/BinarySensorCC.js.map +1 -1
- package/build/esm/cc/BinarySwitchCC.d.ts +4 -1
- package/build/esm/cc/BinarySwitchCC.d.ts.map +1 -1
- package/build/esm/cc/BinarySwitchCC.js +31 -6
- package/build/esm/cc/BinarySwitchCC.js.map +1 -1
- package/build/esm/cc/CRC16CC.d.ts +3 -2
- package/build/esm/cc/CRC16CC.d.ts.map +1 -1
- package/build/esm/cc/CRC16CC.js +10 -4
- package/build/esm/cc/CRC16CC.js.map +1 -1
- package/build/esm/cc/CentralSceneCC.d.ts +4 -1
- package/build/esm/cc/CentralSceneCC.d.ts.map +1 -1
- package/build/esm/cc/CentralSceneCC.js +37 -7
- package/build/esm/cc/CentralSceneCC.js.map +1 -1
- package/build/esm/cc/ClimateControlScheduleCC.d.ts +6 -3
- package/build/esm/cc/ClimateControlScheduleCC.d.ts.map +1 -1
- package/build/esm/cc/ClimateControlScheduleCC.js +63 -18
- package/build/esm/cc/ClimateControlScheduleCC.js.map +1 -1
- package/build/esm/cc/ClockCC.d.ts +2 -1
- package/build/esm/cc/ClockCC.d.ts.map +1 -1
- package/build/esm/cc/ClockCC.js +26 -9
- 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 +17 -20
- package/build/esm/cc/ColorSwitchCC.js.map +1 -1
- package/build/esm/cc/ConfigurationCC.d.ts +3 -2
- package/build/esm/cc/ConfigurationCC.d.ts.map +1 -1
- package/build/esm/cc/ConfigurationCC.js +83 -41
- package/build/esm/cc/ConfigurationCC.js.map +1 -1
- package/build/esm/cc/DeviceResetLocallyCC.d.ts.map +1 -1
- package/build/esm/cc/DeviceResetLocallyCC.js +1 -2
- 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 +25 -29
- package/build/esm/cc/DoorLockCC.js.map +1 -1
- package/build/esm/cc/DoorLockLoggingCC.d.ts +3 -1
- package/build/esm/cc/DoorLockLoggingCC.d.ts.map +1 -1
- package/build/esm/cc/DoorLockLoggingCC.js +39 -5
- package/build/esm/cc/DoorLockLoggingCC.js.map +1 -1
- package/build/esm/cc/EntryControlCC.d.ts +5 -1
- package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
- package/build/esm/cc/EntryControlCC.js +74 -14
- 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 +15 -27
- package/build/esm/cc/FirmwareUpdateMetaDataCC.js.map +1 -1
- package/build/esm/cc/HumidityControlModeCC.d.ts +3 -1
- package/build/esm/cc/HumidityControlModeCC.d.ts.map +1 -1
- package/build/esm/cc/HumidityControlModeCC.js +15 -7
- package/build/esm/cc/HumidityControlModeCC.js.map +1 -1
- package/build/esm/cc/HumidityControlOperatingStateCC.d.ts +3 -1
- package/build/esm/cc/HumidityControlOperatingStateCC.d.ts.map +1 -1
- package/build/esm/cc/HumidityControlOperatingStateCC.js +5 -1
- package/build/esm/cc/HumidityControlOperatingStateCC.js.map +1 -1
- package/build/esm/cc/HumidityControlSetpointCC.d.ts +8 -4
- package/build/esm/cc/HumidityControlSetpointCC.d.ts.map +1 -1
- package/build/esm/cc/HumidityControlSetpointCC.js +60 -34
- package/build/esm/cc/HumidityControlSetpointCC.js.map +1 -1
- package/build/esm/cc/IndicatorCC.d.ts.map +1 -1
- package/build/esm/cc/IndicatorCC.js +19 -38
- package/build/esm/cc/IndicatorCC.js.map +1 -1
- package/build/esm/cc/IrrigationCC.d.ts +15 -9
- package/build/esm/cc/IrrigationCC.d.ts.map +1 -1
- package/build/esm/cc/IrrigationCC.js +276 -67
- package/build/esm/cc/IrrigationCC.js.map +1 -1
- package/build/esm/cc/LanguageCC.d.ts +2 -1
- package/build/esm/cc/LanguageCC.d.ts.map +1 -1
- package/build/esm/cc/LanguageCC.js +18 -6
- package/build/esm/cc/LanguageCC.js.map +1 -1
- package/build/esm/cc/ManufacturerProprietaryCC.d.ts.map +1 -1
- package/build/esm/cc/ManufacturerProprietaryCC.js +1 -2
- 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 +5 -8
- 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 +15 -29
- 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 +15 -20
- package/build/esm/cc/MultiChannelAssociationCC.js.map +1 -1
- package/build/esm/cc/MultiChannelCC.d.ts +5 -2
- package/build/esm/cc/MultiChannelCC.d.ts.map +1 -1
- package/build/esm/cc/MultiChannelCC.js +43 -29
- package/build/esm/cc/MultiChannelCC.js.map +1 -1
- package/build/esm/cc/MultilevelSensorCC.d.ts.map +1 -1
- package/build/esm/cc/MultilevelSensorCC.js +11 -11
- package/build/esm/cc/MultilevelSensorCC.js.map +1 -1
- package/build/esm/cc/MultilevelSwitchCC.d.ts +5 -1
- package/build/esm/cc/MultilevelSwitchCC.d.ts.map +1 -1
- package/build/esm/cc/MultilevelSwitchCC.js +56 -16
- package/build/esm/cc/MultilevelSwitchCC.js.map +1 -1
- package/build/esm/cc/NotificationCC.d.ts.map +1 -1
- package/build/esm/cc/NotificationCC.js +66 -55
- package/build/esm/cc/NotificationCC.js.map +1 -1
- package/build/esm/cc/PowerlevelCC.d.ts.map +1 -1
- package/build/esm/cc/ProtectionCC.d.ts.map +1 -1
- package/build/esm/cc/ProtectionCC.js +10 -9
- package/build/esm/cc/ProtectionCC.js.map +1 -1
- package/build/esm/cc/SceneActuatorConfigurationCC.d.ts +3 -2
- package/build/esm/cc/SceneActuatorConfigurationCC.d.ts.map +1 -1
- package/build/esm/cc/SceneActuatorConfigurationCC.js +44 -21
- package/build/esm/cc/SceneActuatorConfigurationCC.js.map +1 -1
- package/build/esm/cc/SceneControllerConfigurationCC.d.ts +3 -2
- package/build/esm/cc/SceneControllerConfigurationCC.d.ts.map +1 -1
- package/build/esm/cc/SceneControllerConfigurationCC.js +35 -28
- 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 +13 -20
- package/build/esm/cc/ScheduleEntryLockCC.js.map +1 -1
- package/build/esm/cc/Security2CC.d.ts +2 -1
- package/build/esm/cc/Security2CC.d.ts.map +1 -1
- package/build/esm/cc/Security2CC.js +68 -32
- package/build/esm/cc/Security2CC.js.map +1 -1
- package/build/esm/cc/SecurityCC.d.ts +2 -1
- package/build/esm/cc/SecurityCC.d.ts.map +1 -1
- package/build/esm/cc/SecurityCC.js +16 -11
- package/build/esm/cc/SecurityCC.js.map +1 -1
- package/build/esm/cc/SoundSwitchCC.js +2 -2
- package/build/esm/cc/SoundSwitchCC.js.map +1 -1
- package/build/esm/cc/SupervisionCC.d.ts +2 -1
- package/build/esm/cc/SupervisionCC.d.ts.map +1 -1
- package/build/esm/cc/SupervisionCC.js +13 -6
- package/build/esm/cc/SupervisionCC.js.map +1 -1
- package/build/esm/cc/ThermostatFanModeCC.d.ts +3 -1
- package/build/esm/cc/ThermostatFanModeCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatFanModeCC.js +19 -9
- package/build/esm/cc/ThermostatFanModeCC.js.map +1 -1
- package/build/esm/cc/ThermostatFanStateCC.d.ts +3 -1
- package/build/esm/cc/ThermostatFanStateCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatFanStateCC.js +5 -1
- 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 +2 -4
- 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 +1 -2
- package/build/esm/cc/ThermostatOperatingStateCC.js.map +1 -1
- package/build/esm/cc/ThermostatSetpointCC.d.ts +4 -1
- package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
- package/build/esm/cc/ThermostatSetpointCC.js +31 -19
- package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
- package/build/esm/cc/TimeCC.d.ts +1 -1
- package/build/esm/cc/TimeCC.d.ts.map +1 -1
- package/build/esm/cc/TimeCC.js +18 -9
- package/build/esm/cc/TimeCC.js.map +1 -1
- package/build/esm/cc/TransportServiceCC.d.ts.map +1 -1
- package/build/esm/cc/TransportServiceCC.js +8 -8
- package/build/esm/cc/TransportServiceCC.js.map +1 -1
- package/build/esm/cc/UserCodeCC.d.ts +2 -1
- package/build/esm/cc/UserCodeCC.d.ts.map +1 -1
- package/build/esm/cc/UserCodeCC.js +51 -36
- package/build/esm/cc/UserCodeCC.js.map +1 -1
- package/build/esm/cc/UserCredentialCC.d.ts.map +1 -1
- package/build/esm/cc/UserCredentialCC.js +42 -59
- package/build/esm/cc/UserCredentialCC.js.map +1 -1
- package/build/esm/cc/VersionCC.d.ts +1 -0
- package/build/esm/cc/VersionCC.d.ts.map +1 -1
- package/build/esm/cc/VersionCC.js +37 -3
- package/build/esm/cc/VersionCC.js.map +1 -1
- package/build/esm/cc/WakeUpCC.d.ts +2 -0
- package/build/esm/cc/WakeUpCC.d.ts.map +1 -1
- package/build/esm/cc/WakeUpCC.js +14 -0
- 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 +10 -9
- package/build/esm/cc/WindowCoveringCC.js.map +1 -1
- package/build/esm/cc/ZWaveProtocolCC.d.ts.map +1 -1
- package/build/esm/cc/ZWaveProtocolCC.js +5 -26
- package/build/esm/cc/ZWaveProtocolCC.js.map +1 -1
- package/build/esm/cc/_CCValues.generated.d.ts +2 -2
- package/build/esm/cc/_CCValues.generated.d.ts.map +1 -1
- package/build/esm/cc/_CCValues.generated.js +637 -678
- package/build/esm/cc/_CCValues.generated.js.map +1 -1
- package/build/esm/cc/index.d.ts +179 -179
- package/build/esm/cc/index.d.ts.map +1 -1
- package/build/esm/cc/index.js +124 -124
- package/build/esm/cc/index.js.map +1 -1
- package/build/esm/cc/manufacturerProprietary/Decorators.d.ts.map +1 -1
- package/build/esm/cc/manufacturerProprietary/Decorators.js.map +1 -1
- package/build/esm/cc/manufacturerProprietary/FibaroCC.d.ts +2 -1
- package/build/esm/cc/manufacturerProprietary/FibaroCC.d.ts.map +1 -1
- package/build/esm/cc/manufacturerProprietary/FibaroCC.js +34 -4
- package/build/esm/cc/manufacturerProprietary/FibaroCC.js.map +1 -1
- package/build/esm/lib/API.d.ts +3 -2
- package/build/esm/lib/API.d.ts.map +1 -1
- package/build/esm/lib/API.js +1 -1
- package/build/esm/lib/API.js.map +1 -1
- package/build/esm/lib/CommandClass.d.ts +20 -0
- package/build/esm/lib/CommandClass.d.ts.map +1 -1
- package/build/esm/lib/CommandClass.js +50 -16
- package/build/esm/lib/CommandClass.js.map +1 -1
- package/build/esm/lib/CommandClassDecorators.d.ts.map +1 -1
- package/build/esm/lib/CommandClassDecorators.js +1 -2
- package/build/esm/lib/CommandClassDecorators.js.map +1 -1
- package/build/esm/lib/EncapsulatingCommandClass.d.ts.map +1 -1
- package/build/esm/lib/EncapsulatingCommandClass.js.map +1 -1
- package/build/esm/lib/NotificationEventPayload.d.ts.map +1 -1
- package/build/esm/lib/NotificationEventPayload.js.map +1 -1
- package/build/esm/lib/Security2/Extension.d.ts.map +1 -1
- package/build/esm/lib/Security2/Extension.js +2 -6
- package/build/esm/lib/Security2/Extension.js.map +1 -1
- package/build/esm/lib/Security2/shared.d.ts.map +1 -1
- package/build/esm/lib/Security2/shared.js.map +1 -1
- package/build/esm/lib/SetValueResult.d.ts.map +1 -1
- package/build/esm/lib/Values.d.ts +1 -1
- package/build/esm/lib/Values.d.ts.map +1 -1
- package/build/esm/lib/Values.js.map +1 -1
- package/build/esm/lib/_CCAPI.generated.d.ts.map +1 -1
- package/build/esm/lib/_Types.d.ts +30 -30
- package/build/esm/lib/_Types.d.ts.map +1 -1
- package/build/esm/lib/_Types.js.map +1 -1
- package/build/esm/lib/serializers.d.ts.map +1 -1
- package/build/esm/lib/serializers.js +1 -4
- package/build/esm/lib/serializers.js.map +1 -1
- package/build/esm/lib/traits.d.ts.map +1 -1
- package/build/esm/lib/utils.d.ts.map +1 -1
- package/build/esm/lib/utils.js +25 -31
- package/build/esm/lib/utils.js.map +1 -1
- package/package.json +7 -7
|
@@ -39,6 +39,7 @@ export declare class AlarmSensorCCReport extends AlarmSensorCC {
|
|
|
39
39
|
readonly state: boolean;
|
|
40
40
|
readonly severity: number | undefined;
|
|
41
41
|
readonly duration: number | undefined;
|
|
42
|
+
serialize(ctx: CCEncodingContext): Promise<Bytes>;
|
|
42
43
|
toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
|
|
43
44
|
persistValues(ctx: PersistValuesContext): boolean;
|
|
44
45
|
}
|
|
@@ -47,7 +48,7 @@ export interface AlarmSensorCCGetOptions {
|
|
|
47
48
|
}
|
|
48
49
|
export declare class AlarmSensorCCGet extends AlarmSensorCC {
|
|
49
50
|
constructor(options: WithAddress<AlarmSensorCCGetOptions>);
|
|
50
|
-
static from(
|
|
51
|
+
static from(raw: CCRaw, ctx: CCParsingContext): AlarmSensorCCGet;
|
|
51
52
|
sensorType: AlarmSensorType;
|
|
52
53
|
serialize(ctx: CCEncodingContext): Promise<Bytes>;
|
|
53
54
|
toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
|
|
@@ -59,6 +60,7 @@ export declare class AlarmSensorCCSupportedReport extends AlarmSensorCC {
|
|
|
59
60
|
constructor(options: WithAddress<AlarmSensorCCSupportedReportOptions>);
|
|
60
61
|
static from(raw: CCRaw, ctx: CCParsingContext): AlarmSensorCCSupportedReport;
|
|
61
62
|
supportedSensorTypes: AlarmSensorType[];
|
|
63
|
+
serialize(ctx: CCEncodingContext): Promise<Bytes>;
|
|
62
64
|
persistValues(ctx: PersistValuesContext): boolean;
|
|
63
65
|
toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
|
|
64
66
|
}
|
|
@@ -281,6 +281,17 @@ let AlarmSensorCCReport = (() => {
|
|
|
281
281
|
state;
|
|
282
282
|
severity;
|
|
283
283
|
duration;
|
|
284
|
+
serialize(ctx) {
|
|
285
|
+
let severity;
|
|
286
|
+
if (this.state) {
|
|
287
|
+
severity = this.severity ?? 255;
|
|
288
|
+
} else {
|
|
289
|
+
severity = 0;
|
|
290
|
+
}
|
|
291
|
+
this.payload = import_shared.Bytes.from([0, this.sensorType, severity, 0, 0]);
|
|
292
|
+
this.payload.writeUInt16BE(this.duration ?? 0, 3);
|
|
293
|
+
return super.serialize(ctx);
|
|
294
|
+
}
|
|
284
295
|
toLogEntry(ctx) {
|
|
285
296
|
const message = {
|
|
286
297
|
"sensor type": (0, import_shared.getEnumMemberName)(import_Types.AlarmSensorType, this.sensorType),
|
|
@@ -340,8 +351,12 @@ let AlarmSensorCCGet = (() => {
|
|
|
340
351
|
super(options);
|
|
341
352
|
this.sensorType = options.sensorType ?? import_Types.AlarmSensorType.Any;
|
|
342
353
|
}
|
|
343
|
-
static from(
|
|
344
|
-
|
|
354
|
+
static from(raw, ctx) {
|
|
355
|
+
(0, import_core.validatePayload)(raw.payload.length >= 1);
|
|
356
|
+
return new this({
|
|
357
|
+
nodeId: ctx.sourceNodeId,
|
|
358
|
+
sensorType: raw.payload[0]
|
|
359
|
+
});
|
|
345
360
|
}
|
|
346
361
|
sensorType;
|
|
347
362
|
serialize(ctx) {
|
|
@@ -394,6 +409,11 @@ let AlarmSensorCCSupportedReport = (() => {
|
|
|
394
409
|
});
|
|
395
410
|
}
|
|
396
411
|
supportedSensorTypes;
|
|
412
|
+
serialize(ctx) {
|
|
413
|
+
const mask = (0, import_core.encodeBitMask)(this.supportedSensorTypes.filter((t) => t !== import_Types.AlarmSensorType.Any), void 0, import_Types.AlarmSensorType["General Purpose"]);
|
|
414
|
+
this.payload = import_shared.Bytes.concat([[mask.length], mask]);
|
|
415
|
+
return super.serialize(ctx);
|
|
416
|
+
}
|
|
397
417
|
persistValues(ctx) {
|
|
398
418
|
if (!super.persistValues(ctx))
|
|
399
419
|
return false;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src_gen/cc/AlarmSensorCC.ts"],
|
|
4
|
-
"sourcesContent": ["import * as __validateArgs from \"./AlarmSensorCC._validateArgs.js\";\nconst { validateArgs_AlarmSensorCCAPI_get } = __validateArgs;\nimport { CommandClasses, type EndpointId, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, ValueMetadata, type WithAddress, ZWaveError, ZWaveErrorCodes, logDict, logList, logText, parseBitMask, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, getEnumMemberName, isEnumMember, pick } from \"@zwave-js/shared\";\nimport { CCAPI, PhysicalCCAPI } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type PersistValuesContext, type RefreshValuesContext, type RefreshValuesOptions, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { AlarmSensorCommand, AlarmSensorType } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { AlarmSensorCCValues } from \"./_CCValues.generated.js\";\nexport { AlarmSensorCCValues };\n// @noSetValueAPI This CC is read-only\n@API(CommandClasses[\"Alarm Sensor\"])\nexport class AlarmSensorCCAPI extends PhysicalCCAPI {\n public supportsCommand(cmd: AlarmSensorCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case AlarmSensorCommand.Get:\n case AlarmSensorCommand.SupportedGet:\n return true; // This is mandatory\n }\n return super.supportsCommand(cmd);\n }\n /**\n * Retrieves the current value from this sensor\n * @param sensorType The (optional) sensor type to retrieve the value for\n */\n @validateArgs_AlarmSensorCCAPI_get()\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async get(sensorType?: AlarmSensorType) {\n this.assertSupportsCommand(AlarmSensorCommand, AlarmSensorCommand.Get);\n const cc = new AlarmSensorCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n sensorType,\n });\n const response = await this.host.sendCommand<AlarmSensorCCReport>(cc, this.commandOptions);\n if (response)\n return pick(response, [\"state\", \"severity\", \"duration\"]);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getSupportedSensorTypes() {\n this.assertSupportsCommand(AlarmSensorCommand, AlarmSensorCommand.SupportedGet);\n const cc = new AlarmSensorCCSupportedGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<AlarmSensorCCSupportedReport>(cc, this.commandOptions);\n if (response)\n return response.supportedSensorTypes;\n }\n}\n@commandClass(CommandClasses[\"Alarm Sensor\"])\n@implementedVersion(1)\n@ccValues(AlarmSensorCCValues)\nexport class AlarmSensorCC extends CommandClass {\n declare ccCommand: AlarmSensorCommand;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n // Skip the interview in favor of Notification CC if possible,\n // but only if the device supports Notification CC v2+. Version 1\n // doesn't provide information about supported notification types,\n // so we still need to interview Alarm Sensor CC for those devices.\n if (endpoint.supportsCC(CommandClasses.Notification)\n && endpoint.getCCVersion(CommandClasses.Notification) >= 2) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `${this.constructor.name}: skipping interview because Notification CC is supported...`,\n direction: \"none\",\n });\n this.setInterviewComplete(ctx, true);\n return;\n }\n const api = CCAPI.create(CommandClasses[\"Alarm Sensor\"], ctx, endpoint).withOptions({\n priority: MessagePriority.NodeQuery,\n tag: \"interview\",\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n // Find out which sensor types this sensor supports\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying supported sensor types...\",\n direction: \"outbound\",\n });\n const supportedSensorTypes = await api.getSupportedSensorTypes();\n if (supportedSensorTypes) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logText(\"received supported sensor types:\", {\n nested: logList(supportedSensorTypes.map((type) => getEnumMemberName(AlarmSensorType, type))),\n }),\n direction: \"inbound\",\n });\n }\n else {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"Querying supported sensor types timed out, skipping interview...\",\n level: \"warn\",\n });\n return;\n }\n // Query (all of) the sensor's current value(s)\n await this.refreshValues(ctx, { tag: \"interview\" });\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Alarm Sensor\"], ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n tag: options?.tag,\n });\n const supportedSensorTypes: readonly AlarmSensorType[] = this.getValue(ctx, AlarmSensorCCValues.supportedSensorTypes)\n ?? [];\n // Always query (all of) the sensor's current value(s)\n for (const type of supportedSensorTypes) {\n // Some devices report invalid sensor types, but the CC API checks\n // for valid values and throws otherwise.\n if (!isEnumMember(AlarmSensorType, type))\n continue;\n const sensorName = getEnumMemberName(AlarmSensorType, type);\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `querying current value for ${sensorName}...`,\n direction: \"outbound\",\n });\n const currentValue = await api.get(type);\n if (currentValue) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logText(`received current value for ${sensorName}:`, {\n nested: logDict({\n state: currentValue.state,\n severity: currentValue.severity,\n duration: currentValue.duration,\n }),\n }),\n direction: \"inbound\",\n });\n }\n }\n }\n /**\n * Returns which sensor types are supported.\n * This only works AFTER the interview process\n */\n public static getSupportedSensorTypesCached(ctx: GetValueDB, endpoint: EndpointId): MaybeNotKnown<AlarmSensorType[]> {\n return ctx\n .getValueDB(endpoint.nodeId)\n .getValue(AlarmSensorCCValues.supportedSensorTypes.endpoint(endpoint.index));\n }\n protected createMetadataForSensorType(ctx: GetValueDB, sensorType: AlarmSensorType): void {\n const stateValue = AlarmSensorCCValues.state(sensorType);\n const severityValue = AlarmSensorCCValues.severity(sensorType);\n const durationValue = AlarmSensorCCValues.duration(sensorType);\n // Always create metadata if it does not exist\n this.ensureMetadata(ctx, stateValue);\n this.ensureMetadata(ctx, severityValue);\n this.ensureMetadata(ctx, durationValue);\n }\n}\n// @publicAPI\nexport interface AlarmSensorCCReportOptions {\n sensorType: AlarmSensorType;\n state: boolean;\n severity?: number;\n duration?: number;\n}\n@CCCommand(AlarmSensorCommand.Report)\nexport class AlarmSensorCCReport extends AlarmSensorCC {\n public constructor(options: WithAddress<AlarmSensorCCReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.sensorType = options.sensorType;\n this.state = options.state;\n this.severity = options.severity;\n this.duration = options.duration;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): AlarmSensorCCReport {\n validatePayload(raw.payload.length >= 5, raw.payload[1] !== 0xff);\n const sourceNodeId = raw.payload[0];\n const sensorType: AlarmSensorType = raw.payload[1];\n // Any positive value gets interpreted as alarm\n const state: boolean = raw.payload[2] > 0;\n // Severity only ranges from 1 to 100\n let severity: number | undefined;\n if (raw.payload[2] > 0 && raw.payload[2] <= 0x64) {\n severity = raw.payload[2];\n }\n // ignore zero durations\n const duration = raw.payload.readUInt16BE(3) || undefined;\n return new this({\n // Alarm Sensor reports may be forwarded by a different node, in this case\n // (and only then!) the payload contains the original node ID\n nodeId: sourceNodeId || ctx.sourceNodeId,\n sensorType,\n state,\n severity,\n duration,\n });\n }\n public readonly sensorType: AlarmSensorType;\n public readonly state: boolean;\n public readonly severity: number | undefined;\n public readonly duration: number | undefined;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"sensor type\": getEnumMemberName(AlarmSensorType, this.sensorType),\n \"alarm state\": this.state,\n };\n if (this.severity != undefined) {\n message.severity = this.severity;\n }\n if (this.duration != undefined) {\n message.duration = `${this.duration} seconds`;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n public persistValues(ctx: PersistValuesContext): boolean {\n if (!super.persistValues(ctx))\n return false;\n // Create metadata if it does not exist\n this.createMetadataForSensorType(ctx, this.sensorType);\n const stateValue = AlarmSensorCCValues.state(this.sensorType);\n const severityValue = AlarmSensorCCValues.severity(this.sensorType);\n const durationValue = AlarmSensorCCValues.duration(this.sensorType);\n this.setValue(ctx, stateValue, this.state);\n this.setValue(ctx, severityValue, this.severity);\n this.setValue(ctx, durationValue, this.duration);\n return true;\n }\n}\nfunction testResponseForAlarmSensorGet(sent: AlarmSensorCCGet, received: AlarmSensorCCReport) {\n // We expect a Alarm Sensor Report that matches the requested sensor type (if a type was requested)\n return (sent.sensorType === AlarmSensorType.Any\n || received.sensorType === sent.sensorType);\n}\n// @publicAPI\nexport interface AlarmSensorCCGetOptions {\n sensorType?: AlarmSensorType;\n}\n@CCCommand(AlarmSensorCommand.Get)\n@expectedCCResponse(AlarmSensorCCReport, testResponseForAlarmSensorGet)\nexport class AlarmSensorCCGet extends AlarmSensorCC {\n public constructor(options: WithAddress<AlarmSensorCCGetOptions>) {\n super(options);\n this.sensorType = options.sensorType ?? AlarmSensorType.Any;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): AlarmSensorCCGet {\n // TODO: Deserialize payload\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n // return new AlarmSensorCCGet({\n // \tnodeId: ctx.sourceNodeId,\n // });\n }\n public sensorType: AlarmSensorType;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.sensorType]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"sensor type\": getEnumMemberName(AlarmSensorType, this.sensorType),\n },\n };\n }\n}\n// @publicAPI\nexport interface AlarmSensorCCSupportedReportOptions {\n supportedSensorTypes: AlarmSensorType[];\n}\n@CCCommand(AlarmSensorCommand.SupportedReport)\n@ccValueProperty(\"supportedSensorTypes\", AlarmSensorCCValues.supportedSensorTypes)\nexport class AlarmSensorCCSupportedReport extends AlarmSensorCC {\n public constructor(options: WithAddress<AlarmSensorCCSupportedReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.supportedSensorTypes = options.supportedSensorTypes;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): AlarmSensorCCSupportedReport {\n validatePayload(raw.payload.length >= 1);\n const bitMaskLength = raw.payload[0];\n validatePayload(raw.payload.length >= 1 + bitMaskLength);\n const supportedSensorTypes: AlarmSensorType[] = parseBitMask(raw.payload.subarray(1, 1 + bitMaskLength), AlarmSensorType[\"General Purpose\"]);\n return new this({\n nodeId: ctx.sourceNodeId,\n supportedSensorTypes,\n });\n }\n public supportedSensorTypes: AlarmSensorType[];\n public persistValues(ctx: PersistValuesContext): boolean {\n if (!super.persistValues(ctx))\n return false;\n // Create metadata for each sensor type\n for (const type of this.supportedSensorTypes) {\n this.createMetadataForSensorType(ctx, type);\n }\n return true;\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"supported sensor types\": this.supportedSensorTypes\n .map((t) => getEnumMemberName(AlarmSensorType, t))\n .join(\", \"),\n },\n };\n }\n}\n@CCCommand(AlarmSensorCommand.SupportedGet)\n@expectedCCResponse(AlarmSensorCCSupportedReport)\nexport class AlarmSensorCCSupportedGet extends AlarmSensorCC {\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qBAAgC;AAEhC,
|
|
4
|
+
"sourcesContent": ["import * as __validateArgs from \"./AlarmSensorCC._validateArgs.js\";\nconst { validateArgs_AlarmSensorCCAPI_get } = __validateArgs;\nimport { CommandClasses, type EndpointId, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, ValueMetadata, type WithAddress, encodeBitMask, logDict, logList, logText, parseBitMask, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, getEnumMemberName, isEnumMember, pick } from \"@zwave-js/shared\";\nimport { CCAPI, PhysicalCCAPI } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type PersistValuesContext, type RefreshValuesContext, type RefreshValuesOptions, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { AlarmSensorCommand, AlarmSensorType } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { AlarmSensorCCValues } from \"./_CCValues.generated.js\";\nexport { AlarmSensorCCValues };\n// @noSetValueAPI This CC is read-only\n@API(CommandClasses[\"Alarm Sensor\"])\nexport class AlarmSensorCCAPI extends PhysicalCCAPI {\n public supportsCommand(cmd: AlarmSensorCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case AlarmSensorCommand.Get:\n case AlarmSensorCommand.SupportedGet:\n return true; // This is mandatory\n }\n return super.supportsCommand(cmd);\n }\n /**\n * Retrieves the current value from this sensor\n * @param sensorType The (optional) sensor type to retrieve the value for\n */\n @validateArgs_AlarmSensorCCAPI_get()\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async get(sensorType?: AlarmSensorType) {\n this.assertSupportsCommand(AlarmSensorCommand, AlarmSensorCommand.Get);\n const cc = new AlarmSensorCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n sensorType,\n });\n const response = await this.host.sendCommand<AlarmSensorCCReport>(cc, this.commandOptions);\n if (response)\n return pick(response, [\"state\", \"severity\", \"duration\"]);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getSupportedSensorTypes() {\n this.assertSupportsCommand(AlarmSensorCommand, AlarmSensorCommand.SupportedGet);\n const cc = new AlarmSensorCCSupportedGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<AlarmSensorCCSupportedReport>(cc, this.commandOptions);\n if (response)\n return response.supportedSensorTypes;\n }\n}\n@commandClass(CommandClasses[\"Alarm Sensor\"])\n@implementedVersion(1)\n@ccValues(AlarmSensorCCValues)\nexport class AlarmSensorCC extends CommandClass {\n declare ccCommand: AlarmSensorCommand;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n // Skip the interview in favor of Notification CC if possible,\n // but only if the device supports Notification CC v2+. Version 1\n // doesn't provide information about supported notification types,\n // so we still need to interview Alarm Sensor CC for those devices.\n if (endpoint.supportsCC(CommandClasses.Notification)\n && endpoint.getCCVersion(CommandClasses.Notification) >= 2) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `${this.constructor.name}: skipping interview because Notification CC is supported...`,\n direction: \"none\",\n });\n this.setInterviewComplete(ctx, true);\n return;\n }\n const api = CCAPI.create(CommandClasses[\"Alarm Sensor\"], ctx, endpoint).withOptions({\n priority: MessagePriority.NodeQuery,\n tag: \"interview\",\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n // Find out which sensor types this sensor supports\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying supported sensor types...\",\n direction: \"outbound\",\n });\n const supportedSensorTypes = await api.getSupportedSensorTypes();\n if (supportedSensorTypes) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logText(\"received supported sensor types:\", {\n nested: logList(supportedSensorTypes.map((type) => getEnumMemberName(AlarmSensorType, type))),\n }),\n direction: \"inbound\",\n });\n }\n else {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"Querying supported sensor types timed out, skipping interview...\",\n level: \"warn\",\n });\n return;\n }\n // Query (all of) the sensor's current value(s)\n await this.refreshValues(ctx, { tag: \"interview\" });\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Alarm Sensor\"], ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n tag: options?.tag,\n });\n const supportedSensorTypes: readonly AlarmSensorType[] = this.getValue(ctx, AlarmSensorCCValues.supportedSensorTypes) ?? [];\n // Always query (all of) the sensor's current value(s)\n for (const type of supportedSensorTypes) {\n // Some devices report invalid sensor types, but the CC API checks\n // for valid values and throws otherwise.\n if (!isEnumMember(AlarmSensorType, type))\n continue;\n const sensorName = getEnumMemberName(AlarmSensorType, type);\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `querying current value for ${sensorName}...`,\n direction: \"outbound\",\n });\n const currentValue = await api.get(type);\n if (currentValue) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logText(`received current value for ${sensorName}:`, {\n nested: logDict({\n state: currentValue.state,\n severity: currentValue.severity,\n duration: currentValue.duration,\n }),\n }),\n direction: \"inbound\",\n });\n }\n }\n }\n /**\n * Returns which sensor types are supported.\n * This only works AFTER the interview process\n */\n public static getSupportedSensorTypesCached(ctx: GetValueDB, endpoint: EndpointId): MaybeNotKnown<AlarmSensorType[]> {\n return ctx\n .getValueDB(endpoint.nodeId)\n .getValue(AlarmSensorCCValues.supportedSensorTypes.endpoint(endpoint.index));\n }\n protected createMetadataForSensorType(ctx: GetValueDB, sensorType: AlarmSensorType): void {\n const stateValue = AlarmSensorCCValues.state(sensorType);\n const severityValue = AlarmSensorCCValues.severity(sensorType);\n const durationValue = AlarmSensorCCValues.duration(sensorType);\n // Always create metadata if it does not exist\n this.ensureMetadata(ctx, stateValue);\n this.ensureMetadata(ctx, severityValue);\n this.ensureMetadata(ctx, durationValue);\n }\n}\n// @publicAPI\nexport interface AlarmSensorCCReportOptions {\n sensorType: AlarmSensorType;\n state: boolean;\n severity?: number;\n duration?: number;\n}\n@CCCommand(AlarmSensorCommand.Report)\nexport class AlarmSensorCCReport extends AlarmSensorCC {\n public constructor(options: WithAddress<AlarmSensorCCReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.sensorType = options.sensorType;\n this.state = options.state;\n this.severity = options.severity;\n this.duration = options.duration;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): AlarmSensorCCReport {\n validatePayload(raw.payload.length >= 5, raw.payload[1] !== 0xff);\n const sourceNodeId = raw.payload[0];\n const sensorType: AlarmSensorType = raw.payload[1];\n // Any positive value gets interpreted as alarm\n const state: boolean = raw.payload[2] > 0;\n // Severity only ranges from 1 to 100\n let severity: number | undefined;\n if (raw.payload[2] > 0 && raw.payload[2] <= 0x64) {\n severity = raw.payload[2];\n }\n // ignore zero durations\n const duration = raw.payload.readUInt16BE(3) || undefined;\n return new this({\n // Alarm Sensor reports may be forwarded by a different node, in this case\n // (and only then!) the payload contains the original node ID\n nodeId: sourceNodeId || ctx.sourceNodeId,\n sensorType,\n state,\n severity,\n duration,\n });\n }\n public readonly sensorType: AlarmSensorType;\n public readonly state: boolean;\n public readonly severity: number | undefined;\n public readonly duration: number | undefined;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n let severity: number;\n if (this.state) {\n severity = this.severity ?? 0xff;\n }\n else {\n severity = 0;\n }\n this.payload = Bytes.from([0, this.sensorType, severity, 0, 0]);\n this.payload.writeUInt16BE(this.duration ?? 0, 3);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"sensor type\": getEnumMemberName(AlarmSensorType, this.sensorType),\n \"alarm state\": this.state,\n };\n if (this.severity != undefined) {\n message.severity = this.severity;\n }\n if (this.duration != undefined) {\n message.duration = `${this.duration} seconds`;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n public persistValues(ctx: PersistValuesContext): boolean {\n if (!super.persistValues(ctx))\n return false;\n // Create metadata if it does not exist\n this.createMetadataForSensorType(ctx, this.sensorType);\n const stateValue = AlarmSensorCCValues.state(this.sensorType);\n const severityValue = AlarmSensorCCValues.severity(this.sensorType);\n const durationValue = AlarmSensorCCValues.duration(this.sensorType);\n this.setValue(ctx, stateValue, this.state);\n this.setValue(ctx, severityValue, this.severity);\n this.setValue(ctx, durationValue, this.duration);\n return true;\n }\n}\nfunction testResponseForAlarmSensorGet(sent: AlarmSensorCCGet, received: AlarmSensorCCReport) {\n // We expect a Alarm Sensor Report that matches the requested sensor type (if a type was requested)\n return (sent.sensorType === AlarmSensorType.Any\n || received.sensorType === sent.sensorType);\n}\n// @publicAPI\nexport interface AlarmSensorCCGetOptions {\n sensorType?: AlarmSensorType;\n}\n@CCCommand(AlarmSensorCommand.Get)\n@expectedCCResponse(AlarmSensorCCReport, testResponseForAlarmSensorGet)\nexport class AlarmSensorCCGet extends AlarmSensorCC {\n public constructor(options: WithAddress<AlarmSensorCCGetOptions>) {\n super(options);\n this.sensorType = options.sensorType ?? AlarmSensorType.Any;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): AlarmSensorCCGet {\n validatePayload(raw.payload.length >= 1);\n return new this({\n nodeId: ctx.sourceNodeId,\n sensorType: raw.payload[0],\n });\n }\n public sensorType: AlarmSensorType;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.sensorType]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"sensor type\": getEnumMemberName(AlarmSensorType, this.sensorType),\n },\n };\n }\n}\n// @publicAPI\nexport interface AlarmSensorCCSupportedReportOptions {\n supportedSensorTypes: AlarmSensorType[];\n}\n@CCCommand(AlarmSensorCommand.SupportedReport)\n@ccValueProperty(\"supportedSensorTypes\", AlarmSensorCCValues.supportedSensorTypes)\nexport class AlarmSensorCCSupportedReport extends AlarmSensorCC {\n public constructor(options: WithAddress<AlarmSensorCCSupportedReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.supportedSensorTypes = options.supportedSensorTypes;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): AlarmSensorCCSupportedReport {\n validatePayload(raw.payload.length >= 1);\n const bitMaskLength = raw.payload[0];\n validatePayload(raw.payload.length >= 1 + bitMaskLength);\n const supportedSensorTypes: AlarmSensorType[] = parseBitMask(raw.payload.subarray(1, 1 + bitMaskLength), AlarmSensorType[\"General Purpose\"]);\n return new this({\n nodeId: ctx.sourceNodeId,\n supportedSensorTypes,\n });\n }\n public supportedSensorTypes: AlarmSensorType[];\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n // Any is not a valid sensor type for the bit mask\n const mask = encodeBitMask(this.supportedSensorTypes.filter((t) => t !== AlarmSensorType.Any), undefined, AlarmSensorType[\"General Purpose\"]);\n this.payload = Bytes.concat([[mask.length], mask]);\n return super.serialize(ctx);\n }\n public persistValues(ctx: PersistValuesContext): boolean {\n if (!super.persistValues(ctx))\n return false;\n // Create metadata for each sensor type\n for (const type of this.supportedSensorTypes) {\n this.createMetadataForSensorType(ctx, type);\n }\n return true;\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"supported sensor types\": this.supportedSensorTypes\n .map((t) => getEnumMemberName(AlarmSensorType, t))\n .join(\", \"),\n },\n };\n }\n}\n@CCCommand(AlarmSensorCommand.SupportedGet)\n@expectedCCResponse(AlarmSensorCCSupportedReport)\nexport class AlarmSensorCCSupportedGet extends AlarmSensorCC {\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -481,10 +481,7 @@ let AssociationCCRemove = (() => {
|
|
|
481
481
|
groupId;
|
|
482
482
|
nodeIds;
|
|
483
483
|
serialize(ctx) {
|
|
484
|
-
this.payload = import_shared.Bytes.from([
|
|
485
|
-
this.groupId || 0,
|
|
486
|
-
...this.nodeIds || []
|
|
487
|
-
]);
|
|
484
|
+
this.payload = import_shared.Bytes.from([this.groupId || 0, ...this.nodeIds || []]);
|
|
488
485
|
return super.serialize(ctx);
|
|
489
486
|
}
|
|
490
487
|
toLogEntry(ctx) {
|
|
@@ -501,7 +498,11 @@ let AssociationCCRemove = (() => {
|
|
|
501
498
|
return AssociationCCRemove2 = _classThis;
|
|
502
499
|
})();
|
|
503
500
|
let AssociationCCReport = (() => {
|
|
504
|
-
let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.AssociationCommand.Report), (0, import_CommandClassDecorators.ccValueProperty)("maxNodes", import_CCValues_generated.AssociationCCValues.maxNodes, (self) => [
|
|
501
|
+
let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.AssociationCommand.Report), (0, import_CommandClassDecorators.ccValueProperty)("maxNodes", import_CCValues_generated.AssociationCCValues.maxNodes, (self) => [
|
|
502
|
+
self.groupId
|
|
503
|
+
]), (0, import_CommandClassDecorators.ccValueProperty)("nodeIds", import_CCValues_generated.AssociationCCValues.nodeIds, (self) => [
|
|
504
|
+
self.groupId
|
|
505
|
+
])];
|
|
505
506
|
let _classDescriptor;
|
|
506
507
|
let _classExtraInitializers = [];
|
|
507
508
|
let _classThis;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src_gen/cc/AssociationCC.ts"],
|
|
4
|
-
"sourcesContent": ["import * as __validateArgs from \"./AssociationCC._validateArgs.js\";\nconst { validateArgs_AssociationCCAPI_reportGroupCount, validateArgs_AssociationCCAPI_getGroup, validateArgs_AssociationCCAPI_sendReport, validateArgs_AssociationCCAPI_addNodeIds, validateArgs_AssociationCCAPI_removeNodeIds, validateArgs_AssociationCCAPI_removeNodeIdsFromAllGroups, validateArgs_AssociationCCAPI_getSpecificGroup, validateArgs_AssociationCCAPI_reportSpecificGroup } = __validateArgs;\nimport type { GetDeviceConfig } from \"@zwave-js/config\";\nimport { CommandClasses, type EndpointId, type GetValueDB, MAX_NODES, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, type SupervisionResult, type WithAddress, ZWaveError, ZWaveErrorCodes, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes } from \"@zwave-js/shared\";\nimport { distinct } from \"alcalzone-shared/arrays\";\nimport { CCAPI, PhysicalCCAPI } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type RefreshValuesContext, type RefreshValuesOptions, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, useSupervision, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { type AssociationAddress, AssociationCommand } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport * as ccUtils from \"../lib/utils.js\";\nimport { AssociationCCValues } from \"./_CCValues.generated.js\";\nexport { AssociationCCValues };\n// @noSetValueAPI\n@API(CommandClasses.Association)\nexport class AssociationCCAPI extends PhysicalCCAPI {\n public supportsCommand(cmd: AssociationCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case AssociationCommand.Get:\n case AssociationCommand.Set:\n case AssociationCommand.Report:\n case AssociationCommand.Remove:\n case AssociationCommand.SupportedGroupingsGet:\n case AssociationCommand.SupportedGroupingsReport:\n return true;\n case AssociationCommand.SpecificGroupGet:\n case AssociationCommand.SpecificGroupReport:\n return this.version >= 2;\n }\n return super.supportsCommand(cmd);\n }\n /**\n * Returns the number of association groups a node supports.\n * Association groups are consecutive, starting at 1.\n */\n public async getGroupCount(): Promise<MaybeNotKnown<number>> {\n this.assertSupportsCommand(AssociationCommand, AssociationCommand.SupportedGroupingsGet);\n const cc = new AssociationCCSupportedGroupingsGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<AssociationCCSupportedGroupingsReport>(cc, this.commandOptions);\n if (response)\n return response.groupCount;\n }\n @validateArgs_AssociationCCAPI_reportGroupCount()\n public async reportGroupCount(groupCount: number): Promise<void> {\n this.assertSupportsCommand(AssociationCommand, AssociationCommand.SupportedGroupingsReport);\n const cc = new AssociationCCSupportedGroupingsReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n groupCount,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n /**\n * Returns information about an association group.\n */\n @validateArgs_AssociationCCAPI_getGroup()\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getGroup(groupId: number) {\n this.assertSupportsCommand(AssociationCommand, AssociationCommand.Get);\n const cc = new AssociationCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n groupId,\n });\n const response = await this.host.sendCommand<AssociationCCReport>(cc, this.commandOptions);\n if (response) {\n return {\n maxNodes: response.maxNodes,\n nodeIds: response.nodeIds,\n };\n }\n }\n @validateArgs_AssociationCCAPI_sendReport()\n public async sendReport(options: AssociationCCReportOptions): Promise<void> {\n this.assertSupportsCommand(AssociationCommand, AssociationCommand.Report);\n const cc = new AssociationCCReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n /**\n * Adds new nodes to an association group\n */\n @validateArgs_AssociationCCAPI_addNodeIds()\n public async addNodeIds(groupId: number, ...nodeIds: number[]): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(AssociationCommand, AssociationCommand.Set);\n const cc = new AssociationCCSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n groupId,\n nodeIds,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n /**\n * Removes nodes from an association group\n */\n @validateArgs_AssociationCCAPI_removeNodeIds()\n public async removeNodeIds(options: AssociationCCRemoveOptions): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(AssociationCommand, AssociationCommand.Remove);\n // Validate options\n if (!options.groupId) {\n if (this.version === 1) {\n throw new ZWaveError(`Node ${this.endpoint.nodeId} only supports AssociationCC V1 which requires the group Id to be set`, ZWaveErrorCodes.Argument_Invalid);\n }\n }\n else if (options.groupId < 0) {\n throw new ZWaveError(\"The group id must be positive!\", ZWaveErrorCodes.Argument_Invalid);\n }\n const cc = new AssociationCCRemove({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n /**\n * Removes nodes from all association groups\n */\n @validateArgs_AssociationCCAPI_removeNodeIdsFromAllGroups()\n public async removeNodeIdsFromAllGroups(nodeIds: number[]): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(AssociationCommand, AssociationCommand.Remove);\n if (this.version >= 2) {\n // The node supports bulk removal\n return this.removeNodeIds({ nodeIds, groupId: 0 });\n }\n else {\n // We have to remove the node manually from all groups\n const groupCount = this.tryGetValueDB()?.getValue<number>(AssociationCCValues.groupCount.endpoint(this.endpoint.index)) ?? 0;\n for (let groupId = 1; groupId <= groupCount; groupId++) {\n // TODO: evaluate intermediate supervision results\n await this.removeNodeIds({ nodeIds, groupId });\n }\n }\n }\n /**\n * Request the association group that represents the most recently detected button press\n */\n @validateArgs_AssociationCCAPI_getSpecificGroup()\n public async getSpecificGroup(): Promise<number | undefined> {\n this.assertSupportsCommand(AssociationCommand, AssociationCommand.SpecificGroupGet);\n const cc = new AssociationCCSpecificGroupGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<AssociationCCSpecificGroupReport>(cc, this.commandOptions);\n return response?.group;\n }\n /**\n * Report the association group that represents the most recently detected button press\n */\n @validateArgs_AssociationCCAPI_reportSpecificGroup()\n public async reportSpecificGroup(group: number): Promise<void> {\n this.assertSupportsCommand(AssociationCommand, AssociationCommand.SpecificGroupReport);\n const cc = new AssociationCCSpecificGroupReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n group,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n}\n@commandClass(CommandClasses.Association)\n@implementedVersion(4)\n@ccValues(AssociationCCValues)\nexport class AssociationCC extends CommandClass {\n declare ccCommand: AssociationCommand;\n public determineRequiredCCInterviews(): readonly CommandClasses[] {\n // AssociationCC must be interviewed after Z-Wave+ if that is supported\n return [\n ...super.determineRequiredCCInterviews(),\n CommandClasses[\"Z-Wave Plus Info\"],\n // We need information about endpoints to correctly configure the lifeline associations\n CommandClasses[\"Multi Channel\"],\n ];\n }\n /**\n * Returns the number of association groups reported by the node/endpoint.\n * This only works AFTER the interview process\n */\n public static getGroupCountCached(ctx: GetValueDB, endpoint: EndpointId): number {\n return ctx\n .getValueDB(endpoint.nodeId)\n .getValue(AssociationCCValues.groupCount.endpoint(endpoint.index)) || 0;\n }\n /**\n * Returns the number of nodes an association group supports.\n * This only works AFTER the interview process\n */\n public static getMaxNodesCached(ctx: GetValueDB & GetDeviceConfig, endpoint: EndpointId, groupId: number): number {\n return (ctx\n .getValueDB(endpoint.nodeId)\n .getValue(AssociationCCValues.maxNodes(groupId).endpoint(endpoint.index))\n // If the information is not available, fall back to the configuration file if possible\n // This can happen on some legacy devices which have \"hidden\" association groups\n ?? ctx\n .getDeviceConfig?.(endpoint.nodeId)\n ?.getAssociationConfigForEndpoint(endpoint.index, groupId)\n ?.maxNodes\n ?? 0);\n }\n /**\n * Returns all the destinations of all association groups reported by the node/endpoint.\n * This only works AFTER the interview process\n */\n public static getAllDestinationsCached(ctx: GetValueDB, endpoint: EndpointId): ReadonlyMap<number, readonly AssociationAddress[]> {\n const ret = new Map<number, AssociationAddress[]>();\n const groupCount = this.getGroupCountCached(ctx, endpoint);\n const valueDB = ctx.getValueDB(endpoint.nodeId);\n for (let i = 1; i <= groupCount; i++) {\n // Add all root destinations\n const nodes = valueDB.getValue<number[]>(AssociationCCValues.nodeIds(i).endpoint(endpoint.index)) ?? [];\n ret.set(i, \n // Filter out duplicates\n distinct(nodes).map((nodeId) => ({ nodeId })));\n }\n return ret;\n }\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses.Association, ctx, endpoint).withOptions({\n priority: MessagePriority.NodeQuery,\n tag: \"interview\",\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n // Even if Multi Channel Association is supported, we still need to query the number of\n // normal association groups since some devices report more association groups than\n // multi channel association groups\n // Find out how many groups are supported\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying number of association groups...\",\n direction: \"outbound\",\n });\n const groupCount = await api.getGroupCount();\n if (groupCount != undefined) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `supports ${groupCount} association groups`,\n direction: \"inbound\",\n });\n }\n else {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"Querying association groups timed out, skipping interview...\",\n level: \"warn\",\n });\n return;\n }\n // Query each association group for its members\n await this.refreshValues(ctx, {\n tag: \"interview\",\n onProgress: (completed, total) => node.reportInterviewProgress(completed, total),\n });\n // Skip the remaining Association CC interview in favor of Multi Channel Association if possible\n if (endpoint.supportsCC(CommandClasses[\"Multi Channel Association\"])) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `${this.constructor.name}: delaying configuration of lifeline associations until after Multi Channel Association interview...`,\n direction: \"none\",\n });\n this.setInterviewComplete(ctx, true);\n return;\n }\n // And set up lifeline associations\n await ccUtils.configureLifelineAssociations(ctx, endpoint);\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses.Association, ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n tag: options?.tag,\n });\n const groupCount = AssociationCC.getGroupCountCached(ctx, endpoint);\n // Query each association group\n for (let groupId = 1; groupId <= groupCount; groupId++) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `querying association group #${groupId}...`,\n direction: \"outbound\",\n });\n const group = await api.getGroup(groupId);\n if (group != undefined) {\n const logMessage = `received information for association group #${groupId}:\nmaximum # of nodes: ${group.maxNodes}\ncurrently assigned nodes: ${group.nodeIds.map(String).join(\", \")}`;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n }\n options?.onProgress?.(groupId, groupCount);\n }\n }\n}\n// @publicAPI\nexport interface AssociationCCSetOptions {\n groupId: number;\n nodeIds: number[];\n}\n@CCCommand(AssociationCommand.Set)\n@useSupervision()\nexport class AssociationCCSet extends AssociationCC {\n public constructor(options: WithAddress<AssociationCCSetOptions>) {\n super(options);\n if (options.groupId < 1) {\n throw new ZWaveError(\"The group id must be positive!\", ZWaveErrorCodes.Argument_Invalid);\n }\n if (options.nodeIds.some((n) => n < 1 || n > MAX_NODES)) {\n throw new ZWaveError(`All node IDs must be between 1 and ${MAX_NODES}!`, ZWaveErrorCodes.Argument_Invalid);\n }\n this.groupId = options.groupId;\n this.nodeIds = options.nodeIds;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCSet {\n validatePayload(raw.payload.length >= 2);\n const groupId = raw.payload[0];\n const nodeIds = [...raw.payload.subarray(1)];\n return new this({\n nodeId: ctx.sourceNodeId,\n groupId,\n nodeIds,\n });\n }\n public groupId: number;\n public nodeIds: number[];\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.groupId, ...this.nodeIds]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"group id\": this.groupId || \"all groups\",\n \"node ids\": this.nodeIds.length\n ? this.nodeIds.join(\", \")\n : \"all nodes\",\n };\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface AssociationCCRemoveOptions {\n /** The group from which to remove the nodes. If none is specified, the nodes will be removed from all groups. */\n groupId?: number;\n /** The nodes to remove. If none are specified, ALL nodes will be removed. */\n nodeIds?: number[];\n}\n@CCCommand(AssociationCommand.Remove)\n@useSupervision()\nexport class AssociationCCRemove extends AssociationCC {\n public constructor(options: WithAddress<AssociationCCRemoveOptions>) {\n super(options);\n // When removing associations, we allow invalid node IDs.\n // See GH#3606 - it is possible that those exist.\n this.groupId = options.groupId;\n this.nodeIds = options.nodeIds;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCRemove {\n validatePayload(raw.payload.length >= 1);\n let groupId: number | undefined;\n if (raw.payload[0] !== 0) {\n groupId = raw.payload[0];\n }\n const nodeIds = [...raw.payload.subarray(1)];\n return new this({\n nodeId: ctx.sourceNodeId,\n groupId,\n nodeIds,\n });\n }\n public groupId?: number;\n public nodeIds?: number[];\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n this.groupId || 0,\n ...(this.nodeIds || []),\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"group id\": this.groupId || \"all groups\",\n \"node ids\": this.nodeIds && this.nodeIds.length\n ? this.nodeIds.join(\", \")\n : \"all nodes\",\n };\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface AssociationCCReportOptions {\n groupId: number;\n maxNodes: number;\n nodeIds: number[];\n reportsToFollow: number;\n}\n@CCCommand(AssociationCommand.Report)\n@ccValueProperty(\"maxNodes\", AssociationCCValues.maxNodes, (self) => [self.groupId])\n@ccValueProperty(\"nodeIds\", AssociationCCValues.nodeIds, (self) => [self.groupId])\nexport class AssociationCCReport extends AssociationCC {\n public constructor(options: WithAddress<AssociationCCReportOptions>) {\n super(options);\n this.groupId = options.groupId;\n this.maxNodes = options.maxNodes;\n this.nodeIds = options.nodeIds;\n this.reportsToFollow = options.reportsToFollow;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCReport {\n validatePayload(raw.payload.length >= 3);\n const groupId = raw.payload[0];\n const maxNodes = raw.payload[1];\n const reportsToFollow = raw.payload[2];\n const nodeIds = [...raw.payload.subarray(3)];\n return new this({\n nodeId: ctx.sourceNodeId,\n groupId,\n maxNodes,\n reportsToFollow,\n nodeIds,\n });\n }\n public groupId: number;\n public maxNodes: number;\n public nodeIds: number[];\n public reportsToFollow: number;\n public getPartialCCSessionId(): Record<string, any> | undefined {\n // Distinguish sessions by the association group ID\n return { groupId: this.groupId };\n }\n public getRemainingSegments(): number | undefined {\n return this.reportsToFollow;\n }\n public mergePartialCCs(partials: AssociationCCReport[], _ctx: CCParsingContext): Promise<void> {\n // Concat the list of nodes\n this.nodeIds = [...partials, this]\n .map((report) => report.nodeIds)\n .reduce((prev, cur) => prev.concat(...cur), []);\n return Promise.resolve();\n }\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n this.groupId,\n this.maxNodes,\n this.reportsToFollow,\n ...this.nodeIds,\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"group id\": this.groupId,\n \"max # of nodes\": this.maxNodes,\n \"node IDs\": this.nodeIds.join(\", \"),\n \"reports to follow\": this.reportsToFollow,\n },\n };\n }\n}\n// @publicAPI\nexport interface AssociationCCGetOptions {\n groupId: number;\n}\n@CCCommand(AssociationCommand.Get)\n@expectedCCResponse(AssociationCCReport)\nexport class AssociationCCGet extends AssociationCC {\n public constructor(options: WithAddress<AssociationCCGetOptions>) {\n super(options);\n if (options.groupId < 1) {\n throw new ZWaveError(\"The group id must be positive!\", ZWaveErrorCodes.Argument_Invalid);\n }\n this.groupId = options.groupId;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCGet {\n validatePayload(raw.payload.length >= 1);\n const groupId = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n groupId,\n });\n }\n public groupId: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.groupId]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: { \"group id\": this.groupId },\n };\n }\n}\n// @publicAPI\nexport interface AssociationCCSupportedGroupingsReportOptions {\n groupCount: number;\n}\n@CCCommand(AssociationCommand.SupportedGroupingsReport)\n@ccValueProperty(\"groupCount\", AssociationCCValues.groupCount)\nexport class AssociationCCSupportedGroupingsReport extends AssociationCC {\n public constructor(options: WithAddress<AssociationCCSupportedGroupingsReportOptions>) {\n super(options);\n this.groupCount = options.groupCount;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCSupportedGroupingsReport {\n validatePayload(raw.payload.length >= 1);\n const groupCount = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n groupCount,\n });\n }\n public groupCount: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.groupCount]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: { \"group count\": this.groupCount },\n };\n }\n}\n@CCCommand(AssociationCommand.SupportedGroupingsGet)\n@expectedCCResponse(AssociationCCSupportedGroupingsReport)\nexport class AssociationCCSupportedGroupingsGet extends AssociationCC {\n}\n// @publicAPI\nexport interface AssociationCCSpecificGroupReportOptions {\n group: number;\n}\n@CCCommand(AssociationCommand.SpecificGroupReport)\nexport class AssociationCCSpecificGroupReport extends AssociationCC {\n public constructor(options: WithAddress<AssociationCCSpecificGroupReportOptions>) {\n super(options);\n this.group = options.group;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCSpecificGroupReport {\n validatePayload(raw.payload.length >= 1);\n const group = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n group,\n });\n }\n public group: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.group]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: { group: this.group },\n };\n }\n}\n@CCCommand(AssociationCommand.SpecificGroupGet)\n@expectedCCResponse(AssociationCCSpecificGroupReport)\nexport class AssociationCCSpecificGroupGet extends AssociationCC {\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qBAAgC;AAGhC,kBAAwP;AACxP,oBAAsB;AACtB,oBAAyB;AACzB,iBAAqC;AACrC,0BAAuH;AACvH,oCAAiI;AAEjI,mBAA4D;AAE5D,cAAyB;AACzB,gCAAoC;AAZpC,MAAM,EAAE,gDAAgD,wCAAwC,0CAA0C,0CAA0C,6CAA6C,0DAA0D,gDAAgD,kDAAiD,IAAK;IAgBpX,oBAAgB,MAAA;8BAD5B,mCAAI,2BAAe,WAAW,CAAC;;;;oBACM;;;;;;;;;;wCAAA,YAAa;WAAA;;;;;;;;sCA8B9C,+CAA8C,CAAE;8BAahD,uCAAsC,CAAE;gCAiBxC,yCAAwC,CAAE;gCAa1C,yCAAwC,CAAE;mCAc1C,4CAA2C,CAAE;gDAsB7C,yDAAwD,CAAE;sCAmB1D,+CAA8C,CAAE;yCAahD,kDAAiD,CAAE;AA9GpD,qCAAA,MAAA,MAAA,8BAAA,EAAA,MAAA,UAAA,MAAA,oBAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,sBAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,kBAAb,OAA6B,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AAc7B,qCAAA,MAAA,MAAA,sBAAA,EAAA,MAAA,UAAA,MAAA,YAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,cAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,UAAb,OAAqB,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AAgBrB,qCAAA,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;AAavB,qCAAA,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;AAcvB,qCAAA,MAAA,MAAA,2BAAA,EAAA,MAAA,UAAA,MAAA,iBAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,mBAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,eAAb,OAA0B,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AAsB1B,qCAAA,MAAA,MAAA,wCAAA,EAAA,MAAA,UAAA,MAAA,8BAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,gCAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,4BAAb,OAAuC,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AAmBvC,qCAAA,MAAA,MAAA,8BAAA,EAAA,MAAA,UAAA,MAAA,oBAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,sBAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,kBAAb,OAA6B,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AAa7B,qCAAA,MAAA,MAAA,iCAAA,EAAA,MAAA,UAAA,MAAA,uBAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,yBAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,qBAAb,OAAgC,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AA9IpC,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACF,gBAAgB,KAAuB;AAC1C,cAAQ,KAAK;QACT,KAAK,gCAAmB;QACxB,KAAK,gCAAmB;QACxB,KAAK,gCAAmB;QACxB,KAAK,gCAAmB;QACxB,KAAK,gCAAmB;QACxB,KAAK,gCAAmB;AACpB,iBAAO;QACX,KAAK,gCAAmB;QACxB,KAAK,gCAAmB;AACpB,iBAAO,KAAK,WAAW;MAC/B;AACA,aAAO,MAAM,gBAAgB,GAAG;IACpC;;;;;IAKO,MAAM,gBAAa;AACtB,WAAK,sBAAsB,iCAAoB,gCAAmB,qBAAqB;AACvF,YAAM,KAAK,IAAI,mCAAmC;QAC9C,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;OAChC;AACD,YAAM,WAAW,MAAM,KAAK,KAAK,YAAmD,IAAI,KAAK,cAAc;AAC3G,UAAI;AACA,eAAO,SAAS;IACxB;IAEO,MAAM,iBAAiB,YAAkB;AAC5C,WAAK,sBAAsB,iCAAoB,gCAAmB,wBAAwB;AAC1F,YAAM,KAAK,IAAI,sCAAsC;QACjD,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B;OACH;AACD,YAAM,KAAK,KAAK,YAAY,IAAI,KAAK,cAAc;IACvD;;;;IAMO,MAAM,SAAS,SAAe;AACjC,WAAK,sBAAsB,iCAAoB,gCAAmB,GAAG;AACrE,YAAM,KAAK,IAAI,iBAAiB;QAC5B,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B;OACH;AACD,YAAM,WAAW,MAAM,KAAK,KAAK,YAAiC,IAAI,KAAK,cAAc;AACzF,UAAI,UAAU;AACV,eAAO;UACH,UAAU,SAAS;UACnB,SAAS,SAAS;;MAE1B;IACJ;IAEO,MAAM,WAAW,SAAmC;AACvD,WAAK,sBAAsB,iCAAoB,gCAAmB,MAAM;AACxE,YAAM,KAAK,IAAI,oBAAoB;QAC/B,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B,GAAG;OACN;AACD,YAAM,KAAK,KAAK,YAAY,IAAI,KAAK,cAAc;IACvD;;;;IAKO,MAAM,WAAW,YAAoB,SAAiB;AACzD,WAAK,sBAAsB,iCAAoB,gCAAmB,GAAG;AACrE,YAAM,KAAK,IAAI,iBAAiB;QAC5B,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B;QACA;OACH;AACD,aAAO,KAAK,KAAK,YAAY,IAAI,KAAK,cAAc;IACxD;;;;IAKO,MAAM,cAAc,SAAmC;AAC1D,WAAK,sBAAsB,iCAAoB,gCAAmB,MAAM;AAExE,UAAI,CAAC,QAAQ,SAAS;AAClB,YAAI,KAAK,YAAY,GAAG;AACpB,gBAAM,IAAI,uBAAW,QAAQ,KAAK,SAAS,MAAM,yEAAyE,4BAAgB,gBAAgB;QAC9J;MACJ,WACS,QAAQ,UAAU,GAAG;AAC1B,cAAM,IAAI,uBAAW,kCAAkC,4BAAgB,gBAAgB;MAC3F;AACA,YAAM,KAAK,IAAI,oBAAoB;QAC/B,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B,GAAG;OACN;AACD,aAAO,KAAK,KAAK,YAAY,IAAI,KAAK,cAAc;IACxD;;;;IAKO,MAAM,2BAA2B,SAAiB;AACrD,WAAK,sBAAsB,iCAAoB,gCAAmB,MAAM;AACxE,UAAI,KAAK,WAAW,GAAG;AAEnB,eAAO,KAAK,cAAc,EAAE,SAAS,SAAS,EAAC,CAAE;MACrD,OACK;AAED,cAAM,aAAa,KAAK,cAAa,GAAI,SAAiB,8CAAoB,WAAW,SAAS,KAAK,SAAS,KAAK,CAAC,KAAK;AAC3H,iBAAS,UAAU,GAAG,WAAW,YAAY,WAAW;AAEpD,gBAAM,KAAK,cAAc,EAAE,SAAS,QAAO,CAAE;QACjD;MACJ;IACJ;;;;IAKO,MAAM,mBAAgB;AACzB,WAAK,sBAAsB,iCAAoB,gCAAmB,gBAAgB;AAClF,YAAM,KAAK,IAAI,8BAA8B;QACzC,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;OAChC;AACD,YAAM,WAAW,MAAM,KAAK,KAAK,YAA8C,IAAI,KAAK,cAAc;AACtG,aAAO,UAAU;IACrB;;;;IAKO,MAAM,oBAAoB,OAAa;AAC1C,WAAK,sBAAsB,iCAAoB,gCAAmB,mBAAmB;AACrF,YAAM,KAAK,IAAI,iCAAiC;QAC5C,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B;OACH;AACD,YAAM,KAAK,KAAK,YAAY,IAAI,KAAK,cAAc;IACvD;;;AAtJS,0CAAA,MAAA,0BAAA;;;;;IA2JA,iBAAa,MAAA;8BAHzB,4CAAa,2BAAe,WAAW,OACvC,kDAAmB,CAAC,OACpB,wCAAS,6CAAmB,CAAC;;;;oBACK;qCAAA,YAAY;WAAA;;;;;;;;AAA/C,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IAEF,gCAA6B;AAEhC,aAAO;QACH,GAAG,MAAM,8BAA6B;QACtC,2BAAe,kBAAkB;;QAEjC,2BAAe,eAAe;;IAEtC;;;;;IAKO,OAAO,oBAAoB,KAAiB,UAAoB;AACnE,aAAO,IACF,WAAW,SAAS,MAAM,EAC1B,SAAS,8CAAoB,WAAW,SAAS,SAAS,KAAK,CAAC,KAAK;IAC9E;;;;;IAKO,OAAO,kBAAkB,KAAmC,UAAsB,SAAe;AACpG,aAAQ,IACH,WAAW,SAAS,MAAM,EAC1B,SAAS,8CAAoB,SAAS,OAAO,EAAE,SAAS,SAAS,KAAK,CAAC,KAGrE,IACE,kBAAkB,SAAS,MAAM,GAChC,gCAAgC,SAAS,OAAO,OAAO,GACvD,YACH;IACX;;;;;IAKO,OAAO,yBAAyB,KAAiB,UAAoB;AACxE,YAAM,MAAM,oBAAI,IAAG;AACnB,YAAM,aAAa,KAAK,oBAAoB,KAAK,QAAQ;AACzD,YAAM,UAAU,IAAI,WAAW,SAAS,MAAM;AAC9C,eAAS,IAAI,GAAG,KAAK,YAAY,KAAK;AAElC,cAAM,QAAQ,QAAQ,SAAmB,8CAAoB,QAAQ,CAAC,EAAE,SAAS,SAAS,KAAK,CAAC,KAAK,CAAA;AACrG,YAAI;UAAI;;cAER,wBAAS,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,OAAM,EAAG;QAAC;MACjD;AACA,aAAO;IACX;IACO,MAAM,UAAU,KAAqB;AACxC,YAAM,OAAO,KAAK,QAAQ,GAAG;AAC7B,YAAM,WAAW,KAAK,YAAY,GAAG;AACrC,YAAM,MAAM,iBAAM,OAAO,2BAAe,aAAa,KAAK,QAAQ,EAAE,YAAY;QAC5E,UAAU,4BAAgB;QAC1B,KAAK;OACR;AACD,UAAI,QAAQ,KAAK,IAAI;QACjB,UAAU,KAAK;QACf,SAAS,gBAAgB,KAAK,MAAM;QACpC,WAAW;OACd;AAKD,UAAI,QAAQ,KAAK,IAAI;QACjB,UAAU,KAAK;QACf,SAAS;QACT,WAAW;OACd;AACD,YAAM,aAAa,MAAM,IAAI,cAAa;AAC1C,UAAI,cAAc,QAAW;AACzB,YAAI,QAAQ,KAAK,IAAI;UACjB,UAAU,KAAK;UACf,SAAS,YAAY,UAAU;UAC/B,WAAW;SACd;MACL,OACK;AACD,YAAI,QAAQ,KAAK,IAAI;UACjB,UAAU,KAAK;UACf,SAAS;UACT,OAAO;SACV;AACD;MACJ;AAEA,YAAM,KAAK,cAAc,KAAK;QAC1B,KAAK;QACL,YAAY,wBAAC,WAAW,UAAU,KAAK,wBAAwB,WAAW,KAAK,GAAnE;OACf;AAED,UAAI,SAAS,WAAW,2BAAe,2BAA2B,CAAC,GAAG;AAClE,YAAI,QAAQ,KAAK,IAAI;UACjB,UAAU,KAAK;UACf,SAAS,GAAG,KAAK,YAAY,IAAI;UACjC,WAAW;SACd;AACD,aAAK,qBAAqB,KAAK,IAAI;AACnC;MACJ;AAEA,YAAM,QAAQ,8BAA8B,KAAK,QAAQ;AAEzD,WAAK,qBAAqB,KAAK,IAAI;IACvC;IACO,MAAM,cAAc,KAA2B,SAA8B;AAChF,YAAM,OAAO,KAAK,QAAQ,GAAG;AAC7B,YAAM,WAAW,KAAK,YAAY,GAAG;AACrC,YAAM,MAAM,iBAAM,OAAO,2BAAe,aAAa,KAAK,QAAQ,EAAE,YAAY;QAC5E,UAAU,SAAS,YAAY,4BAAgB;QAC/C,KAAK,SAAS;OACjB;AACD,YAAM,aAAaA,eAAc,oBAAoB,KAAK,QAAQ;AAElE,eAAS,UAAU,GAAG,WAAW,YAAY,WAAW;AACpD,YAAI,QAAQ,KAAK,IAAI;UACjB,UAAU,KAAK;UACf,SAAS,+BAA+B,OAAO;UAC/C,WAAW;SACd;AACD,cAAM,QAAQ,MAAM,IAAI,SAAS,OAAO;AACxC,YAAI,SAAS,QAAW;AACpB,gBAAM,aAAa,+CAA+C,OAAO;sBACnE,MAAM,QAAQ;4BACR,MAAM,QAAQ,IAAI,MAAM,EAAE,KAAK,IAAI,CAAC;AAChD,cAAI,QAAQ,KAAK,IAAI;YACjB,UAAU,KAAK;YACf,SAAS;YACT,WAAW;WACd;QACL;AACA,iBAAS,aAAa,SAAS,UAAU;MAC7C;IACJ;;;;IASS,oBAAgB,MAAA;8BAF5B,yCAAU,gCAAmB,GAAG,OAChC,8CAAc,CAAE;;;;oBACqB;wCAAA,YAAa;WAAA;;;;;;;;AAAnD,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACT,YAAmB,SAA6C;AAC5D,YAAM,OAAO;AACb,UAAI,QAAQ,UAAU,GAAG;AACrB,cAAM,IAAI,uBAAW,kCAAkC,4BAAgB,gBAAgB;MAC3F;AACA,UAAI,QAAQ,QAAQ,KAAK,CAAC,MAAM,IAAI,KAAK,IAAI,qBAAS,GAAG;AACrD,cAAM,IAAI,uBAAW,sCAAsC,qBAAS,KAAK,4BAAgB,gBAAgB;MAC7G;AACA,WAAK,UAAU,QAAQ;AACvB,WAAK,UAAU,QAAQ;IAC3B;IACO,OAAO,KAAK,KAAY,KAAqB;AAChD,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,UAAU,IAAI,QAAQ,CAAC;AAC7B,YAAM,UAAU,CAAC,GAAG,IAAI,QAAQ,SAAS,CAAC,CAAC;AAC3C,aAAO,IAAI,KAAK;QACZ,QAAQ,IAAI;QACZ;QACA;OACH;IACL;IACO;IACA;IACA,UAAU,KAAsB;AACnC,WAAK,UAAU,oBAAM,KAAK,CAAC,KAAK,SAAS,GAAG,KAAK,OAAO,CAAC;AACzD,aAAO,MAAM,UAAU,GAAG;IAC9B;IACO,WAAW,KAAgB;AAC9B,YAAM,UAAyB;QAC3B,YAAY,KAAK,WAAW;QAC5B,YAAY,KAAK,QAAQ,SACnB,KAAK,QAAQ,KAAK,IAAI,IACtB;;AAEV,aAAO;QACH,GAAG,MAAM,WAAW,GAAG;QACvB;;IAER;;;;IAWS,uBAAmB,MAAA;8BAF/B,yCAAU,gCAAmB,MAAM,OACnC,8CAAc,CAAE;;;;oBACwB;2CAAA,YAAa;WAAA;;;;;;;;AAAtD,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACT,YAAmB,SAAgD;AAC/D,YAAM,OAAO;AAGb,WAAK,UAAU,QAAQ;AACvB,WAAK,UAAU,QAAQ;IAC3B;IACO,OAAO,KAAK,KAAY,KAAqB;AAChD,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,UAAI;AACJ,UAAI,IAAI,QAAQ,CAAC,MAAM,GAAG;AACtB,kBAAU,IAAI,QAAQ,CAAC;MAC3B;AACA,YAAM,UAAU,CAAC,GAAG,IAAI,QAAQ,SAAS,CAAC,CAAC;AAC3C,aAAO,IAAI,KAAK;QACZ,QAAQ,IAAI;QACZ;QACA;OACH;IACL;IACO;IACA;IACA,UAAU,KAAsB;AACnC,WAAK,UAAU,oBAAM,KAAK;QACtB,KAAK,WAAW;QAChB,GAAI,KAAK,WAAW,CAAA;OACvB;AACD,aAAO,MAAM,UAAU,GAAG;IAC9B;IACO,WAAW,KAAgB;AAC9B,YAAM,UAAyB;QAC3B,YAAY,KAAK,WAAW;QAC5B,YAAY,KAAK,WAAW,KAAK,QAAQ,SACnC,KAAK,QAAQ,KAAK,IAAI,IACtB;;AAEV,aAAO;QACH,GAAG,MAAM,WAAW,GAAG;QACvB;;IAER;;;;IAYS,uBAAmB,MAAA;8BAH/B,yCAAU,gCAAmB,MAAM,OACnC,+CAAgB,YAAY,8CAAoB,UAAU,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,OAClF,+CAAgB,WAAW,8CAAoB,SAAS,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,CAAC;;;;oBACzC;2CAAA,YAAa;WAAA;;;;;;;;AAAtD,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACT,YAAmB,SAAgD;AAC/D,YAAM,OAAO;AACb,WAAK,UAAU,QAAQ;AACvB,WAAK,WAAW,QAAQ;AACxB,WAAK,UAAU,QAAQ;AACvB,WAAK,kBAAkB,QAAQ;IACnC;IACO,OAAO,KAAK,KAAY,KAAqB;AAChD,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,UAAU,IAAI,QAAQ,CAAC;AAC7B,YAAM,WAAW,IAAI,QAAQ,CAAC;AAC9B,YAAM,kBAAkB,IAAI,QAAQ,CAAC;AACrC,YAAM,UAAU,CAAC,GAAG,IAAI,QAAQ,SAAS,CAAC,CAAC;AAC3C,aAAO,IAAI,KAAK;QACZ,QAAQ,IAAI;QACZ;QACA;QACA;QACA;OACH;IACL;IACO;IACA;IACA;IACA;IACA,wBAAqB;AAExB,aAAO,EAAE,SAAS,KAAK,QAAO;IAClC;IACO,uBAAoB;AACvB,aAAO,KAAK;IAChB;IACO,gBAAgB,UAAiC,MAAsB;AAE1E,WAAK,UAAU,CAAC,GAAG,UAAU,IAAI,EAC5B,IAAI,CAAC,WAAW,OAAO,OAAO,EAC9B,OAAO,CAAC,MAAM,QAAQ,KAAK,OAAO,GAAG,GAAG,GAAG,CAAA,CAAE;AAClD,aAAO,QAAQ,QAAO;IAC1B;IACO,UAAU,KAAsB;AACnC,WAAK,UAAU,oBAAM,KAAK;QACtB,KAAK;QACL,KAAK;QACL,KAAK;QACL,GAAG,KAAK;OACX;AACD,aAAO,MAAM,UAAU,GAAG;IAC9B;IACO,WAAW,KAAgB;AAC9B,aAAO;QACH,GAAG,MAAM,WAAW,GAAG;QACvB,SAAS;UACL,YAAY,KAAK;UACjB,kBAAkB,KAAK;UACvB,YAAY,KAAK,QAAQ,KAAK,IAAI;UAClC,qBAAqB,KAAK;;;IAGtC;;;;IAQS,oBAAgB,MAAA;8BAF5B,yCAAU,gCAAmB,GAAG,OAChC,kDAAmB,mBAAmB,CAAC;;;;oBACF;wCAAA,YAAa;WAAA;;;;;;;;AAAnD,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACT,YAAmB,SAA6C;AAC5D,YAAM,OAAO;AACb,UAAI,QAAQ,UAAU,GAAG;AACrB,cAAM,IAAI,uBAAW,kCAAkC,4BAAgB,gBAAgB;MAC3F;AACA,WAAK,UAAU,QAAQ;IAC3B;IACO,OAAO,KAAK,KAAY,KAAqB;AAChD,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,UAAU,IAAI,QAAQ,CAAC;AAC7B,aAAO,IAAI,KAAK;QACZ,QAAQ,IAAI;QACZ;OACH;IACL;IACO;IACA,UAAU,KAAsB;AACnC,WAAK,UAAU,oBAAM,KAAK,CAAC,KAAK,OAAO,CAAC;AACxC,aAAO,MAAM,UAAU,GAAG;IAC9B;IACO,WAAW,KAAgB;AAC9B,aAAO;QACH,GAAG,MAAM,WAAW,GAAG;QACvB,SAAS,EAAE,YAAY,KAAK,QAAO;;IAE3C;;;;IAQS,yCAAqC,MAAA;8BAFjD,yCAAU,gCAAmB,wBAAwB,OACrD,+CAAgB,cAAc,8CAAoB,UAAU,CAAC;;;;oBACH;6DAAA,YAAa;WAAA;;;;;;;;AAAxE,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACT,YAAmB,SAAkE;AACjF,YAAM,OAAO;AACb,WAAK,aAAa,QAAQ;IAC9B;IACO,OAAO,KAAK,KAAY,KAAqB;AAChD,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,aAAa,IAAI,QAAQ,CAAC;AAChC,aAAO,IAAI,KAAK;QACZ,QAAQ,IAAI;QACZ;OACH;IACL;IACO;IACA,UAAU,KAAsB;AACnC,WAAK,UAAU,oBAAM,KAAK,CAAC,KAAK,UAAU,CAAC;AAC3C,aAAO,MAAM,UAAU,GAAG;IAC9B;IACO,WAAW,KAAgB;AAC9B,aAAO;QACH,GAAG,MAAM,WAAW,GAAG;QACvB,SAAS,EAAE,eAAe,KAAK,WAAU;;IAEjD;;;;IAIS,sCAAkC,MAAA;8BAF9C,yCAAU,gCAAmB,qBAAqB,OAClD,kDAAmB,qCAAqC,CAAC;;;;oBACF;0DAAA,YAAa;WAAA;;;;;;;;AAArE,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;;;;IAOA,oCAAgC,MAAA;8BAD5C,yCAAU,gCAAmB,mBAAmB,CAAC;;;;oBACI;wDAAA,YAAa;WAAA;;;;;;;;AAAnE,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;IACT,YAAmB,SAA6D;AAC5E,YAAM,OAAO;AACb,WAAK,QAAQ,QAAQ;IACzB;IACO,OAAO,KAAK,KAAY,KAAqB;AAChD,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,QAAQ,IAAI,QAAQ,CAAC;AAC3B,aAAO,IAAI,KAAK;QACZ,QAAQ,IAAI;QACZ;OACH;IACL;IACO;IACA,UAAU,KAAsB;AACnC,WAAK,UAAU,oBAAM,KAAK,CAAC,KAAK,KAAK,CAAC;AACtC,aAAO,MAAM,UAAU,GAAG;IAC9B;IACO,WAAW,KAAgB;AAC9B,aAAO;QACH,GAAG,MAAM,WAAW,GAAG;QACvB,SAAS,EAAE,OAAO,KAAK,MAAK;;IAEpC;;;;IAIS,iCAA6B,MAAA;8BAFzC,yCAAU,gCAAmB,gBAAgB,OAC7C,kDAAmB,gCAAgC,CAAC;;;;oBACF;qDAAA,YAAa;WAAA;;;;;;;;AAAhE,qCAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,0CAAA,YAAA,uBAAA;;;;;",
|
|
4
|
+
"sourcesContent": ["import * as __validateArgs from \"./AssociationCC._validateArgs.js\";\nconst { validateArgs_AssociationCCAPI_reportGroupCount, validateArgs_AssociationCCAPI_getGroup, validateArgs_AssociationCCAPI_sendReport, validateArgs_AssociationCCAPI_addNodeIds, validateArgs_AssociationCCAPI_removeNodeIds, validateArgs_AssociationCCAPI_removeNodeIdsFromAllGroups, validateArgs_AssociationCCAPI_getSpecificGroup, validateArgs_AssociationCCAPI_reportSpecificGroup } = __validateArgs;\nimport type { GetDeviceConfig } from \"@zwave-js/config\";\nimport { CommandClasses, type EndpointId, type GetValueDB, MAX_NODES, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, type SupervisionResult, type WithAddress, ZWaveError, ZWaveErrorCodes, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes } from \"@zwave-js/shared\";\nimport { distinct } from \"alcalzone-shared/arrays\";\nimport { CCAPI, PhysicalCCAPI } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type RefreshValuesContext, type RefreshValuesOptions, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, useSupervision, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { type AssociationAddress, AssociationCommand } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport * as ccUtils from \"../lib/utils.js\";\nimport { AssociationCCValues } from \"./_CCValues.generated.js\";\nexport { AssociationCCValues };\n// @noSetValueAPI\n@API(CommandClasses.Association)\nexport class AssociationCCAPI extends PhysicalCCAPI {\n public supportsCommand(cmd: AssociationCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case AssociationCommand.Get:\n case AssociationCommand.Set:\n case AssociationCommand.Report:\n case AssociationCommand.Remove:\n case AssociationCommand.SupportedGroupingsGet:\n case AssociationCommand.SupportedGroupingsReport:\n return true;\n case AssociationCommand.SpecificGroupGet:\n case AssociationCommand.SpecificGroupReport:\n return this.version >= 2;\n }\n return super.supportsCommand(cmd);\n }\n /**\n * Returns the number of association groups a node supports.\n * Association groups are consecutive, starting at 1.\n */\n public async getGroupCount(): Promise<MaybeNotKnown<number>> {\n this.assertSupportsCommand(AssociationCommand, AssociationCommand.SupportedGroupingsGet);\n const cc = new AssociationCCSupportedGroupingsGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<AssociationCCSupportedGroupingsReport>(cc, this.commandOptions);\n if (response)\n return response.groupCount;\n }\n @validateArgs_AssociationCCAPI_reportGroupCount()\n public async reportGroupCount(groupCount: number): Promise<void> {\n this.assertSupportsCommand(AssociationCommand, AssociationCommand.SupportedGroupingsReport);\n const cc = new AssociationCCSupportedGroupingsReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n groupCount,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n /**\n * Returns information about an association group.\n */\n @validateArgs_AssociationCCAPI_getGroup()\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getGroup(groupId: number) {\n this.assertSupportsCommand(AssociationCommand, AssociationCommand.Get);\n const cc = new AssociationCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n groupId,\n });\n const response = await this.host.sendCommand<AssociationCCReport>(cc, this.commandOptions);\n if (response) {\n return {\n maxNodes: response.maxNodes,\n nodeIds: response.nodeIds,\n };\n }\n }\n @validateArgs_AssociationCCAPI_sendReport()\n public async sendReport(options: AssociationCCReportOptions): Promise<void> {\n this.assertSupportsCommand(AssociationCommand, AssociationCommand.Report);\n const cc = new AssociationCCReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n /**\n * Adds new nodes to an association group\n */\n @validateArgs_AssociationCCAPI_addNodeIds()\n public async addNodeIds(groupId: number, ...nodeIds: number[]): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(AssociationCommand, AssociationCommand.Set);\n const cc = new AssociationCCSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n groupId,\n nodeIds,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n /**\n * Removes nodes from an association group\n */\n @validateArgs_AssociationCCAPI_removeNodeIds()\n public async removeNodeIds(options: AssociationCCRemoveOptions): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(AssociationCommand, AssociationCommand.Remove);\n // Validate options\n if (!options.groupId) {\n if (this.version === 1) {\n throw new ZWaveError(`Node ${this.endpoint.nodeId} only supports AssociationCC V1 which requires the group Id to be set`, ZWaveErrorCodes.Argument_Invalid);\n }\n }\n else if (options.groupId < 0) {\n throw new ZWaveError(\"The group id must be positive!\", ZWaveErrorCodes.Argument_Invalid);\n }\n const cc = new AssociationCCRemove({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n /**\n * Removes nodes from all association groups\n */\n @validateArgs_AssociationCCAPI_removeNodeIdsFromAllGroups()\n public async removeNodeIdsFromAllGroups(nodeIds: number[]): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(AssociationCommand, AssociationCommand.Remove);\n if (this.version >= 2) {\n // The node supports bulk removal\n return this.removeNodeIds({ nodeIds, groupId: 0 });\n }\n else {\n // We have to remove the node manually from all groups\n const groupCount = this.tryGetValueDB()?.getValue<number>(AssociationCCValues.groupCount.endpoint(this.endpoint.index)) ?? 0;\n for (let groupId = 1; groupId <= groupCount; groupId++) {\n // TODO: evaluate intermediate supervision results\n await this.removeNodeIds({ nodeIds, groupId });\n }\n }\n }\n /**\n * Request the association group that represents the most recently detected button press\n */\n @validateArgs_AssociationCCAPI_getSpecificGroup()\n public async getSpecificGroup(): Promise<number | undefined> {\n this.assertSupportsCommand(AssociationCommand, AssociationCommand.SpecificGroupGet);\n const cc = new AssociationCCSpecificGroupGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<AssociationCCSpecificGroupReport>(cc, this.commandOptions);\n return response?.group;\n }\n /**\n * Report the association group that represents the most recently detected button press\n */\n @validateArgs_AssociationCCAPI_reportSpecificGroup()\n public async reportSpecificGroup(group: number): Promise<void> {\n this.assertSupportsCommand(AssociationCommand, AssociationCommand.SpecificGroupReport);\n const cc = new AssociationCCSpecificGroupReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n group,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n}\n@commandClass(CommandClasses.Association)\n@implementedVersion(4)\n@ccValues(AssociationCCValues)\nexport class AssociationCC extends CommandClass {\n declare ccCommand: AssociationCommand;\n public determineRequiredCCInterviews(): readonly CommandClasses[] {\n // AssociationCC must be interviewed after Z-Wave+ if that is supported\n return [\n ...super.determineRequiredCCInterviews(),\n CommandClasses[\"Z-Wave Plus Info\"],\n // We need information about endpoints to correctly configure the lifeline associations\n CommandClasses[\"Multi Channel\"],\n ];\n }\n /**\n * Returns the number of association groups reported by the node/endpoint.\n * This only works AFTER the interview process\n */\n public static getGroupCountCached(ctx: GetValueDB, endpoint: EndpointId): number {\n return (ctx\n .getValueDB(endpoint.nodeId)\n .getValue(AssociationCCValues.groupCount.endpoint(endpoint.index)) || 0);\n }\n /**\n * Returns the number of nodes an association group supports.\n * This only works AFTER the interview process\n */\n public static getMaxNodesCached(ctx: GetValueDB & GetDeviceConfig, endpoint: EndpointId, groupId: number): number {\n return (ctx\n .getValueDB(endpoint.nodeId)\n .getValue(AssociationCCValues.maxNodes(groupId).endpoint(endpoint.index))\n // If the information is not available, fall back to the configuration file if possible\n // This can happen on some legacy devices which have \"hidden\" association groups\n ?? ctx\n .getDeviceConfig?.(endpoint.nodeId)\n ?.getAssociationConfigForEndpoint(endpoint.index, groupId)\n ?.maxNodes\n ?? 0);\n }\n /**\n * Returns all the destinations of all association groups reported by the node/endpoint.\n * This only works AFTER the interview process\n */\n public static getAllDestinationsCached(ctx: GetValueDB, endpoint: EndpointId): ReadonlyMap<number, readonly AssociationAddress[]> {\n const ret = new Map<number, AssociationAddress[]>();\n const groupCount = this.getGroupCountCached(ctx, endpoint);\n const valueDB = ctx.getValueDB(endpoint.nodeId);\n for (let i = 1; i <= groupCount; i++) {\n // Add all root destinations\n const nodes = valueDB.getValue<number[]>(AssociationCCValues.nodeIds(i).endpoint(endpoint.index)) ?? [];\n ret.set(i, \n // Filter out duplicates\n distinct(nodes).map((nodeId) => ({ nodeId })));\n }\n return ret;\n }\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses.Association, ctx, endpoint).withOptions({\n priority: MessagePriority.NodeQuery,\n tag: \"interview\",\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n // Even if Multi Channel Association is supported, we still need to query the number of\n // normal association groups since some devices report more association groups than\n // multi channel association groups\n // Find out how many groups are supported\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying number of association groups...\",\n direction: \"outbound\",\n });\n const groupCount = await api.getGroupCount();\n if (groupCount != undefined) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `supports ${groupCount} association groups`,\n direction: \"inbound\",\n });\n }\n else {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"Querying association groups timed out, skipping interview...\",\n level: \"warn\",\n });\n return;\n }\n // Query each association group for its members\n await this.refreshValues(ctx, {\n tag: \"interview\",\n onProgress: (completed, total) => node.reportInterviewProgress(completed, total),\n });\n // Skip the remaining Association CC interview in favor of Multi Channel Association if possible\n if (endpoint.supportsCC(CommandClasses[\"Multi Channel Association\"])) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `${this.constructor.name}: delaying configuration of lifeline associations until after Multi Channel Association interview...`,\n direction: \"none\",\n });\n this.setInterviewComplete(ctx, true);\n return;\n }\n // And set up lifeline associations\n await ccUtils.configureLifelineAssociations(ctx, endpoint);\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses.Association, ctx, endpoint).withOptions({\n priority: options?.priority ?? MessagePriority.NodeQuery,\n tag: options?.tag,\n });\n const groupCount = AssociationCC.getGroupCountCached(ctx, endpoint);\n // Query each association group\n for (let groupId = 1; groupId <= groupCount; groupId++) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `querying association group #${groupId}...`,\n direction: \"outbound\",\n });\n const group = await api.getGroup(groupId);\n if (group != undefined) {\n const logMessage = `received information for association group #${groupId}:\nmaximum # of nodes: ${group.maxNodes}\ncurrently assigned nodes: ${group.nodeIds.map(String).join(\", \")}`;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n }\n options?.onProgress?.(groupId, groupCount);\n }\n }\n}\n// @publicAPI\nexport interface AssociationCCSetOptions {\n groupId: number;\n nodeIds: number[];\n}\n@CCCommand(AssociationCommand.Set)\n@useSupervision()\nexport class AssociationCCSet extends AssociationCC {\n public constructor(options: WithAddress<AssociationCCSetOptions>) {\n super(options);\n if (options.groupId < 1) {\n throw new ZWaveError(\"The group id must be positive!\", ZWaveErrorCodes.Argument_Invalid);\n }\n if (options.nodeIds.some((n) => n < 1 || n > MAX_NODES)) {\n throw new ZWaveError(`All node IDs must be between 1 and ${MAX_NODES}!`, ZWaveErrorCodes.Argument_Invalid);\n }\n this.groupId = options.groupId;\n this.nodeIds = options.nodeIds;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCSet {\n validatePayload(raw.payload.length >= 2);\n const groupId = raw.payload[0];\n const nodeIds = [...raw.payload.subarray(1)];\n return new this({\n nodeId: ctx.sourceNodeId,\n groupId,\n nodeIds,\n });\n }\n public groupId: number;\n public nodeIds: number[];\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.groupId, ...this.nodeIds]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"group id\": this.groupId || \"all groups\",\n \"node ids\": this.nodeIds.length\n ? this.nodeIds.join(\", \")\n : \"all nodes\",\n };\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface AssociationCCRemoveOptions {\n /** The group from which to remove the nodes. If none is specified, the nodes will be removed from all groups. */\n groupId?: number;\n /** The nodes to remove. If none are specified, ALL nodes will be removed. */\n nodeIds?: number[];\n}\n@CCCommand(AssociationCommand.Remove)\n@useSupervision()\nexport class AssociationCCRemove extends AssociationCC {\n public constructor(options: WithAddress<AssociationCCRemoveOptions>) {\n super(options);\n // When removing associations, we allow invalid node IDs.\n // See GH#3606 - it is possible that those exist.\n this.groupId = options.groupId;\n this.nodeIds = options.nodeIds;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCRemove {\n validatePayload(raw.payload.length >= 1);\n let groupId: number | undefined;\n if (raw.payload[0] !== 0) {\n groupId = raw.payload[0];\n }\n const nodeIds = [...raw.payload.subarray(1)];\n return new this({\n nodeId: ctx.sourceNodeId,\n groupId,\n nodeIds,\n });\n }\n public groupId?: number;\n public nodeIds?: number[];\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.groupId || 0, ...(this.nodeIds || [])]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"group id\": this.groupId || \"all groups\",\n \"node ids\": this.nodeIds && this.nodeIds.length\n ? this.nodeIds.join(\", \")\n : \"all nodes\",\n };\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface AssociationCCReportOptions {\n groupId: number;\n maxNodes: number;\n nodeIds: number[];\n reportsToFollow: number;\n}\n@CCCommand(AssociationCommand.Report)\n@ccValueProperty(\"maxNodes\", AssociationCCValues.maxNodes, (self) => [\n self.groupId,\n])\n@ccValueProperty(\"nodeIds\", AssociationCCValues.nodeIds, (self) => [\n self.groupId,\n])\nexport class AssociationCCReport extends AssociationCC {\n public constructor(options: WithAddress<AssociationCCReportOptions>) {\n super(options);\n this.groupId = options.groupId;\n this.maxNodes = options.maxNodes;\n this.nodeIds = options.nodeIds;\n this.reportsToFollow = options.reportsToFollow;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCReport {\n validatePayload(raw.payload.length >= 3);\n const groupId = raw.payload[0];\n const maxNodes = raw.payload[1];\n const reportsToFollow = raw.payload[2];\n const nodeIds = [...raw.payload.subarray(3)];\n return new this({\n nodeId: ctx.sourceNodeId,\n groupId,\n maxNodes,\n reportsToFollow,\n nodeIds,\n });\n }\n public groupId: number;\n public maxNodes: number;\n public nodeIds: number[];\n public reportsToFollow: number;\n public getPartialCCSessionId(): Record<string, any> | undefined {\n // Distinguish sessions by the association group ID\n return { groupId: this.groupId };\n }\n public getRemainingSegments(): number | undefined {\n return this.reportsToFollow;\n }\n public mergePartialCCs(partials: AssociationCCReport[], _ctx: CCParsingContext): Promise<void> {\n // Concat the list of nodes\n this.nodeIds = [...partials, this]\n .map((report) => report.nodeIds)\n .reduce((prev, cur) => prev.concat(...cur), []);\n return Promise.resolve();\n }\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n this.groupId,\n this.maxNodes,\n this.reportsToFollow,\n ...this.nodeIds,\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"group id\": this.groupId,\n \"max # of nodes\": this.maxNodes,\n \"node IDs\": this.nodeIds.join(\", \"),\n \"reports to follow\": this.reportsToFollow,\n },\n };\n }\n}\n// @publicAPI\nexport interface AssociationCCGetOptions {\n groupId: number;\n}\n@CCCommand(AssociationCommand.Get)\n@expectedCCResponse(AssociationCCReport)\nexport class AssociationCCGet extends AssociationCC {\n public constructor(options: WithAddress<AssociationCCGetOptions>) {\n super(options);\n if (options.groupId < 1) {\n throw new ZWaveError(\"The group id must be positive!\", ZWaveErrorCodes.Argument_Invalid);\n }\n this.groupId = options.groupId;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCGet {\n validatePayload(raw.payload.length >= 1);\n const groupId = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n groupId,\n });\n }\n public groupId: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.groupId]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: { \"group id\": this.groupId },\n };\n }\n}\n// @publicAPI\nexport interface AssociationCCSupportedGroupingsReportOptions {\n groupCount: number;\n}\n@CCCommand(AssociationCommand.SupportedGroupingsReport)\n@ccValueProperty(\"groupCount\", AssociationCCValues.groupCount)\nexport class AssociationCCSupportedGroupingsReport extends AssociationCC {\n public constructor(options: WithAddress<AssociationCCSupportedGroupingsReportOptions>) {\n super(options);\n this.groupCount = options.groupCount;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCSupportedGroupingsReport {\n validatePayload(raw.payload.length >= 1);\n const groupCount = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n groupCount,\n });\n }\n public groupCount: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.groupCount]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: { \"group count\": this.groupCount },\n };\n }\n}\n@CCCommand(AssociationCommand.SupportedGroupingsGet)\n@expectedCCResponse(AssociationCCSupportedGroupingsReport)\nexport class AssociationCCSupportedGroupingsGet extends AssociationCC {\n}\n// @publicAPI\nexport interface AssociationCCSpecificGroupReportOptions {\n group: number;\n}\n@CCCommand(AssociationCommand.SpecificGroupReport)\nexport class AssociationCCSpecificGroupReport extends AssociationCC {\n public constructor(options: WithAddress<AssociationCCSpecificGroupReportOptions>) {\n super(options);\n this.group = options.group;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCSpecificGroupReport {\n validatePayload(raw.payload.length >= 1);\n const group = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n group,\n });\n }\n public group: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.group]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: { group: this.group },\n };\n }\n}\n@CCCommand(AssociationCommand.SpecificGroupGet)\n@expectedCCResponse(AssociationCCSpecificGroupReport)\nexport class AssociationCCSpecificGroupGet extends AssociationCC {\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["AssociationCC"]
|
|
7
7
|
}
|
|
@@ -570,10 +570,7 @@ let AssociationGroupInfoCCInfoGet = (() => {
|
|
|
570
570
|
serialize(ctx) {
|
|
571
571
|
const isListMode = this.listMode === true;
|
|
572
572
|
const optionByte = (this.refreshCache ? 128 : 0) | (isListMode ? 64 : 0);
|
|
573
|
-
this.payload = import_shared.Bytes.from([
|
|
574
|
-
optionByte,
|
|
575
|
-
isListMode ? 0 : this.groupId
|
|
576
|
-
]);
|
|
573
|
+
this.payload = import_shared.Bytes.from([optionByte, isListMode ? 0 : this.groupId]);
|
|
577
574
|
return super.serialize(ctx);
|
|
578
575
|
}
|
|
579
576
|
toLogEntry(ctx) {
|
|
@@ -594,7 +591,9 @@ let AssociationGroupInfoCCInfoGet = (() => {
|
|
|
594
591
|
return AssociationGroupInfoCCInfoGet2 = _classThis;
|
|
595
592
|
})();
|
|
596
593
|
let AssociationGroupInfoCCCommandListReport = (() => {
|
|
597
|
-
let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.AssociationGroupInfoCommand.CommandListReport), (0, import_CommandClassDecorators.ccValueProperty)("commands", import_CCValues_generated.AssociationGroupInfoCCValues.commands, (self) => [
|
|
594
|
+
let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.AssociationGroupInfoCommand.CommandListReport), (0, import_CommandClassDecorators.ccValueProperty)("commands", import_CCValues_generated.AssociationGroupInfoCCValues.commands, (self) => [
|
|
595
|
+
self.groupId
|
|
596
|
+
])];
|
|
598
597
|
let _classDescriptor;
|
|
599
598
|
let _classExtraInitializers = [];
|
|
600
599
|
let _classThis;
|