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

FeaturesFctrl CmdIDClusterIDAttributeIDAttribute typeDataComment
Report attributes0x11 or 0x31 or
...
0x0a0x800C0x00000x210xhhhh0xhhhh: Measured Value
Concentration unit may be "ppm", "IAQ",...

Configuration

FeaturesFctrl CmdIDClusterIDPayloadComment
Configure reporting0x11 or 0x31 or
...
0x060x800C0x00 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 response0x11 or 0x31 or
...
0x070x800C0xss 0x00 0x00000xss: status
0x00: Reserved
0x0000: AttributeID
Read reporting configuration0x11 or 0x31 or
...
0x080x800C0x00 0x00000x00: Reserved
0x0000: attributeID
Read reporting configuration response0x11 or 0x31 or
...
0x090x800C0xss 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

FeaturesFctrl CmdIDClusterIDAttributeIDStatusAttribute typeDataComment
Read attribute request0x11 or 0x31 or
...
0x000x800C0x0000Ask the current concentration indication
Read attribute response0x11 or 0x31 or
...
0x010x800C0x00000x00 0x210xhhhh0xhhhh: 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

FeaturesFctrl CmdIDClusterIDPayloadComment
Configure reporting0x11 or 0x31 or
...
0x060x800C0x15 0x0000 0x00 0xmmmm 0xMMMM 0xdddd 0xrrrr 0xtt0x15: 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 response0x11 or 0x31 or
...
0x070x800C0xss 0x01 0x00000xss: status
0x01: batch
0x0000: AttributeID
Read reporting configuration0x11 or 0x31 or
...
0x080x800C0x01 0x00000x01: batch
0x0000: AttributeID
Read reporting configuration response0x11 or 0x31 or
...
0x090x800C0xss 0x15 0x0000 0x00 0xmmmm 0xMMMM 0xdddd 0xrrrr 0xtt0xss: 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

FeaturesFctrl CmdIDClusterIDAttributeIDStatusAttribute typeDataComment
Read attribute request0x11 or 0x31 or
...
0x000x800C0x8004Ask the maximum value that the sensor is capable to measure
Read attribute response0x11 or 0x31 or
...
0x010x800C0x80040x00 0x200xuu0xuu: 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 and display 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).
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, ORANGE and GREEN coding on the dedicated IAQ Led.

When HMI display is required on both CO2 and VOC endpoint, the displayed is done according the current worst classification of both.

Following table summarize Classifications, default values and HMI display for CO2 and/or VOC.

Level Value level name CO2 VOC IAQ Led blink
0 EXCELLENT  < 500 50 GREEN (Default blinks each 30s)
1 GOOD [500, 700] [50, 100] GREEN (Default blinks each 30s)
2 AVERAGE [700, 1100] [100, 150] ORANGE (Default blinks each 15s)
3 BAD [1100, 1300] [150, 200] ORANGE (Default blinks each 15s)
4 VERY BAD [1300, 1700] [200, 300] RED (Default blinks each 7s)
5 UNHEALTHY > 1700 > 300 RED (Default blinks each 7s)

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).
  • When they exists, 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

FeaturesFctrl CmdIDClusterIDAttributeIDAttribute typeDataComment
Report attributes0x11 or 0x31 or
...
0x0A0x800C0x00010x200xcc0xcc: current classification level.
0 EXCELLENT
1 GOOD
2 AVERAGE
3 BAD
4 VERY BAD
5 UNHEALTHY

Configuration

FeaturesFctrl CmdIDClusterIDPayloadComment
Configure reporting0x11 or 0x31 or
...
0x060x800C0x00 0x0001 0x20 0xmmmm 0xMMMM 0xcc0x00 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 response0x11 or 0x31 or
...
0x070x800C0xss 0x00 0x00010xss:status
Read reporting configuration0x11 or 0x31 or
...
0x080x800C0x00 0x00010x0001: attributeID
Read reporting configuration response0x11 or 0x31 or
...
0x090x800C0xss 0x00 0x0001 0x20 0xmmmm 0xMMMM 0xcc0xss:status
0x0001:attributeID
0x20: attribute type
0xmmmm: minimum reporting interval
0xMMMM: maximum reporting interval
0xcc: reportable change

Read

