zigbee-herdsman
Version:
An open source ZigBee gateway solution with node.js.
1,209 lines (1,208 loc) • 239 kB
text/typescript
import {BuffaloZclDataType, DataType, ParameterCondition} from "./enums";
import {ManufacturerCode} from "./manufacturerCode";
import {Status} from "./status";
import type {ClusterDefinition, ClusterName} from "./tstype";
export const Clusters: Readonly<Record<ClusterName, Readonly<ClusterDefinition>>> = {
genBasic: {
ID: 0,
attributes: {
zclVersion: {ID: 0, type: DataType.UINT8},
appVersion: {ID: 1, type: DataType.UINT8},
stackVersion: {ID: 2, type: DataType.UINT8},
hwVersion: {ID: 3, type: DataType.UINT8},
manufacturerName: {ID: 4, type: DataType.CHAR_STR},
modelId: {ID: 5, type: DataType.CHAR_STR},
dateCode: {ID: 6, type: DataType.CHAR_STR},
powerSource: {ID: 7, type: DataType.ENUM8},
appProfileVersion: {ID: 8, type: DataType.ENUM8},
genericDeviceType: {ID: 9, type: DataType.ENUM8},
productCode: {ID: 10, type: DataType.OCTET_STR},
productUrl: {ID: 11, type: DataType.CHAR_STR},
manufacturerVersionDetails: {ID: 12, type: DataType.CHAR_STR},
serialNumber: {ID: 13, type: DataType.CHAR_STR},
productLabel: {ID: 14, type: DataType.CHAR_STR},
locationDesc: {ID: 16, type: DataType.CHAR_STR},
physicalEnv: {ID: 17, type: DataType.ENUM8},
deviceEnabled: {ID: 18, type: DataType.BOOLEAN},
alarmMask: {ID: 19, type: DataType.BITMAP8},
disableLocalConfig: {ID: 20, type: DataType.BITMAP8},
swBuildId: {ID: 0x4000, type: DataType.CHAR_STR},
schneiderMeterRadioPower: {ID: 0xe200, type: DataType.INT8, manufacturerCode: ManufacturerCode.SCHNEIDER_ELECTRIC},
},
commands: {
resetFactDefault: {
ID: 0,
parameters: [],
},
tuyaSetup: {
ID: 0xf0,
parameters: [],
},
},
commandsResponse: {},
},
genPowerCfg: {
ID: 1,
attributes: {
mainsVoltage: {ID: 0, type: DataType.UINT16},
mainsFrequency: {ID: 1, type: DataType.UINT8},
mainsAlarmMask: {ID: 16, type: DataType.BITMAP8},
mainsVoltMinThres: {ID: 17, type: DataType.UINT16},
mainsVoltMaxThres: {ID: 18, type: DataType.UINT16},
mainsVoltageDwellTripPoint: {ID: 19, type: DataType.UINT16},
batteryVoltage: {ID: 32, type: DataType.UINT8},
batteryPercentageRemaining: {ID: 33, type: DataType.UINT8},
batteryManufacturer: {ID: 48, type: DataType.CHAR_STR},
batterySize: {ID: 49, type: DataType.ENUM8},
batteryAHrRating: {ID: 50, type: DataType.UINT16},
batteryQuantity: {ID: 51, type: DataType.UINT8},
batteryRatedVoltage: {ID: 52, type: DataType.UINT8},
batteryAlarmMask: {ID: 53, type: DataType.BITMAP8},
batteryVoltMinThres: {ID: 54, type: DataType.UINT8},
batteryVoltThres1: {ID: 55, type: DataType.UINT8},
batteryVoltThres2: {ID: 56, type: DataType.UINT8},
batteryVoltThres3: {ID: 57, type: DataType.UINT8},
batteryPercentMinThres: {ID: 58, type: DataType.UINT8},
batteryPercentThres1: {ID: 59, type: DataType.UINT8},
batteryPercentThres2: {ID: 60, type: DataType.UINT8},
batteryPercentThres3: {ID: 61, type: DataType.UINT8},
batteryAlarmState: {ID: 62, type: DataType.BITMAP32},
},
commands: {},
commandsResponse: {},
},
genDeviceTempCfg: {
ID: 2,
attributes: {
currentTemperature: {ID: 0, type: DataType.INT16},
minTempExperienced: {ID: 1, type: DataType.INT16},
maxTempExperienced: {ID: 2, type: DataType.INT16},
overTempTotalDwell: {ID: 3, type: DataType.UINT16},
devTempAlarmMask: {ID: 16, type: DataType.BITMAP8},
lowTempThres: {ID: 17, type: DataType.INT16},
highTempThres: {ID: 18, type: DataType.INT16},
lowTempDwellTripPoint: {ID: 19, type: DataType.UINT24},
highTempDwellTripPoint: {ID: 20, type: DataType.UINT24},
},
commands: {},
commandsResponse: {},
},
genIdentify: {
ID: 3,
attributes: {
identifyTime: {ID: 0, type: DataType.UINT16},
identifyCommissionState: {ID: 1, type: DataType.UNKNOWN},
},
commands: {
identify: {
ID: 0,
parameters: [{name: "identifytime", type: DataType.UINT16}],
},
identifyQuery: {
ID: 1,
parameters: [],
},
ezmodeInvoke: {
ID: 2,
parameters: [{name: "action", type: DataType.UINT8}],
},
updateCommissionState: {
ID: 3,
parameters: [
{name: "action", type: DataType.UINT8},
{name: "commstatemask", type: DataType.UINT8},
],
},
triggerEffect: {
ID: 64,
parameters: [
{name: "effectid", type: DataType.UINT8},
{name: "effectvariant", type: DataType.UINT8},
],
},
},
commandsResponse: {
identifyQueryRsp: {
ID: 0,
parameters: [{name: "timeout", type: DataType.UINT16}],
},
},
},
genGroups: {
ID: 4,
attributes: {
nameSupport: {ID: 0, type: DataType.BITMAP8},
},
commands: {
add: {
ID: 0,
response: 0,
parameters: [
{name: "groupid", type: DataType.UINT16},
{name: "groupname", type: DataType.CHAR_STR},
],
},
view: {
ID: 1,
response: 1,
parameters: [{name: "groupid", type: DataType.UINT16}],
},
getMembership: {
ID: 2,
response: 2,
parameters: [
{name: "groupcount", type: DataType.UINT8},
{name: "grouplist", type: BuffaloZclDataType.LIST_UINT16},
],
},
remove: {
ID: 3,
response: 3,
parameters: [{name: "groupid", type: DataType.UINT16}],
},
removeAll: {
ID: 4,
parameters: [],
},
addIfIdentifying: {
ID: 5,
parameters: [
{name: "groupid", type: DataType.UINT16},
{name: "groupname", type: DataType.CHAR_STR},
],
},
miboxerSetZones: {
ID: 0xf0,
parameters: [{name: "zones", type: BuffaloZclDataType.LIST_MIBOXER_ZONES}],
},
},
commandsResponse: {
addRsp: {
ID: 0,
parameters: [
{name: "status", type: DataType.UINT8},
{name: "groupid", type: DataType.UINT16},
],
},
viewRsp: {
ID: 1,
parameters: [
{name: "status", type: DataType.UINT8},
{name: "groupid", type: DataType.UINT16},
{name: "groupname", type: DataType.CHAR_STR},
],
},
getMembershipRsp: {
ID: 2,
parameters: [
{name: "capacity", type: DataType.UINT8},
{name: "groupcount", type: DataType.UINT8},
{name: "grouplist", type: BuffaloZclDataType.LIST_UINT16},
],
},
removeRsp: {
ID: 3,
parameters: [
{name: "status", type: DataType.UINT8},
{name: "groupid", type: DataType.UINT16},
],
},
},
},
genScenes: {
ID: 5,
attributes: {
count: {ID: 0, type: DataType.UINT8},
currentScene: {ID: 1, type: DataType.UINT8},
currentGroup: {ID: 2, type: DataType.UINT16},
sceneValid: {ID: 3, type: DataType.BOOLEAN},
nameSupport: {ID: 4, type: DataType.BITMAP8},
lastCfgBy: {ID: 5, type: DataType.IEEE_ADDR},
},
commands: {
add: {
ID: 0,
response: 0,
parameters: [
{name: "groupid", type: DataType.UINT16},
{name: "sceneid", type: DataType.UINT8},
{name: "transtime", type: DataType.UINT16},
{name: "scenename", type: DataType.CHAR_STR},
{name: "extensionfieldsets", type: BuffaloZclDataType.EXTENSION_FIELD_SETS},
],
},
view: {
ID: 1,
response: 1,
parameters: [
{name: "groupid", type: DataType.UINT16},
{name: "sceneid", type: DataType.UINT8},
],
},
remove: {
ID: 2,
response: 2,
parameters: [
{name: "groupid", type: DataType.UINT16},
{name: "sceneid", type: DataType.UINT8},
],
},
removeAll: {
ID: 3,
response: 3,
parameters: [{name: "groupid", type: DataType.UINT16}],
},
store: {
ID: 4,
response: 4,
parameters: [
{name: "groupid", type: DataType.UINT16},
{name: "sceneid", type: DataType.UINT8},
],
},
recall: {
ID: 5,
parameters: [
{name: "groupid", type: DataType.UINT16},
{name: "sceneid", type: DataType.UINT8},
],
},
getSceneMembership: {
ID: 6,
response: 6,
parameters: [{name: "groupid", type: DataType.UINT16}],
},
enhancedAdd: {
ID: 64,
response: 64,
parameters: [
{name: "groupid", type: DataType.UINT16},
{name: "sceneid", type: DataType.UINT8},
{name: "transtime", type: DataType.UINT16},
{name: "scenename", type: DataType.CHAR_STR},
{name: "extensionfieldsets", type: BuffaloZclDataType.EXTENSION_FIELD_SETS},
],
},
enhancedView: {
ID: 65,
response: 65,
parameters: [
{name: "groupid", type: DataType.UINT16},
{name: "sceneid", type: DataType.UINT8},
],
},
copy: {
ID: 66,
response: 66,
parameters: [
{name: "mode", type: DataType.UINT8},
{name: "groupidfrom", type: DataType.UINT16},
{name: "sceneidfrom", type: DataType.UINT8},
{name: "groupidto", type: DataType.UINT16},
{name: "sceneidto", type: DataType.UINT8},
],
},
tradfriArrowSingle: {
ID: 7,
parameters: [
{name: "value", type: DataType.UINT16},
{name: "value2", type: DataType.UINT16},
],
},
tradfriArrowHold: {
ID: 8,
parameters: [{name: "value", type: DataType.UINT16}],
},
tradfriArrowRelease: {
ID: 9,
parameters: [{name: "value", type: DataType.UINT16}],
},
},
commandsResponse: {
addRsp: {
ID: 0,
parameters: [
{name: "status", type: DataType.UINT8},
{name: "groupId", type: DataType.UINT16},
{name: "sceneId", type: DataType.UINT8},
],
},
viewRsp: {
ID: 1,
parameters: [
{name: "status", type: DataType.UINT8},
{name: "groupid", type: DataType.UINT16},
{name: "sceneid", type: DataType.UINT8},
{name: "transtime", type: DataType.UINT16, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
{name: "scenename", type: DataType.CHAR_STR, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
{
name: "extensionfieldsets",
type: BuffaloZclDataType.EXTENSION_FIELD_SETS,
conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}],
},
],
},
removeRsp: {
ID: 2,
parameters: [
{name: "status", type: DataType.UINT8},
{name: "groupid", type: DataType.UINT16},
{name: "sceneid", type: DataType.UINT8},
],
},
removeAllRsp: {
ID: 3,
parameters: [
{name: "status", type: DataType.UINT8},
{name: "groupid", type: DataType.UINT16},
],
},
storeRsp: {
ID: 4,
parameters: [
{name: "status", type: DataType.UINT8},
{name: "groupid", type: DataType.UINT16},
{name: "sceneid", type: DataType.UINT8},
],
},
getSceneMembershipRsp: {
ID: 6,
parameters: [
{name: "status", type: DataType.UINT8},
{name: "capacity", type: DataType.UINT8},
{name: "groupid", type: DataType.UINT16},
{name: "scenecount", type: DataType.UINT8, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
{
name: "scenelist",
type: BuffaloZclDataType.LIST_UINT8,
conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}],
},
],
},
enhancedAddRsp: {
ID: 64,
parameters: [
{name: "status", type: DataType.UINT8},
{name: "groupId", type: DataType.UINT16},
{name: "sceneId", type: DataType.UINT8},
],
},
enhancedViewRsp: {
ID: 65,
parameters: [
{name: "status", type: DataType.UINT8},
{name: "groupid", type: DataType.UINT16},
{name: "sceneid", type: DataType.UINT8},
{name: "transtime", type: DataType.UINT16, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
{name: "scenename", type: DataType.CHAR_STR, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
{
name: "extensionfieldsets",
type: BuffaloZclDataType.EXTENSION_FIELD_SETS,
conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}],
},
],
},
copyRsp: {
ID: 66,
parameters: [
{name: "status", type: DataType.UINT8},
{name: "groupidfrom", type: DataType.UINT16},
{name: "sceneidfrom", type: DataType.UINT8},
],
},
},
},
genOnOff: {
ID: 6,
attributes: {
onOff: {ID: 0, type: DataType.BOOLEAN},
globalSceneCtrl: {ID: 16384, type: DataType.BOOLEAN},
onTime: {ID: 16385, type: DataType.UINT16},
offWaitTime: {ID: 16386, type: DataType.UINT16},
startUpOnOff: {ID: 16387, type: DataType.ENUM8},
tuyaBacklightSwitch: {ID: 0x5000, type: DataType.ENUM8},
tuyaBacklightMode: {ID: 0x8001, type: DataType.ENUM8},
moesStartUpOnOff: {ID: 0x8002, type: DataType.ENUM8},
tuyaOperationMode: {ID: 0x8004, type: DataType.ENUM8},
elkoPreWarningTime: {ID: 0xe000, type: DataType.UINT16, manufacturerCode: ManufacturerCode.ADEO},
elkoOnTimeReload: {ID: 0xe001, type: DataType.UINT32, manufacturerCode: ManufacturerCode.ADEO},
elkoOnTimeReloadOptions: {ID: 0xe002, type: DataType.BITMAP8, manufacturerCode: ManufacturerCode.ADEO},
nodonTransitionTime: {ID: 0x0001, type: DataType.UINT16, manufacturerCode: ManufacturerCode.NODON},
},
commands: {
off: {
ID: 0,
parameters: [],
},
on: {
ID: 1,
parameters: [],
},
toggle: {
ID: 2,
parameters: [],
},
offWithEffect: {
ID: 64,
parameters: [
{name: "effectid", type: DataType.UINT8},
{name: "effectvariant", type: DataType.UINT8},
],
},
onWithRecallGlobalScene: {
ID: 65,
parameters: [],
},
onWithTimedOff: {
ID: 66,
parameters: [
{name: "ctrlbits", type: DataType.UINT8},
{name: "ontime", type: DataType.UINT16},
{name: "offwaittime", type: DataType.UINT16},
],
},
tuyaAction: {
ID: 0xfd,
parameters: [
{name: "value", type: DataType.UINT8},
{name: "data", type: BuffaloZclDataType.BUFFER},
],
},
tuyaAction2: {
ID: 0xfc,
parameters: [{name: "value", type: DataType.UINT8}],
},
},
commandsResponse: {},
},
genOnOffSwitchCfg: {
ID: 7,
attributes: {
switchType: {ID: 0, type: DataType.ENUM8},
switchMultiFunction: {ID: 2, type: DataType.UNKNOWN},
switchActions: {ID: 16, type: DataType.ENUM8},
},
commands: {},
commandsResponse: {},
},
genLevelCtrl: {
ID: 8,
attributes: {
currentLevel: {ID: 0, type: DataType.UINT8},
remainingTime: {ID: 1, type: DataType.UINT16},
minLevel: {ID: 2, type: DataType.UINT8},
maxLevel: {ID: 3, type: DataType.UINT8},
options: {ID: 15, type: DataType.BITMAP8},
onOffTransitionTime: {ID: 16, type: DataType.UINT16},
onLevel: {ID: 17, type: DataType.UINT8},
onTransitionTime: {ID: 18, type: DataType.UINT16},
offTransitionTime: {ID: 19, type: DataType.UINT16},
defaultMoveRate: {ID: 20, type: DataType.UINT16},
startUpCurrentLevel: {ID: 16384, type: DataType.UINT8},
elkoStartUpCurrentLevel: {ID: 0x4000, type: DataType.UINT8, manufacturerCode: ManufacturerCode.ADEO},
},
commands: {
moveToLevel: {
ID: 0,
parameters: [
{name: "level", type: DataType.UINT8},
{name: "transtime", type: DataType.UINT16},
],
},
move: {
ID: 1,
parameters: [
{name: "movemode", type: DataType.UINT8},
{name: "rate", type: DataType.UINT8},
],
},
step: {
ID: 2,
parameters: [
{name: "stepmode", type: DataType.UINT8},
{name: "stepsize", type: DataType.UINT8},
{name: "transtime", type: DataType.UINT16},
],
},
stop: {
ID: 3,
parameters: [],
},
moveToLevelWithOnOff: {
ID: 4,
parameters: [
{name: "level", type: DataType.UINT8},
{name: "transtime", type: DataType.UINT16},
],
},
moveWithOnOff: {
ID: 5,
parameters: [
{name: "movemode", type: DataType.UINT8},
{name: "rate", type: DataType.UINT8},
],
},
stepWithOnOff: {
ID: 6,
parameters: [
{name: "stepmode", type: DataType.UINT8},
{name: "stepsize", type: DataType.UINT8},
{name: "transtime", type: DataType.UINT16},
],
},
stopWithOnOff: {
ID: 7,
parameters: [],
},
moveToLevelTuya: {
ID: 240,
parameters: [
{name: "level", type: DataType.UINT16},
{name: "transtime", type: DataType.UINT16},
],
},
},
commandsResponse: {},
},
genAlarms: {
ID: 9,
attributes: {
alarmCount: {ID: 0, type: DataType.UINT16},
},
commands: {
reset: {
ID: 0,
parameters: [
{name: "alarmcode", type: DataType.UINT8},
{name: "clusterid", type: DataType.UINT16},
],
},
resetAll: {
ID: 1,
parameters: [],
},
getAlarm: {
ID: 2,
parameters: [],
},
resetLog: {
ID: 3,
parameters: [],
},
publishEventLog: {
ID: 4,
parameters: [],
},
},
commandsResponse: {
alarm: {
ID: 0,
parameters: [
{name: "alarmcode", type: DataType.UINT8},
{name: "clusterid", type: DataType.UINT16},
],
},
getRsp: {
ID: 1,
parameters: [
{name: "status", type: DataType.UINT8},
{name: "alarmcode", type: DataType.UINT8},
{name: "clusterid", type: DataType.UINT16},
{name: "timestamp", type: DataType.UINT32},
],
},
getEventLog: {
ID: 2,
parameters: [],
},
},
},
genTime: {
ID: 10,
attributes: {
time: {ID: 0, type: DataType.UTC},
timeStatus: {ID: 1, type: DataType.BITMAP8},
timeZone: {ID: 2, type: DataType.INT32},
dstStart: {ID: 3, type: DataType.UINT32},
dstEnd: {ID: 4, type: DataType.UINT32},
dstShift: {ID: 5, type: DataType.INT32},
standardTime: {ID: 6, type: DataType.UINT32},
localTime: {ID: 7, type: DataType.UINT32},
lastSetTime: {ID: 8, type: DataType.UTC},
validUntilTime: {ID: 9, type: DataType.UTC},
},
commands: {},
commandsResponse: {},
},
genRssiLocation: {
ID: 11,
attributes: {
type: {ID: 0, type: DataType.DATA8},
method: {ID: 1, type: DataType.ENUM8},
age: {ID: 2, type: DataType.UINT16},
qualityMeasure: {ID: 3, type: DataType.UINT8},
numOfDevices: {ID: 4, type: DataType.UINT8},
coordinate1: {ID: 16, type: DataType.INT16},
coordinate2: {ID: 17, type: DataType.INT16},
coordinate3: {ID: 18, type: DataType.INT16},
power: {ID: 19, type: DataType.INT16},
pathLossExponent: {ID: 20, type: DataType.UINT16},
reportingPeriod: {ID: 21, type: DataType.UINT16},
calcPeriod: {ID: 22, type: DataType.UINT16},
numRSSIMeasurements: {ID: 23, type: DataType.UINT16},
},
commands: {
setAbsolute: {
ID: 0,
parameters: [
{name: "coord1", type: DataType.INT16},
{name: "coord2", type: DataType.INT16},
{name: "coord3", type: DataType.INT16},
{name: "power", type: DataType.INT16},
{name: "pathlossexponent", type: DataType.UINT16},
],
},
setDevCfg: {
ID: 1,
parameters: [
{name: "power", type: DataType.INT16},
{name: "pathlossexponent", type: DataType.UINT16},
{name: "calperiod", type: DataType.UINT16},
{name: "numrssimeasurements", type: DataType.UINT8},
{name: "reportingperiod", type: DataType.UINT16},
],
},
getDevCfg: {
ID: 2,
parameters: [{name: "targetaddr", type: DataType.IEEE_ADDR}],
},
getData: {
ID: 3,
parameters: [
{name: "getdatainfo", type: DataType.UINT8},
{name: "numrsp", type: DataType.UINT8},
{name: "targetaddr", type: DataType.IEEE_ADDR},
],
},
},
commandsResponse: {
devCfgRsp: {
ID: 0,
parameters: [
{name: "status", type: DataType.UINT8},
{name: "power", type: DataType.INT16},
{name: "pathlossexp", type: DataType.UINT16},
{name: "calperiod", type: DataType.UINT16},
{name: "numrssimeasurements", type: DataType.UINT8},
{name: "reportingperiod", type: DataType.UINT16},
],
},
dataRsp: {
ID: 1,
parameters: [
{name: "status", type: DataType.UINT8},
{name: "locationtype", type: DataType.UINT8},
{name: "coord1", type: DataType.INT16},
{name: "coord2", type: DataType.INT16},
{name: "coord3", type: DataType.INT16},
{name: "power", type: DataType.INT16},
{name: "pathlossexp", type: DataType.UINT16},
{name: "locationmethod", type: DataType.UINT8},
{name: "qualitymeasure", type: DataType.UINT8},
{name: "locationage", type: DataType.UINT16},
],
},
dataNotif: {
ID: 2,
parameters: [
{name: "locationtype", type: DataType.UINT8},
{name: "coord1", type: DataType.INT16},
{name: "coord2", type: DataType.INT16},
{name: "coord3", type: DataType.INT16},
{name: "power", type: DataType.INT16},
{name: "pathlossexp", type: DataType.UINT16},
{name: "locationmethod", type: DataType.UINT8},
{name: "qualitymeasure", type: DataType.UINT8},
{name: "locationage", type: DataType.UINT16},
],
},
compactDataNotif: {
ID: 3,
parameters: [
{name: "locationtype", type: DataType.UINT8},
{name: "coord1", type: DataType.INT16},
{name: "coord2", type: DataType.INT16},
{name: "coord3", type: DataType.INT16},
{name: "qualitymeasure", type: DataType.UINT8},
{name: "locationage", type: DataType.UINT16},
],
},
rssiPing: {
ID: 4,
parameters: [{name: "locationtype", type: DataType.UINT8}],
},
},
},
genAnalogInput: {
ID: 12,
attributes: {
description: {ID: 28, type: DataType.CHAR_STR},
maxPresentValue: {ID: 65, type: DataType.SINGLE_PREC},
minPresentValue: {ID: 69, type: DataType.SINGLE_PREC},
outOfService: {ID: 81, type: DataType.BOOLEAN},
presentValue: {ID: 85, type: DataType.SINGLE_PREC},
reliability: {ID: 103, type: DataType.ENUM8},
resolution: {ID: 106, type: DataType.SINGLE_PREC},
statusFlags: {ID: 111, type: DataType.BITMAP8},
engineeringUnits: {ID: 117, type: DataType.ENUM16},
applicationType: {ID: 256, type: DataType.UINT32},
},
commands: {},
commandsResponse: {},
},
genAnalogOutput: {
ID: 13,
attributes: {
description: {ID: 28, type: DataType.CHAR_STR},
maxPresentValue: {ID: 65, type: DataType.SINGLE_PREC},
minPresentValue: {ID: 69, type: DataType.SINGLE_PREC},
outOfService: {ID: 81, type: DataType.BOOLEAN},
presentValue: {ID: 85, type: DataType.SINGLE_PREC},
priorityArray: {ID: 87, type: DataType.ARRAY},
reliability: {ID: 103, type: DataType.ENUM8},
relinquishDefault: {ID: 104, type: DataType.SINGLE_PREC},
resolution: {ID: 106, type: DataType.SINGLE_PREC},
statusFlags: {ID: 111, type: DataType.BITMAP8},
engineeringUnits: {ID: 117, type: DataType.ENUM16},
applicationType: {ID: 256, type: DataType.UINT32},
},
commands: {},
commandsResponse: {},
},
genAnalogValue: {
ID: 14,
attributes: {
description: {ID: 28, type: DataType.CHAR_STR},
outOfService: {ID: 81, type: DataType.BOOLEAN},
presentValue: {ID: 85, type: DataType.SINGLE_PREC},
priorityArray: {ID: 87, type: DataType.ARRAY},
reliability: {ID: 103, type: DataType.ENUM8},
relinquishDefault: {ID: 104, type: DataType.SINGLE_PREC},
statusFlags: {ID: 111, type: DataType.BITMAP8},
engineeringUnits: {ID: 117, type: DataType.ENUM16},
applicationType: {ID: 256, type: DataType.UINT32},
},
commands: {},
commandsResponse: {},
},
genBinaryInput: {
ID: 15,
attributes: {
activeText: {ID: 4, type: DataType.CHAR_STR},
description: {ID: 28, type: DataType.CHAR_STR},
inactiveText: {ID: 46, type: DataType.CHAR_STR},
outOfService: {ID: 81, type: DataType.BOOLEAN},
polarity: {ID: 84, type: DataType.ENUM8},
presentValue: {ID: 85, type: DataType.BOOLEAN},
reliability: {ID: 103, type: DataType.ENUM8},
statusFlags: {ID: 111, type: DataType.BITMAP8},
applicationType: {ID: 256, type: DataType.UINT32},
},
commands: {},
commandsResponse: {},
},
genBinaryOutput: {
ID: 16,
attributes: {
activeText: {ID: 4, type: DataType.CHAR_STR},
description: {ID: 28, type: DataType.CHAR_STR},
inactiveText: {ID: 46, type: DataType.CHAR_STR},
minimumOffTime: {ID: 66, type: DataType.UINT32},
minimumOnTime: {ID: 67, type: DataType.UINT32},
outOfService: {ID: 81, type: DataType.BOOLEAN},
polarity: {ID: 84, type: DataType.ENUM8},
presentValue: {ID: 85, type: DataType.BOOLEAN},
priorityArray: {ID: 87, type: DataType.ARRAY},
reliability: {ID: 103, type: DataType.ENUM8},
relinquishDefault: {ID: 104, type: DataType.BOOLEAN},
statusFlags: {ID: 111, type: DataType.BITMAP8},
applicationType: {ID: 256, type: DataType.UINT32},
},
commands: {},
commandsResponse: {},
},
genBinaryValue: {
ID: 17,
attributes: {
activeText: {ID: 4, type: DataType.CHAR_STR},
description: {ID: 28, type: DataType.CHAR_STR},
inactiveText: {ID: 46, type: DataType.CHAR_STR},
minimumOffTime: {ID: 66, type: DataType.UINT32},
minimumOnTime: {ID: 67, type: DataType.UINT32},
outOfService: {ID: 81, type: DataType.BOOLEAN},
presentValue: {ID: 85, type: DataType.BOOLEAN},
priorityArray: {ID: 87, type: DataType.ARRAY},
reliability: {ID: 103, type: DataType.ENUM8},
relinquishDefault: {ID: 104, type: DataType.BOOLEAN},
statusFlags: {ID: 111, type: DataType.BITMAP8},
applicationType: {ID: 256, type: DataType.UINT32},
},
commands: {},
commandsResponse: {},
},
genMultistateInput: {
ID: 18,
attributes: {
stateText: {ID: 14, type: DataType.ARRAY},
description: {ID: 28, type: DataType.CHAR_STR},
numberOfStates: {ID: 74, type: DataType.UINT16},
outOfService: {ID: 81, type: DataType.BOOLEAN},
presentValue: {ID: 85, type: DataType.UINT16},
reliability: {ID: 103, type: DataType.ENUM8},
statusFlags: {ID: 111, type: DataType.BITMAP8},
applicationType: {ID: 256, type: DataType.UINT32},
},
commands: {},
commandsResponse: {},
},
genMultistateOutput: {
ID: 19,
attributes: {
stateText: {ID: 14, type: DataType.ARRAY},
description: {ID: 28, type: DataType.CHAR_STR},
numberOfStates: {ID: 74, type: DataType.UINT16},
outOfService: {ID: 81, type: DataType.BOOLEAN},
presentValue: {ID: 85, type: DataType.UINT16},
priorityArray: {ID: 87, type: DataType.ARRAY},
reliability: {ID: 103, type: DataType.ENUM8},
relinquishDefault: {ID: 104, type: DataType.UINT16},
statusFlags: {ID: 111, type: DataType.BITMAP8},
applicationType: {ID: 256, type: DataType.UINT32},
},
commands: {},
commandsResponse: {},
},
genMultistateValue: {
ID: 20,
attributes: {
stateText: {ID: 14, type: DataType.ARRAY},
description: {ID: 28, type: DataType.CHAR_STR},
numberOfStates: {ID: 74, type: DataType.UINT16},
outOfService: {ID: 81, type: DataType.BOOLEAN},
presentValue: {ID: 85, type: DataType.UINT16},
priorityArray: {ID: 87, type: DataType.ARRAY},
reliability: {ID: 103, type: DataType.ENUM8},
relinquishDefault: {ID: 104, type: DataType.UINT16},
statusFlags: {ID: 111, type: DataType.BITMAP8},
applicationType: {ID: 256, type: DataType.UINT32},
},
commands: {},
commandsResponse: {},
},
genCommissioning: {
ID: 21,
attributes: {
shortress: {ID: 0, type: DataType.UINT16},
extendedPANId: {ID: 1, type: DataType.IEEE_ADDR},
panId: {ID: 2, type: DataType.UINT16},
channelmask: {ID: 3, type: DataType.BITMAP32},
protocolVersion: {ID: 4, type: DataType.UINT8},
stackProfile: {ID: 5, type: DataType.UINT8},
startupControl: {ID: 6, type: DataType.ENUM8},
trustCenterress: {ID: 16, type: DataType.IEEE_ADDR},
trustCenterMasterKey: {ID: 17, type: DataType.SEC_KEY},
networkKey: {ID: 18, type: DataType.SEC_KEY},
useInsecureJoin: {ID: 19, type: DataType.BOOLEAN},
preconfiguredLinkKey: {ID: 20, type: DataType.SEC_KEY},
networkKeySeqNum: {ID: 21, type: DataType.UINT8},
networkKeyType: {ID: 22, type: DataType.ENUM8},
networkManagerress: {ID: 23, type: DataType.UINT16},
scanAttempts: {ID: 32, type: DataType.UINT8},
timeBetweenScans: {ID: 33, type: DataType.UINT16},
rejoinInterval: {ID: 34, type: DataType.UINT16},
maxRejoinInterval: {ID: 35, type: DataType.UINT16},
indirectPollRate: {ID: 48, type: DataType.UINT16},
parentRetryThreshold: {ID: 49, type: DataType.UINT8},
concentratorFlag: {ID: 64, type: DataType.BOOLEAN},
concentratorRus: {ID: 65, type: DataType.UINT8},
concentratorDiscoveryTime: {ID: 66, type: DataType.UINT8},
},
commands: {
restartDevice: {
ID: 0,
parameters: [
{name: "options", type: DataType.UINT8},
{name: "delay", type: DataType.UINT8},
{name: "jitter", type: DataType.UINT8},
],
},
saveStartupParams: {
ID: 1,
parameters: [
{name: "options", type: DataType.UINT8},
{name: "index", type: DataType.UINT8},
],
},
restoreStartupParams: {
ID: 2,
parameters: [
{name: "options", type: DataType.UINT8},
{name: "index", type: DataType.UINT8},
],
},
resetStartupParams: {
ID: 3,
parameters: [
{name: "options", type: DataType.UINT8},
{name: "index", type: DataType.UINT8},
],
},
},
commandsResponse: {
restartDeviceRsp: {
ID: 0,
parameters: [{name: "status", type: DataType.UINT8}],
},
saveStartupParamsRsp: {
ID: 1,
parameters: [{name: "status", type: DataType.UINT8}],
},
restoreStartupParamsRsp: {
ID: 2,
parameters: [{name: "status", type: DataType.UINT8}],
},
resetStartupParamsRsp: {
ID: 3,
parameters: [{name: "status", type: DataType.UINT8}],
},
},
},
genOta: {
ID: 25,
attributes: {
upgradeServerId: {ID: 0, type: DataType.IEEE_ADDR},
fileOffset: {ID: 1, type: DataType.UINT32},
currentFileVersion: {ID: 2, type: DataType.UINT32},
currentZigbeeStackVersion: {ID: 3, type: DataType.UINT16},
downloadedFileVersion: {ID: 4, type: DataType.UINT32},
downloadedZigbeeStackVersion: {ID: 5, type: DataType.UINT16},
imageUpgradeStatus: {ID: 6, type: DataType.ENUM8},
manufacturerId: {ID: 7, type: DataType.UINT16},
imageTypeId: {ID: 8, type: DataType.UINT16},
minimumBlockReqDelay: {ID: 9, type: DataType.UINT16},
imageStamp: {ID: 10, type: DataType.UINT32},
},
commands: {
queryNextImageRequest: {
ID: 1,
response: 2,
parameters: [
{name: "fieldControl", type: DataType.UINT8},
{name: "manufacturerCode", type: DataType.UINT16},
{name: "imageType", type: DataType.UINT16},
{name: "fileVersion", type: DataType.UINT32},
],
},
imageBlockRequest: {
ID: 3,
response: 5,
parameters: [
{name: "fieldControl", type: DataType.UINT8},
{name: "manufacturerCode", type: DataType.UINT16},
{name: "imageType", type: DataType.UINT16},
{name: "fileVersion", type: DataType.UINT32},
{name: "fileOffset", type: DataType.UINT32},
{name: "maximumDataSize", type: DataType.UINT8},
],
},
imagePageRequest: {
ID: 4,
response: 5,
parameters: [
{name: "fieldControl", type: DataType.UINT8},
{name: "manufacturerCode", type: DataType.UINT16},
{name: "imageType", type: DataType.UINT16},
{name: "fileVersion", type: DataType.UINT32},
{name: "fileOffset", type: DataType.UINT32},
{name: "maximumDataSize", type: DataType.UINT8},
{name: "pageSize", type: DataType.UINT16},
{name: "responseSpacing", type: DataType.UINT16},
],
},
upgradeEndRequest: {
ID: 6,
response: 7,
parameters: [
{name: "status", type: DataType.UINT8},
{name: "manufacturerCode", type: DataType.UINT16},
{name: "imageType", type: DataType.UINT16},
{name: "fileVersion", type: DataType.UINT32},
],
},
},
commandsResponse: {
imageNotify: {
ID: 0,
parameters: [
{name: "payloadType", type: DataType.UINT8},
{name: "queryJitter", type: DataType.UINT8},
],
},
queryNextImageResponse: {
ID: 2,
parameters: [
{name: "status", type: DataType.UINT8},
{name: "manufacturerCode", type: DataType.UINT16, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
{name: "imageType", type: DataType.UINT16, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
{name: "fileVersion", type: DataType.UINT32, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
{name: "imageSize", type: DataType.UINT32, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
],
},
imageBlockResponse: {
ID: 5,
parameters: [
{name: "status", type: DataType.UINT8},
{name: "manufacturerCode", type: DataType.UINT16},
{name: "imageType", type: DataType.UINT16},
{name: "fileVersion", type: DataType.UINT32},
{name: "fileOffset", type: DataType.UINT32},
{name: "dataSize", type: DataType.UINT8},
{name: "data", type: BuffaloZclDataType.BUFFER},
],
},
upgradeEndResponse: {
ID: 7,
parameters: [
{name: "manufacturerCode", type: DataType.UINT16},
{name: "imageType", type: DataType.UINT16},
{name: "fileVersion", type: DataType.UINT32},
{name: "currentTime", type: DataType.UINT32},
{name: "upgradeTime", type: DataType.UINT32},
],
},
},
},
genPollCtrl: {
ID: 32,
attributes: {
checkinInterval: {ID: 0, type: DataType.UINT32},
longPollInterval: {ID: 1, type: DataType.UINT32},
shortPollInterval: {ID: 2, type: DataType.UINT16},
fastPollTimeout: {ID: 3, type: DataType.UINT16},
checkinIntervalMin: {ID: 4, type: DataType.UINT32},
longPollIntervalMin: {ID: 5, type: DataType.UINT32},
fastPollTimeoutMax: {ID: 6, type: DataType.UINT16},
},
commands: {
checkinRsp: {
ID: 0,
parameters: [
{name: "startFastPolling", type: DataType.BOOLEAN},
{name: "fastPollTimeout", type: DataType.UINT16},
],
},
fastPollStop: {
ID: 1,
parameters: [],
},
setLongPollInterval: {
ID: 2,
parameters: [{name: "newLongPollInterval", type: DataType.UINT32}],
},
setShortPollInterval: {
ID: 3,
parameters: [{name: "newShortPollInterval", type: DataType.UINT16}],
},
},
commandsResponse: {
checkin: {
ID: 0,
parameters: [],
},
},
},
greenPower: {
ID: 33,
attributes: {},
commands: {
notification: {
ID: 0,
parameters: [
{name: "options", type: DataType.BITMAP16},
{
name: "srcID",
type: DataType.UINT32,
conditions: [{type: ParameterCondition.BITFIELD_ENUM, param: "options", offset: 0, size: 3, value: 0b000}],
},
{
name: "gpdIEEEAddr",
type: DataType.IEEE_ADDR,
conditions: [{type: ParameterCondition.BITFIELD_ENUM, param: "options", offset: 0, size: 3, value: 0b010}],
},
{
name: "gpdEndpoint",
type: DataType.UINT8,
conditions: [{type: ParameterCondition.BITFIELD_ENUM, param: "options", offset: 0, size: 3, value: 0b010}],
},
{name: "frameCounter", type: DataType.UINT32},
{name: "commandID", type: DataType.UINT8},
{name: "payloadSize", type: DataType.UINT8},
{
name: "commandFrame",
type: BuffaloZclDataType.GPD_FRAME,
// not parsing when FULLENCR (requires decryption first - then re-parsing)
conditions: [{type: ParameterCondition.BITMASK_SET, param: "options", mask: 0xc0, reversed: true}],
},
{name: "gppNwkAddr", type: DataType.UINT16, conditions: [{type: ParameterCondition.BITMASK_SET, param: "options", mask: 0x4000}]},
/** Bits: 0..5 RSSI 6..7 Link quality */
{
name: "gppGpdLink",
type: DataType.BITMAP8,
conditions: [{type: ParameterCondition.BITMASK_SET, param: "options", mask: 0x4000}],
},
],
},
commissioningNotification: {
ID: 4,
parameters: [
{name: "options", type: DataType.BITMAP16},
{
name: "srcID",
type: DataType.UINT32,
conditions: [{type: ParameterCondition.BITFIELD_ENUM, param: "options", offset: 0, size: 3, value: 0b000}],
},
{
name: "gpdIEEEAddr",
type: DataType.IEEE_ADDR,
conditions: [{type: ParameterCondition.BITFIELD_ENUM, param: "options", offset: 0, size: 3, value: 0b010}],
},
{
name: "gpdEndpoint",
type: DataType.UINT8,
conditions: [{type: ParameterCondition.BITFIELD_ENUM, param: "options", offset: 0, size: 3, value: 0b010}],
},
{name: "frameCounter", type: DataType.UINT32},
{name: "commandID", type: DataType.UINT8},
{name: "payloadSize", type: DataType.UINT8},
{
name: "commandFrame",
type: BuffaloZclDataType.GPD_FRAME,
conditions: [
// not parsing when FULLENCR and "security failed" bit is set (requires decryption first - then re-parsing)
{type: ParameterCondition.BITMASK_SET, param: "options", mask: 0x30, reversed: true},
{type: ParameterCondition.BITMASK_SET, param: "options", mask: 0x200, reversed: true},
],
},
{name: "gppNwkAddr", type: DataType.UINT16, conditions: [{type: ParameterCondition.BITMASK_SET, param: "options", mask: 0x800}]},
/** Bits: 0..5 RSSI 6..7 Link quality */
{name: "gppGpdLink", type: DataType.BITMAP8, conditions: [{type: ParameterCondition.BITMASK_SET, param: "options", mask: 0x800}]},
{name: "mic", type: DataType.UINT32, conditions: [{type: ParameterCondition.BITMASK_SET, param: "options", mask: 0x200}]},
],
},
},
commandsResponse: {
response: {
ID: 6,
parameters: [
{name: "options", type: DataType.UINT8},
{name: "tempMaster", type: Da