UNPKG

zigbee-herdsman

Version:

An open source Zigbee gateway solution with node.js.

913 lines 433 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Clusters = void 0; const enums_1 = require("./enums"); const manufacturerCode_1 = require("./manufacturerCode"); const status_1 = require("./status"); exports.Clusters = { genBasic: { ID: 0x0000, attributes: { zclVersion: { ID: 0x0000, type: enums_1.DataType.UINT8, required: true, max: 0xff, default: 8 }, appVersion: { ID: 0x0001, type: enums_1.DataType.UINT8, max: 0xff, default: 0 }, stackVersion: { ID: 0x0002, type: enums_1.DataType.UINT8, max: 0xff, default: 0 }, hwVersion: { ID: 0x0003, type: enums_1.DataType.UINT8, max: 0xff, default: 0 }, manufacturerName: { ID: 0x0004, type: enums_1.DataType.CHAR_STR, default: "", maxLen: 32 }, modelId: { ID: 0x0005, type: enums_1.DataType.CHAR_STR, default: "", maxLen: 32 }, dateCode: { ID: 0x0006, type: enums_1.DataType.CHAR_STR, default: "", maxLen: 16 }, powerSource: { ID: 0x0007, type: enums_1.DataType.ENUM8, required: true, default: 0xff }, genericDeviceClass: { ID: 0x0008, type: enums_1.DataType.ENUM8, default: 0xff }, genericDeviceType: { ID: 0x0009, type: enums_1.DataType.ENUM8, default: 0xff }, productCode: { ID: 0x000a, type: enums_1.DataType.OCTET_STR, default: "" }, productUrl: { ID: 0x000b, type: enums_1.DataType.CHAR_STR, default: "" }, manufacturerVersionDetails: { ID: 0x000c, type: enums_1.DataType.CHAR_STR, default: "" }, serialNumber: { ID: 0x000d, type: enums_1.DataType.CHAR_STR, default: "" }, productLabel: { ID: 0x000e, type: enums_1.DataType.CHAR_STR, default: "" }, locationDesc: { ID: 0x0010, type: enums_1.DataType.CHAR_STR, write: true, default: "", maxLen: 16 }, physicalEnv: { ID: 0x0011, type: enums_1.DataType.ENUM8, write: true, default: 0 }, deviceEnabled: { ID: 0x0012, type: enums_1.DataType.BOOLEAN, write: true, default: 1 }, alarmMask: { ID: 0x0013, type: enums_1.DataType.BITMAP8, write: true, default: 0 }, disableLocalConfig: { ID: 0x0014, type: enums_1.DataType.BITMAP8, write: true, default: 0 }, swBuildId: { ID: 0x4000, type: enums_1.DataType.CHAR_STR, default: "", maxLen: 16 }, // custom schneiderMeterRadioPower: { ID: 0xe200, type: enums_1.DataType.INT8, manufacturerCode: manufacturerCode_1.ManufacturerCode.SCHNEIDER_ELECTRIC, write: true, min: -128, max: 127, }, }, commands: { resetFactDefault: { ID: 0x00, parameters: [] }, // custom tuyaSetup: { ID: 0xf0, parameters: [] }, }, commandsResponse: {}, }, genPowerCfg: { ID: 0x0001, attributes: { mainsVoltage: { ID: 0x0000, type: enums_1.DataType.UINT16, max: 0xffff }, mainsFrequency: { ID: 0x0001, type: enums_1.DataType.UINT8, max: 0xff }, mainsAlarmMask: { ID: 0x0010, type: enums_1.DataType.BITMAP8, write: true, default: 0 }, mainsVoltMinThres: { ID: 0x0011, type: enums_1.DataType.UINT16, write: true, max: 0xffff, default: 0 }, mainsVoltMaxThres: { ID: 0x0012, type: enums_1.DataType.UINT16, write: true, max: 0xffff, default: 0xffff }, mainsVoltageDwellTripPoint: { ID: 0x0013, type: enums_1.DataType.UINT16, write: true, max: 0xffff, default: 0 }, batteryVoltage: { ID: 0x0020, type: enums_1.DataType.UINT8, max: 0xff }, batteryPercentageRemaining: { ID: 0x0021, type: enums_1.DataType.UINT8, report: true, max: 0xff, default: 0 }, batteryManufacturer: { ID: 0x0030, type: enums_1.DataType.CHAR_STR, write: true, default: "", maxLen: 16 }, batterySize: { ID: 0x0031, type: enums_1.DataType.ENUM8, write: true, default: 0xff }, batteryAHrRating: { ID: 0x0032, type: enums_1.DataType.UINT16, write: true, max: 0xffff }, batteryQuantity: { ID: 0x0033, type: enums_1.DataType.UINT8, write: true, max: 0xff }, batteryRatedVoltage: { ID: 0x0034, type: enums_1.DataType.UINT8, write: true, max: 0xff }, batteryAlarmMask: { ID: 0x0035, type: enums_1.DataType.BITMAP8, write: true, default: 0 }, batteryVoltMinThres: { ID: 0x0036, type: enums_1.DataType.UINT8, write: true, max: 0xff, default: 0 }, batteryVoltThres1: { ID: 0x0037, type: enums_1.DataType.UINT8, write: true, writeOptional: true, max: 0xff, default: 0 }, batteryVoltThres2: { ID: 0x0038, type: enums_1.DataType.UINT8, write: true, writeOptional: true, max: 0xff, default: 0 }, batteryVoltThres3: { ID: 0x0039, type: enums_1.DataType.UINT8, write: true, writeOptional: true, max: 0xff, default: 0 }, batteryPercentMinThres: { ID: 0x003a, type: enums_1.DataType.UINT8, write: true, writeOptional: true, max: 0xff, default: 0 }, batteryPercentThres1: { ID: 0x003b, type: enums_1.DataType.UINT8, write: true, writeOptional: true, max: 0xff, default: 0 }, batteryPercentThres2: { ID: 0x003c, type: enums_1.DataType.UINT8, write: true, writeOptional: true, max: 0xff, default: 0 }, batteryPercentThres3: { ID: 0x003d, type: enums_1.DataType.UINT8, write: true, writeOptional: true, max: 0xff, default: 0 }, batteryAlarmState: { ID: 0x003e, type: enums_1.DataType.BITMAP32, report: true, default: 0 }, battery2Voltage: { ID: 0x0040, type: enums_1.DataType.UINT8, max: 0xff }, battery2PercentageRemaining: { ID: 0x0041, type: enums_1.DataType.UINT8, report: true, max: 0xff, default: 0 }, battery2Manufacturer: { ID: 0x0050, type: enums_1.DataType.CHAR_STR, write: true, default: "", maxLen: 16 }, battery2Size: { ID: 0x0051, type: enums_1.DataType.ENUM8, write: true, default: 0xff }, battery2AHrRating: { ID: 0x0052, type: enums_1.DataType.UINT16, write: true, max: 0xffff }, battery2Quantity: { ID: 0x0053, type: enums_1.DataType.UINT8, write: true, max: 0xff }, battery2RatedVoltage: { ID: 0x0054, type: enums_1.DataType.UINT8, write: true, max: 0xff }, battery2AlarmMask: { ID: 0x0055, type: enums_1.DataType.BITMAP8, write: true, default: 0 }, battery2VoltageMinThreshold: { ID: 0x0056, type: enums_1.DataType.UINT8, write: true, max: 0xff, default: 0 }, battery2VoltageThreshold1: { ID: 0x0057, type: enums_1.DataType.UINT8, write: true, writeOptional: true, max: 0xff, default: 0 }, battery2VoltageThreshold2: { ID: 0x0058, type: enums_1.DataType.UINT8, write: true, writeOptional: true, max: 0xff, default: 0 }, battery2VoltageThreshold3: { ID: 0x0059, type: enums_1.DataType.UINT8, write: true, writeOptional: true, max: 0xff, default: 0 }, battery2PercentageMinThreshold: { ID: 0x005a, type: enums_1.DataType.UINT8, write: true, writeOptional: true, max: 0xff, default: 0 }, battery2PercentageThreshold1: { ID: 0x005b, type: enums_1.DataType.UINT8, write: true, writeOptional: true, max: 0xff, default: 0 }, battery2PercentageThreshold2: { ID: 0x005c, type: enums_1.DataType.UINT8, write: true, writeOptional: true, max: 0xff, default: 0 }, battery2PercentageThreshold3: { ID: 0x005d, type: enums_1.DataType.UINT8, write: true, writeOptional: true, max: 0xff, default: 0 }, battery2AlarmState: { ID: 0x005e, type: enums_1.DataType.BITMAP32, report: true, default: 0 }, battery3Voltage: { ID: 0x0060, type: enums_1.DataType.UINT8, max: 0xff }, battery3PercentageRemaining: { ID: 0x0061, type: enums_1.DataType.UINT8, report: true, max: 0xff, default: 0 }, battery3Manufacturer: { ID: 0x0070, type: enums_1.DataType.CHAR_STR, write: true, default: "", maxLen: 16 }, battery3Size: { ID: 0x0071, type: enums_1.DataType.ENUM8, write: true, default: 0xff }, battery3AHrRating: { ID: 0x0072, type: enums_1.DataType.UINT16, write: true, max: 0xffff }, battery3Quantity: { ID: 0x0073, type: enums_1.DataType.UINT8, write: true, max: 0xff }, battery3RatedVoltage: { ID: 0x0074, type: enums_1.DataType.UINT8, write: true, max: 0xff }, battery3AlarmMask: { ID: 0x0075, type: enums_1.DataType.BITMAP8, write: true, default: 0 }, battery3VoltageMinThreshold: { ID: 0x0076, type: enums_1.DataType.UINT8, write: true, max: 0xff, default: 0 }, battery3VoltageThreshold1: { ID: 0x0077, type: enums_1.DataType.UINT8, write: true, writeOptional: true, max: 0xff, default: 0 }, battery3VoltageThreshold2: { ID: 0x0078, type: enums_1.DataType.UINT8, write: true, writeOptional: true, max: 0xff, default: 0 }, battery3VoltageThreshold3: { ID: 0x0079, type: enums_1.DataType.UINT8, write: true, writeOptional: true, max: 0xff, default: 0 }, battery3PercentageMinThreshold: { ID: 0x007a, type: enums_1.DataType.UINT8, write: true, writeOptional: true, max: 0xff, default: 0 }, battery3PercentageThreshold1: { ID: 0x007b, type: enums_1.DataType.UINT8, write: true, writeOptional: true, max: 0xff, default: 0 }, battery3PercentageThreshold2: { ID: 0x007c, type: enums_1.DataType.UINT8, write: true, writeOptional: true, max: 0xff, default: 0 }, battery3PercentageThreshold3: { ID: 0x007d, type: enums_1.DataType.UINT8, write: true, writeOptional: true, max: 0xff, default: 0 }, battery3AlarmState: { ID: 0x007e, type: enums_1.DataType.BITMAP32, report: true, default: 0 }, }, commands: {}, commandsResponse: {}, }, genDeviceTempCfg: { ID: 0x0002, attributes: { currentTemperature: { ID: 0x0000, type: enums_1.DataType.INT16, required: true, min: -200, max: 200 }, minTempExperienced: { ID: 0x0001, type: enums_1.DataType.INT16, min: -200, max: 200 }, maxTempExperienced: { ID: 0x0002, type: enums_1.DataType.INT16, min: -200, max: 200 }, overTempTotalDwell: { ID: 0x0003, type: enums_1.DataType.UINT16, max: 0xffff, default: 0 }, devTempAlarmMask: { ID: 0x0010, type: enums_1.DataType.BITMAP8, write: true, default: 0 }, lowTempThres: { ID: 0x0011, type: enums_1.DataType.INT16, write: true, min: -200, max: 200 }, highTempThres: { ID: 0x0012, type: enums_1.DataType.INT16, write: true, min: -200, max: 200 }, lowTempDwellTripPoint: { ID: 0x0013, type: enums_1.DataType.UINT24, write: true, max: 0xffffff }, highTempDwellTripPoint: { ID: 0x0014, type: enums_1.DataType.UINT24, write: true, max: 0xffffff }, }, commands: {}, commandsResponse: {}, }, genIdentify: { ID: 0x0003, attributes: { identifyTime: { ID: 0x0000, type: enums_1.DataType.UINT16, write: true, required: true, max: 0xffff, default: 0 }, }, commands: { identify: { ID: 0x00, parameters: [{ name: "identifytime", type: enums_1.DataType.UINT16 }], required: true }, identifyQuery: { ID: 0x01, parameters: [], required: true }, triggerEffect: { ID: 0x40, parameters: [ { name: "effectid", type: enums_1.DataType.ENUM8 }, { name: "effectvariant", type: enums_1.DataType.ENUM8 }, ], }, // custom ezmodeInvoke: { ID: 0x02, parameters: [{ name: "action", type: enums_1.DataType.UINT8, max: 0xff }] }, updateCommissionState: { ID: 0x03, parameters: [ { name: "action", type: enums_1.DataType.UINT8, max: 0xff }, { name: "commstatemask", type: enums_1.DataType.UINT8, max: 0xff }, ], }, }, commandsResponse: { identifyQueryRsp: { ID: 0x00, parameters: [{ name: "timeout", type: enums_1.DataType.UINT16, max: 0xffff }], required: true }, }, }, /** Note: an end device being "sleepy" makes everything optional, even if marked mandatory */ genGroups: { ID: 0x0004, attributes: { nameSupport: { ID: 0x0000, type: enums_1.DataType.BITMAP8, required: true, default: 0 }, }, commands: { add: { ID: 0x00, response: 0, parameters: [ { name: "groupid", type: enums_1.DataType.UINT16 }, { name: "groupname", type: enums_1.DataType.CHAR_STR }, ], required: true, }, view: { ID: 0x01, response: 1, parameters: [{ name: "groupid", type: enums_1.DataType.UINT16 }], required: true }, getMembership: { ID: 0x02, response: 2, parameters: [ { name: "groupcount", type: enums_1.DataType.UINT8 }, { name: "grouplist", type: enums_1.BuffaloZclDataType.LIST_UINT16 }, ], required: true, }, remove: { ID: 0x03, response: 3, parameters: [{ name: "groupid", type: enums_1.DataType.UINT16 }], required: true }, removeAll: { ID: 0x04, parameters: [], required: true }, addIfIdentifying: { ID: 0x05, parameters: [ { name: "groupid", type: enums_1.DataType.UINT16 }, { name: "groupname", type: enums_1.DataType.CHAR_STR }, ], required: true, }, // custom miboxerSetZones: { ID: 0xf0, parameters: [{ name: "zones", type: enums_1.BuffaloZclDataType.LIST_MIBOXER_ZONES }] }, }, commandsResponse: { addRsp: { ID: 0x00, parameters: [ { name: "status", type: enums_1.DataType.ENUM8 }, { name: "groupid", type: enums_1.DataType.UINT16 }, ], required: true, }, viewRsp: { ID: 0x01, parameters: [ { name: "status", type: enums_1.DataType.ENUM8 }, { name: "groupid", type: enums_1.DataType.UINT16 }, { name: "groupname", type: enums_1.DataType.CHAR_STR }, ], required: true, }, getMembershipRsp: { ID: 0x02, parameters: [ { name: "capacity", type: enums_1.DataType.UINT8 }, { name: "groupcount", type: enums_1.DataType.UINT8 }, { name: "grouplist", type: enums_1.BuffaloZclDataType.LIST_UINT16 }, ], required: true, }, removeRsp: { ID: 0x03, parameters: [ { name: "status", type: enums_1.DataType.ENUM8 }, { name: "groupid", type: enums_1.DataType.UINT16 }, ], required: true, }, }, }, /** Note: an end device being "sleepy" makes everything optional, even if marked mandatory */ genScenes: { ID: 0x0005, attributes: { count: { ID: 0x0000, type: enums_1.DataType.UINT8, required: true, max: 0xff, default: 0 }, currentScene: { ID: 0x0001, type: enums_1.DataType.UINT8, required: true, max: 0xff, default: 0 }, currentGroup: { ID: 0x0002, type: enums_1.DataType.UINT16, required: true, max: 0xfff7, default: 0 }, sceneValid: { ID: 0x0003, type: enums_1.DataType.BOOLEAN, required: true, default: 0 }, nameSupport: { ID: 0x0004, type: enums_1.DataType.BITMAP8, required: true, default: 0 }, lastCfgBy: { ID: 0x0005, type: enums_1.DataType.IEEE_ADDR, special: [["UnknownOrNotConfigured", "ffffffffffffffff"]] }, }, commands: { add: { ID: 0x00, response: 0, parameters: [ { name: "groupid", type: enums_1.DataType.UINT16 }, { name: "sceneid", type: enums_1.DataType.UINT8 }, { name: "transtime", type: enums_1.DataType.UINT16 }, { name: "scenename", type: enums_1.DataType.CHAR_STR }, { name: "extensionfieldsets", type: enums_1.BuffaloZclDataType.EXTENSION_FIELD_SETS }, ], required: true, }, view: { ID: 0x01, response: 1, parameters: [ { name: "groupid", type: enums_1.DataType.UINT16 }, { name: "sceneid", type: enums_1.DataType.UINT8 }, ], required: true, }, remove: { ID: 0x02, response: 2, parameters: [ { name: "groupid", type: enums_1.DataType.UINT16 }, { name: "sceneid", type: enums_1.DataType.UINT8 }, ], required: true, }, removeAll: { ID: 0x03, response: 3, parameters: [{ name: "groupid", type: enums_1.DataType.UINT16 }], required: true }, store: { ID: 0x04, response: 4, parameters: [ { name: "groupid", type: enums_1.DataType.UINT16 }, { name: "sceneid", type: enums_1.DataType.UINT8 }, ], required: true, }, recall: { ID: 0x05, parameters: [ { name: "groupid", type: enums_1.DataType.UINT16 }, { name: "sceneid", type: enums_1.DataType.UINT8 }, { name: "transitionTime", type: enums_1.DataType.UINT16, conditions: [{ type: enums_1.ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES, value: 2 }], }, ], required: true, }, getSceneMembership: { ID: 0x06, response: 6, parameters: [{ name: "groupid", type: enums_1.DataType.UINT16 }], required: true }, enhancedAdd: { ID: 0x40, response: 64, parameters: [ { name: "groupid", type: enums_1.DataType.UINT16 }, { name: "sceneid", type: enums_1.DataType.UINT8 }, { name: "transtime", type: enums_1.DataType.UINT16 }, { name: "scenename", type: enums_1.DataType.CHAR_STR }, { name: "extensionfieldsets", type: enums_1.BuffaloZclDataType.EXTENSION_FIELD_SETS }, ], }, enhancedView: { ID: 0x41, response: 65, parameters: [ { name: "groupid", type: enums_1.DataType.UINT16 }, { name: "sceneid", type: enums_1.DataType.UINT8 }, ], }, copy: { ID: 0x42, response: 66, parameters: [ { name: "mode", type: enums_1.DataType.BITMAP8 }, { name: "groupidfrom", type: enums_1.DataType.UINT16 }, { name: "sceneidfrom", type: enums_1.DataType.UINT8 }, { name: "groupidto", type: enums_1.DataType.UINT16 }, { name: "sceneidto", type: enums_1.DataType.UINT8 }, ], }, // custom tradfriArrowSingle: { ID: 0x07, parameters: [ { name: "value", type: enums_1.DataType.UINT16, max: 0xffff }, { name: "value2", type: enums_1.DataType.UINT16, max: 0xffff }, ], }, tradfriArrowHold: { ID: 0x08, parameters: [{ name: "value", type: enums_1.DataType.UINT16, max: 0xffff }] }, tradfriArrowRelease: { ID: 0x09, parameters: [{ name: "value", type: enums_1.DataType.UINT16, max: 0xffff }] }, }, commandsResponse: { addRsp: { ID: 0x00, parameters: [ { name: "status", type: enums_1.DataType.ENUM8 }, { name: "groupId", type: enums_1.DataType.UINT16 }, { name: "sceneId", type: enums_1.DataType.UINT8 }, ], required: true, }, viewRsp: { ID: 0x01, parameters: [ { name: "status", type: enums_1.DataType.ENUM8 }, { name: "groupid", type: enums_1.DataType.UINT16 }, { name: "sceneid", type: enums_1.DataType.UINT8 }, { name: "transtime", type: enums_1.DataType.UINT16, conditions: [{ type: enums_1.ParameterCondition.FIELD_EQUAL, field: "status", value: status_1.Status.SUCCESS }], }, { name: "scenename", type: enums_1.DataType.CHAR_STR, conditions: [{ type: enums_1.ParameterCondition.FIELD_EQUAL, field: "status", value: status_1.Status.SUCCESS }], }, { name: "extensionfieldsets", type: enums_1.BuffaloZclDataType.EXTENSION_FIELD_SETS, conditions: [{ type: enums_1.ParameterCondition.FIELD_EQUAL, field: "status", value: status_1.Status.SUCCESS }], }, ], required: true, }, removeRsp: { ID: 0x02, parameters: [ { name: "status", type: enums_1.DataType.ENUM8 }, { name: "groupid", type: enums_1.DataType.UINT16 }, { name: "sceneid", type: enums_1.DataType.UINT8 }, ], required: true, }, removeAllRsp: { ID: 0x03, parameters: [ { name: "status", type: enums_1.DataType.ENUM8 }, { name: "groupid", type: enums_1.DataType.UINT16 }, ], required: true, }, storeRsp: { ID: 0x04, parameters: [ { name: "status", type: enums_1.DataType.ENUM8 }, { name: "groupid", type: enums_1.DataType.UINT16 }, { name: "sceneid", type: enums_1.DataType.UINT8 }, ], required: true, }, getSceneMembershipRsp: { ID: 0x06, parameters: [ { name: "status", type: enums_1.DataType.ENUM8 }, { name: "capacity", type: enums_1.DataType.UINT8, min: 0, max: 0xff, special: [ ["NoFurtherScenesMayBeAdded", "00"], ["AtLeastOneFurtherSceneMayBeAdded", "fe"], ["Unknown", "ff"], ], }, { name: "groupid", type: enums_1.DataType.UINT16 }, { name: "scenecount", type: enums_1.DataType.UINT8, conditions: [{ type: enums_1.ParameterCondition.FIELD_EQUAL, field: "status", value: status_1.Status.SUCCESS }], }, { name: "scenelist", type: enums_1.BuffaloZclDataType.LIST_UINT8, conditions: [{ type: enums_1.ParameterCondition.FIELD_EQUAL, field: "status", value: status_1.Status.SUCCESS }], }, ], required: true, }, enhancedAddRsp: { ID: 0x40, parameters: [ { name: "status", type: enums_1.DataType.ENUM8 }, { name: "groupId", type: enums_1.DataType.UINT16 }, { name: "sceneId", type: enums_1.DataType.UINT8 }, ], }, enhancedViewRsp: { ID: 0x41, parameters: [ { name: "status", type: enums_1.DataType.ENUM8 }, { name: "groupid", type: enums_1.DataType.UINT16 }, { name: "sceneid", type: enums_1.DataType.UINT8 }, { name: "transtime", type: enums_1.DataType.UINT16, conditions: [{ type: enums_1.ParameterCondition.FIELD_EQUAL, field: "status", value: status_1.Status.SUCCESS }], }, { name: "scenename", type: enums_1.DataType.CHAR_STR, conditions: [{ type: enums_1.ParameterCondition.FIELD_EQUAL, field: "status", value: status_1.Status.SUCCESS }], }, { name: "extensionfieldsets", type: enums_1.BuffaloZclDataType.EXTENSION_FIELD_SETS, conditions: [{ type: enums_1.ParameterCondition.FIELD_EQUAL, field: "status", value: status_1.Status.SUCCESS }], }, ], }, copyRsp: { ID: 0x42, parameters: [ { name: "status", type: enums_1.DataType.ENUM8 }, { name: "groupidfrom", type: enums_1.DataType.UINT16 }, { name: "sceneidfrom", type: enums_1.DataType.UINT8 }, ], }, }, }, genOnOff: { ID: 0x0006, attributes: { onOff: { ID: 0x0000, type: enums_1.DataType.BOOLEAN, report: true, scene: true, required: true, default: 0 }, globalSceneCtrl: { ID: 0x4000, type: enums_1.DataType.BOOLEAN, default: 1 }, onTime: { ID: 0x4001, type: enums_1.DataType.UINT16, write: true, max: 0xffff, default: 0 }, offWaitTime: { ID: 0x4002, type: enums_1.DataType.UINT16, write: true, max: 0xffff, default: 0 }, startUpOnOff: { ID: 0x4003, type: enums_1.DataType.ENUM8, write: true, max: 0xff, special: [["SetToPreviousValue", "ff"]] }, // custom nodonTransitionTime: { ID: 0x0001, type: enums_1.DataType.UINT16, manufacturerCode: manufacturerCode_1.ManufacturerCode.NODON, write: true, max: 0xffff }, tuyaBacklightSwitch: { ID: 0x5000, type: enums_1.DataType.ENUM8, write: true, max: 0xff }, tuyaBacklightMode: { ID: 0x8001, type: enums_1.DataType.ENUM8, write: true, max: 0xff }, moesStartUpOnOff: { ID: 0x8002, type: enums_1.DataType.ENUM8, write: true, max: 0xff }, tuyaOperationMode: { ID: 0x8004, type: enums_1.DataType.ENUM8, write: true, max: 0xff }, elkoPreWarningTime: { ID: 0xe000, type: enums_1.DataType.UINT16, manufacturerCode: manufacturerCode_1.ManufacturerCode.ADEO, write: true, max: 0xffff }, elkoOnTimeReload: { ID: 0xe001, type: enums_1.DataType.UINT32, manufacturerCode: manufacturerCode_1.ManufacturerCode.ADEO, write: true, max: 0xffffffff }, elkoOnTimeReloadOptions: { ID: 0xe002, type: enums_1.DataType.BITMAP8, manufacturerCode: manufacturerCode_1.ManufacturerCode.ADEO, write: true }, }, commands: { off: { ID: 0x00, parameters: [], required: true }, on: { ID: 0x01, parameters: [], required: true }, toggle: { ID: 0x02, parameters: [], required: true }, offWithEffect: { ID: 0x40, parameters: [ { name: "effectid", type: enums_1.DataType.ENUM8 }, { name: "effectvariant", type: enums_1.DataType.UINT8 }, ], }, onWithRecallGlobalScene: { ID: 0x41, parameters: [] }, onWithTimedOff: { ID: 0x42, parameters: [ { name: "ctrlbits", type: enums_1.DataType.UINT8 }, { name: "ontime", type: enums_1.DataType.UINT16 }, { name: "offwaittime", type: enums_1.DataType.UINT16 }, ], }, // custom tuyaAction2: { ID: 0xfc, parameters: [{ name: "value", type: enums_1.DataType.UINT8, max: 0xff }] }, tuyaAction: { ID: 0xfd, parameters: [ { name: "value", type: enums_1.DataType.UINT8, max: 0xff }, { name: "data", type: enums_1.BuffaloZclDataType.BUFFER }, ], }, }, commandsResponse: {}, }, genOnOffSwitchCfg: { ID: 0x0007, attributes: { switchType: { ID: 0x0000, type: enums_1.DataType.ENUM8, required: true, min: 0x00, max: 0x02 }, switchActions: { ID: 0x0010, type: enums_1.DataType.ENUM8, required: true, write: true, min: 0, max: 2 }, }, commands: {}, commandsResponse: {}, }, genLevelCtrl: { ID: 0x0008, attributes: { currentLevel: { ID: 0x0000, type: enums_1.DataType.UINT8, report: true, scene: true, required: true, default: 0xff, // for genLevelCtrlForLighting: // min: 1, // max: 0xfe, }, remainingTime: { ID: 0x0001, type: enums_1.DataType.UINT16, max: 0xffff, default: 0 }, minLevel: { ID: 0x0002, type: enums_1.DataType.UINT8, default: 0 }, maxLevel: { ID: 0x0003, type: enums_1.DataType.UINT8, max: 0xff, default: 0xff }, currentFrequency: { ID: 0x0004, type: enums_1.DataType.UINT16, report: true, default: 0 }, minFrequency: { ID: 0x0005, type: enums_1.DataType.UINT16, default: 0 }, maxFrequency: { ID: 0x0006, type: enums_1.DataType.UINT16, max: 0xffff, default: 0 }, options: { ID: 0x000f, type: enums_1.DataType.BITMAP8, write: true, default: 0 }, onOffTransitionTime: { ID: 0x0010, type: enums_1.DataType.UINT16, write: true, max: 0xffff, default: 0 }, onLevel: { ID: 0x0011, type: enums_1.DataType.UINT8, write: true, default: 0xff }, onTransitionTime: { ID: 0x0012, type: enums_1.DataType.UINT16, write: true, max: 0xfffe, default: 0xffff }, offTransitionTime: { ID: 0x0013, type: enums_1.DataType.UINT16, write: true, max: 0xfffe, default: 0xffff }, defaultMoveRate: { ID: 0x0014, type: enums_1.DataType.UINT8, write: true, max: 0xfe }, startUpCurrentLevel: { ID: 0x4000, type: enums_1.DataType.UINT8, write: true, max: 0xff, special: [ ["MinimumDeviceValuePermitted", "00"], ["SetToPreviousValue", "ff"], ], }, // custom // TODO: needed? elkoStartUpCurrentLevel: { ID: 0x4000, type: enums_1.DataType.UINT8, manufacturerCode: manufacturerCode_1.ManufacturerCode.ADEO, write: true, max: 0xff }, }, commands: { moveToLevel: { ID: 0x00, parameters: [ { name: "level", type: enums_1.DataType.UINT8 }, { name: "transtime", type: enums_1.DataType.UINT16 }, // XXX: behind bytes condition due to likely missing fields with many devices { name: "optionsMask", type: enums_1.DataType.BITMAP8, conditions: [{ type: enums_1.ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES, value: 1 }] }, { name: "optionsOverride", type: enums_1.DataType.BITMAP8, conditions: [{ type: enums_1.ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES, value: 1 }], }, ], required: true, }, move: { ID: 0x01, parameters: [ { name: "movemode", type: enums_1.DataType.ENUM8 }, { name: "rate", type: enums_1.DataType.UINT8 }, // XXX: behind bytes condition due to likely missing fields with many devices { name: "optionsMask", type: enums_1.DataType.BITMAP8, conditions: [{ type: enums_1.ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES, value: 1 }] }, { name: "optionsOverride", type: enums_1.DataType.BITMAP8, conditions: [{ type: enums_1.ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES, value: 1 }], }, ], required: true, }, step: { ID: 0x02, parameters: [ { name: "stepmode", type: enums_1.DataType.ENUM8 }, { name: "stepsize", type: enums_1.DataType.UINT8 }, { name: "transtime", type: enums_1.DataType.UINT16 }, // XXX: behind bytes condition due to likely missing fields with many devices { name: "optionsMask", type: enums_1.DataType.BITMAP8, conditions: [{ type: enums_1.ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES, value: 1 }] }, { name: "optionsOverride", type: enums_1.DataType.BITMAP8, conditions: [{ type: enums_1.ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES, value: 1 }], }, ], required: true, }, stop: { ID: 0x03, parameters: [ // XXX: behind bytes condition due to likely missing fields with many devices { name: "optionsMask", type: enums_1.DataType.BITMAP8, conditions: [{ type: enums_1.ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES, value: 1 }] }, { name: "optionsOverride", type: enums_1.DataType.BITMAP8, conditions: [{ type: enums_1.ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES, value: 1 }], }, ], required: true, }, moveToLevelWithOnOff: { ID: 0x04, parameters: [ { name: "level", type: enums_1.DataType.UINT8 }, { name: "transtime", type: enums_1.DataType.UINT16 }, // XXX: behind bytes condition due to likely missing fields with many devices { name: "optionsMask", type: enums_1.DataType.BITMAP8, conditions: [{ type: enums_1.ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES, value: 1 }] }, { name: "optionsOverride", type: enums_1.DataType.BITMAP8, conditions: [{ type: enums_1.ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES, value: 1 }], }, ], required: true, }, moveWithOnOff: { ID: 0x05, parameters: [ { name: "movemode", type: enums_1.DataType.ENUM8 }, { name: "rate", type: enums_1.DataType.UINT8 }, // XXX: behind bytes condition due to likely missing fields with many devices { name: "optionsMask", type: enums_1.DataType.BITMAP8, conditions: [{ type: enums_1.ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES, value: 1 }] }, { name: "optionsOverride", type: enums_1.DataType.BITMAP8, conditions: [{ type: enums_1.ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES, value: 1 }], }, ], required: true, }, stepWithOnOff: { ID: 0x06, parameters: [ { name: "stepmode", type: enums_1.DataType.ENUM8 }, { name: "stepsize", type: enums_1.DataType.UINT8 }, { name: "transtime", type: enums_1.DataType.UINT16 }, // XXX: behind bytes condition due to likely missing fields with many devices { name: "optionsMask", type: enums_1.DataType.BITMAP8, conditions: [{ type: enums_1.ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES, value: 1 }] }, { name: "optionsOverride", type: enums_1.DataType.BITMAP8, conditions: [{ type: enums_1.ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES, value: 1 }], }, ], required: true, }, stopWithOnOff: { ID: 0x07, parameters: [ // XXX: behind bytes condition due to likely missing fields with many devices { name: "optionsMask", type: enums_1.DataType.BITMAP8, conditions: [{ type: enums_1.ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES, value: 1 }] }, { name: "optionsOverride", type: enums_1.DataType.BITMAP8, conditions: [{ type: enums_1.ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES, value: 1 }], }, ], required: true, }, // only `required: true` if `currentFrequency` attribute supported moveToClosestFrequency: { ID: 0x08, parameters: [{ name: "frequency", type: enums_1.DataType.UINT16 }] }, // custom moveToLevelTuya: { ID: 0xf0, parameters: [ { name: "level", type: enums_1.DataType.UINT16, max: 0xffff }, { name: "transtime", type: enums_1.DataType.UINT16, max: 0xffff }, ], }, }, commandsResponse: {}, }, genAlarms: { ID: 0x0009, attributes: { alarmCount: { ID: 0x0000, type: enums_1.DataType.UINT16, max: 0xffff, default: 0 }, }, commands: { reset: { ID: 0x00, parameters: [ { name: "alarmcode", type: enums_1.DataType.ENUM8 }, { name: "clusterid", type: enums_1.DataType.CLUSTER_ID }, ], required: true, }, resetAll: { ID: 0x01, parameters: [], required: true }, getAlarm: { ID: 0x02, parameters: [] }, resetLog: { ID: 0x03, parameters: [] }, // custom publishEventLog: { ID: 0x04, parameters: [] }, }, commandsResponse: { alarm: { ID: 0x00, parameters: [ { name: "alarmcode", type: enums_1.DataType.ENUM8 }, { name: "clusterid", type: enums_1.DataType.CLUSTER_ID }, ], required: true, }, getRsp: { ID: 0x01, parameters: [ { name: "status", type: enums_1.DataType.ENUM8 }, { name: "alarmcode", type: enums_1.DataType.ENUM8, conditions: [{ type: enums_1.ParameterCondition.FIELD_EQUAL, field: "status", value: status_1.Status.SUCCESS }], }, { name: "clusterid", type: enums_1.DataType.CLUSTER_ID, conditions: [{ type: enums_1.ParameterCondition.FIELD_EQUAL, field: "status", value: status_1.Status.SUCCESS }], }, { name: "timestamp", type: enums_1.DataType.UINT32, conditions: [{ type: enums_1.ParameterCondition.FIELD_EQUAL, field: "status", value: status_1.Status.SUCCESS }], }, ], }, // custom getEventLog: { ID: 0x02, parameters: [] }, }, }, genTime: { ID: 0x000a, attributes: { time: { ID: 0x0000, type: enums_1.DataType.UTC, write: true, required: true, max: 0xfffffffe, default: 0xffffffff }, timeStatus: { ID: 0x0001, type: enums_1.DataType.BITMAP8, write: true, required: true, default: 0 }, timeZone: { ID: 0x0002, type: enums_1.DataType.INT32, write: true, min: -86400, max: 86400, default: 0 }, dstStart: { ID: 0x0003, type: enums_1.DataType.UINT32, write: true, max: 0xfffffffe, default: 0xffffffff }, dstEnd: { ID: 0x0004, type: enums_1.DataType.UINT32, write: true, max: 0xfffffffe, default: 0xffffffff }, dstShift: { ID: 0x0005, type: enums_1.DataType.INT32, write: true, min: -86400, max: 86400, default: 0 }, standardTime: { ID: 0x0006, type: enums_1.DataType.UINT32, max: 0xfffffffe, default: 0xffffffff }, localTime: { ID: 0x0007, type: enums_1.DataType.UINT32, max: 0xfffffffe, default: 0xffffffff }, lastSetTime: { ID: 0x0008, type: enums_1.DataType.UTC, default: 0xffffffff }, validUntilTime: { ID: 0x0009, type: enums_1.DataType.UTC, write: true, default: 0xffffffff }, }, commands: {}, commandsResponse: {}, }, genRssiLocation: { ID: 0x000b, attributes: { /** [2: coordinator system, 1: 2-D, 1: absolute] */ type: { ID: 0x0000, type: enums_1.DataType.DATA8, required: true, write: true }, method: { ID: 0x0001, type: enums_1.DataType.ENUM8, required: true, write: true }, age: { ID: 0x0002, type: enums_1.DataType.UINT16, max: 0xffff }, qualityMeasure: { ID: 0x0003, type: enums_1.DataType.UINT8, max: 100 }, numOfDevices: { ID: 0x0004, type: enums_1.DataType.UINT8, max: 0xff }, coordinate1: { ID: 0x0010, type: enums_1.DataType.INT16, required: true, write: true, min: -0x8000, max: 0x7fff }, coordinate2: { ID: 0x0011, type: enums_1.DataType.INT16, required: true, write: true, min: -0x8000, max: 0x7fff }, coordinate3: { ID: 0x0012, type: enums_1.DataType.INT16, write: true, min: -0x8000, max: 0x7fff }, power: { ID: 0x0013, type: enums_1.DataType.INT16, required: true, write: true, min: -0x8000, max: 0x7fff }, pathLossExponent: { ID: 0x0014, type: enums_1.DataType.UINT16, required: true, write: true }, reportingPeriod: { ID: 0x0015, type: enums_1.DataType.UINT16, write: true, max: 0xffff }, calcPeriod: { ID: 0x0016, type: enums_1.DataType.UINT16, write: true, max: 0xffff }, numRSSIMeasurements: { ID: 0x0017, type: enums_1.DataType.UINT8, required: true, write: true, min: 0x01, max: 0xff }, }, commands: { setAbsolute: { ID: 0x00, parameters: [ { name: "coordinate1", type: enums_1.DataType.INT16 }, { name: "coordinate2", type: enums_1.DataType.INT16 }, { name: "coordinate3", type: enums_1.DataType.INT16 }, { name: "power", type: enums_1.DataType.INT16 }, { name: "pathLossExponent", type: enums_1.DataType.UINT16 }, ], required: true, }, setDeviceConfig: { ID: 0x01, parameters: [ { name: "power", type: enums_1.DataType.INT16 }, { name: "pathLossExponent", type: enums_1.DataType.UINT16 }, { name: "calcPeriod", type: enums_1.DataType.UINT16 }, { name: "numRssiMeasurements", type: enums_1.DataType.UINT8 }, { name: "reportingPeriod", type: enums_1.DataType.UINT16 }, ], required: true, }, getDeviceConfig: { ID: 0x02, parameters: [{ name: "targetAddr", type: enums_1.DataType.IEEE_ADDR }], required: true }, getLocationData: { ID: 0x03, parameters: [ /** [3: reserved, 1: compactResponse, 1: broadcastResponse, 1: broadcastIndicator, 1: recalculate, 1: absoluteOnly] */ { name: "info", type: enums_1.DataType.BITMAP8 }, { name: "numResponses", type: enums_1.DataType.UINT8 }, { name: "targetAddr", type: enums_1.DataType.IEEE_ADDR, conditions: [{ type: enums_1.ParameterCondition.BITMASK_SET, param: "info", mask: 0b100, reversed: true }], }, ], required: true, }, rssiResponse: { ID: 0x04, parameters: [ { name: "replyingDevice", type: enums_1.DataType.IEEE_ADDR }, { name: "x", type: enums_1.DataType.INT16 }, { name: "y", type: enums_1.DataType.INT16 }, { name: "z", type: enums_1.DataType.INT16 }, { name: "rssi", type: enums_1.DataType.INT8 }, { name: "numRssiMeasurements", type: enums_1.DataType.UINT8 }, ], }, sendPings: { ID: 0x05, parameters: [ { name: "targetAddr", type: enums_1.DataType.IEEE_ADDR }, { name: "numRssiMeasurements", type: enums_1.DataType.UINT8 }, { name: "calcPeriod", type: enums_1.DataType.UINT16 }, ], }, anchorNodeAnnounce: { ID: 0x06, parameters: [ { name: "anchorNodeAddr", type: enums_1.DataType.IEEE_ADDR }, { name: "x", type: enums_1.DataType.INT16 }, { name: "y", type: enums_1.DataType.INT16 }, { name: "z", type: enums_1.DataType.INT16 }, ], }, }, commandsResponse: { deviceConfigResponse: { ID: 0x00, parameters: [ { name: "status", type: enums_1.DataType.ENUM8 }, { name: "power", type: enums_1.DataType.INT16, conditions: [{ type: enums_1.ParameterCondition.FIELD_EQUAL, field: "status", value: status_1.Status.SUCCESS }], }, { name: "pathLossExponent", type: enums_1.DataType.UINT16, conditions: [{ type: enums_1.ParameterCondition.FIELD_EQUAL, field: "status", value: status_1.Status.SUCCESS }], }, { name: "calcPeriod", type: enums_1.DataType.UINT16, conditions: [{ type: enums_1.ParameterCondition.FIELD_EQUAL, field: "status", value: status_1.Status.SUCCESS }], }, { name: "numRssiMeasurements", type: enums_1.DataType.UINT8, conditions: [{ type: enums_1.ParameterCondition.FIELD_EQUAL, field: "status", value: status_1.Status.SUCCESS }], }, { name: "reportingPeriod", type: enums_1.DataType.UINT16, conditions: [{ type: enums_1.ParameterCondition.FIELD_EQUAL, field: "status", value: status_1.Status.SUCCESS }], }, ], required: true, }, locationDataResponse: { ID: 0x01, parameters: [ { name: "status", type: enums_1.DataType.ENUM8 }, { name: "type", type: enums_1.DataType.DATA8, conditions: [{ type: enums_1.ParameterCondition.FIELD_EQUAL, field: "status", value: status_1.Status.SUCCESS }], }, { name: "coordinate1", type: enums_1.DataType.INT16, conditions: [{ type: enums_1.ParameterCondition.FIELD_EQUAL, field: "status", value: status_1.Status.SUCCESS }], }, { name: "coordinate2", type: enums_1.DataType.INT16, conditions: [{ type: enums_1.ParameterCondition.FIELD_EQUAL, field: "status", value: status_1.Status.SUCCESS }], }, { name: "coordinate3", type: enums_1.DataType.INT16, conditions: [{ type: enums_1.ParameterCondition.FIELD_EQUAL, field: "statu