FeaturesFctrl CmdIDClusterIDAttributeIDStatusAttribute typeDataComment
Read attribute request0x11 or 0x31 or
...
0x000x800C0x0001Requests the present value
Read attribute response0x11 or 0x31 or
...
0x010x800C0x00010x000x200xnn0xnn: 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 CmdIDClusterIDPayloadComment
Configure reporting0x11 or 0x31 or
...
0x060x800C0x11 0x0001 0x00 0xmmmm 0xMMMM 0xdd 0xrr 0xtt0x11: 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 response0x11 or 0x31 or
...
0x070x800C0xss 0x01 0x00010xss : status
0x01 : batch
Read reporting configuration0x11 or 0x31 or
...
0x080x800C0x01 0x00010x01: Batch
Read reporting configuration response0x11 or 0x31 or
...
0x090x800C0xss 0x11 0x0001 0x00 0xmmmm 0xMMMM 0xdd 0xrr 0xtt0xss : 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

FeaturesFctrl CmdIDClusterIDAttributeIDStatusAttribute typeDataComment
Read attribute request0x11 or 0x31 or
...
0x000x800C0x8010Ask the current calibration coefficient
Read attribute response0x11 or 0x31 or
...
0x010x800C0x80100x00 0x410x0A 0xnnnn 0xmmmm 0xpppp 0xqqqq 0xrrrr0x0A: 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 response0x11 or 0x31 or
...
0x050x800C0x80100x410x0A 0xnnnn 0xmmmm 0xpppp 0xqqqq 0xrrrrSet the read attributes

HMI Display period


Display period measurement in seconds.

Read/Write

FeaturesFctrl CmdIDClusterIDAttributeIDStatusAttribute typeDataComment
Read attribute request0x11 or 0x31 or
...
0x000x800C0x8020Ask the minimal/normal concentration level defined for this sensor
Read attribute response0x11 or 0x31 or
...
0x010x800C0x80200x00 0x210xpppp0xpppp: HMI display period (Seconds)

0xFFFF : Not displayed (Leds off)
Write no response0x11 or 0x31 or
...
0x050x800C0x80200x210xpppp

Buzzer alarms parameters (VAQAO 2 only)

A buzzer alarm can be fired peiodically when defined classificationLevel threshold is overpassed. Some attributes of cluster concentration are used to manage Buzzer behavior according to current classification levels.

It can be configured on CO2 and/or COV concentration measurement. The buzzer alarms will ring if one of the two (CO2 and COV) thresholds is overpassed. The hysteresis around each threshold is defined with two attributes ThesholdHigh and ThresholdLow. Attributes BuzzerPeriod defines ringing periodicity of the alarm.

Whatever (CO2 or COV) has trig the alarm the sound is the following one:

It is possible to "pause" the Alarm for while by HMI. The Alarm won't ring anymore during the defined PauseDuration attribute (In minutes, default 24h).

To do so, when alarm is on, the user can "pause" it during a while (snooze) by actuating ILS2 once or TAP the sensor once. The sensor will then ring following specific sound, and stop its periodical ringing for the duration of the "pause":

After Factory reset following attributes parameters are set on each instance of associated cluster:

  AttributeID COV CO2
BuzzerAlarmPeriod (Seconds) 0x8031 [U16:0x21] 30s 30s
BuzzerAlarmPauseDuration (Minutes) 0x8032 [U16:0x21] 1440mn (24h) 1440mn (24h)
BuzzerAlarmThresholdHigh 0x8033 [U8:0x20] UNDEFINED UNHEALTHY
BuzzerAlarmThresholdLow 0x8034 [U8:0x20] UNDEFINED VERY BAD

Notes:

  • If two Alarms periods (CO2 and COV) are defined the smaller one will be used.
  • If BuzzerAlarmPeriod is UNDEFINED (0xFFFF), the corresponding measurement won't trig an alarm.
  • If BuzzerAlarmPeriod is lower than 5 (0x0005), alarm period will be 5 s
  • If BuzzerAlarmPausePeriod is UNDEFINED (0xFFFF), alarm pause won't be possible
  • If one of the two Threshold attributes is UNDEFINED (0xFF) the corresponding measurement won't trig any alarm
  • It is possible to reactivate a paused (snoozed) alarm before end of pause duration, by sending any "write no response" to configure one of the 4 buzzer alarm parameters

Buzzer alarm period

Buzzer alarm period in seconds.

Read/Write

