UNPKG

zigbee-herdsman-converters

Version:

Collection of device converters to be used with zigbee-herdsman

1,079 lines 45.5 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.namronExtend = exports.edgeThermostat = exports.toZigbee = exports.fromZigbee = void 0; const zigbee_herdsman_1 = require("zigbee-herdsman"); const utils = __importStar(require("../lib/utils")); const modernExtend = __importStar(require("./modernExtend")); const sunricherManufacturer = { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD }; function toDate(value) { if (value === undefined) { return; } const date = new Date(value * 86400000); const day = String(date.getDate()).padStart(2, "0"); const month = String(date.getMonth() + 1).padStart(2, "0"); // Månedene er 0-indeksert const year = date.getFullYear(); return `${year}.${month}.${day}`; } function fromDate(value) { // Ekstrakt `attrId` og `key` direkte fra attributtobjektet const dateParts = value.split(/[.\-/]/); if (dateParts.length !== 3) { throw new Error("Invalid date format"); } let date; if (dateParts[0].length === 4) { date = new Date(`${dateParts[0]}-${dateParts[1]}-${dateParts[2]}`); } else if (dateParts[2].length === 4) { date = new Date(`${dateParts[2]}-${dateParts[1]}-${dateParts[0]}`); } else { throw new Error("Invalid date format"); } return date.getTime() / 86400000 + 1; } exports.fromZigbee = { namron_edge_thermostat_vacation_date: { cluster: "hvacThermostat", type: ["attributeReport", "readResponse"], convert: (model, msg, publish, options, meta) => { const result = {}; if (msg.data.vacationStartDate !== undefined) { result.vacation_start_date = toDate(msg.data.vacationStartDate); } if (msg.data.vacationEndDate !== undefined) { result.vacation_end_date = toDate(msg.data.vacationEndDate); } return result; }, }, namron_edge_thermostat_holiday_temp: { cluster: "hvacThermostat", type: ["attributeReport", "readResponse"], convert: (model, msg, publish, options, meta) => { const result = {}; if (msg.data.programingOperMode !== undefined) { result.operating_mode = utils.getFromLookup(msg.data.programingOperMode, { 0: "manual", 1: "program", 5: "eco" }); } if (msg.data.holidayTempSet !== undefined) { result.holiday_temp_set = Number(msg.data.holidayTempSet) / 100; } if (msg.data.holidayTempSetF !== undefined) { result.holiday_temp_set_f = Number(msg.data.holidayTempSetF) / 100; } return result; }, }, namron_thermostat: { cluster: "hvacThermostat", type: ["attributeReport", "readResponse"], convert: (model, msg, publish, options, meta) => { const result = {}; const data = msg.data; if (data.lcdBrightness !== undefined) { const lookup = { 0: "low", 1: "mid", 2: "high" }; result.lcd_brightness = lookup[data.lcdBrightness]; } if (data.buttonVibrationLevel !== undefined) { const lookup = { 0: "off", 1: "low", 2: "high" }; result.button_vibration_level = lookup[data.buttonVibrationLevel]; } if (data.floorSensorType !== undefined) { const lookup = { 1: "10k", 2: "15k", 3: "50k", 4: "100k", 5: "12k" }; result.floor_sensor_type = lookup[data.floorSensorType]; } if (data.controlType !== undefined) { // Sensor const lookup = { 0: "air", 1: "floor", 2: "both" }; result.sensor = lookup[data.controlType]; } if (data.powerUpStatus !== undefined) { const lookup = { 0: "default", 1: "last_status" }; result.powerup_status = lookup[data.powerUpStatus]; } if (data.floorSensorCalibration !== undefined) { result.floor_sensor_calibration = utils.precisionRound(data.floorSensorCalibration, 2) / 10; } if (data.dryTime !== undefined) { result.dry_time = data.dryTime; } if (data.modeAfterDry !== undefined) { const lookup = { 0: "off", 1: "manual", 2: "auto", 3: "away" }; result.mode_after_dry = lookup[data.modeAfterDry]; } if (data.temperatureDisplay !== undefined) { const lookup = { 0: "room", 1: "floor" }; result.temperature_display = lookup[data.temperatureDisplay]; } if (data.windowOpenCheck2 !== undefined) { result.window_open_check = data.windowOpenCheck2 / 2; } if (data.hysterersis !== undefined) { result.hysterersis = utils.precisionRound(data.hysterersis, 2) / 10; } if (data.displayAutoOffEnable !== undefined) { result.display_auto_off_enabled = data.displayAutoOffEnable ? "enabled" : "disabled"; } if (data.alarmAirTempOverValue !== undefined) { result.alarm_airtemp_overvalue = data.alarmAirTempOverValue; } if (data.awayModeSet !== undefined) { result.away_mode = data.awayModeSet ? "ON" : "OFF"; } return result; }, }, namron_hvac_user_interface: { cluster: "hvacUserInterfaceCfg", type: ["attributeReport", "readResponse"], convert: (model, msg, publish, options, meta) => { const result = {}; if (msg.data.keypadLockout !== undefined) { // Set as child lock instead as keypadlockout result.child_lock = msg.data.keypadLockout === 0 ? "UNLOCK" : "LOCK"; } return result; }, }, }; exports.toZigbee = { namron_edge_thermostat_vacation_date: { key: ["vacation_start_date", "vacation_end_date"], convertGet: async (entity, key, meta) => { switch (key) { case "vacation_start_date": await entity.read("hvacThermostat", ["vacationStartDate"]); break; case "vacation_end_date": await entity.read("hvacThermostat", ["vacationEndDate"]); break; } }, convertSet: async (entity, key, value, meta) => { switch (key) { case "vacation_start_date": await entity.write("hvacThermostat", { 32800: { value: fromDate(String(value)), type: zigbee_herdsman_1.Zcl.DataType.UINT32 }, }); break; case "vacation_end_date": await entity.write("hvacThermostat", { 32801: { value: fromDate(String(value)), type: zigbee_herdsman_1.Zcl.DataType.UINT32 }, }); break; } }, }, namron_edge_thermostat_holiday_temp: { key: ["operating_mode", "holiday_temp_set", "holiday_temp_set_f"], convertSet: async (entity, key, value, meta) => { switch (key) { case "operating_mode": await entity.write("hvacThermostat", { programingOperMode: utils.getFromLookup(value, { manual: 0, program: 1, eco: 5 }), }); break; case "holiday_temp_set": await entity.write("hvacThermostat", { 32787: { value: Number(value) * 100, type: zigbee_herdsman_1.Zcl.DataType.INT16 }, }); break; case "holiday_temp_set_f": await entity.write("hvacThermostat", { 32795: { value: Number(value) * 100, type: zigbee_herdsman_1.Zcl.DataType.INT16 }, }); break; } }, convertGet: async (entity, key, meta) => { switch (key) { case "operating_mode": await entity.read("hvacThermostat", ["programingOperMode"]); break; case "holiday_temp_set": await entity.read("hvacThermostat", ["holidayTempSet"]); break; case "holiday_temp_set_f": await entity.read("hvacThermostat", ["holidayTempSetF"]); break; } }, }, namron_thermostat: { key: [ "lcd_brightness", "button_vibration_level", "floor_sensor_type", "sensor", "powerup_status", "floor_sensor_calibration", "dry_time", "mode_after_dry", "temperature_display", "window_open_check", "hysterersis", "display_auto_off_enabled", "alarm_airtemp_overvalue", "away_mode", ], convertSet: async (entity, key, value, meta) => { if (key === "lcd_brightness") { const lookup = { low: 0, mid: 1, high: 2 }; const payload = { 4096: { value: utils.getFromLookup(value, lookup), type: zigbee_herdsman_1.Zcl.DataType.ENUM8 } }; await entity.write("hvacThermostat", payload, sunricherManufacturer); } else if (key === "button_vibration_level") { const lookup = { off: 0, low: 1, high: 2 }; const payload = { 4097: { value: utils.getFromLookup(value, lookup), type: zigbee_herdsman_1.Zcl.DataType.ENUM8 } }; await entity.write("hvacThermostat", payload, sunricherManufacturer); } else if (key === "floor_sensor_type") { const lookup = { "10k": 1, "15k": 2, "50k": 3, "100k": 4, "12k": 5 }; const payload = { 4098: { value: utils.getFromLookup(value, lookup), type: zigbee_herdsman_1.Zcl.DataType.ENUM8 } }; await entity.write("hvacThermostat", payload, sunricherManufacturer); } else if (key === "sensor") { const lookup = { air: 0, floor: 1, both: 2 }; const payload = { 4099: { value: utils.getFromLookup(value, lookup), type: zigbee_herdsman_1.Zcl.DataType.ENUM8 } }; await entity.write("hvacThermostat", payload, sunricherManufacturer); } else if (key === "powerup_status") { const lookup = { default: 0, last_status: 1 }; const payload = { 4100: { value: utils.getFromLookup(value, lookup), type: zigbee_herdsman_1.Zcl.DataType.ENUM8 } }; await entity.write("hvacThermostat", payload, sunricherManufacturer); } else if (key === "floor_sensor_calibration") { utils.assertNumber(value); const payload = { 4101: { value: Math.round(value * 10), type: 0x28 } }; // INT8S await entity.write("hvacThermostat", payload, sunricherManufacturer); } else if (key === "dry_time") { const payload = { 4102: { value: value, type: 0x20 } }; // INT8U await entity.write("hvacThermostat", payload, sunricherManufacturer); } else if (key === "mode_after_dry") { const lookup = { off: 0, manual: 1, auto: 2, away: 3 }; const payload = { 4103: { value: utils.getFromLookup(value, lookup), type: zigbee_herdsman_1.Zcl.DataType.ENUM8 } }; await entity.write("hvacThermostat", payload, sunricherManufacturer); } else if (key === "temperature_display") { const lookup = { room: 0, floor: 1 }; const payload = { 4104: { value: utils.getFromLookup(value, lookup), type: zigbee_herdsman_1.Zcl.DataType.ENUM8 } }; await entity.write("hvacThermostat", payload, sunricherManufacturer); } else if (key === "window_open_check") { utils.assertNumber(value); const payload = { 4105: { value: value * 2, type: 0x20 } }; await entity.write("hvacThermostat", payload, sunricherManufacturer); } else if (key === "hysterersis") { utils.assertNumber(value); const payload = { 4106: { value: value * 10, type: 0x20 } }; await entity.write("hvacThermostat", payload, sunricherManufacturer); } else if (key === "display_auto_off_enabled") { const lookup = { disabled: 0, enabled: 1 }; const payload = { 4107: { value: utils.getFromLookup(value, lookup), type: zigbee_herdsman_1.Zcl.DataType.ENUM8 } }; await entity.write("hvacThermostat", payload, sunricherManufacturer); } else if (key === "alarm_airtemp_overvalue") { const payload = { 8193: { value: value, type: 0x20 } }; await entity.write("hvacThermostat", payload, sunricherManufacturer); } else if (key === "away_mode") { const payload = { 8194: { value: Number(value === "ON"), type: 0x30 } }; await entity.write("hvacThermostat", payload, sunricherManufacturer); } }, convertGet: async (entity, key, meta) => { switch (key) { case "lcd_brightness": await entity.read("hvacThermostat", ["lcdBrightness"], sunricherManufacturer); break; case "button_vibration_level": await entity.read("hvacThermostat", ["buttonVibrationLevel"], sunricherManufacturer); break; case "floor_sensor_type": await entity.read("hvacThermostat", ["floorSensorType"], sunricherManufacturer); break; case "sensor": await entity.read("hvacThermostat", ["controlType"], sunricherManufacturer); break; case "powerup_status": await entity.read("hvacThermostat", ["powerUpStatus"], sunricherManufacturer); break; case "floor_sensor_calibration": await entity.read("hvacThermostat", ["floorSensorCalibration"], sunricherManufacturer); break; case "dry_time": await entity.read("hvacThermostat", ["dryTime"], sunricherManufacturer); break; case "mode_after_dry": await entity.read("hvacThermostat", ["modeAfterDry"], sunricherManufacturer); break; case "temperature_display": await entity.read("hvacThermostat", ["temperatureDisplay"], sunricherManufacturer); break; case "window_open_check": await entity.read("hvacThermostat", ["windowOpenCheck2"], sunricherManufacturer); break; case "hysterersis": await entity.read("hvacThermostat", ["hysterersis"], sunricherManufacturer); break; case "display_auto_off_enabled": await entity.read("hvacThermostat", ["displayAutoOffEnable"], sunricherManufacturer); break; case "alarm_airtemp_overvalue": await entity.read("hvacThermostat", ["alarmAirTempOverValue"], sunricherManufacturer); break; case "away_mode": await entity.read("hvacThermostat", ["awayModeSet"], sunricherManufacturer); break; default: // Unknown key throw new Error(`Unhandled key toZigbee.namron_thermostat.convertGet ${key}`); } }, }, namron_thermostat_child_lock: { key: ["child_lock"], convertSet: async (entity, key, value, meta) => { const keypadLockout = Number(value === "LOCK"); await entity.write("hvacUserInterfaceCfg", { keypadLockout }); return { state: { child_lock: value } }; }, convertGet: async (entity, key, meta) => { await entity.read("hvacUserInterfaceCfg", ["keypadLockout"]); }, }, }; exports.edgeThermostat = { windowOpenDetection: (args) => modernExtend.binary({ name: "window_open_check", valueOn: ["ON", 1], valueOff: ["OFF", 0], cluster: "hvacThermostat", attribute: "windowOpenCheck", description: "Enables or disables the window open detection", access: "ALL", ...args, }), antiFrost: (args) => modernExtend.binary({ name: "anti_frost", valueOn: ["ON", 1], valueOff: ["OFF", 0], cluster: "hvacThermostat", attribute: "antiFrost", description: "Enables or disables the anti-frost mode", access: "ALL", ...args, }), summerWinterSwitch: (args) => modernExtend.binary({ name: "summer_winter_switch", valueOn: ["ON", 1], valueOff: ["OFF", 0], cluster: "hvacThermostat", attribute: "summerWinterSwitch", description: "Summer/winter switch", access: "ALL", ...args, }), vacationMode: (args) => modernExtend.binary({ name: "vacation_mode", valueOn: ["ON", 1], valueOff: ["OFF", 0], cluster: "hvacThermostat", attribute: "vacationMode", description: "Vacation mode", access: "ALL", ...args, }), timeSync: (args) => modernExtend.binary({ name: "time_sync", valueOn: ["ON", 1], valueOff: ["OFF", 0], cluster: "hvacThermostat", attribute: "timeSync", description: "Time sync", access: "ALL", ...args, }), autoTime: (args) => modernExtend.binary({ name: "auto_time", valueOn: ["ON", 1], valueOff: ["OFF", 0], cluster: "hvacThermostat", attribute: "autoTime", description: "Auto time", access: "ALL", ...args, }), displayActiveBacklight: (args) => modernExtend.numeric({ name: "display_active_backlight", cluster: "hvacThermostat", attribute: "displayActiveBacklight", description: "Display active backlight", valueMin: 1, valueMax: 100, valueStep: 1, unit: "%", access: "ALL", ...args, }), regulatorPercentage: (args) => modernExtend.numeric({ name: "regulator_percentage", cluster: "hvacThermostat", attribute: "regulatorPercentage", description: "Regulator percentage", unit: "%", valueMax: 100, valueMin: 0, valueStep: 1, access: "ALL", ...args, }), regulationMode: (args) => modernExtend.enumLookup({ name: "regulation_mode", cluster: "hvacThermostat", attribute: "regulationMode", description: "Regulation mode", lookup: { off: 0, heat: 1, cool: 2 }, access: "ALL", ...args, }), displayAutoOff: (args) => modernExtend.enumLookup({ name: "display_auto_off", cluster: "hvacThermostat", attribute: "displayAutoOff2", description: "Display auto off", lookup: { always_on: 0, auto_off_after_10s: 1, auto_off_after_30s: 2, auto_off_after_60s: 3 }, access: "ALL", ...args, }), sensorMode: (args) => modernExtend.enumLookup({ name: "sensor_mode", cluster: "hvacThermostat", attribute: "sensorMode", description: "Sensor mode", lookup: { air: 0, floor: 1, external: 3, regulator: 6 }, access: "ALL", ...args, }), boostTime: (args) => modernExtend.enumLookup({ name: "boost_time_set", cluster: "hvacThermostat", attribute: "boostTimeSet", description: "Boost time", lookup: { off: 0, "5min": 1, "10min": 2, "15min": 3, "20min": 4, "25min": 5, "30min": 6, "35min": 7, "40min": 8, "45min": 9, "50min": 10, "55min": 11, "1h": 12, "1h_5min": 13, "1h_10min": 14, "1h_15min": 15, "1h_20min": 16, "1h_25min": 17, "1h_30min": 18, "1h_35min": 19, "1h_40min": 20, "1h_45min": 21, "1h_50min": 22, "1h_55min": 23, "2h": 24, }, access: "ALL", ...args, }), systemMode: (args) => modernExtend.enumLookup({ name: "system_mode", cluster: "hvacThermostat", attribute: "systemMode", description: "System mode", lookup: { off: 0x00, auto: 0x01, cool: 0x03, heat: 0x04 }, access: "ALL", ...args, }), deviceTime: (args) => modernExtend.numeric({ name: "time_sync_value", cluster: "hvacThermostat", attribute: "deviceTime", description: "Device time", valueMin: 0, valueMax: 4294967295, access: "ALL", ...args, }), absMinHeatSetpointLimitF: (args) => modernExtend.numeric({ name: "abs_min_heat_setpoint_limit_f", cluster: "hvacThermostat", attribute: "absMinHeatSetpointLimitF", description: "Absolute min heat setpoint limit", unit: "°F", access: "ALL", ...args, }), absMaxHeatSetpointLimitF: (args) => modernExtend.numeric({ name: "abs_max_heat_setpoint_limit_f", cluster: "hvacThermostat", attribute: "absMaxHeatSetpointLimitF", description: "Absolute max heat setpoint limit", unit: "°F", access: "ALL", ...args, }), absMinCoolSetpointLimitF: (args) => modernExtend.numeric({ name: "abs_min_cool_setpoint_limit_f", cluster: "hvacThermostat", attribute: "absMinCoolSetpointLimitF", description: "Absolute min cool setpoint limit", unit: "°F", access: "ALL", ...args, }), absMaxCoolSetpointLimitF: (args) => modernExtend.numeric({ name: "abs_max_cool_setpoint_limit_f", cluster: "hvacThermostat", attribute: "absMaxCoolSetpointLimitF", description: "Absolute max cool setpoint limit", unit: "°F", access: "ALL", ...args, }), occupiedCoolingSetpointF: (args) => modernExtend.numeric({ name: "occupied_cooling_setpoint_f", cluster: "hvacThermostat", attribute: "occupiedCoolingSetpointF", description: "Occupied cooling setpoint", unit: "°F", access: "ALL", ...args, }), occupiedHeatingSetpointF: (args) => modernExtend.numeric({ name: "occupied_heating_setpoint_f", cluster: "hvacThermostat", attribute: "occupiedHeatingSetpointF", description: "Occupied heating setpoint", unit: "°F", access: "ALL", ...args, }), localTemperatureF: (args) => modernExtend.numeric({ name: "local_temperature_f", cluster: "hvacThermostat", attribute: "localTemperatureF", description: "Local temperature", unit: "°F", access: "ALL", ...args, }), readOnly: { windowState: (args) => modernExtend.binary({ name: "window_state", valueOn: ["OPEN", 1], valueOff: ["CLOSED", 0], cluster: "hvacThermostat", attribute: "windowState", description: "Window state", access: "STATE_GET", ...args, }), deviceFault: (args) => modernExtend.enumLookup({ name: "fault", cluster: "hvacThermostat", attribute: "fault", description: "Device fault", lookup: { no_fault: 0, over_current_error: 1, over_heat_error: 2, "built-in_sensor_error": 3, air_sensor_error: 4, floor_sensor_error: 5, }, access: "STATE_GET", ...args, }), workDays: (args) => modernExtend.enumLookup({ name: "work_days", cluster: "hvacThermostat", attribute: "workDays", description: "Work days", lookup: { "monday-friday_saturday-sunday": 0, "monday-saturday_sunday": 1, no_time_off: 2, time_off: 3 }, access: "STATE_GET", ...args, }), boostTimeRemaining: (args) => modernExtend.numeric({ name: "boost_time_remaining", cluster: "hvacThermostat", attribute: "boostTimeRemaining", description: "Boost time remaining", unit: "min", access: "STATE_GET", ...args, }), }, }; exports.namronExtend = { addCustomClusterNamronPrivateE004: () => modernExtend.deviceAddCustomCluster("namronPrivateE004", { name: "namronPrivateE004", ID: 0xe004, attributes: {}, commands: {}, commandsResponse: {}, }), addNamronHvacThermostatCluster: () => modernExtend.deviceAddCustomCluster("hvacThermostat", { name: "hvacThermostat", ID: zigbee_herdsman_1.Zcl.Clusters.hvacThermostat.ID, attributes: { operateDisplayBrightness: { name: "operateDisplayBrightness", ID: 0x1000, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, displayAutoOff: { name: "displayAutoOff", ID: 0x1001, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, floorSensorType: { name: "floorSensorType", ID: 0x1002, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, controlType: { name: "controlType", ID: 0x1003, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, powerUpStatus: { name: "powerUpStatus", ID: 0x1004, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, floorSensorCalibration: { name: "floorSensorCalibration", ID: 0x1005, type: zigbee_herdsman_1.Zcl.DataType.INT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, dryTime: { name: "dryTime", ID: 0x1006, type: zigbee_herdsman_1.Zcl.DataType.UINT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, modeAfterDry: { name: "modeAfterDry", ID: 0x1007, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, temperatureDisplay: { name: "temperatureDisplay", ID: 0x1008, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, windowOpenCheck2: { name: "windowOpenCheck2", ID: 0x1009, type: zigbee_herdsman_1.Zcl.DataType.UINT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, hysterersis: { name: "hysterersis", ID: 0x100a, type: zigbee_herdsman_1.Zcl.DataType.UINT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, windowOpen: { name: "windowOpen", ID: 0x100b, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, alarmAirTempOverValue: { name: "alarmAirTempOverValue", ID: 0x2001, type: zigbee_herdsman_1.Zcl.DataType.UINT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, awayModeSet: { name: "awayModeSet", ID: 0x2002, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, windowOpenCheck: { name: "windowOpenCheck", ID: 0x8000, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, antiFrost: { name: "antiFrost", ID: 0x8001, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, windowState: { name: "windowState", ID: 0x8002, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, workDays: { name: "workDays", ID: 0x8003, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, sensorMode: { name: "sensorMode", ID: 0x8004, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, displayActiveBacklight: { name: "displayActiveBacklight", ID: 0x8005, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, fault: { name: "fault", ID: 0x8006, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, backlightOnoff: { name: "backlightOnoff", ID: 0x8009, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, timeSync: { name: "timeSync", // time_sync_value ID: 0x800a, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, deviceTime: { name: "deviceTime", ID: 0x800b, type: zigbee_herdsman_1.Zcl.DataType.UINT32, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, absMinHeatSetpointLimitF: { name: "absMinHeatSetpointLimitF", ID: 0x800c, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, absMaxHeatSetpointLimitF: { name: "absMaxHeatSetpointLimitF", ID: 0x800d, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, absMinCoolSetpointLimitF: { name: "absMinCoolSetpointLimitF", ID: 0x800e, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, absMaxCoolSetpointLimitF: { name: "absMaxCoolSetpointLimitF", ID: 0x800f, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, occupiedCoolingSetpointF: { name: "occupiedCoolingSetpointF", ID: 0x8010, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, occupiedHeatingSetpointF: { name: "occupiedHeatingSetpointF", ID: 0x8011, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, localTemperatureF: { name: "localTemperatureF", ID: 0x8012, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, holidayTempSet: { name: "holidayTempSet", ID: 0x8013, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, holidayTempSetF: { name: "holidayTempSetF", ID: 0x801b, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, regulationMode: { name: "regulationMode", ID: 0x801c, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, regulatorPercentage: { name: "regulatorPercentage", ID: 0x801d, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, summerWinterSwitch: { name: "summerWinterSwitch", ID: 0x801e, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, vacationMode: { name: "vacationMode", ID: 0x801f, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, vacationStartDate: { name: "vacationStartDate", ID: 0x8020, type: zigbee_herdsman_1.Zcl.DataType.UINT32, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, vacationEndDate: { name: "vacationEndDate", ID: 0x8021, type: zigbee_herdsman_1.Zcl.DataType.UINT32, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, autoTime: { name: "autoTime", ID: 0x8022, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, boostTimeSet: { name: "boostTimeSet", ID: 0x8023, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, boostTimeRemaining: { name: "boostTimeRemaining", ID: 0x8024, type: zigbee_herdsman_1.Zcl.DataType.UINT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, displayAutoOff2: { name: "displayAutoOff2", ID: 0x8029, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, write: true, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, }, }, commands: {}, commandsResponse: {}, }), addNamronHvacThermostat2Cluster: () => modernExtend.deviceAddCustomCluster("hvacThermostat", { name: "hvacThermostat", ID: zigbee_herdsman_1.Zcl.Clusters.hvacThermostat.ID, attributes: { lcdBrightness: { name: "lcdBrightness", ID: 0x1000, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, buttonVibrationLevel: { name: "buttonVibrationLevel", ID: 0x1001, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, floorSensorType: { name: "floorSensorType", ID: 0x1002, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, controlType: { name: "controlType", ID: 0x1003, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, powerUpStatus: { name: "powerUpStatus", ID: 0x1004, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, floorSensorCalibration: { name: "floorSensorCalibration", ID: 0x1005, type: zigbee_herdsman_1.Zcl.DataType.INT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, dryTime: { name: "dryTime", ID: 0x1006, type: zigbee_herdsman_1.Zcl.DataType.UINT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, modeAfterDry: { name: "modeAfterDry", ID: 0x1007, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, temperatureDisplay: { name: "temperatureDisplay", ID: 0x1008, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, windowOpenCheck2: { name: "windowOpenCheck2", ID: 0x1009, type: zigbee_herdsman_1.Zcl.DataType.UINT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, hysterersis: { name: "hysterersis", ID: 0x100a, type: zigbee_herdsman_1.Zcl.DataType.UINT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, displayAutoOffEnable: { name: "displayAutoOffEnable", // WindowOpen ID: 0x100b, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, alarmAirTempOverValue: { name: "alarmAirTempOverValue", ID: 0x2001, type: zigbee_herdsman_1.Zcl.DataType.UINT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, awayModeSet: { name: "awayModeSet", ID: 0x2002, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SHENZHEN_SUNRICHER_TECHNOLOGY_LTD, write: true, }, }, commands: {}, commandsResponse: {}, }), }; //# sourceMappingURL=namron.js.map