UNPKG

zigbee-herdsman-converters

Version:

Collection of device converters to be used with zigbee-herdsman

7,205 lines 284 kB
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
    var ownKeys = function(o) {
        ownKeys = Object.getOwnPropertyNames || function (o) {
            var ar = [];
            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
            return ar;
        };
        return ownKeys(o);
    };
    return function (mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
        __setModuleDefault(result, mod);
        return result;
    };
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.definitions = void 0;
const zigbee_herdsman_1 = require("zigbee-herdsman");
const m = __importStar(require("../lib/modernExtend"));
const defaultReporting = { min: 0, max: 300, change: 0 };
const normalReporting = { min: 0, max: 3600, change: 0 };
const rareReporting = { min: 0, max: 21600, change: 0 };
const rarestReporting = { min: 0, max: 64800, change: 0 };
const threeReporting = { min: 30, max: 1800, change: 1 };
const fourReporting = { min: 30, max: 1800, change: 10 };
const fiveReporting = { min: 10, max: 600, change: 1 };
const sixReporting = { min: 3600, max: 21600, change: 1 };
const co2Reporting = { min: 10, max: 600, change: 0.000001 };
const pmReporting = { min: 10, max: 600, change: 0.1 };
const pm2Reporting = { min: 10, max: 600, change: 0.01 };
const soilMoistureReporting = { min: 600, max: 7200, change: 100 };
const slowReporting = { min: 120, max: 3600, change: 25 };
const slow2Reporting = { min: 300, max: 3600, change: 50 };
exports.definitions = [
    {
        zigbeeModel: ["EFEKTA_iAQ3"],
        model: "EFEKTA_iAQ3",
        vendor: "EFEKTA",
        description: "CO2 Monitor with IPS TFT Display, outdoor temperature and humidity, date and time",
        extend: [
            m.deviceEndpoints({ endpoints: { "1": 1, "2": 2 } }),
            m.co2({
                reporting: co2Reporting,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["1"],
                description: "Measured value of the built-in temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["2"],
                description: "Measured value of the external temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                endpointNames: ["1"],
                description: "Measured value of the built-in humidity sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                endpointNames: ["2"],
                description: "Measured value of the external humidity sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "voc_index",
                unit: "VOC Index points",
                cluster: "genAnalogInput",
                attribute: "presentValue",
                description: "VOC index",
                access: "STATE",
                reporting: defaultReporting,
            }),
            m.illuminance({
                access: "STATE",
                reporting: defaultReporting,
            }),
            m.binary({
                name: "auto_brightness",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0203, type: zigbee_herdsman_1.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: "msCO2",
                attribute: { ID: 0x0401, type: zigbee_herdsman_1.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: "msCO2",
                attribute: { ID: 0x0405, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Night mode activation time",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "night_off_backlight",
                unit: "Hr",
                valueMin: 0,
                valueMax: 23,
                cluster: "msCO2",
                attribute: { ID: 0x0406, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Night mode deactivation time",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "rotate",
                lookup: { "0": 0, "90": 90, "180": 180, "270": 270 },
                cluster: "msCO2",
                attribute: { ID: 0x0285, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Display rotation angle",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "long_chart_period",
                lookup: { "1H": 0, "24H": 1 },
                cluster: "msCO2",
                attribute: { ID: 0x0204, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "The period of plotting the CO2 level(OFF - 1H | ON - 24H)",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "long_chart_period2",
                lookup: { "1H": 0, "24H": 1 },
                cluster: "msCO2",
                attribute: { ID: 0x0404, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "The period of plotting the VOC Index points(OFF - 1H | ON - 24H)",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "set_altitude",
                unit: "meters",
                valueMin: 0,
                valueMax: 3000,
                cluster: "msCO2",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the altitude above sea level (for high accuracy of the CO2 sensor)",
                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: zigbee_herdsman_1.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: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust humidity",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "internal_or_external",
                lookup: { INTERNAL: 1, EXTERNAL: 0 },
                cluster: "msCO2",
                attribute: { ID: 0x0288, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Display data from internal or external TH sensor",
                access: "STATE_SET",
            }),
            m.binary({
                name: "automatic_scal",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0402, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Automatic self calibration",
                access: "STATE_SET",
            }),
            m.binary({
                name: "forced_recalibration",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0202, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Start FRC (Perform Forced Recalibration of the CO2 Sensor)",
                access: "STATE_SET",
            }),
            m.binary({
                name: "factory_reset_co2",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0206, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Factory Reset CO2 sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "manual_forced_recalibration",
                unit: "ppm",
                valueMin: 0,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0207, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Start Manual FRC (Perform Forced Recalibration of the CO2 Sensor)",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_gas",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable CO2 Gas Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_gas",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable invert logic CO2 Gas Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_gas",
                unit: "ppm",
                valueMin: 400,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting High CO2 Gas Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_gas",
                unit: "ppm",
                valueMin: 400,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting Low CO2 Gas Border",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_PWS"],
        model: "EFEKTA_PWS",
        vendor: "EFEKTA",
        description: "[Plant Wattering Sensor, CR2450, CR2477 batteries, temperature ]",
        extend: [
            m.soilMoisture({ reporting: rareReporting }),
            m.battery({
                voltage: true,
                voltageReportingConfig: rareReporting,
                percentageReportingConfig: rareReporting,
            }),
            m.temperature({ reporting: rareReporting }),
            m.numeric({
                name: "report_delay",
                unit: "min",
                valueMin: 1,
                valueMax: 240,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Adjust Report Delay. Setting the time in minutes, by default 15 minutes",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_THP_LR"],
        model: "EFEKTA_THP_LR",
        vendor: "EFEKTA",
        description: "DIY outdoor long-range sensor for temperature, humidity and atmospheric pressure",
        extend: [
            m.battery({
                voltage: true,
                voltageReportingConfig: rarestReporting,
                percentageReportingConfig: rarestReporting,
            }),
            m.temperature({ reporting: rarestReporting }),
            m.humidity({ reporting: rarestReporting }),
            m.pressure({ reporting: rarestReporting }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_ePWS"],
        model: "EFEKTA_ePWS",
        vendor: "EFEKTA",
        description: "Plant wattering sensor with e-ink display",
        extend: [
            m.battery({
                voltage: true,
                voltageReportingConfig: rareReporting,
                percentageReportingConfig: rareReporting,
            }),
            m.soilMoisture({ reporting: rareReporting }),
            m.temperature({ reporting: rareReporting }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_eON213z"],
        model: "EFEKTA_eON213z",
        vendor: "EFEKTA",
        description: "Temperature and humidity sensor with e-ink2.13",
        extend: [
            m.battery({
                voltage: true,
                voltageReportingConfig: rareReporting,
                percentageReportingConfig: rareReporting,
            }),
            m.temperature({ reporting: rareReporting }),
            m.humidity({ reporting: rareReporting }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_miniPWS"],
        model: "EFEKTA_miniPWS",
        vendor: "EFEKTA",
        description: "Mini plant wattering sensor",
        extend: [
            m.soilMoisture({ reporting: rareReporting }),
            m.battery({
                voltage: true,
                voltageReportingConfig: rareReporting,
                percentageReportingConfig: rareReporting,
            }),
            m.numeric({
                name: "report_delay",
                unit: "min",
                valueMin: 1,
                valueMax: 180,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Adjust Report Delay, by default 60 minutes",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_eON213wz"],
        model: "EFEKTA_eON213wz",
        vendor: "EFEKTA",
        description: "Mini weather station, digital barometer, forecast, charts, temperature, humidity",
        extend: [
            m.battery({
                voltage: true,
                voltageReportingConfig: rareReporting,
                percentageReportingConfig: rareReporting,
            }),
            m.temperature({ reporting: rareReporting }),
            m.humidity({ reporting: rareReporting }),
            m.pressure({ reporting: rareReporting }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_THP"],
        model: "EFEKTA_THP",
        vendor: "EFEKTA",
        description: "DIY temperature, humidity and atmospheric pressure sensor, long battery life",
        extend: [
            m.battery({
                voltage: true,
                voltageReportingConfig: rareReporting,
                percentageReportingConfig: rareReporting,
            }),
            m.temperature({ reporting: rareReporting }),
            m.humidity({ reporting: rareReporting }),
            m.pressure({ reporting: rareReporting }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_PWS_Max"],
        model: "EFEKTA_PWS_Max",
        vendor: "EFEKTA",
        description: "Plant watering sensor EFEKTA PWS max",
        extend: [
            m.soilMoisture({ reporting: rareReporting }),
            m.battery({
                voltage: true,
                voltageReportingConfig: rareReporting,
                percentageReportingConfig: rareReporting,
            }),
            m.illuminance({ reporting: rareReporting }),
            m.temperature({ reporting: rareReporting }),
            m.humidity({ reporting: rareReporting }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_PWS_MaxPro"],
        model: "EFEKTA_PWS_MaxPro",
        vendor: "EFEKTA",
        description: "Plant watering sensor EFEKTA PWS Max Pro,  long battery life",
        extend: [
            m.soilMoisture({ reporting: rareReporting }),
            m.battery({
                voltage: true,
                voltageReportingConfig: rareReporting,
                percentageReportingConfig: rareReporting,
            }),
            m.illuminance({ reporting: rareReporting }),
            m.temperature({ reporting: rareReporting }),
            m.humidity({ reporting: rareReporting }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_eON29wz"],
        model: "EFEKTA_eON29wz",
        vendor: "EFEKTA",
        description: "Mini weather station, barometer, forecast, charts, temperature, humidity, light",
        extend: [
            m.battery({
                voltage: true,
                voltageReportingConfig: rareReporting,
                percentageReportingConfig: rareReporting,
            }),
            m.illuminance({ reporting: rareReporting }),
            m.temperature({ reporting: rareReporting }),
            m.humidity({ reporting: rareReporting }),
            m.pressure({ reporting: rareReporting }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_eFlower_Pro"],
        model: "EFEKTA_eFlower_Pro",
        vendor: "EFEKTA",
        description: "Plant Wattering Sensor with e-ink display 2.13",
        extend: [
            m.soilMoisture({ reporting: rareReporting }),
            m.battery({
                voltage: true,
                voltageReportingConfig: rareReporting,
                percentageReportingConfig: rareReporting,
            }),
            m.illuminance({ reporting: rareReporting }),
            m.temperature({ reporting: rareReporting }),
            m.humidity({ reporting: rareReporting }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_eTH102"],
        model: "EFEKTA_eTH102",
        vendor: "EFEKTA",
        description: "Mini digital thermometer & hygrometer with e-ink1.02",
        extend: [
            m.battery({
                voltage: true,
                voltageReportingConfig: rareReporting,
                percentageReportingConfig: rareReporting,
            }),
            m.temperature({ reporting: rareReporting }),
            m.humidity({ reporting: rareReporting }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_iAQ"],
        model: "EFEKTA_iAQ",
        vendor: "EFEKTA",
        description: "CO2 Monitor with IPS TFT Display, outdoor temperature and humidity, date and time",
        extend: [
            m.deviceEndpoints({ endpoints: { "1": 1, "2": 2 } }),
            m.co2({
                reporting: co2Reporting,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["1"],
                description: "Measured value of the built-in temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["2"],
                description: "Measured value of the external temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                endpointNames: ["1"],
                description: "Measured value of the built-in humidity sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                endpointNames: ["2"],
                description: "Measured value of the external humidity sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.illuminance({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "seconds",
                valueMin: 15,
                valueMax: 300,
                cluster: "msCO2",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval.",
                access: "STATE_SET",
            }),
            m.binary({
                name: "auto_brightness",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0203, type: zigbee_herdsman_1.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: "msCO2",
                attribute: { ID: 0x0401, type: zigbee_herdsman_1.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: "msCO2",
                attribute: { ID: 0x0405, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Night mode activation time",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "night_off_backlight",
                unit: "Hr",
                valueMin: 0,
                valueMax: 23,
                cluster: "msCO2",
                attribute: { ID: 0x0406, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Night mode deactivation time",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "rotate",
                lookup: { "0": 0, "90": 90, "180": 180, "270": 270 },
                cluster: "msCO2",
                attribute: { ID: 0x0285, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Display rotation angle",
                access: "STATE_SET",
            }),
            m.binary({
                name: "long_chart_period",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0204, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "The period of plotting the CO2 level(OFF - 1H | ON - 24H)",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "set_altitude",
                unit: "meters",
                valueMin: 0,
                valueMax: 3000,
                cluster: "msCO2",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the altitude above sea level (for high accuracy of the CO2 sensor)",
                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: zigbee_herdsman_1.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: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust humidity",
                access: "STATE_SET",
            }),
            m.binary({
                name: "automatic_calibrations",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0402, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Automatic calibration of the CO2 sensor",
                access: "STATE_SET",
            }),
            m.binary({
                name: "forced_recalibration",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0202, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Start FRC (Perform Forced Recalibration of the CO2 Sensor)",
                access: "STATE_SET",
            }),
            m.binary({
                name: "factory_reset_co2",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0206, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Factory Reset CO2 sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "manual_forced_recalibration",
                unit: "ppm",
                valueMin: 0,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0207, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Start Manual FRC (Perform Forced Recalibration of the CO2 Sensor)",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_gas",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable CO2 Gas Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_gas",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable invert logic CO2 Gas Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_gas",
                unit: "ppm",
                valueMin: 400,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting High CO2 Gas Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_gas",
                unit: "ppm",
                valueMin: 400,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting Low CO2 Gas Border",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_CO2_Smart_Monitor"],
        model: "EFEKTA_CO2_Smart_Monitor",
        vendor: "EFEKTA",
        description: "EFEKTA CO2 Smart Monitor, rgb indicator, can control the relay, binding",
        extend: [
            m.co2({
                reporting: co2Reporting,
                access: "STATE",
            }),
            m.temperature({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "seconds",
                valueMin: 15,
                valueMax: 300,
                cluster: "msCO2",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval.",
                access: "STATE_SET",
            }),
            m.binary({
                name: "light_indicator",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0211, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable or Disable light indicator",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "light_indicator_level",
                unit: "%",
                valueMin: 0,
                valueMax: 100,
                cluster: "msCO2",
                attribute: { ID: 0x0209, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Light indicator level",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "set_altitude",
                unit: "meters",
                valueMin: 0,
                valueMax: 3000,
                cluster: "msCO2",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the altitude above sea level (for high accuracy of the CO2 sensor)",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "temperature_offset",
                unit: "°C",
                valueMin: -50,
                valueMax: 50,
                valueStep: 0.1,
                scale: 10,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0410, type: zigbee_herdsman_1.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: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust humidity",
                access: "STATE_SET",
            }),
            m.binary({
                name: "automatic_calibrations",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0402, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Automatic calibration of the CO2 sensor",
                access: "STATE_SET",
            }),
            m.binary({
                name: "forced_recalibration",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0202, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Start FRC (Perform Forced Recalibration of the CO2 Sensor)",
                access: "STATE_SET",
            }),
            m.binary({
                name: "factory_reset_co2",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0206, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Factory Reset CO2 sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "manual_forced_recalibration",
                unit: "ppm",
                valueMin: 0,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0207, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Start Manual FRC (Perform Forced Recalibration of the CO2 Sensor)",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_gas",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable CO2 Gas Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_gas",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable invert logic CO2 Gas Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_gas",
                unit: "ppm",
                valueMin: 400,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting High CO2 Gas Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_gas",
                unit: "ppm",
                valueMin: 400,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting Low CO2 Gas Border",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_AQ_Smart_Monitor"],
        model: "EFEKTA_AQ_Smart_Monitor",
        vendor: "EFEKTA",
        description: "EFEKTA CO2 & VOC Index Smart Monitor, rgb indicator, can control the relay, binding",
        extend: [
            m.co2({
                reporting: co2Reporting,
                access: "STATE",
            }),
            m.temperature({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "voc_index",
                unit: "VOC Index points",
                cluster: "genAnalogInput",
                attribute: "presentValue",
                description: "VOC index",
                access: "STATE",
                reporting: defaultReporting,
            }),
            m.numeric({
                name: "reading_interval",
                unit: "seconds",
                valueMin: 15,
                valueMax: 300,
                cluster: "msCO2",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval.",
                access: "STATE_SET",
            }),
            m.binary({
                name: "light_indicator",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0211, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable or Disable light indicator",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "light_indicator_level",
                unit: "%",
                valueMin: 0,
                valueMax: 100,
                cluster: "msCO2",
                attribute: { ID: 0x0209, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Light indicator level",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "set_altitude",
                unit: "meters",
                valueMin: 0,
                valueMax: 3000,
                cluster: "msCO2",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the altitude above sea level (for high accuracy of the CO2 sensor)",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "temperature_offset",
                unit: "°C",
                valueMin: -50,
                valueMax: 50,
                valueStep: 0.1,
                scale: 10,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0410, type: zigbee_herdsman_1.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: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust humidity",
                access: "STATE_SET",
            }),
            m.binary({
                name: "automatic_calibrations",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0402, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Automatic calibration of the CO2 sensor",
                access: "STATE_SET",
            }),
            m.binary({
                name: "forced_recalibration",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0202, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Start FRC (Perform Forced Recalibration of the CO2 Sensor)",
                access: "STATE_SET",
            }),
            m.binary({
                name: "factory_reset_co2",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0206, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Factory Reset CO2 sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "manual_forced_recalibration",
                unit: "ppm",
                valueMin: 0,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0207, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Start Manual FRC (Perform Forced Recalibration of the CO2 Sensor)",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_co2_gas",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable CO2 Gas Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_co2_gas",
                unit: "ppm",
                valueMin: 400,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting High CO2 Gas Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_co2_gas",
                unit: "ppm",
                valueMin: 400,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting Low CO2 Gas Border",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_voc",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genAnalogInput",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable VOC Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_voc",
                unit: "VOC Index points",
                valueMin: 0,
                valueMax: 500,
                cluster: "genAnalogInput",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting High VOC Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_voc",
                unit: "VOC Index points",
                valueMin: 0,
                valueMax: 500,
                cluster: "genAnalogInput",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting Low VOC Border",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["SNZB-02_EFEKTA"],
        model: "SNZB-02_EFEKTA",
        vendor: "EFEKTA",
        description: "Alternative firmware for the SONOFF SNZB-02 sensor from EfektaLab, DIY",
        extend: [
            m.battery({
                voltage: true,
                voltageReportingConfig: rareReporting,
                percentageReportingConfig: rareReporting,
            }),
            m.temperature({ reporting: rareReporting }),
            m.humidity({ reporting: rareReporting }),
            m.numeric({
                name: "report_delay",
                unit: "min",
                valueMin: 1,
                valueMax: 60,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Adjust Report Delay. Setting the time in minutes, by default 5 minutes",
            }),
            m.binary({
                name: "enable_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Temperature Control",
            }),
            m.numeric({
                name: "high_temperature",
                unit: "°C",
                valueMin: -5,
                valueMax: 50,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting High Temperature Border",
            }),
            m.numeric({
                name: "low_temperature",
                unit: "°C",
                valueMin: -5,
                valueMax: 50,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting Low Temperature Border",
            }),
            m.binary({
                name: "enable_humidity",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Humidity Control",
            }),
            m.numeric({
                name: "high_humidity",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting High Humidity Border",
            }),
            m.numeric({
                name: "low_humidity",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting Low Humidity Border",
            }),
        ],
    },
    {
        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: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Factory Reset CO2 sensor",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_ePST_POW_E_LR"],
        model: "EFEKTA_ePST_POW_E_LR",
        vendor: "EFEKTA",
        description: "Water, gas smart pressure monitor with e-ink display",
        extend: [
            m.pressure({
                unit: "kPa",
                description: "Pressure in kPa",
                scale: 10,
                reporting: false,
                access: "STATE",
            }),
            m.numeric({
                name: "bar",
                unit: "bar",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Pressure in bar",
                scale: 1000,
                precision: 2,
                access: "STATE",
            }),
            m.numeric({
                name: "psi",
                unit: "psi",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Pressure in psi",
                scale: 68.94757,
                precision: 2,
                access: "STATE",
            }),
            m.temperature({
                reporting: false,
                access: "STATE",
            }),
            m.numeric({
                name: "pressure_offset",
                unit: "kPa",
                valueMin: -100.0,
                valueMax: 100.0,
                cluster: "msPressureMeasurement",
                attribute: { ID: 0x0210, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust pressure sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "raw_temperature_calibration",
                unit: "raw unit",
                valueMin: -8192,
                valueMax: 8192,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0008, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust temperature sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "mains_voltage",
                unit: "V",
                cluster: "genPowerCfg",
                attribute: "mainsVoltage",
                description: "Mains voltage",
                scale: 10,
                precision: 1,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: false,
                percentageReporting: false,
                voltageReporting: false,
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 10,
                valueMax: 300,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval in seconds, by default 20 seconds",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "tx_radio_power",
                lookup: { "4dbm": 4, "19dbm": 19 },
                cluster: "genPowerCfg",
                attribute: { ID: 0x0236, type: zigbee_herdsman_1.Zcl.DataType.INT8 },
                description: "Set TX Radio Power, dbm",
                access: "STATE_SET",
            }),
            m.binary({
                name: "comparison_previous_data",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable сontrol of comparison with previous data",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "invert",
                lookup: { BW: 0, WB: 1 },
                cluster: "genPowerCfg",
                attribute: { ID: 0xf004, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Invert display color",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "fastmode",
                lookup: { Fast: 0, "Ultra Fast": 1 },
                cluster: "genPowerCfg",
                attribute: { ID: 0xf005, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Display refresh mode",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_eTH_POW_E_LR"],
        model: "EFEKTA_eTH_POW_E_LR",
        vendor: "EFEKTA",
        description: "Temperature and humidity smart sensor with with e-ink display",
        extend: [
            m.temperature({
                reporting: false,
                access: "STATE",
            }),
            m.humidity({
                reporting: false,
                access: "STATE",
            }),
            m.numeric({
                name: "mains_voltage",
                unit: "V",
                cluster: "genPowerCfg",
                attribute: "mainsVoltage",
                description: "Mains voltage",
                scale: 10,
                precision: 1,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                percentageReporting: false,
                lowStatus: true,
                voltage: false,
                voltageReporting: false,
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 10,
                valueMax: 300,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval in seconds, by default 40 seconds",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "tx_radio_power",
                lookup: { "4dbm": 4, "19dbm": 19 },
                cluster: "genPowerCfg",
                attribute: { ID: 0x0236, type: zigbee_herdsman_1.Zcl.DataType.INT8 },
                description: "Set TX Radio Power, dbm",
                access: "STATE_SET",
            }),
            m.binary({
                name: "comparison_previous_data",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable сontrol of comparison with previous data",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "invert",
                lookup: { BW: 0, WB: 1 },
                cluster: "genPowerCfg",
                attribute: { ID: 0xf004, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Invert display color",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "fastmode",
                lookup: { Fast: 0, "Ultra Fast": 1 },
                cluster: "genPowerCfg",
                attribute: { ID: 0xf005, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Display refresh mode",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_T1_Y_LR"],
        model: "EFEKTA_T1_Y_LR",
        vendor: "EFEKTA",
        description: "Temperature sensor DS18B20, AAA bsttery, signal amplifier, works in Tuya",
        extend: [
            m.temperature({
                reporting: false,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: false,
                voltageReporting: false,
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_T1_Y"],
        model: "EFEKTA_T1_Y",
        vendor: "EFEKTA",
        description: "Temperature sensor DS18B20, AAA bsttery, works in Tuya",
        extend: [
            m.temperature({
                reporting: false,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: false,
                voltageReporting: false,
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_T8_POW"],
        model: "EFEKTA_T8_POW",
        vendor: "EFEKTA",
        description: "Temperature sensor with a signal amplifier, support up to 8 DS18B20",
        extend: [
            m.deviceEndpoints({
                endpoints: {
                    "1": 1,
                    "2": 2,
                    "3": 3,
                    "4": 4,
                    "5": 5,
                    "6": 6,
                    "7": 7,
                    "8": 8,
                },
            }),
            m.temperature({
                endpointNames: ["1"],
                description: "Measured value of the 1 temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["2"],
                description: "Measured value of the 2 temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["3"],
                description: "Measured value of the 3 temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["4"],
                description: "Measured value of the 4 temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["5"],
                description: "Measured value of the 5 temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["6"],
                description: "Measured value of the 6 temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["7"],
                description: "Measured value of the 7 temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["8"],
                description: "Measured value of the 8 temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: false,
                percentageReporting: true,
                percentageReportingConfig: sixReporting,
            }),
            m.numeric({
                name: "number_of_sensors",
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0xa199, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Number of ds18b20 sensors per data bus",
                access: "STATE",
            }),
            m.numeric({
                name: "uptime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "localTime",
                description: "Uptime",
                access: "STATE",
            }),
            m.numeric({
                name: "mains_voltage",
                unit: "V",
                cluster: "genPowerCfg",
                attribute: "mainsVoltage",
                description: "Mains voltage",
                scale: 10,
                precision: 1,
                access: "STATE_GET",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 3,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval in seconds, by default 15 seconds",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "tx_radio_power",
                lookup: { "4dbm": 4, "19dbm": 19 },
                cluster: "genPowerCfg",
                attribute: { ID: 0x0236, type: zigbee_herdsman_1.Zcl.DataType.INT8 },
                description: "Set TX Radio Power, dbm",
                access: "STATE_SET",
            }),
            m.binary({
                name: "smart_sleep",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0216, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Smart Sleep, short wakeup every 2-7 seconds",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_T1_v2_LR"],
        model: "EFEKTA_T1_v2_LR",
        vendor: "EFEKTA",
        description: "Temperature sensors with a signal amplifier. External DS18b20 sensor. Simple Thermostat.",
        extend: [
            m.identify(),
            m.temperature({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: true,
                voltageReporting: true,
                percentageReportingConfig: sixReporting,
                voltageReportingConfig: sixReporting,
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 10,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval in seconds, by default 30 seconds",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "tx_radio_power",
                lookup: { "4dbm": 4, "19dbm": 19 },
                cluster: "genPowerCfg",
                attribute: { ID: 0x0236, type: zigbee_herdsman_1.Zcl.DataType.INT8 },
                description: "Set TX Radio Power, dbm",
                access: "STATE_SET",
            }),
            m.binary({
                name: "smart_sleep",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0216, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Smart Sleep, short wakeup every 7 seconds",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "uptime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "standardTime",
                description: "Uptime",
                scale: 3600,
                precision: 1,
                access: "STATE",
            }),
            m.enumLookup({
                name: "resolution",
                lookup: { "9 bit": 9, "10 bit": 10, "11 bit": 11, "12 bit": 12 },
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0520, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Set Bit resolution DS18B20",
                access: "STATE_SET",
            }),
            m.binary({
                name: "config_report_enable",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0275, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable reporting based on reporting configuration",
                access: "STATE_SET",
            }),
            m.binary({
                name: "comparison_previous_data",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable сontrol of comparison with previous data",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Temperature Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert Logic Temperature Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_temperature",
                unit: "°C",
                valueMin: -50,
                valueMax: 120,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting High Temperature Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_temperature",
                unit: "°C",
                valueMin: -50,
                valueMax: 120,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting Low Temperature Border",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_T1_v2"],
        model: "EFEKTA_T1_v2",
        vendor: "EFEKTA",
        description: "Temperature sensors. External DS18b20 sensor. Simple Thermostat.",
        extend: [
            m.identify(),
            m.temperature({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: true,
                voltageReporting: true,
                percentageReportingConfig: sixReporting,
                voltageReportingConfig: sixReporting,
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 10,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval in seconds, by default 30 seconds",
                access: "STATE_SET",
            }),
            m.binary({
                name: "smart_sleep",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0216, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Smart Sleep, short wakeup every 7 seconds",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "uptime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "standardTime",
                description: "Uptime",
                scale: 3600,
                precision: 1,
                access: "STATE",
            }),
            m.enumLookup({
                name: "resolution",
                lookup: { "9 bit": 9, "10 bit": 10, "11 bit": 11, "12 bit": 12 },
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0520, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Set Bit resolution DS18B20",
                access: "STATE_SET",
            }),
            m.binary({
                name: "config_report_enable",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0275, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable reporting based on reporting configuration",
                access: "STATE_SET",
            }),
            m.binary({
                name: "comparison_previous_data",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable сontrol of comparison with previous data",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Temperature Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert Logic Temperature Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_temperature",
                unit: "°C",
                valueMin: -50,
                valueMax: 120,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting High Temperature Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_temperature",
                unit: "°C",
                valueMin: -50,
                valueMax: 120,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting Low Temperature Border",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_TH_v1_LR"],
        model: "EFEKTA_TH_v1_LR",
        vendor: "EFEKTA",
        description: "Temperature and humidity sensors with a signal amplifier. Simple Thermostat.",
        extend: [
            m.identify(),
            m.temperature({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: true,
                voltageReporting: true,
                percentageReportingConfig: sixReporting,
                voltageReportingConfig: sixReporting,
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 10,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval in seconds, by default 30 seconds",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "tx_radio_power",
                lookup: { "4dbm": 4, "19dbm": 19 },
                cluster: "genPowerCfg",
                attribute: { ID: 0x0236, type: zigbee_herdsman_1.Zcl.DataType.INT8 },
                description: "Set TX Radio Power, dbm",
                access: "STATE_SET",
            }),
            m.binary({
                name: "smart_sleep",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0216, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Smart Sleep, short wakeup every 7 seconds",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "uptime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "standardTime",
                description: "Uptime",
                scale: 3600,
                precision: 1,
                access: "STATE",
            }),
            m.binary({
                name: "config_report_enable",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0275, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable reporting based on reporting configuration",
                access: "STATE_SET",
            }),
            m.binary({
                name: "comparison_previous_data",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable сontrol of comparison with previous data",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Temperature Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert Logic Temperature Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_temperature",
                unit: "°C",
                valueMin: -40,
                valueMax: 90,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting High Temperature Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_temperature",
                unit: "°C",
                valueMin: -40,
                valueMax: 90,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting Low Temperature Border",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_humidity",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Humidity Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_humidity",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert Logic Humidity Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_humidity",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting High Humidity Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_humidity",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting Low Humidity Border",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_TH_v1"],
        model: "EFEKTA_TH_v1",
        vendor: "EFEKTA",
        description: "Temperature and humidity sensors. Simple Thermostat.",
        extend: [
            m.identify(),
            m.temperature({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: true,
                voltageReporting: true,
                percentageReportingConfig: sixReporting,
                voltageReportingConfig: sixReporting,
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 10,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval in seconds, by default 30 seconds",
                access: "STATE_SET",
            }),
            m.binary({
                name: "smart_sleep",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0216, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Smart Sleep, short wakeup every 7 seconds",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "uptime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "standardTime",
                description: "Uptime",
                scale: 3600,
                precision: 1,
                access: "STATE",
            }),
            m.binary({
                name: "config_report_enable",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0275, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable reporting based on reporting configuration",
                access: "STATE_SET",
            }),
            m.binary({
                name: "comparison_previous_data",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable сontrol of comparison with previous data",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Temperature Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert Logic Temperature Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_temperature",
                unit: "°C",
                valueMin: -40,
                valueMax: 90,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting High Temperature Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_temperature",
                unit: "°C",
                valueMin: -40,
                valueMax: 90,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting Low Temperature Border",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_humidity",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Humidity Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_humidity",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert Logic Humidity Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_humidity",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting High Humidity Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_humidity",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting Low Humidity Border",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_TH_v2_LR"],
        model: "EFEKTA_TH_v2_LR",
        vendor: "EFEKTA",
        description: "Temperature and humidity sensors with a signal amplifier. Simple Thermostat.",
        extend: [
            m.identify(),
            m.temperature({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: true,
                voltageReporting: true,
                percentageReportingConfig: sixReporting,
                voltageReportingConfig: sixReporting,
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 10,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval in seconds, by default 30 seconds",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "tx_radio_power",
                lookup: { "4dbm": 4, "19dbm": 19 },
                cluster: "genPowerCfg",
                attribute: { ID: 0x0236, type: zigbee_herdsman_1.Zcl.DataType.INT8 },
                description: "Set TX Radio Power, dbm",
                access: "STATE_SET",
            }),
            m.binary({
                name: "smart_sleep",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0216, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Smart Sleep, short wakeup every 7 seconds",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "uptime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "standardTime",
                description: "Uptime",
                scale: 3600,
                precision: 1,
                access: "STATE",
            }),
            m.binary({
                name: "config_report_enable",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0275, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable reporting based on reporting configuration",
                access: "STATE_SET",
            }),
            m.binary({
                name: "comparison_previous_data",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable сontrol of comparison with previous data",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Temperature Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert Logic Temperature Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_temperature",
                unit: "°C",
                valueMin: -40,
                valueMax: 90,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting High Temperature Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_temperature",
                unit: "°C",
                valueMin: -40,
                valueMax: 90,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting Low Temperature Border",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_humidity",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Humidity Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_humidity",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert Logic Humidity Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_humidity",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting High Humidity Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_humidity",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting Low Humidity Border",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_TH_v2"],
        model: "EFEKTA_TH_v2",
        vendor: "EFEKTA",
        description: "Temperature and humidity sensors. Simple Thermostat.",
        extend: [
            m.identify(),
            m.temperature({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: true,
                voltageReporting: true,
                percentageReportingConfig: sixReporting,
                voltageReportingConfig: sixReporting,
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 10,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval in seconds, by default 30 seconds",
                access: "STATE_SET",
            }),
            m.binary({
                name: "smart_sleep",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0216, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Smart Sleep, short wakeup every 7 seconds",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "uptime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "standardTime",
                description: "Uptime",
                scale: 3600,
                precision: 1,
                access: "STATE",
            }),
            m.binary({
                name: "config_report_enable",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0275, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable reporting based on reporting configuration",
                access: "STATE_SET",
            }),
            m.binary({
                name: "comparison_previous_data",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable сontrol of comparison with previous data",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Temperature Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert Logic Temperature Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_temperature",
                unit: "°C",
                valueMin: -40,
                valueMax: 90,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting High Temperature Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_temperature",
                unit: "°C",
                valueMin: -40,
                valueMax: 90,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting Low Temperature Border",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_humidity",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Humidity Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_humidity",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert Logic Humidity Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_humidity",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting High Humidity Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_humidity",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting Low Humidity Border",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_TH_DUO_LR"],
        model: "EFEKTA_TH_DUO_LR",
        vendor: "EFEKTA",
        description: "Smart device with internal and external temperature and humidity sensor.",
        extend: [
            m.deviceEndpoints({ endpoints: { "1": 1, "2": 2 } }),
            m.temperature({
                endpointNames: ["1"],
                description: "Measured value of the built-in temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["2"],
                description: "Measured value of the external temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                endpointNames: ["1"],
                description: "Measured value of the built-in humidity sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                endpointNames: ["2"],
                description: "Measured value of the external humidity sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: true,
                voltageReporting: true,
                percentageReportingConfig: sixReporting,
                voltageReportingConfig: sixReporting,
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 10,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval in seconds, by default 30 seconds",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "tx_radio_power",
                lookup: { "4dbm": 4, "19dbm": 19 },
                cluster: "genPowerCfg",
                attribute: { ID: 0x0236, type: zigbee_herdsman_1.Zcl.DataType.INT8 },
                description: "Set TX Radio Power, dbm",
                access: "STATE_SET",
            }),
            m.binary({
                name: "smart_sleep",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0216, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Smart Sleep, short wakeup every 7 seconds",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "uptime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "standardTime",
                description: "Uptime",
                scale: 3600,
                precision: 1,
                access: "STATE",
            }),
            m.binary({
                name: "config_report_enable",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0275, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable reporting based on reporting configuration",
                access: "STATE_SET",
            }),
            m.binary({
                name: "comparison_previous_data",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable сontrol of comparison with previous data",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Temperature Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "switching_temperature_sensor",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0229, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable internal or external sensor control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert Logic Temperature Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_temperature",
                unit: "°C",
                valueMin: -40,
                valueMax: 90,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting High Temperature Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_temperature",
                unit: "°C",
                valueMin: -40,
                valueMax: 90,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting Low Temperature Border",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_humidity",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Humidity Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "switching_humidity_sensor",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0229, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable internal or external sensor control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_humidity",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert Logic Humidity Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_humidity",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting High Humidity Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_humidity",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting Low Humidity Border",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_TH_DUO"],
        model: "EFEKTA_TH_DUO",
        vendor: "EFEKTA",
        description: "Smart device with internal and external temperature and humidity sensor.",
        extend: [
            m.deviceEndpoints({ endpoints: { "1": 1, "2": 2 } }),
            m.temperature({
                endpointNames: ["1"],
                description: "Measured value of the built-in temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["2"],
                description: "Measured value of the external temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                endpointNames: ["1"],
                description: "Measured value of the built-in humidity sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                endpointNames: ["2"],
                description: "Measured value of the external humidity sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: true,
                voltageReporting: true,
                percentageReportingConfig: sixReporting,
                voltageReportingConfig: sixReporting,
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 10,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval in seconds, by default 30 seconds",
                access: "STATE_SET",
            }),
            m.binary({
                name: "smart_sleep",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0216, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Smart Sleep, short wakeup every 7 seconds",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "uptime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "standardTime",
                description: "Uptime",
                scale: 3600,
                precision: 1,
                access: "STATE",
            }),
            m.binary({
                name: "config_report_enable",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0275, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable reporting based on reporting configuration",
                access: "STATE_SET",
            }),
            m.binary({
                name: "comparison_previous_data",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable сontrol of comparison with previous data",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Temperature Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "switching_temperature_sensor",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0229, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable internal or external sensor control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert Logic Temperature Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_temperature",
                unit: "°C",
                valueMin: -40,
                valueMax: 90,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting High Temperature Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_temperature",
                unit: "°C",
                valueMin: -40,
                valueMax: 90,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting Low Temperature Border",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_humidity",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Humidity Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "switching_humidity_sensor",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0229, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable internal or external sensor control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_humidity",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert Logic Humidity Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_humidity",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting High Humidity Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_humidity",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting Low Humidity Border",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_PST_V1_LR"],
        model: "EFEKTA_PST_V1_LR",
        vendor: "EFEKTA",
        description: "Water, gas smart pressure monitor with signal amplifier",
        extend: [
            m.pressure({
                unit: "kPa",
                description: "Measured pressure value in kPa",
                scale: 10,
                reporting: threeReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "bar",
                unit: "bar",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value in bar",
                scale: 1000,
                precision: 2,
                access: "STATE",
            }),
            m.numeric({
                name: "psi",
                unit: "psi",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value in psi",
                scale: 68.94757,
                precision: 2,
                access: "STATE",
            }),
            m.temperature({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "pressure_offset",
                unit: "kPa",
                valueMin: -100.0,
                valueMax: 100.0,
                cluster: "msPressureMeasurement",
                attribute: { ID: 0x0210, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust first pressure sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "raw_temperature_calibration",
                unit: "raw unit",
                valueMin: -8192,
                valueMax: 8192,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0008, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust first temperature sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "raw_temperature",
                unit: "raw unit",
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0007, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Sensor raw temperature",
                access: "STATE",
            }),
            m.numeric({
                name: "raw_temperature_recalibrated",
                unit: "raw unit",
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0009, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Recalibrated sensor raw temperature",
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: true,
                voltageReporting: false,
                percentageReportingConfig: sixReporting,
            }),
            m.numeric({
                name: "uptime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "localTime",
                description: "Uptime",
                access: "STATE",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 10,
                valueMax: 300,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval in seconds, by default 15 seconds",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "tx_radio_power",
                lookup: { "4dbm": 4, "19dbm": 19 },
                cluster: "genPowerCfg",
                attribute: { ID: 0x0236, type: zigbee_herdsman_1.Zcl.DataType.INT8 },
                description: "Set TX Radio Power, dbm",
                access: "STATE_SET",
            }),
            m.binary({
                name: "smart_sleep",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0216, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Smart Sleep, short wakeup every 7 seconds",
                access: "STATE_SET",
            }),
            m.binary({
                name: "config_report_enable",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0275, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable reporting based on reporting configuration",
                access: "STATE_SET",
            }),
            m.binary({
                name: "comparison_previous_data",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable сontrol of comparison with previous data",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_PST_POW_V1_LR"],
        model: "EFEKTA_PST_POW_V1_LR",
        vendor: "EFEKTA",
        description: "Water, gas smart pressure monitor with two types of power supply",
        extend: [
            m.pressure({
                unit: "kPa",
                description: "Measured pressure value in kPa",
                scale: 10,
                reporting: threeReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "bar",
                unit: "bar",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value in bar",
                scale: 1000,
                precision: 2,
                access: "STATE",
            }),
            m.numeric({
                name: "psi",
                unit: "psi",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value in psi",
                scale: 68.94757,
                precision: 2,
                access: "STATE",
            }),
            m.temperature({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "pressure_offset",
                unit: "kPa",
                valueMin: -100.0,
                valueMax: 100.0,
                cluster: "msPressureMeasurement",
                attribute: { ID: 0x0210, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust first pressure sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "raw_temperature_calibration",
                unit: "raw unit",
                valueMin: -8192,
                valueMax: 8192,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0008, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust first temperature sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "mains_voltage",
                unit: "V",
                cluster: "genPowerCfg",
                attribute: "mainsVoltage",
                description: "Mains voltage",
                scale: 10,
                precision: 1,
                access: "STATE_GET",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: false,
                percentageReporting: true,
                percentageReportingConfig: sixReporting,
            }),
            m.numeric({
                name: "uptime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "localTime",
                description: "Uptime",
                access: "STATE",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 10,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval in seconds, by default 10 seconds",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "tx_radio_power",
                lookup: { "4dbm": 4, "19dbm": 19 },
                cluster: "genPowerCfg",
                attribute: { ID: 0x0236, type: zigbee_herdsman_1.Zcl.DataType.INT8 },
                description: "Set TX Radio Power, dbm",
                access: "STATE_SET",
            }),
            m.binary({
                name: "smart_sleep",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0216, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Smart Sleep, short wakeup every 2-7 seconds",
                access: "STATE_SET",
            }),
            m.binary({
                name: "config_report_enable",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0275, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable reporting based on reporting configuration",
                access: "STATE_SET",
            }),
            m.binary({
                name: "comparison_previous_data",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable сontrol of comparison with previous data",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_PST_POW_V2_LR"],
        model: "EFEKTA_PST_POW_V2_LR",
        vendor: "EFEKTA",
        description: "Water, gas smart pressure monitor with two types of power supply V2",
        extend: [
            m.pressure({
                unit: "kPa",
                description: "Measured pressure value in kPa",
                scale: 10,
                reporting: threeReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "bar",
                unit: "bar",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value in bar",
                scale: 1000,
                precision: 2,
                access: "STATE",
            }),
            m.numeric({
                name: "psi",
                unit: "psi",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value in psi",
                scale: 68.94757,
                precision: 2,
                access: "STATE",
            }),
            m.temperature({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "pressure_offset",
                unit: "hPa",
                valueMin: -1000.0,
                valueMax: 1000.0,
                cluster: "msPressureMeasurement",
                attribute: { ID: 0x0210, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust first pressure sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "temperature_offset",
                unit: "°C",
                valueMin: -25,
                valueMax: 25,
                valueStep: 0.1,
                scale: 10,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0210, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust temperature sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "mains_voltage",
                unit: "V",
                cluster: "genPowerCfg",
                attribute: "mainsVoltage",
                description: "Mains voltage",
                scale: 10,
                precision: 1,
                access: "STATE_GET",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: false,
                percentageReporting: true,
                percentageReportingConfig: sixReporting,
            }),
            m.numeric({
                name: "uptime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "localTime",
                description: "Uptime",
                access: "STATE",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 10,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval in seconds, by default 10 seconds",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "tx_radio_power",
                lookup: { "4dbm": 4, "19dbm": 19 },
                cluster: "genPowerCfg",
                attribute: { ID: 0x0236, type: zigbee_herdsman_1.Zcl.DataType.INT8 },
                description: "Set TX Radio Power, dbm",
                access: "STATE_SET",
            }),
            m.binary({
                name: "smart_sleep",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0216, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Smart Sleep, short wakeup every 2-7 seconds",
                access: "STATE_SET",
            }),
            m.binary({
                name: "config_report_enable",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0275, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable reporting based on reporting configuration",
                access: "STATE_SET",
            }),
            m.binary({
                name: "comparison_previous_data",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable сontrol of comparison with previous data",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_PST_V1"],
        model: "EFEKTA_PST_V1",
        vendor: "EFEKTA",
        description: "Water, gas smart pressure monitor",
        extend: [
            m.pressure({
                unit: "kPa",
                description: "Measured pressure value in kPa",
                scale: 10,
                reporting: threeReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "bar",
                unit: "bar",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value in bar",
                scale: 1000,
                precision: 2,
                access: "STATE",
            }),
            m.numeric({
                name: "psi",
                unit: "psi",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value in psi",
                scale: 68.94757,
                precision: 2,
                access: "STATE",
            }),
            m.temperature({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "pressure_offset",
                unit: "kPa",
                valueMin: -100.0,
                valueMax: 100.0,
                cluster: "msPressureMeasurement",
                attribute: { ID: 0x0210, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust first pressure sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "raw_temperature_calibration",
                unit: "raw unit",
                valueMin: -8192,
                valueMax: 8192,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0008, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust first temperature sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "raw_temperature",
                unit: "raw unit",
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0007, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Sensor raw temperature",
                access: "STATE",
            }),
            m.numeric({
                name: "raw_temperature_recalibrated",
                unit: "raw unit",
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0009, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Recalibrated sensor raw temperature",
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: true,
                voltageReporting: false,
                percentageReportingConfig: sixReporting,
            }),
            m.numeric({
                name: "uptime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "localTime",
                description: "Uptime",
                access: "STATE",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 10,
                valueMax: 300,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.INT8 },
                description: "Setting the sensor reading interval in seconds, by default 15 seconds",
                access: "STATE_SET",
            }),
            m.binary({
                name: "smart_sleep",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0216, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Smart Sleep, short wakeup every 7 seconds",
                access: "STATE_SET",
            }),
            m.binary({
                name: "config_report_enable",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0275, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable reporting based on reporting configuration",
                access: "STATE_SET",
            }),
            m.binary({
                name: "comparison_previous_data",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable сontrol of comparison with previous data",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_PST_DUO_V1"],
        model: "EFEKTA_PST_DUO_V1",
        vendor: "EFEKTA",
        description: "Water, gas smart pressure monitor with two sensors",
        extend: [
            m.deviceEndpoints({ endpoints: { "1": 1, "2": 2 } }),
            m.pressure({
                endpointNames: ["1"],
                unit: "kPa",
                description: "Measured pressure value оf the first sensor in kPa",
                scale: 10,
                reporting: threeReporting,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["1"],
                name: "bar",
                unit: "bar",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value оf the first sensor in bar",
                scale: 1000,
                precision: 2,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["1"],
                name: "psi",
                unit: "psi",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value оf the first sensor in psi",
                scale: 68.94757,
                precision: 2,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["1"],
                description: "Measured value of the first temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["1"],
                name: "pressure_offset",
                unit: "kPa",
                valueMin: -100.0,
                valueMax: 100.0,
                cluster: "msPressureMeasurement",
                attribute: { ID: 0x0210, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust first pressure sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                endpointNames: ["1"],
                name: "raw_temperature_calibration",
                unit: "raw unit",
                valueMin: -8192,
                valueMax: 8192,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0008, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust first temperature sensor",
                access: "STATE_SET",
            }),
            m.pressure({
                endpointNames: ["2"],
                unit: "kPa",
                description: "Measured pressure value оf the second sensor in kPa",
                scale: 10,
                reporting: threeReporting,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["2"],
                name: "bar",
                unit: "bar",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value оf the second sensor in bar",
                scale: 1000,
                precision: 2,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["2"],
                name: "psi",
                unit: "psi",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "pressure in psi",
                scale: 68.94757,
                precision: 2,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["2"],
                description: "Measured value of the second temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["2"],
                name: "pressure_offset",
                unit: "kPa",
                valueMin: -100.0,
                valueMax: 100.0,
                cluster: "msPressureMeasurement",
                attribute: { ID: 0x0210, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust second pressure sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                endpointNames: ["2"],
                name: "raw_temperature_cal",
                unit: "raw unit",
                valueMin: -8192,
                valueMax: 8192,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0008, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust second temperature sensor",
                access: "STATE_SET",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: true,
                voltageReporting: false,
                percentageReportingConfig: sixReporting,
            }),
            m.numeric({
                name: "uptime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "localTime",
                description: "Uptime",
                access: "STATE",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 10,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting sensor reading interval in seconds, by default 20 seconds",
                access: "STATE_SET",
            }),
            m.binary({
                name: "smart_sleep",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0216, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Smart Sleep, short wakeup every 7 seconds",
                access: "STATE_SET",
            }),
            m.binary({
                name: "config_report_enable",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0275, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable reporting based on reporting configuration",
                access: "STATE_SET",
            }),
            m.binary({
                name: "comparison_previous_data",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable сontrol of comparison with previous data",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_PST_DUO_V1_LR"],
        model: "EFEKTA_PST_DUO_V1_LR",
        vendor: "EFEKTA",
        description: "Water, gas smart pressure monitor with two sensors and signal amplifier",
        extend: [
            m.deviceEndpoints({ endpoints: { "1": 1, "2": 2 } }),
            m.pressure({
                endpointNames: ["1"],
                unit: "kPa",
                description: "Measured pressure value оf the first sensor in kPa",
                scale: 10,
                reporting: threeReporting,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["1"],
                name: "bar",
                unit: "bar",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value оf the first sensor in bar",
                scale: 1000,
                precision: 2,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["1"],
                name: "psi",
                unit: "psi",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value оf the first sensor in psi",
                scale: 68.94757,
                precision: 2,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["1"],
                description: "Measured value of the first temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["1"],
                name: "pressure_offset",
                unit: "kPa",
                valueMin: -100.0,
                valueMax: 100.0,
                cluster: "msPressureMeasurement",
                attribute: { ID: 0x0210, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust first pressure sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                endpointNames: ["1"],
                name: "raw_temperature_cal",
                unit: "raw unit",
                valueMin: -8192,
                valueMax: 8192,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0008, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust first temperature sensor",
                access: "STATE_SET",
            }),
            m.pressure({
                endpointNames: ["2"],
                unit: "kPa",
                description: "Measured pressure value оf the second sensor in kPa",
                scale: 10,
                reporting: threeReporting,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["2"],
                name: "bar",
                unit: "bar",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value оf the second sensor in bar",
                scale: 1000,
                precision: 2,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["2"],
                name: "psi",
                unit: "psi",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value оf the second sensor in psi",
                scale: 68.94757,
                precision: 2,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["2"],
                description: "Measured value of the second temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["2"],
                name: "pressure_offset",
                unit: "kPa",
                valueMin: -100.0,
                valueMax: 100.0,
                cluster: "msPressureMeasurement",
                attribute: { ID: 0x0210, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust second pressure sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                endpointNames: ["2"],
                name: "raw_temperature_calibration",
                unit: "raw unit",
                valueMin: -8192,
                valueMax: 8192,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0008, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust second temperature sensor",
                access: "STATE_SET",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: true,
                voltageReporting: false,
                percentageReportingConfig: sixReporting,
            }),
            m.numeric({
                name: "uptime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "localTime",
                description: "Uptime",
                access: "STATE",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 10,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval in seconds, by default 40 seconds",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "tx_radio_power",
                lookup: { "4dbm": 4, "19dbm": 19 },
                cluster: "genPowerCfg",
                attribute: { ID: 0x0236, type: zigbee_herdsman_1.Zcl.DataType.INT8 },
                description: "Set TX Radio Power, dbm",
                access: "STATE_SET",
            }),
            m.binary({
                name: "smart_sleep",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0216, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Smart Sleep, short wakeup every 7 seconds",
                access: "STATE_SET",
            }),
            m.binary({
                name: "config_report_enable",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0275, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable reporting based on reporting configuration",
                access: "STATE_SET",
            }),
            m.binary({
                name: "comparison_previous_data",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable сontrol of comparison with previous data",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_PST_POW_DUO_V1_LR"],
        model: "EFEKTA_PST_POW_DUO_V1_LR",
        vendor: "EFEKTA",
        description: "Water, gas smart pressure monitor with two sensors, two power supply",
        extend: [
            m.deviceEndpoints({ endpoints: { "1": 1, "2": 2 } }),
            m.pressure({
                endpointNames: ["1"],
                unit: "kPa",
                description: "Measured pressure value оf the first sensor in kPa",
                scale: 10,
                reporting: threeReporting,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["1"],
                name: "bar",
                unit: "bar",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value оf the first sensor in bar",
                scale: 1000,
                precision: 2,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["1"],
                name: "psi",
                unit: "psi",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value оf the first sensor in psi",
                scale: 68.94757,
                precision: 2,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["1"],
                description: "Measured value of the first temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["1"],
                name: "pressure_offset",
                unit: "kPa",
                valueMin: -100.0,
                valueMax: 100.0,
                cluster: "msPressureMeasurement",
                attribute: { ID: 0x0210, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust first pressure sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                endpointNames: ["1"],
                name: "raw_temperature_calibration",
                unit: "raw unit",
                valueMin: -8192,
                valueMax: 8192,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0008, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust first temperature sensor",
                access: "STATE_SET",
            }),
            m.pressure({
                endpointNames: ["2"],
                unit: "kPa",
                description: "Measured pressure value оf the second sensor in kPa",
                scale: 10,
                reporting: threeReporting,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["2"],
                name: "bar",
                unit: "bar",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value оf the second sensor in bar",
                scale: 1000,
                precision: 2,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["2"],
                name: "psi",
                unit: "psi",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value оf the second sensor in psi",
                scale: 68.94757,
                precision: 2,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["2"],
                description: "Measured value of the second temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["2"],
                name: "pressure_offset",
                unit: "kPa",
                valueMin: -100.0,
                valueMax: 100.0,
                cluster: "msPressureMeasurement",
                attribute: { ID: 0x0210, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust second pressure sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                endpointNames: ["2"],
                name: "raw_temperature_calibration",
                unit: "raw unit",
                valueMin: -8192,
                valueMax: 8192,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0008, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust second temperature sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "mains_voltage",
                unit: "V",
                cluster: "genPowerCfg",
                attribute: "mainsVoltage",
                description: "Mains voltage",
                scale: 10,
                precision: 1,
                access: "STATE_GET",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: false,
                percentageReporting: true,
                percentageReportingConfig: sixReporting,
            }),
            m.numeric({
                name: "uptime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "localTime",
                description: "Uptime",
                access: "STATE",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 10,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval in seconds, by default 10 seconds",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "tx_radio_power",
                lookup: { "4dbm": 4, "19dbm": 19 },
                cluster: "genPowerCfg",
                attribute: { ID: 0x0236, type: zigbee_herdsman_1.Zcl.DataType.INT8 },
                description: "Set TX Radio Power, dbm",
                access: "STATE_SET",
            }),
            m.binary({
                name: "smart_sleep",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0216, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Smart Sleep, short wakeup every 2-7 seconds",
                access: "STATE_SET",
            }),
            m.binary({
                name: "config_report_enable",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0275, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable reporting based on reporting configuration",
                access: "STATE_SET",
            }),
            m.binary({
                name: "comparison_previous_data",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable сontrol of comparison with previous data",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_PST_POW_DUO_V2_LR"],
        model: "EFEKTA_PST_POW_DUO_V2_LR",
        vendor: "EFEKTA",
        description: "Water, gas smart pressure monitor with two sensors, power supply, V2",
        extend: [
            m.deviceEndpoints({ endpoints: { "1": 1, "2": 2 } }),
            m.pressure({
                endpointNames: ["1"],
                unit: "kPa",
                description: "Measured pressure value оf the first sensor in kPa",
                scale: 10,
                reporting: threeReporting,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["1"],
                name: "bar",
                unit: "bar",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value оf the first sensor in bar",
                scale: 1000,
                precision: 2,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["1"],
                name: "psi",
                unit: "psi",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value оf the first sensor in psi",
                scale: 68.94757,
                precision: 2,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["1"],
                description: "Measured value of the first temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["1"],
                name: "pressure_offset",
                unit: "hPa",
                valueMin: -1000.0,
                valueMax: 1000.0,
                cluster: "msPressureMeasurement",
                attribute: { ID: 0x0210, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust first pressure sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                endpointNames: ["1"],
                name: "temperature_offset",
                unit: "°C",
                valueMin: -25,
                valueMax: 25,
                valueStep: 0.1,
                scale: 10,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0210, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust temperature sensor",
                access: "STATE_SET",
            }),
            m.pressure({
                endpointNames: ["2"],
                unit: "kPa",
                description: "Measured pressure value оf the second sensor in kPa",
                scale: 10,
                reporting: threeReporting,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["2"],
                name: "bar",
                unit: "bar",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value оf the second sensor in bar",
                scale: 1000,
                precision: 2,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["2"],
                name: "psi",
                unit: "psi",
                cluster: "msPressureMeasurement",
                attribute: "measuredValue",
                description: "Measured pressure value оf the second sensor in psi",
                scale: 68.94757,
                precision: 2,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["2"],
                description: "Measured value of the second temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.numeric({
                endpointNames: ["2"],
                name: "pressure_offset",
                unit: "hPa",
                valueMin: -1000.0,
                valueMax: 1000.0,
                cluster: "msPressureMeasurement",
                attribute: { ID: 0x0210, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust second pressure sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                endpointNames: ["2"],
                name: "temperature_offset",
                unit: "°C",
                valueMin: -25,
                valueMax: 25,
                valueStep: 0.1,
                scale: 10,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0210, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust temperature sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "mains_voltage",
                unit: "V",
                cluster: "genPowerCfg",
                attribute: "mainsVoltage",
                description: "Mains voltage",
                scale: 10,
                precision: 1,
                access: "STATE_GET",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: false,
                percentageReporting: true,
                percentageReportingConfig: sixReporting,
            }),
            m.numeric({
                name: "uptime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "localTime",
                description: "Uptime",
                access: "STATE",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 10,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval in seconds, by default 10 seconds",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "tx_radio_power",
                lookup: { "4dbm": 4, "19dbm": 19 },
                cluster: "genPowerCfg",
                attribute: { ID: 0x0236, type: zigbee_herdsman_1.Zcl.DataType.INT8 },
                description: "Set TX Radio Power, dbm",
                access: "STATE_SET",
            }),
            m.binary({
                name: "smart_sleep",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0216, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Smart Sleep, short wakeup every 2-7 seconds",
                access: "STATE_SET",
            }),
            m.binary({
                name: "config_report_enable",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0275, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable reporting based on reporting configuration",
                access: "STATE_SET",
            }),
            m.binary({
                name: "comparison_previous_data",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable сontrol of comparison with previous data",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_Smart_AQ_Box_R3"],
        model: "EFEKTA_Smart_AQ_Box_R3",
        vendor: "EFEKTA",
        description: "EFEKTA Smart Air Quality Box, can control the relay, binding on some other devices",
        extend: [
            m.numeric({
                name: "pm1",
                unit: "µg/m³",
                cluster: "pm25Measurement",
                attribute: { ID: 0x0601, type: zigbee_herdsman_1.Zcl.DataType.SINGLE_PREC },
                description: "Measured PM1.0 (particulate matter) concentration",
                access: "STATE",
                reporting: pmReporting,
                precision: 1,
            }),
            m.pm25({
                reporting: pmReporting,
                access: "STATE",
                description: "Measured PM2.5 (particulate matter) concentration",
                precision: 1,
            }),
            m.numeric({
                name: "pm4",
                unit: "µg/m³",
                cluster: "pm25Measurement",
                attribute: { ID: 0x0605, type: zigbee_herdsman_1.Zcl.DataType.SINGLE_PREC },
                description: "Measured PM4.0 (particulate matter) concentration",
                access: "STATE",
                reporting: pmReporting,
                precision: 1,
            }),
            m.numeric({
                name: "pm10",
                unit: "µg/m³",
                cluster: "pm25Measurement",
                attribute: { ID: 0x0602, type: zigbee_herdsman_1.Zcl.DataType.SINGLE_PREC },
                description: "Measured PM10.0 (particulate matter) concentration",
                access: "STATE",
                reporting: pmReporting,
                precision: 1,
            }),
            m.numeric({
                name: "pm_size",
                unit: "µm",
                cluster: "pm25Measurement",
                attribute: { ID: 0x0603, type: zigbee_herdsman_1.Zcl.DataType.SINGLE_PREC },
                description: "Typical Particle Size",
                access: "STATE",
                reporting: pm2Reporting,
                precision: 2,
            }),
            m.numeric({
                name: "aqi_25_index",
                unit: "PM2.5 Index",
                cluster: "pm25Measurement",
                attribute: { ID: 0x0604, type: zigbee_herdsman_1.Zcl.DataType.SINGLE_PREC },
                description: "PM 2.5 INDEX",
                access: "STATE",
                reporting: pmReporting,
            }),
            m.co2({
                reporting: co2Reporting,
                access: "STATE",
            }),
            m.numeric({
                name: "voc_index",
                unit: "VOC Index points",
                cluster: "genAnalogInput",
                attribute: "presentValue",
                description: "VOC index",
                access: "STATE",
                reporting: threeReporting,
            }),
            m.pressure({
                reporting: threeReporting,
                access: "STATE",
            }),
            m.temperature({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "reading_delay",
                unit: "sec",
                valueMin: 6,
                valueMax: 600,
                cluster: "msCO2",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading delay.",
                access: "STATE_SET",
            }),
            m.binary({
                name: "alarm",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0240, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Alarm",
                access: "STATE_SET",
            }),
            m.binary({
                name: "light_indicator",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0211, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable or Disable light indicator",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "light_indicator_level",
                unit: "%",
                valueMin: 0,
                valueMax: 100,
                cluster: "msCO2",
                attribute: { ID: 0x0209, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Light indicator level",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "temperature_offset",
                unit: "°C",
                valueMin: -50,
                valueMax: 50,
                valueStep: 0.1,
                scale: 10,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0410, type: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Manual clean PM2.5 sensor",
                access: "STATE_SET",
            }),
            m.binary({
                name: "forced_recalibration",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0202, type: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Factory Reset CO2 sensor",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_pm25",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "pm25Measurement",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable PM2.5 Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_pm25",
                unit: "µg/m³",
                valueMin: 0,
                valueMax: 1000,
                cluster: "pm25Measurement",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting High PM2.5 Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_pm25",
                unit: "µg/m³",
                valueMin: 0,
                valueMax: 1000,
                cluster: "pm25Measurement",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting Low PM2.5 Border",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_co2_gas",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable CO2 Gas Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_co2_gas",
                unit: "ppm",
                valueMin: 400,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting High CO2 Gas Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_co2_gas",
                unit: "ppm",
                valueMin: 400,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting Low CO2 Gas Border",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_voc",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genAnalogInput",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable VOC Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_voc",
                unit: "VOC Index points",
                valueMin: 0,
                valueMax: 500,
                cluster: "genAnalogInput",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting High VOC Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_voc",
                unit: "VOC Index points",
                valueMin: 0,
                valueMax: 500,
                cluster: "genAnalogInput",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting Low VOC Border",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_iAQ_S_III"],
        model: "EFEKTA_iAQ_S_III",
        vendor: "EFEKTA",
        description: "Air Quality Monitor, CO2, VOC, outdoor temperature and humidity, date and time",
        extend: [
            m.co2({
                reporting: co2Reporting,
                access: "STATE",
            }),
            m.numeric({
                name: "voc_index",
                unit: "VOC Index points",
                cluster: "genAnalogInput",
                attribute: "presentValue",
                description: "VOC index",
                reporting: fiveReporting,
                access: "STATE",
            }),
            m.temperature({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.illuminance({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.binary({
                name: "auto_brightness",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msIlluminanceMeasurement",
                attribute: { ID: 0x0203, type: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Night mode deactivation time",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "long_chart_period",
                lookup: { "1H": 0, "24H": 1 },
                cluster: "msCO2",
                attribute: { ID: 0x0204, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "The period of plotting the CO2 level(OFF - 1H | ON - 24H)",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "long_chart_period2",
                lookup: { "1H": 0, "24H": 1 },
                cluster: "msCO2",
                attribute: { ID: 0x0244, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "The period of plotting the VOC Index points(OFF - 1H | ON - 24H)",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "internal_or_external",
                lookup: { INTERNAL: 0, EXTERNAL: 1 },
                cluster: "msCO2",
                attribute: { ID: 0x0288, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Display data from internal or external TH sensor",
                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: zigbee_herdsman_1.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: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust humidity",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "set_altitude",
                unit: "meters",
                valueMin: 0,
                valueMax: 3000,
                cluster: "msCO2",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the altitude above sea level (for high accuracy of the CO2 sensor)",
                access: "STATE_SET",
            }),
            m.binary({
                name: "automatic_scal",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0402, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Automatic self calibration",
                access: "STATE_SET",
            }),
            m.binary({
                name: "forced_recalibration",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0202, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Start FRC (Perform Forced Recalibration of the CO2 Sensor)",
                access: "STATE_SET",
            }),
            m.binary({
                name: "factory_reset_co2",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0206, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Factory Reset CO2 sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "manual_forced_recalibration",
                unit: "ppm",
                valueMin: 0,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0207, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Start Manual FRC (Perform Forced Recalibration of the CO2 Sensor)",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_co2",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable CO2 Gas Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_co2",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable invert logic CO2 Gas Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_co2",
                unit: "ppm",
                valueMin: 400,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting High CO2 Gas Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_co2",
                unit: "ppm",
                valueMin: 400,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting Low CO2 Gas Border",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_voc",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genAnalogInput",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable CO2 Gas Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_voc",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genAnalogInput",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable invert logic CO2 Gas Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_voc",
                unit: "ppm",
                valueMin: 0,
                valueMax: 500,
                cluster: "genAnalogInput",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting High CO2 Gas Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_voc",
                unit: "ppm",
                valueMin: 0,
                valueMax: 500,
                cluster: "genAnalogInput",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting Low CO2 Gas Border",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_iAQ_S_II"],
        model: "EFEKTA_iAQ_S_II",
        vendor: "EFEKTA",
        description: "CO2 and atmospheric pressure мonitor with TFT Display, outdoor temperature and humidity",
        extend: [
            m.deviceEndpoints({ endpoints: { "1": 1, "2": 2 } }),
            m.co2({
                reporting: co2Reporting,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["1"],
                description: "Measured value of the built-in temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.temperature({
                endpointNames: ["2"],
                description: "Measured value of the external temperature sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                endpointNames: ["1"],
                description: "Measured value of the built-in humidity sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                endpointNames: ["2"],
                description: "Measured value of the external humidity sensor",
                reporting: fourReporting,
                access: "STATE",
            }),
            m.pressure({
                reporting: threeReporting,
                access: "STATE",
            }),
            m.illuminance({
                reporting: defaultReporting,
                access: "STATE",
            }),
            m.binary({
                name: "auto_brightness",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0203, type: zigbee_herdsman_1.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: "msCO2",
                attribute: { ID: 0x0401, type: zigbee_herdsman_1.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: "msCO2",
                attribute: { ID: 0x0402, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Night mode activation time",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "night_off_backlight",
                unit: "Hr",
                valueMin: 0,
                valueMax: 23,
                cluster: "msCO2",
                attribute: { ID: 0x0403, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Night mode deactivation time",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "long_chart_period",
                lookup: { "1H": 0, "24H": 1 },
                cluster: "msCO2",
                attribute: { ID: 0x0204, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "The period of plotting the CO2 level(OFF - 1H | ON - 24H)",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "long_chart_period2",
                lookup: { "1H": 0, "24H": 1 },
                cluster: "msCO2",
                attribute: { ID: 0x0244, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "The period of plotting the рressure level(OFF - 1H | ON - 24H)",
                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: zigbee_herdsman_1.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: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust humidity",
                access: "STATE_SET",
            }),
            m.binary({
                name: "forced_recalibration",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0202, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Start FRC (Perform Forced Recalibration of the CO2 Sensor)",
                access: "STATE_SET",
            }),
            m.binary({
                name: "factory_reset_co2",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0206, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Factory Reset CO2 sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "manual_forced_recalibration",
                unit: "ppm",
                valueMin: 0,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0207, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Start Manual FRC (Perform Forced Recalibration of the CO2 Sensor)",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_gas",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable CO2 Gas Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_gas",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable invert logic CO2 Gas Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_gas",
                unit: "ppm",
                valueMin: 400,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting High CO2 Gas Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_gas",
                unit: "ppm",
                valueMin: 400,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting Low CO2 Gas Border",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["zFlora_S"],
        model: "zFlora_S",
        vendor: "EFEKTA",
        description: "Plant watering sensor zFlora S",
        extend: [
            m.identify(),
            m.soilMoisture({
                reporting: soilMoistureReporting,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: true,
                voltageReporting: true,
                percentageReportingConfig: sixReporting,
                voltageReportingConfig: sixReporting,
            }),
            m.temperature({
                reporting: slowReporting,
                access: "STATE",
            }),
            m.humidity({
                reporting: slow2Reporting,
                access: "STATE",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "min",
                valueMin: 1,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the time in minutes, by default 3 minutes",
                access: "STATE_SET",
            }),
            m.binary({
                name: "smart_sleep",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0216, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Smart Sleep, short wakeup every 7 seconds",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "tx_radio_power",
                lookup: { "0dbm": 0, "4dbm": 4 },
                cluster: "genPowerCfg",
                attribute: { ID: 0x0236, type: zigbee_herdsman_1.Zcl.DataType.INT8 },
                description: "Set TX Radio Power, dbm",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "uptime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "standardTime",
                description: "Uptime",
                scale: 3600,
                precision: 1,
                access: "STATE",
            }),
            m.numeric({
                name: "lower_level",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msSoilMoisture",
                attribute: { ID: 0x0502, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Lower level of soil moisture 0% is:",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "upper_level",
                unit: "%",
                valueMin: 1,
                valueMax: 100,
                cluster: "msSoilMoisture",
                attribute: { ID: 0x0503, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Upper level of soil moisture 100% is:",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "temperature_offset",
                unit: "°C",
                valueMin: -50,
                valueMax: 50,
                valueStep: 0.1,
                scale: 10,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0410, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust temperature",
                access: "STATE_SET",
            }),
            m.binary({
                name: "temperature_compensation",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0504, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Temperature compensation",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["zFlora_S_Max"],
        model: "zFlora_S_Max",
        vendor: "EFEKTA",
        description: "Plant watering sensor zFlora_S Max",
        extend: [
            m.identify(),
            m.soilMoisture({
                reporting: soilMoistureReporting,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: true,
                voltageReporting: true,
                percentageReportingConfig: sixReporting,
                voltageReportingConfig: sixReporting,
            }),
            m.temperature({
                reporting: slowReporting,
                access: "STATE",
            }),
            m.humidity({
                reporting: slow2Reporting,
                access: "STATE",
            }),
            m.illuminance({
                reporting: slowReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "lux_factor",
                valueMin: 0.1,
                valueMax: 10,
                valueStep: 0.1,
                cluster: "msIlluminanceMeasurement",
                attribute: { ID: 0x0310, type: zigbee_herdsman_1.Zcl.DataType.SINGLE_PREC },
                description: "Lux factor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "min",
                valueMin: 1,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the time in minutes, by default 3 minutes",
                access: "STATE_SET",
            }),
            m.binary({
                name: "smart_sleep",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0216, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Smart Sleep, short wakeup every 7 seconds",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "tx_radio_power",
                lookup: { "0dbm": 0, "4dbm": 4 },
                cluster: "genPowerCfg",
                attribute: { ID: 0x0236, type: zigbee_herdsman_1.Zcl.DataType.INT8 },
                description: "Set TX Radio Power, dbm",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "uptime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "standardTime",
                description: "Uptime",
                scale: 3600,
                precision: 1,
                access: "STATE",
            }),
            m.numeric({
                name: "lower_level",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msSoilMoisture",
                attribute: { ID: 0x0502, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Lower level of soil moisture 0% is:",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "upper_level",
                unit: "%",
                valueMin: 1,
                valueMax: 100,
                cluster: "msSoilMoisture",
                attribute: { ID: 0x0503, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Upper level of soil moisture 100% is:",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "temperature_offset",
                unit: "°C",
                valueMin: -50,
                valueMax: 50,
                valueStep: 0.1,
                scale: 10,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0410, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust temperature",
                access: "STATE_SET",
            }),
            m.binary({
                name: "temperature_compensation",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0504, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Temperature compensation",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["zFlora_Pro"],
        model: "zFlora_Pro",
        vendor: "EFEKTA",
        description: "Plant watering sensor zFlora_Pro",
        extend: [
            m.identify(),
            m.soilMoisture({
                reporting: soilMoistureReporting,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: true,
                voltageReporting: true,
                percentageReportingConfig: sixReporting,
                voltageReportingConfig: sixReporting,
            }),
            m.temperature({
                reporting: slowReporting,
                access: "STATE",
            }),
            m.humidity({
                reporting: slow2Reporting,
                access: "STATE",
            }),
            m.illuminance({
                reporting: slowReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "lux_factor",
                valueMin: 0.1,
                valueMax: 10,
                valueStep: 0.1,
                cluster: "msIlluminanceMeasurement",
                attribute: { ID: 0x0310, type: zigbee_herdsman_1.Zcl.DataType.SINGLE_PREC },
                description: "Lux factor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "min",
                valueMin: 1,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the time in minutes, by default 3 minutes",
                access: "STATE_SET",
            }),
            m.binary({
                name: "smart_sleep",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0216, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Smart Sleep, short wakeup every 7 seconds",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "tx_radio_power",
                lookup: { "0dbm": 0, "4dbm": 4 },
                cluster: "genPowerCfg",
                attribute: { ID: 0x0236, type: zigbee_herdsman_1.Zcl.DataType.INT8 },
                description: "Set TX Radio Power, dbm",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "uptime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "standardTime",
                description: "Uptime",
                scale: 3600,
                precision: 1,
                access: "STATE",
            }),
            m.numeric({
                name: "lower_level",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msSoilMoisture",
                attribute: { ID: 0x0502, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Lower level of soil moisture 0% is:",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "upper_level",
                unit: "%",
                valueMin: 1,
                valueMax: 100,
                cluster: "msSoilMoisture",
                attribute: { ID: 0x0503, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Upper level of soil moisture 100% is:",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "temperature_offset",
                unit: "°C",
                valueMin: -50,
                valueMax: 50,
                valueStep: 0.1,
                scale: 10,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0410, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust temperature",
                access: "STATE_SET",
            }),
            m.binary({
                name: "temperature_compensation",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0504, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Temperature compensation",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["zFlora_ProMax"],
        model: "zFlora_ProMax",
        vendor: "EFEKTA",
        description: "Plant watering sensor zFlora_ProMax with signal amplifier",
        extend: [
            m.identify(),
            m.soilMoisture({
                reporting: soilMoistureReporting,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: true,
                voltageReporting: true,
                percentageReportingConfig: sixReporting,
                voltageReportingConfig: sixReporting,
            }),
            m.temperature({
                reporting: slowReporting,
                access: "STATE",
            }),
            m.humidity({
                reporting: slow2Reporting,
                access: "STATE",
            }),
            m.illuminance({
                reporting: slowReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "lux_factor",
                valueMin: 0.1,
                valueMax: 10,
                valueStep: 0.1,
                cluster: "msIlluminanceMeasurement",
                attribute: { ID: 0x0310, type: zigbee_herdsman_1.Zcl.DataType.SINGLE_PREC },
                description: "Lux factor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "min",
                valueMin: 1,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the time in minutes, by default 9 minutes",
                access: "STATE_SET",
            }),
            m.binary({
                name: "smart_sleep",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0216, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Smart Sleep, short wakeup every 7 seconds",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "tx_radio_power",
                lookup: { "4dbm": 4, "19dbm": 19 },
                cluster: "genPowerCfg",
                attribute: { ID: 0x0236, type: zigbee_herdsman_1.Zcl.DataType.INT8 },
                description: "Set TX Radio Power, dbm",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "uptime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "standardTime",
                description: "Uptime",
                scale: 3600,
                precision: 1,
                access: "STATE",
            }),
            m.numeric({
                name: "lower_level",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msSoilMoisture",
                attribute: { ID: 0x0502, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Lower level of soil moisture 0% is:",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "upper_level",
                unit: "%",
                valueMin: 1,
                valueMax: 100,
                cluster: "msSoilMoisture",
                attribute: { ID: 0x0503, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Upper level of soil moisture 100% is:",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "temperature_offset",
                unit: "°C",
                valueMin: -50,
                valueMax: 50,
                valueStep: 0.1,
                scale: 10,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0410, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust temperature",
                access: "STATE_SET",
            }),
            m.binary({
                name: "temperature_compensation",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0504, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Temperature compensation",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_eFlora"],
        model: "EFEKTA_eFlora",
        vendor: "EFEKTA",
        description: "Plant Wattering Sensor with e-ink display 1.02",
        extend: [
            m.soilMoisture({
                reporting: soilMoistureReporting,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: true,
                voltageReporting: true,
                percentageReportingConfig: sixReporting,
                voltageReportingConfig: sixReporting,
            }),
            m.temperature({
                reporting: slowReporting,
                access: "STATE",
            }),
            m.humidity({
                reporting: slow2Reporting,
                access: "STATE",
            }),
            m.illuminance({
                reporting: slowReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "lux_factor",
                valueMin: 0.1,
                valueMax: 10,
                valueStep: 0.1,
                cluster: "msIlluminanceMeasurement",
                attribute: { ID: 0x0310, type: zigbee_herdsman_1.Zcl.DataType.SINGLE_PREC },
                description: "Lux factor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "min",
                valueMin: 1,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the time in minutes, by default 10 minutes",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "lower_level",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msSoilMoisture",
                attribute: { ID: 0x0502, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Lower level of soil moisture 0% is:",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "upper_level",
                unit: "%",
                valueMin: 1,
                valueMax: 100,
                cluster: "msSoilMoisture",
                attribute: { ID: 0x0503, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Upper level of soil moisture 100% is:",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "invert",
                lookup: { BW: 0, WB: 1 },
                cluster: "genPowerCfg",
                attribute: { ID: 0x0210, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert display color",
                access: "STATE_SET",
            }),
            m.binary({
                name: "temperature_compensation",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msSoilMoisture",
                attribute: { ID: 0x0505, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Temperature compensation",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_eFlora_Pro"],
        model: "EFEKTA_eFlora_Pro",
        vendor: "EFEKTA",
        description: "Plant Wattering Sensor with e-ink display 2.13",
        extend: [
            m.soilMoisture({
                reporting: soilMoistureReporting,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: true,
                voltageReporting: true,
                percentageReportingConfig: sixReporting,
                voltageReportingConfig: sixReporting,
            }),
            m.temperature({
                reporting: slowReporting,
                access: "STATE",
            }),
            m.humidity({
                reporting: slow2Reporting,
                access: "STATE",
            }),
            m.illuminance({
                reporting: slowReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "lux_factor",
                valueMin: 0.1,
                valueMax: 10,
                valueStep: 0.1,
                cluster: "msIlluminanceMeasurement",
                attribute: { ID: 0x0310, type: zigbee_herdsman_1.Zcl.DataType.SINGLE_PREC },
                description: "Lux factor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "min",
                valueMin: 1,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the time in minutes, by default 3 minutes",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "invert",
                lookup: { BW: 0, WB: 1 },
                cluster: "genPowerCfg",
                attribute: { ID: 0xf004, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Invert display color",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "fastmode",
                lookup: { Fast: 0, "Ultra Fast": 1 },
                cluster: "genPowerCfg",
                attribute: { ID: 0xf005, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Display refresh mode",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "lower_level",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msSoilMoisture",
                attribute: { ID: 0x0502, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Lower level of soil moisture 0% is:",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "upper_level",
                unit: "%",
                valueMin: 1,
                valueMax: 100,
                cluster: "msSoilMoisture",
                attribute: { ID: 0x0503, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Upper level of soil moisture 100% is:",
                access: "STATE_SET",
            }),
            m.binary({
                name: "temperature_compensation",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msSoilMoisture",
                attribute: { ID: 0x0505, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Temperature compensation",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_eFlora_Max_Pro"],
        model: "EFEKTA_eFlora_Max_Pro",
        vendor: "EFEKTA",
        description: "Plant Wattering Sensor with e-ink display 2.13 with signal amplifier",
        extend: [
            m.soilMoisture({
                reporting: soilMoistureReporting,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: true,
                voltageReporting: true,
                percentageReportingConfig: sixReporting,
                voltageReportingConfig: sixReporting,
            }),
            m.temperature({
                reporting: slowReporting,
                access: "STATE",
            }),
            m.humidity({
                reporting: slow2Reporting,
                access: "STATE",
            }),
            m.illuminance({
                reporting: slowReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "lux_factor",
                valueMin: 0.1,
                valueMax: 10,
                valueStep: 0.1,
                cluster: "msIlluminanceMeasurement",
                attribute: { ID: 0x0310, type: zigbee_herdsman_1.Zcl.DataType.SINGLE_PREC },
                description: "Lux factor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "min",
                valueMin: 1,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the time in minutes, by default 6 minutes",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "tx_radio_power",
                lookup: { "4dbm": 4, "19dbm": 19 },
                cluster: "genPowerCfg",
                attribute: { ID: 0x0236, type: zigbee_herdsman_1.Zcl.DataType.INT8 },
                description: "Set TX Radio Power, dbm",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "invert",
                lookup: { BW: 0, WB: 1 },
                cluster: "genPowerCfg",
                attribute: { ID: 0xf004, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Invert display color",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "fastmode",
                lookup: { Fast: 0, "Ultra Fast": 1 },
                cluster: "genPowerCfg",
                attribute: { ID: 0xf005, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Display refresh mode",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "lower_level",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msSoilMoisture",
                attribute: { ID: 0x0502, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Lower level of soil moisture 0% is:",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "upper_level",
                unit: "%",
                valueMin: 1,
                valueMax: 100,
                cluster: "msSoilMoisture",
                attribute: { ID: 0x0503, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Upper level of soil moisture 100% is:",
                access: "STATE_SET",
            }),
            m.binary({
                name: "temperature_compensation",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msSoilMoisture",
                attribute: { ID: 0x0505, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Temperature compensation",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_eTH102zex"],
        model: "EFEKTA_eTH102zex",
        vendor: "EFEKTA",
        description: "Temperature and humidity sensor with e-ink1.02, date, thermostat, hygrostat",
        extend: [
            m.temperature({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: true,
                voltageReporting: true,
                percentageReportingConfig: sixReporting,
                voltageReportingConfig: sixReporting,
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 10,
                valueMax: 600,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval in seconds, by default 30 seconds",
                access: "STATE_SET",
            }),
            m.binary({
                name: "config_report_enable",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0275, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable reporting based on reporting configuration",
                access: "STATE_SET",
            }),
            m.binary({
                name: "comparison_previous_data",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable сontrol of comparison with previous data",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Temperature Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert Logic Temperature Control",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "invert",
                lookup: { BW: 0, WB: 1 },
                cluster: "genPowerCfg",
                attribute: { ID: 0xf004, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Invert display color",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_temperature",
                unit: "°C",
                valueMin: -35,
                valueMax: 90,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting High Temperature Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_temperature",
                unit: "°C",
                valueMin: -35,
                valueMax: 90,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting Low Temperature Border",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_humidity",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Humidity Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_humidity",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert Logic Humidity Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_humidity",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting High Humidity Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_humidity",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting Low Humidity Border",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_eTH102z"],
        model: "EFEKTA_eTH102z",
        vendor: "EFEKTA",
        description: "Temperature and humidity sensor with e-ink1.02, date, thermostat, hygrostat",
        extend: [
            m.temperature({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: true,
                voltageReporting: true,
                percentageReportingConfig: sixReporting,
                voltageReportingConfig: sixReporting,
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 10,
                valueMax: 600,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval in seconds, by default 30 seconds",
                access: "STATE_SET",
            }),
            m.binary({
                name: "config_report_enable",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0275, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable reporting based on reporting configuration",
                access: "STATE_SET",
            }),
            m.binary({
                name: "comparison_previous_data",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable сontrol of comparison with previous data",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Temperature Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert Logic Temperature Control",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "invert",
                lookup: { BW: 0, WB: 1 },
                cluster: "genPowerCfg",
                attribute: { ID: 0xf004, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert display color",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_temperature",
                unit: "°C",
                valueMin: -5,
                valueMax: 60,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting High Temperature Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_temperature",
                unit: "°C",
                valueMin: -5,
                valueMax: 60,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting Low Temperature Border",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_humidity",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Humidity Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_humidity",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert Logic Humidity Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_humidity",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting High Humidity Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_humidity",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting Low Humidity Border",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_Air_Monitor"],
        model: "EFEKTA_Air_Monitor",
        vendor: "EfektaLab",
        description: "CO2 smart monitor, AA battery",
        extend: [
            m.co2({
                reporting: false,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: false,
                percentageReporting: false,
            }),
            m.numeric({
                name: "uptime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "localTime",
                description: "Uptime",
                access: "STATE",
            }),
            m.numeric({
                name: "report_delay",
                unit: "sec",
                valueMin: 20,
                valueMax: 1800,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor report delay. Setting the time in seconds (20-1800), by default 60 seconds",
                access: "STATE_SET",
            }),
            m.binary({
                name: "forced_recalibration",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0202, type: zigbee_herdsman_1.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: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Start Manual FRC (Perform Forced Recalibration of the CO2 Sensor)",
                access: "STATE_SET",
            }),
            m.binary({
                name: "automatic_scal",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0402, type: zigbee_herdsman_1.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: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Factory Reset CO2 sensor",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["Egony_Flower"],
        model: "Egony_Flower",
        vendor: "EFEKTA",
        description: "Soil moisture sensor Egony_Flower, mod DIYRuZ Flower",
        extend: [
            m.identify(),
            m.soilMoisture({
                reporting: slowReporting,
                access: "STATE",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: true,
                percentageReporting: true,
                voltageReporting: true,
                percentageReportingConfig: sixReporting,
                voltageReportingConfig: sixReporting,
            }),
            m.temperature({
                reporting: slowReporting,
                access: "STATE",
            }),
            m.illuminance({
                reporting: slowReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "min.",
                valueMin: 1,
                valueMax: 360,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the time in minutes, by default 3 minutes",
                access: "STATE_SET",
            }),
            m.binary({
                name: "smart_sleep",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0216, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Smart Sleep, short wakeup every 7 seconds",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "tx_radio_power",
                lookup: { "-4dbm": -4, "0dbm": 0, "4dbm": 4 },
                cluster: "genPowerCfg",
                attribute: { ID: 0x0236, type: zigbee_herdsman_1.Zcl.DataType.INT8 },
                description: "Set TX Radio Power, dbm",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "lifetime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "standardTime",
                description: "Device lifetime in hours",
                access: "STATE",
            }),
            m.enumLookup({
                name: "resolution",
                lookup: { "9 bit": 9, "10 bit": 10, "11 bit": 11, "12 bit": 12 },
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0520, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Set Bit resolution DS18B20",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "temperature_offset",
                unit: "°C",
                valueMin: -50,
                valueMax: 50,
                valueStep: 0.1,
                scale: 10,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0410, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust temperature",
                access: "STATE_SET",
            }),
            m.binary({
                name: "temperature_compensation",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0504, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Temperature compensation",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_Pixel_Open_Air_II"],
        model: "EFEKTA_Pixel_Open_Air_II",
        vendor: "EFEKTA",
        description: "CO2 Monitor with retro LCD Display, V2",
        extend: [
            m.identify(),
            m.co2({
                reporting: co2Reporting,
                access: "STATE",
            }),
            m.temperature({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.binary({
                name: "backlight",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0211, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Backlight of the Display",
                access: "STATE_SET",
            }),
            m.binary({
                name: "night_onoff_backlight",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0401, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Night Mode",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "night_on_backlight",
                unit: "Hr",
                valueMin: 0,
                valueMax: 23,
                cluster: "msCO2",
                attribute: { ID: 0x0405, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Night Mode activation time",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "night_off_backlight",
                unit: "Hr",
                valueMin: 0,
                valueMax: 23,
                cluster: "msCO2",
                attribute: { ID: 0x0406, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Night mode deactivation time",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "contrast",
                valueMin: 0,
                valueMax: 40,
                cluster: "msCO2",
                attribute: { ID: 0x0445, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Display Contrast",
                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: zigbee_herdsman_1.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: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust humidity",
                access: "STATE_SET",
            }),
            m.binary({
                name: "automatic_calibrations",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0402, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Automatic calibration of the CO2 sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "co2_error_read",
                cluster: "msCO2",
                attribute: { ID: 0x0444, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "CO2 Error Read",
                access: "STATE",
            }),
            m.binary({
                name: "enable_gas",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable CO2 Gas Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_gas",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable invert logic CO2 Gas Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_gas",
                unit: "ppm",
                valueMin: 400,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting High CO2 Gas Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_gas",
                unit: "ppm",
                valueMin: 400,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting Low CO2 Gas Border",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_Pixel_Open_Air"],
        model: "EFEKTA_Pixel_Open_Air",
        vendor: "EFEKTA",
        description: "CO2 Monitor with retro LCD Display, V1",
        extend: [
            m.identify(),
            m.co2({
                reporting: co2Reporting,
                access: "STATE",
            }),
            m.temperature({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.binary({
                name: "backlight",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0211, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Backlight of the Display",
                access: "STATE_SET",
            }),
            m.binary({
                name: "night_onoff_backlight",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0401, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Night Mode",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "night_on_backlight",
                unit: "Hr",
                valueMin: 0,
                valueMax: 23,
                cluster: "msCO2",
                attribute: { ID: 0x0405, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Night Mode activation time",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "night_off_backlight",
                unit: "Hr",
                valueMin: 0,
                valueMax: 23,
                cluster: "msCO2",
                attribute: { ID: 0x0406, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Night mode deactivation time",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "contrast",
                valueMin: 0,
                valueMax: 40,
                cluster: "msCO2",
                attribute: { ID: 0x0445, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Display Contrast",
                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: zigbee_herdsman_1.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: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust humidity",
                access: "STATE_SET",
            }),
            m.binary({
                name: "automatic_calibrations",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0402, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Automatic calibration of the CO2 sensor",
                access: "STATE_SET",
            }),
            m.binary({
                name: "forced_recalibration_on_air",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0202, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Forced Recalibration of the CO2 Sensor on fresh air",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "co2_error_read",
                cluster: "msCO2",
                attribute: { ID: 0x0444, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "CO2 Error Read",
                access: "STATE",
            }),
            m.binary({
                name: "enable_gas",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable CO2 Gas Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_gas",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable invert logic CO2 Gas Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_gas",
                unit: "ppm",
                valueMin: 400,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting High CO2 Gas Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_gas",
                unit: "ppm",
                valueMin: 400,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting Low CO2 Gas Border",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["Open_PM_Monitor"],
        model: "Open_PM_Monitor",
        vendor: "EFEKTA",
        description: "PM1, PM2.5, PM10 Monitor with retro-style analog indicator and RGB backlight",
        ota: true,
        extend: [
            m.identify(),
            m.light({
                effect: false,
                powerOnBehavior: false,
                configureReporting: true,
                levelReportingConfig: fiveReporting,
            }),
            m.numeric({
                name: "pm1",
                unit: "µg/m³",
                cluster: "pm25Measurement",
                attribute: { ID: 0x0601, type: zigbee_herdsman_1.Zcl.DataType.SINGLE_PREC },
                description: "Measured PM1.0 (particulate matter) concentration",
                access: "STATE",
                reporting: pmReporting,
                precision: 1,
            }),
            m.pm25({
                reporting: pmReporting,
                access: "STATE",
                description: "Measured PM2.5 (particulate matter) concentration",
                precision: 1,
            }),
            m.numeric({
                name: "pm10",
                unit: "µg/m³",
                cluster: "pm25Measurement",
                attribute: { ID: 0x0602, type: zigbee_herdsman_1.Zcl.DataType.SINGLE_PREC },
                description: "Measured PM10.0 (particulate matter) concentration",
                access: "STATE",
                reporting: pmReporting,
                precision: 1,
            }),
            m.numeric({
                name: "aqi25",
                unit: "PM2.5 Index",
                cluster: "pm25Measurement",
                attribute: { ID: 0x0604, type: zigbee_herdsman_1.Zcl.DataType.SINGLE_PREC },
                description: "PM 2.5 INDEX",
                access: "STATE",
                reporting: pmReporting,
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_AQ_Smart_Monitor_Gen2"],
        model: "EFEKTA_AQ_Smart_Monitor_Gen2",
        vendor: "EFEKTA",
        description: "CO2, VOC Index, illuminance Smart Monitor, rgb indicator, binding, control the relays",
        ota: true,
        extend: [
            m.identify(),
            m.co2({
                reporting: co2Reporting,
                access: "STATE",
            }),
            m.temperature({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "voc_index",
                unit: "VOC Index points",
                cluster: "genAnalogInput",
                attribute: "presentValue",
                description: "VOC index",
                access: "STATE",
                reporting: defaultReporting,
            }),
            m.illuminance({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "lifetime",
                unit: "Hours",
                cluster: "genTime",
                attribute: { ID: 0x0199, type: zigbee_herdsman_1.Zcl.DataType.UINT32 },
                description: "Uptime",
                access: "STATE",
            }),
            m.numeric({
                name: "lux_factor",
                valueMin: 0.0,
                valueMax: 10.0,
                valueStep: 0.1,
                cluster: "msIlluminanceMeasurement",
                attribute: { ID: 0x0310, type: zigbee_herdsman_1.Zcl.DataType.SINGLE_PREC },
                description: "Lux factor",
                access: "STATE_SET",
            }),
            m.light({
                effect: false,
                powerOnBehavior: false,
                configureReporting: true,
                levelReportingConfig: fiveReporting,
            }),
            m.binary({
                name: "night_onoff_backlight",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msIlluminanceMeasurement",
                attribute: { ID: 0x0401, type: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Night mode deactivation time",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "seconds",
                valueMin: 15,
                valueMax: 300,
                cluster: "msCO2",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval.",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "set_altitude",
                unit: "meters",
                valueMin: 0,
                valueMax: 3000,
                cluster: "msCO2",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the altitude above sea level (for high accuracy of the CO2 sensor)",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "temperature_offset",
                unit: "°C",
                valueMin: -10,
                valueMax: 10,
                valueStep: 0.1,
                scale: 10,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0210, type: zigbee_herdsman_1.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: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust humidity",
                access: "STATE_SET",
            }),
            m.binary({
                name: "automatic_calibrations",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0402, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Automatic calibration of the CO2 sensor",
                access: "STATE_SET",
            }),
            m.binary({
                name: "forced_recalibration",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0202, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Start FRC (Perform Forced Recalibration of the CO2 Sensor)",
                access: "STATE_SET",
            }),
            m.binary({
                name: "factory_reset_co2",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0206, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Factory Reset CO2 sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "manual_forced_recalibration",
                unit: "ppm",
                valueMin: 0,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0207, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Start Manual FRC (Perform Forced Recalibration of the CO2 Sensor)",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_onoff",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genAnalogInput",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable invert logic onoff",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_co2_gas",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable CO2 Gas Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_co2_gas",
                unit: "ppm",
                valueMin: 400,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting High CO2 Gas Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_co2_gas",
                unit: "ppm",
                valueMin: 400,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting Low CO2 Gas Border",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_voc",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genAnalogInput",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable VOC Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_voc",
                unit: "VOC Index points",
                valueMin: 0,
                valueMax: 500,
                cluster: "genAnalogInput",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting High VOC Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_voc",
                unit: "VOC Index points",
                valueMin: 0,
                valueMax: 500,
                cluster: "genAnalogInput",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting Low VOC Border",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_CO2_Smart_Monitor_Gen2"],
        model: "EFEKTA_CO2_Smart_Monitor_Gen2",
        vendor: "EFEKTA",
        description: "CO2, illuminance Smart Monitor, rgb indicator, binding, control the relays",
        ota: true,
        extend: [
            m.identify(),
            m.co2({
                reporting: co2Reporting,
                access: "STATE",
            }),
            m.temperature({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.illuminance({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "lifetime",
                unit: "Hours",
                cluster: "genTime",
                attribute: { ID: 0x0199, type: zigbee_herdsman_1.Zcl.DataType.UINT32 },
                description: "Uptime",
                access: "STATE",
            }),
            m.numeric({
                name: "lux_factor",
                valueMin: 0.0,
                valueMax: 10.0,
                valueStep: 0.1,
                cluster: "msIlluminanceMeasurement",
                attribute: { ID: 0x0310, type: zigbee_herdsman_1.Zcl.DataType.SINGLE_PREC },
                description: "Lux factor",
                access: "STATE_SET",
            }),
            m.light({
                effect: false,
                powerOnBehavior: false,
                configureReporting: true,
                levelReportingConfig: fiveReporting,
            }),
            m.binary({
                name: "night_onoff_backlight",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msIlluminanceMeasurement",
                attribute: { ID: 0x0401, type: zigbee_herdsman_1.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: zigbee_herdsman_1.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: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Night mode deactivation time",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "seconds",
                valueMin: 15,
                valueMax: 300,
                cluster: "msCO2",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval.",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "set_altitude",
                unit: "meters",
                valueMin: 0,
                valueMax: 3000,
                cluster: "msCO2",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the altitude above sea level (for high accuracy of the CO2 sensor)",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "temperature_offset",
                unit: "°C",
                valueMin: -10,
                valueMax: 10,
                valueStep: 0.1,
                scale: 10,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0210, type: zigbee_herdsman_1.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: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Adjust humidity",
                access: "STATE_SET",
            }),
            m.binary({
                name: "automatic_calibrations",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0402, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Automatic calibration of the CO2 sensor",
                access: "STATE_SET",
            }),
            m.binary({
                name: "forced_recalibration",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0202, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Start FRC (Perform Forced Recalibration of the CO2 Sensor)",
                access: "STATE_SET",
            }),
            m.binary({
                name: "factory_reset_co2",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0206, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Factory Reset CO2 sensor",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "manual_forced_recalibration",
                unit: "ppm",
                valueMin: 0,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0207, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Start Manual FRC (Perform Forced Recalibration of the CO2 Sensor)",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_onoff",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genAnalogInput",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable invert logic onoff",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_co2_gas",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msCO2",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable CO2 Gas Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_co2_gas",
                unit: "ppm",
                valueMin: 400,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting High CO2 Gas Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_co2_gas",
                unit: "ppm",
                valueMin: 400,
                valueMax: 5000,
                cluster: "msCO2",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting Low CO2 Gas Border",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_TH_POW_R"],
        model: "EFEKTA_TH_POW_R",
        vendor: "EFEKTA",
        description: "Temperature and humidity smart monitor with voltage detector",
        extend: [
            m.identify(),
            m.temperature({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.humidity({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "mains_voltage",
                unit: "V",
                cluster: "genPowerCfg",
                attribute: "mainsVoltage",
                description: "Mains voltage",
                scale: 10,
                precision: 1,
                access: "STATE_GET",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: false,
                percentageReporting: true,
                percentageReportingConfig: fiveReporting,
            }),
            m.numeric({
                name: "lifetime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "localTime",
                description: "Uptime",
                access: "STATE",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 3,
                valueMax: 300,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval in seconds, by default 5 seconds",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "tx_radio_power",
                lookup: { "4dbm": 4, "19dbm": 19 },
                cluster: "genPowerCfg",
                attribute: { ID: 0x0236, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Set TX Radio Power, dbm",
                access: "STATE_SET",
            }),
            m.binary({
                name: "config_report_enable",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0275, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable reporting based on reporting configuration",
                access: "STATE_SET",
            }),
            m.binary({
                name: "comparison_previous_data",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable сontrol of comparison with previous data",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Temperature Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert Logic Temperature Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_temperature",
                unit: "°C",
                valueMin: -40,
                valueMax: 90,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting High Temperature Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_temperature",
                unit: "°C",
                valueMin: -40,
                valueMax: 90,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting Low Temperature Border",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_humidity",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Humidity Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_humidity",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert Logic Humidity Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_humidity",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting High Humidity Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_humidity",
                unit: "%",
                valueMin: 0,
                valueMax: 99,
                cluster: "msRelativeHumidity",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting Low Humidity Border",
                access: "STATE_SET",
            }),
        ],
    },
    {
        zigbeeModel: ["EFEKTA_T1_MAX_R"],
        model: "EFEKTA_T1_MAX_R",
        vendor: "EFEKTA",
        description: "Temperatureb mart monitor with voltage detector",
        extend: [
            m.identify(),
            m.temperature({
                reporting: fourReporting,
                access: "STATE",
            }),
            m.numeric({
                name: "mains_voltage",
                unit: "V",
                cluster: "genPowerCfg",
                attribute: "mainsVoltage",
                description: "Mains voltage",
                scale: 10,
                precision: 1,
                access: "STATE_GET",
            }),
            m.battery({
                percentage: true,
                lowStatus: true,
                voltage: false,
                percentageReporting: true,
                percentageReportingConfig: fiveReporting,
            }),
            m.numeric({
                name: "lifetime",
                unit: "Hours",
                cluster: "genTime",
                attribute: "localTime",
                description: "Uptime",
                access: "STATE",
            }),
            m.numeric({
                name: "reading_interval",
                unit: "sec",
                valueMin: 3,
                valueMax: 300,
                cluster: "genPowerCfg",
                attribute: { ID: 0x0201, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
                description: "Setting the sensor reading interval in seconds, by default 5 seconds",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "tx_radio_power",
                lookup: { "4dbm": 4, "19dbm": 19 },
                cluster: "genPowerCfg",
                attribute: { ID: 0x0236, type: zigbee_herdsman_1.Zcl.DataType.INT8 },
                description: "Set TX Radio Power, dbm",
                access: "STATE_SET",
            }),
            m.enumLookup({
                name: "resolution",
                lookup: { "9 bit": 9, "10 bit": 10, "11 bit": 11, "12 bit": 12 },
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0520, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
                description: "Set Bit resolution DS18B20",
                access: "STATE_SET",
            }),
            m.binary({
                name: "config_report_enable",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0275, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable reporting based on reporting configuration",
                access: "STATE_SET",
            }),
            m.binary({
                name: "comparison_previous_data",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "genPowerCfg",
                attribute: { ID: 0x0205, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable сontrol of comparison with previous data",
                access: "STATE_SET",
            }),
            m.binary({
                name: "enable_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0220, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Enable Temperature Control",
                access: "STATE_SET",
            }),
            m.binary({
                name: "invert_logic_temperature",
                valueOn: ["ON", 1],
                valueOff: ["OFF", 0],
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0225, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
                description: "Invert Logic Temperature Control",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "high_temperature",
                unit: "°C",
                valueMin: -40,
                valueMax: 90,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0221, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting High Temperature Border",
                access: "STATE_SET",
            }),
            m.numeric({
                name: "low_temperature",
                unit: "°C",
                valueMin: -40,
                valueMax: 90,
                cluster: "msTemperatureMeasurement",
                attribute: { ID: 0x0222, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
                description: "Setting Low Temperature Border",
                access: "STATE_SET",
            }),
        ],
    },
];
//# sourceMappingURL=efekta.js.map