Skip to content

Instantly share code, notes, and snippets.

@9zigen
Last active September 8, 2025 19:12
Show Gist options
  • Select an option

  • Save 9zigen/34a27dd18dc4d4cd09c7b1a3efda8df4 to your computer and use it in GitHub Desktop.

Select an option

Save 9zigen/34a27dd18dc4d4cd09c7b1a3efda8df4 to your computer and use it in GitHub Desktop.
const {binary, temperature, humidity, numeric} = require('zigbee-herdsman-converters/lib/modernExtend');
const definition = {
zigbeeModel: ['Alab-CO2-1.0', 'Alab-CO2-1.1'],
model: 'Alab-CO2-1.1',
vendor: 'Alab',
description: '[Zigbee CO2 Sensor](https://www.tindie.com/products/a_lab_technology/zigbee-co2-sensor-v2/)',
extend: [
temperature(),
humidity(),
numeric({
name: 'co2',
valueMin: 0,
valueMax: 65535,
valueStep: 1,
cluster: 'msCO2',
label: 'CO2',
attribute: 'measuredValue',
reporting: { min: '10_SECONDS', max: '1_HOUR', change: 50 },
description: 'Measured value',
unit: 'ppm',
scale: 1,
access: 'STATE_GET',
}),
binary({
name: "calibration_nitrogen",
valueOn: ['Start', 1],
valueOff: ['Not started', 0],
cluster: "msCO2",
attribute: { ID: 0x1000, type: 0x21 },
description: 'Perform nitrogen calibration. The device must be in a pure nitrogen atmosphere.',
}),
binary({
name: "calibration_background",
valueOn: ['Start', 1],
valueOff: ['Not started', 0],
cluster: "msCO2",
attribute: { ID: 0x1001, type: 0x21 },
description: 'Perform background calibration. For best results, the device should be placed in fresh air for 3-5 minutes.',
}),
binary({
name: "abc",
valueOn: ['Active', 1],
valueOff: ['Disabled', 0],
cluster: "msCO2",
attribute: { ID: 0x1002, type: 0x21 },
description: 'Perform background calibration. For best results, the device should be placed in fresh air for 3-5 minutes.',
}),
numeric({
name: "abc_period",
valueMin: 0,
valueMax: 65535,
valueStep: 1,
cluster: "msCO2",
attribute: { ID: 0x1003, type: 0x21 },
description: 'Perform background calibration. For best results, the device should be placed in fresh air for 3-5 minutes.',
}),
numeric({
name: "altitude",
valueMin: 0,
valueMax: 3000,
valueStep: 1,
cluster: "msCO2",
attribute: { ID: 0x1009, type: 0x21 },
description: 'SCD4X height above sea level. Valid input values are between 0–3000m.',
}),
numeric({
name: "pressure",
valueMin: 70000,
valueMax: 120000,
valueStep: 1,
cluster: "msCO2",
attribute: { ID: 0x1010, type: 0x23 },
description: 'SCD4X sensor only! The default value is 101300 Pa. Valid input values are between 70000 – 120000 Pa. Overrides any pressure compensation based on a previously set sensor altitude.',
}),
binary({
name: "factory_reset",
valueOn: ['Start', 1],
valueOff: ['Not started', 0],
cluster: "msCO2",
attribute: { ID: 0x1011, type: 0x10 },
description: 'Reset SCD4X sensor!',
}),
],
meta: {},
};
module.exports = definition;
@9zigen
Copy link
Author

9zigen commented Sep 5, 2025

Hello, I meant the yellow led. It blink once every 2 to 15 seconds. Thanks.

this is a part of the sensor- IR source.
https://senseair.com/product/s8/

@haenns92
Copy link

haenns92 commented Sep 8, 2025

Hello,

i think my sensor is broken, because it still provides no measurement.
(See my comment above)
How can i get a replacement or refund?

@9zigen
Copy link
Author

9zigen commented Sep 8, 2025

Hello,

i think my sensor is broken, because it still provides no measurement. (See my comment above) How can i get a replacement or refund?

if you bought it on tindie just write to me via the request form with the order number. I will send a replacement.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment