Concentration Measurements Cluster
This cluster delivers the concentration of the remote sensor, and the minimumum and maximum measured since last power on or reset.
This cluster can be used to manage different kind of concentration measurements. As an exemple,
for a CO2 sensor the unit may be 'ppm',
while for a VOC sensor the measurement is is only an Indoor Air Quality indicator usually in range of 0(Best) to 500(Worst).
If a field of the payload starts with 0x, this means that it’s an hexadecimal representation, and if it starts with 0b, it is a binary representation. Any multi-byte numerical value is serialized in “Big Endian” order.
Measurement Attributes
The Measured Value reportable attribute contains last measured value data for CO2 or COV sensors. A readonly Unit attribute gives information about unit managed by current endpoint.
Measured Value
The Measured value information attribute set contains the attribute representing the current concentration value measured by the device.
Notice that the Measured Value Attribute (0x0000) is the source of calculated attributes that keep currents Mean (0x0100), Minimal(0x0101) and Maximal(0x0102) values since startup or reset of the sensor. All these calculated attributes can be accessed the same way than the source one.
Standard report
Report
Features | Fctrl | CmdID | ClusterID | AttributeID | Attribute type | Data | Comment |
Report attributes | 0x11 or 0x31 or
... | 0x0a | 0x800C | 0x0000 | 0x21 | 0xhhhh | 0xhhhh: Measured Value
Concentration unit may be "ppm", "IAQ",... |
Configuration
Features | Fctrl | CmdID | ClusterID | Payload | Comment |
Configure reporting | 0x11 or 0x31 or
... | 0x06 | 0x800C | 0x00 0x0000 0x21
0xmmmm 0xMMMM
0xcccc | 0x00: Reserved
0x0000: AttributeID
0x21: Attribute type
0xmmmm: minimum reporting interval
0xMMMM: maximum reporting interval
0xcccc: reportable change
|
Configure reporting response | 0x11 or 0x31 or
... | 0x07 | 0x800C | 0xss 0x00 0x0000 | 0xss: status
0x00: Reserved
0x0000: AttributeID |
Read reporting configuration | 0x11 or 0x31 or
... | 0x08 | 0x800C | 0x00 0x0000 | 0x00: Reserved
0x0000: attributeID |
Read reporting configuration response | 0x11 or 0x31 or
... | 0x09 | 0x800C | 0xss 0x00 0x0000 0x21
0xmmmm 0xMMMM
0xcccc | 0xss: status
0x00: Reserved
0x0000: AttributeID
0x21: Attribute type
0xmmmm: minimum reporting interval
0xMMMM: maximum reporting interval
0xcccc: reportable change
|
Read
Features | Fctrl | CmdID | ClusterID | AttributeID | Status | Attribute type | Data | Comment |
Read attribute request | 0x11 or 0x31 or
... | 0x00 | 0x800C | 0x0000 | | | | Ask the current concentration indication |
Read attribute response | 0x11 or 0x31 or
... | 0x01 | 0x800C | 0x0000 | 0x00 | 0x21 | 0xhhhh | 0xhhhh: Measured Value
Concentration unit may be "ppm", "IAQ",... |
Batch report
The Measured value sample type is "unsigned int U16", the corresponding number to use in br_uncompress type is 6.
Configuration
Features | Fctrl | CmdID | ClusterID | Payload | Comment |
Configure reporting | 0x11 or 0x31 or
... | 0x06 | 0x800C | 0x15 0x0000 0x00 0xmmmm 0xMMMM 0xdddd 0xrrrr 0xtt | 0x15: 0bsssssss is the size of configuration string after attributeID (obsssssss1 right shifted). The size here is 0x0A.
0x0000: AttributeID
0x00: the index of required field( the MeasuredValue attribute has got only one field 0)
0xmmmm: minimum reporting interval
0xMMMM: maximum reporting interval
0xdddd: required delta value (the size depends on the attribute data type)
0xrrrr: required resolution (the size depends on the attribute data type)
0xtt: the tag value |
Configure reporting response | 0x11 or 0x31 or
... | 0x07 | 0x800C | 0xss 0x01 0x0000 | 0xss: status
0x01: batch
0x0000: AttributeID |
Read reporting configuration | 0x11 or 0x31 or
... | 0x08 | 0x800C | 0x01 0x0000 | 0x01: batch
0x0000: AttributeID |
Read reporting configuration response | 0x11 or 0x31 or
... | 0x09 | 0x800C | 0xss 0x15 0x0000 0x00 0xmmmm 0xMMMM 0xdddd 0xrrrr 0xtt | 0xss: status
0x15: 0bsssssss is the size of configuration string after attributeID (obsssssss1 right shifted). The size here is 0x0A.
0x0000: AttributeID
0x00: the index of required field( the MeasuredValue attribute has got only one field 0)
0xmmmm: minimum reporting interval
0xMMMM: maximum reporting interval
0xdddd: required delta value (the size depends on the attribute data type)
0xrrrr: required resolution (the size depends on the attribute data type)
0xtt: the tag value |
Unit
The unit(s) managed by the corresponding sensor.
Read
Features | Fctrl | CmdID | ClusterID | AttributeID | Status | Attribute type | Data | Comment |
Read attribute request | 0x11 or 0x31 or
... | 0x00 | 0x800C | 0x8004 | | | | Ask the maximum value that the sensor is capable to measure |
Read attribute response | 0x11 or 0x31 or
... | 0x01 | 0x800C | 0x8004 | 0x00 | 0x20 | 0xuu | 0xuu: Possible concentration units:
0xFF: Unit is undefined
0x01: Parts per 10
0x02: Parts per 100
0x03: Parts per 1000
0x06: Parts per Million
0x09: Parts per Billion
0x0C: Parts par Trillion
0x0F: Parts par Quintillion
0x80: 0 to 500 Indicator (IAQ)
|
Statistic Attributes
These reportables attributes show the Minimal, Mean and Maximum values of CO2 or VOC sensor since sensor startup or last "Reset statistics" cluster specific command.
They can be read and reported in the same way than the "Measurement Attribute", by just changing the "Attribute ID" to the right one:
- Mean : 0x0100
- Minimum : 0x0101
- Maximum : 0x0102
Concentration level classification Attributes
These attributes are used to manage "ranges" of air quality levels.
The Classification attribute can be used to make specific reports on current classification levels (CO2 or COV).
Classification levels and HMI Display period attributes can also be used to settle classification level display on the sensor HMI For VAQAO sensors the HMI is made of the Leds.
The classification is done accross 6 different levels (5 thresholds), however the HMI display uses only 3 indications on current LED display, using RED and GREEN coding.
When HMI display is required on both CO2 and COV endpoints, the displayed is done according the current worst classification of both.
Following array summarize Classifications, default values and HMI display for CO2 and VOC.
Level Value |
level name |
CO2 |
IAQ |
Leds blinks
|
0 |
EXCELLENT |
< 550 |
< 50 |
GREEN |
1 |
GOOD |
< 700 |
< 100 |
GREEN |
2 |
MEDIUM |
< 1100 |
< 150 |
GREEN followed by RED |
3 |
BAD |
< 1300 |
< 200 |
GREEN followed by RED |
4 |
VERY BAD |
< 1700 |
< 300 |
RED |
5 |
UNHEALTHY |
> |
> |
RED |
Notes about level classification display:
- EXCELLENT/GOOD status is display at the HMI Display period attribute (Default 30s).
AVERAGE and BAD are displayed at half the period (Default 15s).
VERY and UNHEALTHY are displyed at about a quarter of the period (Default 7s).
- The air quality display can be based on CO2 or COV or both of them, by configuring the two endpoints of concentrations attributes (COV: 1105800C802021xxxx and CO2: 3105800C802021xxxx). The min of both periods will be used.
- The concentration level display can be removed (stopped) by setting the HMI Display period attribute to 0xFFFF, the downlink frames to send is should be 1105800C802021FFFF and/or 3105800C802021FFFF
Classification
The Classification attribute represent the current classification of current measured value.
Standard report
Report
Features | Fctrl | CmdID | ClusterID | AttributeID | Attribute type | Data | Comment |
Report attributes | 0x11 or 0x31 or
... | 0x0A | 0x800C | 0x0001 | 0x20 | 0xcc | 0xcc: current classification level.
0 EXCELLENT
1 GOOD
2 AVERAGE
3 BAD
4 VERY BAD
5 UNHEALTHY |
Configuration
Features | Fctrl | CmdID | ClusterID | Payload | Comment |
Configure reporting | 0x11 or 0x31 or
... | 0x06 | 0x800C | 0x00 0x0001 0x20 0xmmmm 0xMMMM 0xcc | 0x00 0x55: attributeID
0x20: attribute type
0xmmmm: minimum reporting interval
0xMMMM: maximum reporting interval
0xcc: 0x00: do not report on change/ 0x01: report on any change |
Configure reporting response | 0x11 or 0x31 or
... | 0x07 | 0x800C | 0xss 0x00 0x0001 | 0xss:status |
Read reporting configuration | 0x11 or 0x31 or
... | 0x08 | 0x800C | 0x00 0x0001 | 0x0001: attributeID |
Read reporting configuration response | 0x11 or 0x31 or
... | 0x09 | 0x800C | 0xss 0x00 0x0001 0x20 0xmmmm 0xMMMM 0xcc | 0xss:status
0x0001:attributeID
0x20: attribute type
0xmmmm: minimum reporting interval
0xMMMM: maximum reporting interval
0xcc: reportable change |
Read
Features | Fctrl | CmdID | ClusterID | AttributeID | Status | Attribute type | Data | Comment |
Read attribute request | 0x11 or 0x31 or
... | 0x00 | 0x800C | 0x0001 | | | | Requests the present value |
Read attribute response | 0x11 or 0x31 or
... | 0x01 | 0x800C | 0x0001 | 0x00 | 0x20 | 0xnn | 0xnn: Current classification level
(See report attributes)
|
Batch report
The Present value sample type is "Unsigned 8 bits integer", the corresponding number to use in br_uncompress type is 4.
Configuration
Feature | Fctrl | CmdID | ClusterID | Payload | Comment |
Configure reporting | 0x11 or 0x31 or
... | 0x06 | 0x800C | 0x11 0x0001 0x00 0xmmmm 0xMMMM 0xdd 0xrr 0xtt | 0x11: Batch(size+flag); 0bsssssss is the size of configuration string after attributeID (obsssssss1 right shifted). The size here is 0x08.
0x00 0x55: AttributeID
0x00: the index of required field
0xmmmm: minimum recorting interval
0xMMMM: maximum recorting interval
0xdd: the required delta value (the size depends on the attribute data type)
0xrr: the required resolution value (the size depends on the attribute data type)
0xtt:the tag value |
Configure reporting response | 0x11 or 0x31 or
... | 0x07 | 0x800C | 0xss 0x01 0x0001 | 0xss : status
0x01 : batch |
Read reporting configuration | 0x11 or 0x31 or
... | 0x08 | 0x800C | 0x01 0x0001 | 0x01: Batch |
Read reporting configuration response | 0x11 or 0x31 or
... | 0x09 | 0x800C | 0xss 0x11 0x0001 0x00 0xmmmm 0xMMMM 0xdd 0xrr 0xtt | 0xss : status
0x11: Batch(size+flag); 0bsssssss is the size of configuration string after attributeID (obsssssss1 right shifted). The size here is 0x08.
0x00: the index of required field
0xmmmm: minimum reporting interval
0xMMMM: maximum reporting interval
0xdd: the required delta value (the size depends on the attribute data type)
0xrr: the required resolution value (the size depends on the attribute data type)
0xtt: the tag value |
Classification levels
5 classification levels can be read or written with this attributes.
Read/Write
Features | Fctrl | CmdID | ClusterID | AttributeID | Status | Attribute type | Data | Comment |
Read attribute request | 0x11 or 0x31 or
... | 0x00 | 0x800C | 0x8010 | | | | Ask the current calibration coefficient |
Read attribute response | 0x11 or 0x31 or
... | 0x01 | 0x800C | 0x8010 | 0x00 | 0x41 | 0x0A 0xnnnn 0xmmmm 0xpppp 0xqqqq 0xrrrr | 0x0A: data length
0xnnnn: Excellent up to
0xmmmm: Good up to
0xpppp: Average up to
0xqqqq:Bad up to
0xrrrr:Very bad up to |
Write attribute no response | 0x11 or 0x31 or
... | 0x05 | 0x800C | 0x8010 | | 0x41 | 0x0A 0xnnnn 0xmmmm 0xpppp 0xqqqq 0xrrrr | Set the read attributes
|
HMI Display period
Display period measurement in seconds.
Read/Write
Features | Fctrl | CmdID | ClusterID | AttributeID | Status | Attribute type | Data | Comment |
Read attribute request | 0x11 or 0x31 or
... | 0x00 | 0x800C | 0x8020 | | | | Ask the minimal/normal concentration level defined for this sensor |
Read attribute response | 0x11 or 0x31 or
... | 0x01 | 0x800C | 0x8020 | 0x00 | 0x21 | 0xpppp | 0xpppp: HMI display period (Seconds)
0xFFFF : Not displayed (Leds off)
|
Write no response | 0x11 or 0x31 or
... | 0x05 | 0x800C | 0x8020 | | 0x21 | 0xpppp |
Automatic Baseline Calibration (ABC) Attributes
These attributes are relevant only for the CO2 sensor of VAQAO and VAQAO++ products (Endpoint 0x31).
A continuous autocalibration of the CO2 sensor, based on ABC principles, is done according to a "minimal/normal" value of CO2 concentration that the device should "see" in a defined "Calibration period".
Most of the time these parameters should not be changed. However, in some specifics cases, user may have to change Min/Normal level and Calibration period.
Exemples:
- The ABC should be unactivated by setting 0 in "Calibration period" attribut, if :
- User is able to periodically (about once a year) recalibrate the sensor. (see Cluster commands)
- The sensor installation place will never be exposed to a regular "Min/Normal level"
- The "Min/Normal" could be changed, if:
- Used above 2000m of altitude, then "Min/Normal" level could be decrease of about 70ppm from 410ppm to 350ppm
- The CO2 concentration in the atmosphere continue to increase (Notice in 2019 about 415ppm mean)
- The ABC could be trimmed using "Calibration period" and "Min/Normal level" attributes according to known specificities of the place where the sensor is installed.
Min/Normal level
Used for CO2 sensor Automatic Baseline Calibration.
Read/Write
Features | Fctrl | CmdID | ClusterID | AttributeID | Status | Attribute type | Data | Comment |
Read attribute request | 0x11 or 0x31 or
... | 0x00 | 0x800C | 0x8008 | | | | Ask the minimal/normal concentration level defined for this sensor |
Read attribute response | 0x11 or 0x31 or
... | 0x01 | 0x800C | 0x8008 | 0x00 | 0x21 | 0xhhhh | 0xhhhh: Minimal/Normal concentration level (ppm or IAQ)
Mainly used for CO2.
Typical outdoor value is between 400 and 420 ppm. |
Write no response | 0x11 or 0x31 or
... | 0x05 | 0x800C | 0x8008 | | 0x21 | 0xhhhh |
Calibration period
Used for CO2 sensor Automatic Baseline Calibration.
Read/Write
Features | Fctrl | CmdID | ClusterID | AttributeID | Status | Attribute type | Data | Comment |
Read attribute request | 0x11 or 0x31 or
... | 0x00 | 0x800C | 0x8009 | | | | Ask the minimal/normal concentration level defined for this sensor |
Read attribute response | 0x11 or 0x31 or
... | 0x01 | 0x800C | 0x8009 | 0x00 | 0x20 | 0xpp | 0xpp: Calibration period (Day)
Mainly used for CO2 ABC calibration:
0x00 : No Autocalibration
0x01 : 1 day
...
0xFF : 255 days
|
Write no response | 0x11 or 0x31 or
... | 0x05 | 0x800C | 0x8009 | | 0x20 | 0xpp |
Cluster specific commands
Specific commands can be used to :
- Reset current Min/Mean/Max statistics attributes.
- Make different kind of CO2 calibration for a VAQAO sensor.
These calibration commands should be used carefully with knowledge of concequences.
A typical use case could be to settle the current calibration of the CO2 sensor according a reference measurement.
Cluster commands
Features | Fctrl | CmdID | ClusterID | Payload | Comment |
Command: Reset statistics | 0x11... | 0x50 | 0x800C | 0x00 | Reset/restart MEAN|MIN|MAX calculations |
Command: Calibrate with actual value
(Only for CO2 sensor ==> Endpoint 0x31 on VAQAO sensor) | 0x31 | 0x50 | 0x800C | 0x01 0xpppp | 0xpppp: Actual measured CO2 concentration (ppm) |
Command: Calibrate with actual and reported value
(Only for CO2 sensor ==> Endpoint 0x31 on VAQAO sensor) | 0x31 | 0x50 | 0x800C | 0x02 0xpppp 0xqqqq | 0xpppp: Actual measured value
0xpppp: Corresponding reported value
The actual measured value should be a measurement made with a calibrated external CO2 meter.
|
Command: Calibrate with fresh air
(Only for CO2 sensor ==> Endpoint 0x31 on VAQAO sensor) | 0x31 | 0x50 | 0x800C | 0x03 | Sensor will consider that measurement is done in "fresh air condition" |