Skip to content

Commit

Permalink
feat(add): EFEKTA_Air_Quality_Station (#8726)
Browse files Browse the repository at this point in the history
Co-authored-by: Koen Kanters <koenkanters94@gmail.com>
  • Loading branch information
smartboxchannel and Koenkk authored Feb 5, 2025
1 parent 80c08ec commit e92b434
Showing 1 changed file with 228 additions and 0 deletions.
228 changes: 228 additions & 0 deletions src/devices/efekta.ts
Original file line number Diff line number Diff line change
Expand Up @@ -750,6 +750,234 @@ const definitions: DefinitionWithExtend[] = [
}),
],
},
{
zigbeeModel: ['EFEKTA_Air_Quality_Station'],
model: 'EFEKTA_Air_Quality_Station',
vendor: 'EFEKTA',
description: 'Air quality station',
extend: [
m.co2({
reporting: false,
access: 'STATE',
}),
m.numeric({
name: 'pm1',
unit: 'µg/m³',
cluster: 'pm25Measurement',
attribute: {ID: 0x0601, type: Zcl.DataType.SINGLE_PREC},
description: 'Measured PM1.0 (particulate matter) concentration',
access: 'STATE',
reporting: false,
precision: 1,
}),
m.pm25({
reporting: false,
access: 'STATE',
description: 'Measured PM2.5 (particulate matter) concentration',
precision: 1,
}),
m.numeric({
name: 'pm4',
unit: 'µg/m³',
cluster: 'pm25Measurement',
attribute: {ID: 0x0605, type: Zcl.DataType.SINGLE_PREC},
description: 'Measured PM4.0 (particulate matter) concentration',
access: 'STATE',
reporting: false,
precision: 1,
}),
m.numeric({
name: 'pm10',
unit: 'µg/m³',
cluster: 'pm25Measurement',
attribute: {ID: 0x0602, type: Zcl.DataType.SINGLE_PREC},
description: 'Measured PM10.0 (particulate matter) concentration',
access: 'STATE',
reporting: false,
precision: 1,
}),
m.numeric({
name: 'pm_size',
unit: 'µm',
cluster: 'pm25Measurement',
attribute: {ID: 0x0603, type: Zcl.DataType.SINGLE_PREC},
description: 'Typical Particle Size',
access: 'STATE',
reporting: false,
precision: 2,
}),
m.numeric({
name: 'aqi_25_index',
unit: 'PM2.5 Index',
cluster: 'pm25Measurement',
attribute: {ID: 0x0604, type: Zcl.DataType.SINGLE_PREC},
description: 'PM 2.5 INDEX',
access: 'STATE',
reporting: false,
}),
m.numeric({
name: 'voc_index',
unit: 'VOC Index points',
cluster: 'genAnalogInput',
attribute: 'presentValue',
description: 'VOC index',
access: 'STATE',
reporting: false,
}),
m.temperature({
description: 'Measured value of the built-in temperature sensor',
reporting: false,
access: 'STATE',
}),
m.humidity({
description: 'Measured value of the built-in humidity sensor',
reporting: false,
access: 'STATE',
}),
m.illuminance({
access: 'STATE',
reporting: false,
}),
m.numeric({
name: 'report_delay',
unit: 'sec',
valueMin: 6,
valueMax: 600,
cluster: 'pm25Measurement',
attribute: {ID: 0x0201, type: Zcl.DataType.UINT16},
description: 'Setting the sensor report delay. Setting the time in seconds (6-600), by default 15 seconds',
access: 'STATE_SET',
}),
m.binary({
name: 'auto_brightness',
valueOn: ['ON', 1],
valueOff: ['OFF', 0],
cluster: 'msIlluminanceMeasurement',
attribute: {ID: 0x0203, type: Zcl.DataType.BOOLEAN},
description: 'Enable or Disable Auto Brightness of the Display',
access: 'STATE_SET',
}),
m.binary({
name: 'night_onoff_backlight',
valueOn: ['ON', 1],
valueOff: ['OFF', 0],
cluster: 'msIlluminanceMeasurement',
attribute: {ID: 0x0401, type: Zcl.DataType.BOOLEAN},
description: 'Complete shutdown of the backlight at night mode',
access: 'STATE_SET',
}),
m.numeric({
name: 'night_on_backlight',
unit: 'Hr',
valueMin: 0,
valueMax: 23,
cluster: 'msIlluminanceMeasurement',
attribute: {ID: 0x0405, type: Zcl.DataType.UINT8},
description: 'Night mode activation time',
access: 'STATE_SET',
}),
m.numeric({
name: 'night_off_backlight',
unit: 'Hr',
valueMin: 0,
valueMax: 23,
cluster: 'msIlluminanceMeasurement',
attribute: {ID: 0x0406, type: Zcl.DataType.UINT8},
description: 'Night mode activation time',
access: 'STATE_SET',
}),
m.numeric({
name: 'temperature_offset',
unit: '°C',
valueMin: -50,
valueMax: 50,
valueStep: 0.1,
scale: 10,
cluster: 'msTemperatureMeasurement',
attribute: {ID: 0x0210, type: Zcl.DataType.INT16},
description: 'Adjust temperature',
access: 'STATE_SET',
}),
m.numeric({
name: 'humidity_offset',
unit: '%',
valueMin: -50,
valueMax: 50,
valueStep: 1,
cluster: 'msRelativeHumidity',
attribute: {ID: 0x0210, type: Zcl.DataType.INT16},
description: 'Adjust humidity',
access: 'STATE_SET',
}),
m.numeric({
name: 'auto_clean_interval',
unit: 'day',
valueMin: 0,
valueMax: 10,
valueStep: 1,
cluster: 'pm25Measurement',
attribute: {ID: 0x0330, type: Zcl.DataType.UINT8},
description: 'Auto clean interval PM2.5 sensor',
access: 'STATE_SET',
}),
m.binary({
name: 'manual_clean',
valueOn: ['ON', 1],
valueOff: ['OFF', 0],
cluster: 'pm25Measurement',
attribute: {ID: 0x0331, type: Zcl.DataType.BOOLEAN},
description: 'Manual clean PM2.5 sensor',
access: 'STATE_SET',
}),
m.numeric({
name: 'set_altitude',
unit: 'meters',
valueMin: 0,
valueMax: 3000,
cluster: 'msCO2',
attribute: {ID: 0x0205, type: Zcl.DataType.UINT16},
description: 'Setting the altitude above sea level (for high accuracy of the CO2 sensor)',
access: 'STATE_SET',
}),
m.binary({
name: 'forced_recalibration',
valueOn: ['ON', 1],
valueOff: ['OFF', 0],
cluster: 'msCO2',
attribute: {ID: 0x0202, type: Zcl.DataType.BOOLEAN},
description: 'Start FRC (Perform Forced Recalibration of the CO2 Sensor)',
access: 'STATE_SET',
}),
m.numeric({
name: 'manual_forced_recalibration',
unit: 'ppm',
valueMin: 0,
valueMax: 5000,
cluster: 'msCO2',
attribute: {ID: 0x0207, type: Zcl.DataType.UINT16},
description: 'Start Manual FRC (Perform Forced Recalibration of the CO2 Sensor)',
access: 'STATE_SET',
}),
m.binary({
name: 'automatic_self_calibration',
valueOn: ['ON', 1],
valueOff: ['OFF', 0],
cluster: 'msCO2',
attribute: {ID: 0x0402, type: Zcl.DataType.BOOLEAN},
description: 'Automatic self calibration',
access: 'STATE_SET',
}),
m.binary({
name: 'factory_reset_co2',
valueOn: ['ON', 1],
valueOff: ['OFF', 0],
cluster: 'msCO2',
attribute: {ID: 0x0206, type: Zcl.DataType.BOOLEAN},
description: 'Factory Reset CO2 sensor',
access: 'STATE_SET',
}),
],
},
];

export default definitions;
Expand Down

0 comments on commit e92b434

Please sign in to comment.