FeaturesFctrl CmdIDClusterIDAttributeIDStatusAttribute typeDataComment
Read attribute request0x11 or 0x31 or
...
0x000x800C0x8031Ask the defined "Buzzer alarm period" of the sensor
Read attribute response0x11 or 0x31 or
...
0x010x800C0x80310x00 0x210xpppp0xpppp: Buzzer Alarm period (Seconds)

0x0000 : Buzzer off
Write no response0x11 or 0x31 or
...
0x050x800C0x80310x210xpppp

Buzzer alarm pause duration

Buzzer alarm pause duration in minutes.

Read/Write

FeaturesFctrl CmdIDClusterIDAttributeIDStatusAttribute typeDataComment
Read attribute request0x11 or 0x31 or
...
0x000x800C0x8032Ask the defined "Buzzer alarm pause duration" of the sensor
Read attribute response0x11 or 0x31 or
...
0x010x800C0x80320x00 0x210xpppp0xpppp: Buzzer Pause period (Minutes)

0x0000 : No pause possible
Write no response0x11 or 0x31 or
...
0x050x800C0x80320x210xpppp

Buzzer alarm threshold High

Buzzer alarm classification threshold that starts alarm when overpassed.

Read/Write

FeaturesFctrl CmdIDClusterIDAttributeIDStatusAttribute typeDataComment
Read attribute request0x11 or 0x31 or
...
0x000x800C0x8033Ask the defined "Buzzer alarm High threshold" of the sensor
Read attribute response0x11 or 0x31 or
...
0x010x800C0x80330x00 0x200xpp0xpp: Buzzer Alarm threshold High (Classification level [0 to 5])

0xFF : UNDEFINED => No alarm trigged from the corresponding measurement
Write no response0x11 or 0x31 or
...
0x050x800C0x80330x200xpp

Buzzer alarm threshold Low

Buzzer alarm classification threshold that ends alarm when underpassed.

Read/Write

FeaturesFctrl CmdIDClusterIDAttributeIDStatusAttribute typeDataComment
Read attribute request0x11 or 0x31 or
...
0x000x800C0x8034Ask the defined "Buzzer alarm Low threshold" of the sensor
Read attribute response0x11 or 0x31 or
...
0x010x800C0x80340x00 0x200xpp0xpp: Buzzer Alarm threshold Low (Classification level [0 to 5])

0xFF : UNDEFINED => No alarm trigged from the corresponding measurement
Write no response0x11 or 0x31 or
...
0x050x800C0x80340x200xpp

Automatic Baseline Calibration (ABC) Attributes

These attributes are relevant only for the CO2 sensor of 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

FeaturesFctrl CmdIDClusterIDAttributeIDStatusAttribute typeDataComment
Read attribute request0x11 or 0x31 or
...
0x000x800C0x8008Ask the minimal/normal concentration level defined for this sensor
Read attribute response0x11 or 0x31 or
...
0x010x800C0x80080x00 0x210xhhhh0xhhhh: Minimal/Normal concentration level (ppm or IAQ)
Mainly used for CO2.
Typical outdoor value is between 400 and 420 ppm.
Write no response0x11 or 0x31 or
...
0x050x800C0x80080x210xhhhh

Calibration period


Used for CO2 sensor Automatic Baseline Calibration.

Read/Write

FeaturesFctrl CmdIDClusterIDAttributeIDStatusAttribute typeDataComment
Read attribute request0x11 or 0x31 or
...
0x000x800C0x8009Ask the minimal/normal concentration level defined for this sensor
Read attribute response0x11 or 0x31 or
...
0x010x800C0x80090x00 0x200xpp0xpp: Calibration period (Day)
Mainly used for CO2 ABC calibration:
0x00 : No Autocalibration
0x01 : 1 day
...
0xFF : 255 days
Write no response0x11 or 0x31 or
...
0x050x800C0x80090x200xpp

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.

Notice: On VAQA'O Lt and VAQA'O+Lt, calibration requests are constrained to target contexts of 400 to 1500 ppm. Please do not attempt to set a calibration that takes the current measurement outside of this range.

Cluster commands


FeaturesFctrl CmdIDClusterIDPayloadComment
Command: Reset statistics0x11...0x500x800C0x00Reset/restart MEAN|MIN|MAX calculations
Command: Calibrate with actual value
(Only for CO2 sensor ==> Endpoint 0x31 on VAQAO sensor)
0x310x500x800C0x01 0xpppp0xpppp: Actual measured CO2 concentration (ppm)
Command: Calibrate with actual and reported value
(Only for CO2 sensor ==> Endpoint 0x31 on VAQAO sensor)
0x310x500x800C0x02 0xpppp 0xqqqq0xpppp: 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)
0x310x500x800C0x03Sensor will consider that measurement is done in "fresh air condition"

