ActivatedCarbonFilterMonitoring Cluster

Cluster ID: 0x0072  |  Endpoint: Application endpoint (typically Endpoint 1 or a dedicated filter endpoint)

ActivatedCarbonFilterMonitoring monitors the lifecycle of activated carbon filters -- remaining life, degradation direction, replacement reminders, and replacement product information. Its structure is identical to HEPA Filter Monitoring (0x0071) (same attributes, commands, and enums); the only difference is the filter type.

Activated Carbon vs HEPA: Different Filtration Targets

HEPA filters capture particulates (PM2.5, dust, pollen, pet dander) through physical interception.
Activated carbon filters adsorb gaseous pollutants (formaldehyde, VOCs, odors, smoke) through chemical adsorption.
Air purifiers typically carry both filter layers, each with an independent lifecycle -- hence two separate Clusters are needed for individual monitoring.

Feature Map

Three optional feature bits determine which attributes the device supports, identical to HEPA Filter Monitoring.

0x01
CON(Condition) Supports the Condition attribute, reporting filter remaining percentage
0x02
WAR(Warning) Supports the ChangeIndication attribute, issuing replacement reminders
0x04
REP(ReplacementProductList) Supports the ReplacementProductList attribute, providing replacement filter product information

Attribute Overview

All attributes are identical to HEPA Filter Monitoring. The Feature column indicates which feature bit is required.

ID Name Type Feature Description
0x00 Condition percent CON Filter remaining life percentage (0~100)
0x01 DegradationDirection enum8 CON Degradation direction (lower = older OR higher = older)
0x02 ChangeIndication enum8 Required Current replacement status (OK / Warning / Critical)
0x03 InPlaceIndicator bool Optional Whether the filter is properly installed
0x04 LastChangedTime epoch-s Optional Timestamp of last filter replacement
0x05 ReplacementProductList list REP Recommended replacement product list

Condition (Filter Remaining Life)

A percentage value from 0 to 100 representing the remaining adsorption capacity of the activated carbon filter. 100 means brand new; 0 means fully depleted (when DegradationDirection = Down). The degradation rate of activated carbon depends on the concentration of VOCs/odors in the environment; it is consumed faster in high-pollution environments.

DegradationDirection (Degradation Direction)

Tells the app the meaning direction of the Condition value.

0
Down Value decreases from 100 to 0; the lower the value, the more replacement is needed (most common)
1
Up Value increases from 0 to 100; the higher the value, the more replacement is needed

ChangeIndication (Change Indication)

The device's overall assessment of the filter's current status. Mandatory attribute -- must be implemented even without the CON Feature.

0
OK Filter status is good; no replacement needed
1
Warning Replacement recommended soon (adsorption capacity declining)
2
Critical Must be replaced immediately (adsorption capacity lost)

InPlaceIndicator (Filter Installation Status)

true indicates the filter is correctly installed; false indicates the filter is missing or improperly installed. Devices with physical detection switches can automatically update this value when the user removes the filter.

LastChangedTime (Last Changed Time)

Unix timestamp (seconds) recording when the activated carbon filter was last replaced. Combined with Condition, it allows calculation of actual usage days and average consumption rate. After the user replaces the filter and executes the ResetCondition command, the device should update this value.

ReplacementProductList (Replacement Product List)

List of replacement filter products recommended by the device. Each entry contains a product identifier type and value. The app can use this to directly guide users to purchase.

FieldTypeDescription
ProductIdentifierType enum8 Identification type (see enum below)
ProductIdentifierValue string Identification value (e.g., UPC, EAN, model number)

ProductIdentifierTypeEnum Enum Values

0
UPC Universal Product Code
1
GTIN-8 8-digit Global Trade Item Number
2
EAN European Article Number
3
GTIN-14 14-digit Global Trade Item Number
4
OEM Vendor-defined part number

Commands

Only one command, used to reset the state after filter replacement.

ID Name Description
0x00 ResetCondition Reset filter condition (called after filter replacement)

ResetCondition -- Reset Filter Status (0x00)

After the user replaces the activated carbon filter, this command is sent via the app. Upon receipt, the device should restore Condition to 100 (or 0, depending on DegradationDirection), reset ChangeIndication to OK, and update LastChangedTime to the current time. No parameters required; send directly.

Request example:

{
  "invokeRequests": [{
    "commandPath": {
      "endpointId": 1,
      "clusterId": "0x0072",
      "commandId": "0x00"          // ResetCondition
    },
    "commandFields": {}
  }]
}

Example Data

Read the activated carbon filter status from an air purifier:

{
  // --- Attributes (ActivatedCarbonFilterMonitoring Cluster) ---
  "0x0": 72,          // Condition = 72% (filter remaining life)
  "0x1": 0,           // DegradationDirection = Down (lower value means more replacement needed)
  "0x2": 1,           // ChangeIndication = Warning (replacement recommended)
  "0x3": true,        // InPlaceIndicator = true (filter installed)
  "0x4": 1718380800,  // LastChangedTime = 2024-06-15T00:00:00Z
  "0x5": [{           // ReplacementProductList
    "productIdentifierType": 3,
    "productIdentifierValue": "AC-FILTER-2024-VOC"
  }]
}

Usage Scenarios

Scenario 1: Dual-Filter Air Purifier

An air purifier carries both a HEPA filter and an activated carbon filter, placed on two separate Endpoints (or two different Clusters on the same Endpoint). The app needs to display the lifespan of both filter layers separately, as their consumption rates differ -- in high PM2.5 environments the HEPA depletes first; in newly renovated rooms the activated carbon depletes first.

{
  // Endpoint 1 -- HEPA Filter (HEPAFilterMonitoring 0x0071)
  "hepa": {
    "0x0": 45,         // Condition = 45%
    "0x2": 1           // ChangeIndication = Warning
  },
  // Endpoint 2 -- Activated Carbon Filter (ActivatedCarbonFilterMonitoring 0x0072)
  "carbon": {
    "0x0": 78,         // Condition = 78%
    "0x2": 0           // ChangeIndication = OK
  }
}

The app is recommended to use dual progress bars or dual ring charts to display both, so users can see at a glance which filter layer needs replacement.

Scenario 2: VOC Adsorption Capacity Tracking

Smart fresh air systems with built-in VOC sensors can analyze the actual adsorption efficiency of the activated carbon filter using its Condition attribute -- when VOC concentration remains elevated and Condition drops below 50%, it indicates significant adsorption capacity decline, and the app can proactively push replacement suggestions instead of waiting until ChangeIndication becomes Critical to notify the user.

Combined with LastChangedTime, the average filter lifespan can be calculated to help users plan consumable procurement cycles.

Relationship with HEPA Filter Monitoring

The attributes, commands, and enum definitions of both Clusters are identical; only the Cluster ID differs (HEPA = 0x0071, Activated Carbon = 0x0072). During app development, the same set of UI components and data parsing logic can be reused; just display different filter names and icons based on the Cluster ID.