diff --git a/src/devices/efekta.ts b/src/devices/efekta.ts index b6bad85bb2caa..68e8b39ca2829 100644 --- a/src/devices/efekta.ts +++ b/src/devices/efekta.ts @@ -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;