UNPKG

zigbee-herdsman-converters

Version:

Collection of device converters to be used with zigbee-herdsman

1,157 lines 91.8 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 fz = __importStar(require("../converters/fromZigbee")); const tz = __importStar(require("../converters/toZigbee")); const exposes = __importStar(require("../lib/exposes")); const m = __importStar(require("../lib/modernExtend")); const reporting = __importStar(require("../lib/reporting")); const globalStore = __importStar(require("../lib/store")); const utils = __importStar(require("../lib/utils")); const e = exposes.presets; const ea = exposes.access; const clickLookup = { 0: "single", 1: "release", 2: "held", 3: "double", 4: "triple", 5: "quadruple", 6: "quintuple", }; const buttonLookup = { 1: "down", 2: "up", 3: "config", 4: "aux_down", 5: "aux_up", 6: "aux_config", }; const ledEffects = { off: 0, solid: 1, fast_blink: 2, slow_blink: 3, pulse: 4, chase: 5, open_close: 6, small_to_big: 7, aurora: 8, slow_falling: 9, medium_falling: 10, fast_falling: 11, slow_rising: 12, medium_rising: 13, fast_rising: 14, medium_blink: 15, slow_chase: 16, fast_chase: 17, fast_siren: 18, slow_siren: 19, clear_effect: 255, }; const individualLedEffects = { off: 0, solid: 1, fast_blink: 2, slow_blink: 3, pulse: 4, chase: 5, falling: 6, rising: 7, aurora: 8, clear_effect: 255, }; const INOVELLI_CLUSTER_NAME = "manuSpecificInovelli"; const inovelliExtend = { addCustomClusterInovelli: () => m.deviceAddCustomCluster(INOVELLI_CLUSTER_NAME, { ID: 64561, manufacturerCode: 0x122f, attributes: { dimmingSpeedUpRemote: { ID: 0x0001, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, dimmingSpeedUpLocal: { ID: 0x0002, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, rampRateOffToOnRemote: { ID: 0x0003, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, rampRateOffToOnLocal: { ID: 0x0004, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, dimmingSpeedDownRemote: { ID: 0x0005, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, dimmingSpeedDownLocal: { ID: 0x0006, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, rampRateOnToOffRemote: { ID: 0x0007, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, rampRateOnToOffLocal: { ID: 0x0008, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, minimumLevel: { ID: 0x0009, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, maximumLevel: { ID: 0x000a, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, invertSwitch: { ID: 0x000b, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN }, autoTimerOff: { ID: 0x000c, type: zigbee_herdsman_1.Zcl.DataType.UINT16 }, defaultLevelLocal: { ID: 0x000d, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLevelRemote: { ID: 0x000e, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, stateAfterPowerRestored: { ID: 0x000f, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, loadLevelIndicatorTimeout: { ID: 0x0011, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, activePowerReports: { ID: 0x0012, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, periodicPowerAndEnergyReports: { ID: 0x0013, type: zigbee_herdsman_1.Zcl.DataType.UINT16 }, activeEnergyReports: { ID: 0x0014, type: zigbee_herdsman_1.Zcl.DataType.UINT16 }, powerType: { ID: 0x0015, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN }, switchType: { ID: 0x0016, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, quickStartTime: { ID: 0x0017, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, quickStartLevel: { ID: 0x0018, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, higherOutputInNonNeutral: { ID: 0x0019, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN }, dimmingMode: { ID: 0x001a, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, nonNeutralAuxMediumGear: { ID: 0x001e, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, nonNeutralAuxLowGear: { ID: 0x001f, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, internalTemperature: { ID: 0x0020, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, overheat: { ID: 0x0021, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN }, buttonDelay: { ID: 0x0032, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, deviceBindNumber: { ID: 0x0033, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, smartBulbMode: { ID: 0x0034, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN }, doubleTapUpToParam55: { ID: 0x0035, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN }, doubleTapDownToParam56: { ID: 0x0036, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN }, brightnessLevelForDoubleTapUp: { ID: 0x0037, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, brightnessLevelForDoubleTapDown: { ID: 0x0038, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed1ColorWhenOn: { ID: 0x003c, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed1ColorWhenOff: { ID: 0x003d, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed1IntensityWhenOn: { ID: 0x003e, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed1IntensityWhenOff: { ID: 0x003f, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed2ColorWhenOn: { ID: 0x0041, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed2ColorWhenOff: { ID: 0x0042, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed2IntensityWhenOn: { ID: 0x0043, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed2IntensityWhenOff: { ID: 0x0044, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed3ColorWhenOn: { ID: 0x0046, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed3ColorWhenOff: { ID: 0x0047, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed3IntensityWhenOn: { ID: 0x0048, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed3IntensityWhenOff: { ID: 0x0049, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed4ColorWhenOn: { ID: 0x004b, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed4ColorWhenOff: { ID: 0x004c, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed4IntensityWhenOn: { ID: 0x004d, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed4IntensityWhenOff: { ID: 0x004e, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed5ColorWhenOn: { ID: 0x0050, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed5ColorWhenOff: { ID: 0x0051, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed5IntensityWhenOn: { ID: 0x0052, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed5IntensityWhenOff: { ID: 0x0053, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed6ColorWhenOn: { ID: 0x0055, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed6ColorWhenOff: { ID: 0x0056, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed6IntensityWhenOn: { ID: 0x0057, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed6IntensityWhenOff: { ID: 0x0058, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed7ColorWhenOn: { ID: 0x005a, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed7ColorWhenOff: { ID: 0x005b, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed7IntensityWhenOn: { ID: 0x005c, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, defaultLed7IntensityWhenOff: { ID: 0x005d, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, ledColorWhenOn: { ID: 0x005f, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, ledColorWhenOff: { ID: 0x060, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, ledIntensityWhenOn: { ID: 0x0061, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, ledIntensityWhenOff: { ID: 0x0062, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, ledBarScaling: { ID: 0x0064, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN }, singleTapBehavior: { ID: 0x0078, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, fanTimerMode: { ID: 0x0079, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, auxSwitchUniqueScenes: { ID: 0x007b, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN }, bindingOffToOnSyncLevel: { ID: 0x007d, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN }, breezeMode: { ID: 0x0081, type: zigbee_herdsman_1.Zcl.DataType.UINT32 }, fanControlMode: { ID: 0x0082, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, lowLevelForFanControlMode: { ID: 0x0083, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, mediumLevelForFanControlMode: { ID: 0x0084, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, highLevelForFanControlMode: { ID: 0x0085, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, ledColorForFanControlMode: { ID: 0x0086, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, localProtection: { ID: 0x0100, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN }, remoteProtection: { ID: 0x0101, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN }, outputMode: { ID: 0x0102, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN }, onOffLedMode: { ID: 0x0103, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN }, firmwareUpdateInProgressIndicator: { ID: 0x0104, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN }, relayClick: { ID: 0x105, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN }, doubleTapClearNotifications: { ID: 0x106, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN }, fanLedLevelType: { ID: 0x0107, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, }, commands: { ledEffect: { ID: 1, parameters: [ { name: "effect", type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, { name: "color", type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, { name: "level", type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, { name: "duration", type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, ], }, individualLedEffect: { ID: 3, parameters: [ { name: "led", type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, { name: "effect", type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, { name: "color", type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, { name: "level", type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, { name: "duration", type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, ], }, }, commandsResponse: {}, }), }; const fanModes = { off: 0, low: 2, smart: 4, medium: 86, high: 170, on: 255 }; const breezemodes = ["off", "low", "medium", "high"]; const INOVELLI = 0x122f; // Converts brightness level to a fan mode const intToFanMode = (value) => { let selectedMode = "low"; if (value >= fanModes.low) { selectedMode = "low"; } if (value >= fanModes.medium) { selectedMode = "medium"; } if (value >= fanModes.high) { selectedMode = "high"; } if (value === 4) { selectedMode = "smart"; } if (value === 0) { selectedMode = "off"; } return selectedMode; }; /** * Convert speed string to int needed for breeze mode calculation. * @param speedIn - speed string * @returns low = 1, medium = 2, high = 3, off = 0 */ const speedToInt = (speedIn) => { switch (speedIn) { case "low": return 1; case "medium": return 2; case "high": return 3; default: return 0; } }; // Create Expose list with Inovelli Parameters definitions const attributesToExposeList = (attributes, exposesList) => { // biome-ignore lint/complexity/noForEach: ignored using `--suppress` Object.keys(attributes).forEach((key) => { if (attributes[key].displayType === "enum") { const enumE = e .enum(key, attributes[key].readOnly ? ea.STATE_GET : ea.ALL, Object.keys(attributes[key].values)) .withDescription(attributes[key].description); if (!attributes[key].readOnly) { enumE.withCategory(attributes[key].category ?? "config"); } exposesList.push(enumE); } else if (attributes[key].displayType === "binary" || attributes[key].displayType === "switch") { const binary = e .binary(key, attributes[key].readOnly ? ea.STATE_GET : ea.ALL, // @ts-expect-error ignore attributes[key].values.Enabled, attributes[key].values.Disabled) .withDescription(attributes[key].description); if (!attributes[key].readOnly) { binary.withCategory(attributes[key].category ?? "config"); } exposesList.push(binary); } else { const numeric = e .numeric(key, attributes[key].readOnly ? ea.STATE_GET : ea.ALL) .withValueMin(attributes[key].min) .withValueMax(attributes[key].max); if (attributes[key].values) { // biome-ignore lint/complexity/noForEach: ignored using `--suppress` Object.keys(attributes[key].values).forEach((value) => { numeric.withPreset(value, attributes[key].values[value], ""); }); } if (attributes[key].unit) { numeric.withUnit(attributes[key].unit); } numeric.withDescription(attributes[key].description); if (!attributes[key].readOnly) { numeric.withCategory(attributes[key].category ?? "config"); } exposesList.push(numeric); } }); }; /** * Common Attributes * * These attributes are shared between all devices with the manufacturer specific Inovelli cluster * Some of the descriptions, max, min or value properties may be overridden for each device */ const COMMON_ATTRIBUTES = { dimmingSpeedUpRemote: { ID: 1, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 127, description: "This changes the speed that the light dims up when controlled from the hub. " + "A setting of 0 turns the light immediately on. Increasing the value slows down the transition speed. " + "Every number represents 100ms. Default = 25 (2.5s)", }, dimmingSpeedUpLocal: { ID: 2, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 127, description: "This changes the speed that the light dims up when controlled at the switch. " + "A setting of 0 turns the light immediately on. Increasing the value slows down the transition speed. " + "Every number represents 100ms. Default = 127 - Keep in sync with dimmingSpeedUpRemote setting.", }, rampRateOffToOnRemote: { ID: 3, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 127, description: "This changes the speed that the light turns on when controlled from the hub. " + "A setting of 0 turns the light immediately on. Increasing the value slows down the transition speed. " + "Every number represents 100ms. Default = 127 - Keep in sync with dimmingSpeedUpRemote setting.", }, rampRateOffToOnLocal: { ID: 4, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 127, description: "This changes the speed that the light turns on when controlled at the switch. " + "A setting of 0 turns the light immediately on. Increasing the value slows down the transition speed. " + "Every number represents 100ms. Default = 127 - Keep in sync with dimmingSpeedUpRemote setting.", }, dimmingSpeedDownRemote: { ID: 5, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 127, description: "This changes the speed that the light dims down when controlled from the hub. " + "A setting of 0 turns the light immediately off. Increasing the value slows down the transition speed. " + "Every number represents 100ms. Default = 127 - Keep in sync with dimmingSpeedUpRemote setting.", }, dimmingSpeedDownLocal: { ID: 6, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 127, description: "This changes the speed that the light dims down when controlled at the switch. " + "A setting of 0 turns the light immediately off. Increasing the value slows down the transition speed. " + "Every number represents 100ms. Default = 127 - Keep in sync with dimmingSpeedUpLocal setting.", }, rampRateOnToOffRemote: { ID: 7, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 127, description: "This changes the speed that the light turns off when controlled from the hub. " + "A setting of 'instant' turns the light immediately off. Increasing the value slows down the transition speed. " + "Every number represents 100ms. Default = 127 - Keep in sync with rampRateOffToOnRemote setting.", }, rampRateOnToOffLocal: { ID: 8, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 127, description: "This changes the speed that the light turns off when controlled at the switch. " + "A setting of 'instant' turns the light immediately off. Increasing the value slows down the transition speed. " + "Every number represents 100ms. Default = 127 - Keep in sync with rampRateOffToOnLocal setting.", }, invertSwitch: { ID: 11, dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, displayType: "enum", values: { Yes: 1, No: 0 }, min: 0, max: 1, description: "Inverts the orientation of the switch." + " Useful when the switch is installed upside down. Essentially up becomes down and down becomes up.", }, autoTimerOff: { ID: 12, min: 0, max: 32767, dataType: zigbee_herdsman_1.Zcl.DataType.UINT16, unit: "seconds", values: { Disabled: 0 }, description: "Automatically turns the switch off after this many seconds." + " When the switch is turned on a timer is started. When the timer expires, the switch is turned off. 0 = Auto off is disabled.", }, defaultLevelLocal: { ID: 13, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 255, description: "Default level for the load when it is turned on at the switch." + " A setting of 255 means that the switch will return to the level that it was on before it was turned off.", }, defaultLevelRemote: { ID: 14, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 255, description: "Default level for the load when it is turned on from the hub." + " A setting of 255 means that the switch will return to the level that it was on before it was turned off.", }, stateAfterPowerRestored: { ID: 15, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 255, description: "The state the switch should return to when power is restored after power failure. 0 = off, 1-254 = level, 255 = previous.", }, loadLevelIndicatorTimeout: { ID: 17, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, description: "Shows the level that the load is at for x number of seconds after the load is adjusted" + " and then returns to the Default LED state. 0 = Stay Off, 1-10 = seconds, 11 = Stay On.", displayType: "enum", values: { "Stay Off": 0, "1 Second": 1, "2 Seconds": 2, "3 Seconds": 3, "4 Seconds": 4, "5 Seconds": 5, "6 Seconds": 6, "7 Seconds": 7, "8 Seconds": 8, "9 Seconds": 9, "10 Seconds": 10, "Stay On": 11, }, min: 0, max: 11, }, switchType: { ID: 22, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, displayType: "enum", values: { "Single Pole": 0, "3-Way Dumb Switch": 1, "3-Way Aux Switch": 2, "Single-Pole Full Sine Wave": 3 }, min: 0, max: 3, description: "Set the switch configuration.", }, internalTemperature: { ID: 32, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 127, readOnly: true, description: "The temperature measured by the temperature sensor inside the chip, in degrees Celsius", category: "diagnostic", unit: "°C", }, overheat: { ID: 33, dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, displayType: "enum", values: { "No Alert": 0, Overheated: 1 }, min: 0, max: 1, readOnly: true, description: "Indicates if the internal chipset is currently in an overheated state.", }, buttonDelay: { ID: 50, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, values: { "0ms": 0, "100ms": 1, "200ms": 2, "300ms": 3, "400ms": 4, "500ms": 5, "600ms": 6, "700ms": 7, "800ms": 8, "900ms": 9, }, displayType: "enum", min: 0, max: 9, description: "This will set the button press delay. 0 = no delay (Disables Button Press Events), Default = 500ms.", }, deviceBindNumber: { ID: 51, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, readOnly: true, description: "The number of devices currently bound (excluding gateways) and counts one group as two devices", }, smartBulbMode: { ID: 52, dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, displayType: "enum", values: { Disabled: 0, "Smart Bulb Mode": 1 }, description: "For use with Smart Bulbs that need constant power and are controlled via commands rather than power.", }, doubleTapUpToParam55: { ID: 53, dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, displayType: "enum", values: { Disabled: 0, Enabled: 1 }, description: "Enable or Disable setting level to parameter 55 on double-tap UP.", }, doubleTapDownToParam56: { ID: 54, dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, displayType: "enum", values: { Disabled: 0, Enabled: 1 }, description: "Enable or Disable setting level to parameter 56 on double-tap DOWN.", }, brightnessLevelForDoubleTapUp: { ID: 55, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 2, max: 255, description: "Set this level on double-tap UP (if enabled by P53). 255 = send ON command.", }, brightnessLevelForDoubleTapDown: { ID: 56, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 255, description: "Set this level on double-tap DOWN (if enabled by P54). 255 = send OFF command.", }, ledColorWhenOn: { ID: 95, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 255, values: { Red: 0, Orange: 21, Yellow: 42, Green: 85, Cyan: 127, Blue: 170, Violet: 212, Pink: 234, White: 255, }, description: "Set the color of the LED Indicator when the load is on.", }, ledColorWhenOff: { ID: 96, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 255, values: { Red: 0, Orange: 21, Yellow: 42, Green: 85, Cyan: 127, Blue: 170, Violet: 212, Pink: 234, White: 255, }, description: "Set the color of the LED Indicator when the load is off.", }, ledIntensityWhenOn: { ID: 97, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 100, description: "Set the intensity of the LED Indicator when the load is on.", }, ledIntensityWhenOff: { ID: 98, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 100, description: "Set the intensity of the LED Indicator when the load is off.", }, singleTapBehavior: { ID: 120, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, displayType: "enum", values: { "Old Behavior": 0, "New Behavior": 1, "Down Always Off": 2 }, description: "Behavior of single tapping the on or off button. Old behavior turns the switch on or off. " + "New behavior cycles through the levels set by P131-133. Down Always Off is like the new behavior but " + "down always turns the switch off instead of going to next lower speed.", }, fanControlMode: { ID: 130, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, displayType: "enum", values: { Disabled: 0, "Multi Tap": 1, Cycle: 2 }, description: "Which mode to use when binding EP3 (config button) to another device (like a fan module).", }, lowLevelForFanControlMode: { ID: 131, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 2, max: 254, description: "Level to send to device bound to EP3 when set to low.", }, mediumLevelForFanControlMode: { ID: 132, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 2, max: 254, description: "Level to send to device bound to EP3 when set to medium.", }, highLevelForFanControlMode: { ID: 133, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 2, max: 254, description: "Level to send to device bound to EP3 when set to high.", }, ledColorForFanControlMode: { ID: 134, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 255, values: { Red: 0, Orange: 21, Yellow: 42, Green: 85, Cyan: 127, Blue: 170, Violet: 212, Pink: 234, White: 255, }, description: "LED color used to display fan control mode.", }, auxSwitchUniqueScenes: { ID: 123, dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, displayType: "enum", values: { Disabled: 0, Enabled: 1 }, description: "Have unique scene numbers for scenes activated with the aux switch.", }, bindingOffToOnSyncLevel: { ID: 125, dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, displayType: "enum", values: { Disabled: 0, Enabled: 1 }, description: "Send Move_To_Level using Default Level with Off/On to bound devices.", }, localProtection: { ID: 256, dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, values: { Disabled: 0, Enabled: 1 }, description: "Ability to control switch from the wall.", displayType: "enum", }, remoteProtection: { ID: 257, dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, values: { Disabled: 0, Enabled: 1 }, readOnly: true, description: "Ability to control switch from the hub.", displayType: "enum", }, onOffLedMode: { ID: 259, min: 0, max: 1, values: { All: 0, One: 1 }, dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, description: "When the device is in On/Off mode, use full LED bar or just one LED.", displayType: "enum", }, firmwareUpdateInProgressIndicator: { ID: 260, dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, values: { Disabled: 0, Enabled: 1 }, description: "Display progress on LED bar during firmware update.", displayType: "enum", }, defaultLed1ColorWhenOn: { ID: 60, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 255, description: "0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.", }, defaultLed1ColorWhenOff: { ID: 61, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 255, description: "0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.", }, defaultLed1IntensityWhenOn: { ID: 62, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 101, description: "Intensity of LED strip when on. 101 = Synchronized with default all LED strip intensity parameter.", }, defaultLed1IntensityWhenOff: { ID: 63, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 101, description: "Intensity of LED strip when off. 101 = Synchronized with default all LED strip intensity parameter.", }, defaultLed2ColorWhenOn: { ID: 65, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 255, description: "0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.", }, defaultLed2ColorWhenOff: { ID: 66, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 255, description: "0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.", }, defaultLed2IntensityWhenOn: { ID: 67, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 101, description: "Intensity of LED strip when on. 101 = Synchronized with default all LED strip intensity parameter.", }, defaultLed2IntensityWhenOff: { ID: 68, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 101, description: "Intensity of LED strip when off. 101 = Synchronized with default all LED strip intensity parameter.", }, defaultLed3ColorWhenOn: { ID: 70, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 255, description: "0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.", }, defaultLed3ColorWhenOff: { ID: 71, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 255, description: "0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.", }, defaultLed3IntensityWhenOn: { ID: 72, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 101, description: "Intensity of LED strip when on. 101 = Synchronized with default all LED strip intensity parameter.", }, defaultLed3IntensityWhenOff: { ID: 73, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 101, description: "Intensity of LED strip when off. 101 = Synchronized with default all LED strip intensity parameter.", }, defaultLed4ColorWhenOn: { ID: 75, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 255, description: "0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.", }, defaultLed4ColorWhenOff: { ID: 76, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 255, description: "0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.", }, defaultLed4IntensityWhenOn: { ID: 77, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 101, description: "Intensity of LED strip when on. 101 = Synchronized with default all LED strip intensity parameter.", }, defaultLed4IntensityWhenOff: { ID: 78, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 101, description: "Intensity of LED strip when off. 101 = Synchronized with default all LED strip intensity parameter.", }, defaultLed5ColorWhenOn: { ID: 80, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 255, description: "0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.", }, defaultLed5ColorWhenOff: { ID: 81, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 255, description: "0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.", }, defaultLed5IntensityWhenOn: { ID: 82, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 101, description: "Intensity of LED strip when on. 101 = Synchronized with default all LED strip intensity parameter.", }, defaultLed5IntensityWhenOff: { ID: 83, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 101, description: "Intensity of LED strip when off. 101 = Synchronized with default all LED strip intensity parameter.", }, defaultLed6ColorWhenOn: { ID: 85, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 255, description: "0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.", }, defaultLed6ColorWhenOff: { ID: 86, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 255, description: "0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.", }, defaultLed6IntensityWhenOn: { ID: 87, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 101, description: "Intensity of LED strip when on. 101 = Synchronized with default all LED strip intensity parameter.", }, defaultLed6IntensityWhenOff: { ID: 88, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 101, description: "Intensity of LED strip when off. 101 = Synchronized with default all LED strip intensity parameter.", }, defaultLed7ColorWhenOn: { ID: 90, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 255, description: "0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.", }, defaultLed7ColorWhenOff: { ID: 91, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 255, description: "0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.", }, defaultLed7IntensityWhenOn: { ID: 92, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 101, description: "Intensity of LED strip when on. 101 = Synchronized with default all LED strip intensity parameter.", }, defaultLed7IntensityWhenOff: { ID: 93, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 101, description: "Intensity of LED strip when off. 101 = Synchronized with default all LED strip intensity parameter.", }, doubleTapClearNotifications: { ID: 262, dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, min: 0, max: 1, description: "Double-Tap the Config button to clear notifications.", values: { "Enabled (Default)": 0, Disabled: 1 }, displayType: "enum", }, fanLedLevelType: { ID: 263, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 10, values: { "Limitless (like VZM31)": 0, "Adaptive LED": 10 }, description: "Level display of the LED Strip", }, }; /** * Common Dimmer Attributes * * These attributes are shared between all devices that act like dimmers (including dimmers + fan switches) with * the manufacturer specific Inovelli cluster. These are not shared with on/off switches. * Some of the descriptions, max, min or value properties may be overridden for each device */ const COMMON_DIMMER_ATTRIBUTES = { ...COMMON_ATTRIBUTES, minimumLevel: { ID: 9, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 1, max: 254, description: "The minimum level that the dimmer allows the bulb to be dimmed to. " + "Useful when the user has an LED bulb that does not turn on or flickers at a lower level.", }, maximumLevel: { ID: 10, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 2, max: 255, description: "The maximum level that the dimmer allows the bulb to be dimmed to." + "Useful when the user has an LED bulb that reaches its maximum level before the " + "dimmer value of 99 or when the user wants to limit the maximum brightness.", }, powerType: { ID: 21, dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, displayType: "enum", values: { "Non Neutral": 0, Neutral: 1 }, min: 0, max: 1, readOnly: true, description: "Set the power type for the device.", }, outputMode: { ID: 258, min: 0, max: 1, values: { Dimmer: 0, "On/Off": 1 }, dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, description: "Use device as a Dimmer or an On/Off switch.", displayType: "enum", }, }; /** * Common Dimmable light Attributes * * These attributes are shared between all devices that are dimmable light switches with * the manufacturer specific Inovelli cluster. These are not shared with fans or on/off switches. * Some of the descriptions, max, min or value properties may be overridden for each device */ const COMMON_DIMMABLE_LIGHT_ATTRIBUTES = { quickStartTime: { ID: 23, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 60, description: "Duration of full power output while lamp transitions from Off to On. In 60th of second. 0 = disable, 1 = 1/60s, 60 = 1s", }, quickStartLevel: { ID: 24, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 1, max: 254, description: "Level of power output during Quick Start Light time (P23).", }, higherOutputInNonNeutral: { ID: 25, dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, displayType: "enum", values: { "Disabled (default)": 0, Enabled: 1 }, min: 0, max: 1, description: "Increase level in non-neutral mode", }, dimmingMode: { ID: 26, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, displayType: "enum", values: { "Leading edge": 0, "Trailing edge": 1 }, min: 0, max: 1, readOnly: true, description: "Switches the dimming mode from leading edge (default) to trailing edge. " + "1. Trailing Edge is only available on neutral single-pole and neutral multi-way with an " + "aux/add-on switch (multi-way with a dumb/existing switch and non-neutral setups are not supported and " + "will default back to Leading Edge). This parameter can only be changed at the switch.", }, }; /** * Common Dimmer or On/Off Attributes * * These attributes are shared between all devices that are light switches (either dimmers or on/off) with * the manufacturer specific Inovelli cluster. These are not shared with fans. * Some of the descriptions, max, min or value properties may be overridden for each device */ const COMMON_DIMMER_ON_OFF_ATTRIBUTES = { ledBarScaling: { ID: 100, dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, displayType: "enum", values: { "Gen3 method (VZM-style)": 0, "Gen2 method (LZW-style)": 1 }, description: "Method used for scaling.", }, activePowerReports: { ID: 18, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 100, description: "Percent power level change that will result in a new power report being sent. 0 = Disabled", }, periodicPowerAndEnergyReports: { ID: 19, min: 0, max: 32767, dataType: zigbee_herdsman_1.Zcl.DataType.UINT16, description: "Time period between consecutive power & energy reports being sent (in seconds). The timer is reset after each report is sent.", }, activeEnergyReports: { ID: 20, dataType: zigbee_herdsman_1.Zcl.DataType.UINT16, min: 0, max: 32767, description: "Energy reports Energy level change which will result in sending a new energy report." + "0 = disabled, 1-32767 = 0.01kWh-327.67kWh. Default setting: 10 (0.1 kWh)", }, }; const VZM30_ATTRIBUTES = { ...COMMON_ATTRIBUTES, ...COMMON_DIMMER_ON_OFF_ATTRIBUTES, switchType: { ...COMMON_ATTRIBUTES.switchType, values: { "Single Pole": 0, "Aux Switch": 1 }, max: 1, }, }; const VZM31_ATTRIBUTES = { ...COMMON_DIMMER_ATTRIBUTES, ...COMMON_DIMMER_ON_OFF_ATTRIBUTES, ...COMMON_DIMMABLE_LIGHT_ATTRIBUTES, relayClick: { ID: 261, dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, min: 0, max: 1, description: "In neutral on/off setups, the default is to have a clicking sound to notify you that the relay " + "is open or closed. You may disable this sound by creating a, “simulated” on/off where the switch " + "only will turn onto 100 or off to 0.", values: { "Disabled (Click Sound On)": 0, "Enabled (Click Sound Off)": 1 }, displayType: "enum", }, }; const VZM35_ATTRIBUTES = { ...COMMON_DIMMER_ATTRIBUTES, minimumLevel: { ...COMMON_DIMMER_ATTRIBUTES.minimumLevel, description: "1-84: The level corresponding to the fan is Low, Medium, High. " + "85-170: The level corresponding to the fan is Medium, Medium, High. " + "170-254: The level corresponding to the fan is High, High, High ", }, maximumLevel: { ...COMMON_DIMMER_ATTRIBUTES.maximumLevel, description: "2-84: The level corresponding to the fan is Low, Medium, High.", }, switchType: { ...COMMON_ATTRIBUTES.switchType, values: { "Single Pole": 0, "Aux Switch": 1 }, max: 1, }, smartBulbMode: { ...COMMON_ATTRIBUTES.smartBulbMode, description: "For use with Smart Fans that need constant power and are controlled via commands rather than power.", values: { Disabled: 0, "Smart Fan Mode": 1 }, }, quickStartTime: { ID: 23, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 0, max: 60, description: "Duration of full power output while fan tranisitions from Off to On. In 60th of second. 0 = disable, 1 = 1/60s, 60 = 1s", }, nonNeutralAuxMediumGear: { ID: 30, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 42, max: 135, description: "Identification value in Non-nuetral, medium gear, aux switch", }, nonNeutralAuxLowGear: { ID: 31, dataType: zigbee_herdsman_1.Zcl.DataType.UINT8, min: 42, max: 135, description: "Identification value in Non-nuetral, low gear, aux switch", }, outputMode: { ...COMMON_DIMMER_ATTRIBUTES.outputMode, values: { "Ceiling Fan (3-Speed)": 0, "Exhaust Fan (On/Off)": 1 }, description: "Use device in ceiling fan (3-Speed) or in exhaust fan (On/Off) mode.", }, fanTimerMode: { ID: 121, dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, displayType: "enum", values: { Disabled: 0, Enabled: 1 }, description: "Enable or disable advanced timer mode to have the switch act like a bathroom fan timer", }, }; const VZM36_ATTRIBUTES = { // biome-ignore lint/style/useNamingConvention: ignored using `--suppress` dimmingSpeedUpRemote_1: { ...COMMON_ATTRIBUTES.dimmingSpeedUpRemote }, // biome-ignore lint/style/useNamingConvention: ignored using `--suppress` rampRateOffToOnRemote_1: { ...COMMON_ATTRIBUTES.rampRateOffToOnRemote }, // biome-ignore lint/style/useNamingConvention: ignored using `--suppress` dimmingSpeedDownRemote_1: { ...COMMON_ATTRIBUTES.dimmingSpeedDownRemote }, // biome-ignore lint/style/useNamingConvention: ignored using `--suppress` rampRateOnToOffRemote_1: { ...COMMON_ATTRIBUTES.rampRateOnToOffRemote }, // biome-ignore lint/style/useNamingConvention: ignored using `--suppress` minimumLevel_1: { ...COMMON_DIMMER_ATTRIBUTES.minimumLevel }, // biome-ignore lint/style/useNamingConvention: ignored using `--suppress` maximumLevel_1: { ...COMMON_DIMMER_ATTRIBUTES.maximumLevel }, // biome-ignore lint/style/useNamingConvention: ignored using `--suppress` autoTimerOff_1: { ...COMMON_ATTRIBUTES.autoTimerOff, description: "Automatically turns the light off after this many seconds." + " When the light is turned on a timer is started. When the timer expires, the light is turned off. 0 = Auto off is disabled.", }, // biome-ignore lint/style/useNamingConvention: ignored using `--suppress` defaultLevelRemote_1: { ...COMMON_ATTRIBUTES.defaultLevelRemote, description: "Default level for the light when it is turned on from the hub." + " A setting of 255 means that the light will return to the level that it was on before it was turned off.", }, // biome-ignore lint/style/useNamingConvention: ignored using `--suppress` stateAfterPowerRestored_1: { ...COMMON_ATTRIBUTES.stateAfterPowerRestored, description: "The state the light should return to when power is restored after power failure. 0 = off, 1-254 = level, 255 = previous.", }, // biome-ignore lint/style/useNamingConvention: ignored using `--suppress` quickStartTime_1: { ...COMMON_DIMMABLE_LIGHT_ATTRIBUTES.quickStartTime }, // biome-ignore lint/style/useNamingConvention: ignored using `--suppress` quickStartLevel_1: { ...COMMON_DIMMABLE_LIGHT_ATTRIBUTES.quickStartLevel }, // biome-ignore lint/style/useNamingConvention: ignored using `--suppress` higherOutputInNonNeutral_1: { ...COMMON_DIMMABLE_LIGHT_ATTRIBUTES.higherOutputInNonNeutral, description: "Increase level in non-neutral mode for light.", }, // biome-ignore lint/style/useNamingConvention: ignored using `--suppress` dimmingMode_1: { ...COMMON_DIMMABLE_LIGHT_ATTRIBUTES.dimmingMode, readOnly: false, description: "Switches the dimming mode from leading edge (default) to trailing edge. " + "1. Trailing Edge is only available on neutral single-pole and neutral multi-way with an " + "aux/add-on switch (multi-way with a dumb/existing