zigbee-herdsman
Version:
An open source Zigbee gateway solution with node.js.
913 lines • 433 kB
JavaScript
"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