Last Calibration Status Attribute (VAQAO 2 only)

The Last calibration status reportable attribute contains informations about last calibration for CO2 calibration (not available on COV).

Last Calibration Status


The attribute contains  a string of fields describing the last calibration that has occured for the CO2 part of the sensor. This attribute can be reported on changes or some of his fields can be embeded in a specific batch.

Standard report

Report

FeaturesFctrl CmdIDClusterIDAttributeIDAttribute typeData
Report attributes0x31
(Available only for VAQAO2 CO2 measurement)
0x0A 0x800C0x80000x410x12 0xgggggggg 0xhhhhhhhh 0xii 0xjj 0xkk 0xll 0xmmmm 0xnnnn 0xoooo
0x12: data length

0xgggggggg: U32. Start timstamp of last calibration
0xhhhhhhhh: U32. End timstamp of last calibration
0xii: U8. Source of calibration [0: Undefined, 1: ABC, 2: Downlink, 3: Manual, 4: Action]
0xjj : U8. Type of calibration [0: Undefined, 1: Actual, 2: Actual vs Reported, 3: Fresh Air]
0xkk : U8: Number of tries
0xll : U8: Final status [0: Undefined; 1 OK; 2: NOK]
0xmmmm: I16. Offset applied
0xnnnn: U16. Before calibration value
0xoooo: U16. After calibration value

Configuration

FeaturesFctrl CmdIDClusterIDPayload
Configure reporting0x31
(Available only for VAQAO2 CO2 measurement)
0x060x800C0x00 0x80 0x00 0x41 0xmmmm 0xMMMM 0x12 0xgggggggg 0xhhhhhhhh 0xii 0xjj 0xkk 0xll 0xmmmm 0xnnnn 0xoooo
Configure reporting response0x310x070x800C0xss 0x00 0x80 0x00
Read reporting configuration0x310x080x800C0x00 0x80 0x00
Read reporting configuration response0x310x090x800C0xss 0x00 0x80 0x00 0x41 0xmmmm 0xMMMM 0x12 0xgggggggg 0xhhhhhhhh 0xii 0xjj 0xkk 0xll 0xmmmm 0xnnnn 0xoooo
0xss:status
0x80 0x00: attributeID
0x41: attribute type
0xmmmm: minimum reporting interval
0xMMMM: maximum reporting interval

0x12: data length

Following "reportable changes" fields, trig a report when corresponding value changes of more than specififed value.
A null (0) field does not trig the report.

0xgggggggg: U32. Start timstamp of last calibration
0xhhhhhhhh: U32. End timstamp of last calibration
0xii: U8. Source of calibration [0: Undefined, 1: ABC, 2: Downlink, 3: Manual, 4: Action]
0xjj : U8. Type of calibration [0: Undefined, 1: Actual, 2: Actual vs Reported, 3: Fresh Air]
0xkk : U8: Number of tries
0xll : U8: Final status [0: Undefined; 1 OK; 2: NOK]
0xmmmm: I16. Offset applied
0xnnnn: U16. Before calibration value
0xoooo: U16. After calibration value

Read

FeaturesFctrl CmdIDClusterIDAttributeIDStatusAttribute typeData
Read attribute request0x31
(Available only for VAQAO2 CO2 measurement)
0x000x800C0x8000
Read attribute response0x310x010x800C0x80000x000x410x12 0xgggggggg 0xhhhhhhhh 0xii 0xjj 0xkk 0xll 0xmmmm 0xnnnn 0xoooo
0x12: data length
0xgggggggg: U32. Start timstamp of last calibration
0xhhhhhhhh: U32. End timstamp of last calibration
0xii: U8. Source of calibration [0: Undefined, 1: ABC, 2: Downlink, 3: Manual, 4: Action]
0xjj : U8. Type of calibration [0: Undefined, 1: Actual, 2: Actual vs Reported, 3: Fresh Air]
0xkk : U8: Number of tries
0xll : U8: Final status [0: Undefined; 1 OK; 2: NOK]
0xmmmm: I16. Offset applied
0xnnnn: U16. Before calibration value
0xoooo: U16. After calibration value

Print Friendly