-
Notifications
You must be signed in to change notification settings - Fork 3.9k
Open
Description
I´m using the latest Zigbee2MQTT version and made some modifications to support a self-made Zigbee sensor that contains VOC, IAQ, and CO2 measurements. For this, I´ve added
msBeelightIAQ: {
ID: 6666,
attributes: {
measuredValue: { ID: 0, type: enums_1.DataType.UINT16 },
minMeasuredValue: { ID: 1, type: enums_1.DataType.UINT16 },
maxMeasuredValue: { ID: 2, type: enums_1.DataType.UINT16 },
tolerance: { ID: 3, type: enums_1.DataType.UINT8 },
},
commands: {},
commandsResponse: {},
},
msBeelightVOC: {
ID: 6667,
attributes: {
measuredValue: { ID: 0, type: enums_1.DataType.UINT16 },
minMeasuredValue: { ID: 1, type: enums_1.DataType.UINT16 },
maxMeasuredValue: { ID: 2, type: enums_1.DataType.UINT16 },
tolerance: { ID: 3, type: enums_1.DataType.UINT8 },
},
commands: {},
commandsResponse: {},
},
msBeelightCO2: {
ID: 6668,
attributes: {
measuredValue: { ID: 0, type: enums_1.DataType.UINT16 },
minMeasuredValue: { ID: 1, type: enums_1.DataType.UINT16 },
maxMeasuredValue: { ID: 2, type: enums_1.DataType.UINT16 },
tolerance: { ID: 3, type: enums_1.DataType.UINT8 },
},
commands: {},
commandsResponse: {},
},
to clusters.js and
function BeeLight_iaq(args = {}) {
return numeric({
name: "BeeLight_iaq",
cluster: "msBeelightIAQ",
attribute: "measuredValue",
reporting: { min: "5_MINUTES", max: "1_HOUR", change: 10 },
description: "Measured IAQ value",
unit: "",
scale: 1,
access: "STATE_GET",
...args,
});
}
function BeeLight_co2(args = {}) {
return numeric({
name: "BeeLight_co2",
cluster: "msBeelightCO2",
attribute: "measuredValue",
reporting: { min: "5_MINUTES", max: "1_HOUR", change: 100 },
description: "Measured CO2 value",
unit: "ppm",
scale: 1,
access: "STATE_GET",
...args,
});
}
function BeeLight_voc(args = {}) {
return numeric({
name: "BeeLight_voc",
cluster: "msBeelightVOC",
attribute: "measuredValue",
reporting: { min: "5_MINUTES", max: "1_HOUR", change: 5 },
description: "Measured VOC value",
unit: "ppm",
scale: 1,
access: "STATE_GET",
...args,
});
}
to modernExtend.js.
I use this external converter
import * as m from "zigbee-herdsman-converters/lib/modernExtend";
export default {
zigbeeModel: ["BeeLight_v2"],
model: "BeeLight_v2",
vendor: "Kampi",
description: "Zigbee-based Light and Environment Sensor (https://github.com/Kampi/BeeLight)",
extend: [m.BeeLight_iaq(), m.BeeLight_co2(), m.BeeLight_voc(), m.battery(), m.illuminance(), m.temperature(), m.pressure(), m.humidity()],
};
But Z2M throws this error when adding my device to the network:
[2025-11-23 13:10:04] error: z2m: Failed to configure '0x86d79ac5bae41fa3', attempt 4 (Error: ZCL command 0x86d79ac5bae41fa3/10 msBeelightVOC.configReport([{"minimumReportInterval":300,"maximumReportInterval":3600,"reportableChange":5,"attribute":"measuredValue"}], {"timeout":10000,"disableResponse":false,"disableRecovery":false,"disableDefaultResponse":true,"direction":0,"reservedBits":0,"writeUndiv":false}) failed (Status 'FAILURE')
So the reporting for VOC doesn´t work correctly, but I can´t figure out why, because IAQ and CO2 are working without issues. And I´m not sure if this is a Z2M or firmware-related issue.
How can I debug this issue properly?
You can find the modifications here.
Or the complete project here
Metadata
Metadata
Assignees
Labels
No labels