363 lines
17 KiB
C++
363 lines
17 KiB
C++
#ifndef ZIGBEE_H
|
|
#define ZIGBEE_H
|
|
|
|
#include <QObject>
|
|
#include <QString>
|
|
#include <QByteArray>
|
|
|
|
class Zigbee
|
|
{
|
|
Q_GADGET
|
|
|
|
public:
|
|
enum ZigbeeProfile {
|
|
ZigbeeProfileHomeAutomation = 0x0104,
|
|
ZigbeeProfileLightLink = 0xC05E
|
|
};
|
|
Q_ENUM(ZigbeeProfile)
|
|
|
|
enum InterfaceMessageType {
|
|
// Common Commands
|
|
MessageTypeNone = 0x0000,
|
|
MessageTypeStatus = 0x8000,
|
|
MessageTypeLogging = 0x8001,
|
|
|
|
MessageTypeDataIndication = 0x8002,
|
|
|
|
MessageTypeNodeClusterList = 0x8003,
|
|
MessageTypeNodeAttributeList = 0x8004,
|
|
MessageTypeNodeCommandIdList = 0x8005,
|
|
MessageTypeRestartProvisioned = 0x8006,
|
|
MessageTypeFactoryNewRestart = 0x8007,
|
|
MessageTypeGetVersion = 0x0010,
|
|
MessageTypeVersionList = 0x8010,
|
|
|
|
MessageTypeSetExtendetPanId = 0x0020,
|
|
MessageTypeSetChannelMask = 0x0021,
|
|
MessageTypeSetSecurity = 0x0022,
|
|
MessageTypeSetDeviceType = 0x0023,
|
|
MessageTypeStartNetwork = 0x0024,
|
|
MessageTypeStartScan = 0x0025,
|
|
MessageTypeNetworkJoinedFormed = 0x8024,
|
|
MessageTypeNetworkRemoveDevice = 0x0026,
|
|
MessageTypeNetworkWhitelistEnable = 0x0027,
|
|
MessageTypeAuthenticateDeviceRequest = 0x0028,
|
|
MessageTypeAuthenticateDeviceResponse = 0x8028,
|
|
MessageTypeOutOfBandCommisioningDataRequest = 0x0029,
|
|
MessageTypeOutOfBandCommisioningDataResponse = 0x8029,
|
|
|
|
MessageTypeReset = 0x0011,
|
|
MessageTypeErasePersistentData = 0x0012,
|
|
MessageTypeZllFactoryNew = 0x0013,
|
|
MessageTypeGetPermitJoining = 0x0014,
|
|
MessageTypeGetPermitJoiningResponse = 0x8014,
|
|
MessageTypeBind = 0x0030,
|
|
MessageTypeBindResponse = 0x8030,
|
|
MessageTypeUnbind = 0x0031,
|
|
MessageTypeUnbindResponse = 0x8031,
|
|
|
|
MessageTypeNetworkAdressRequest = 0x0040,
|
|
MessageTypeNetworkAdressResponse = 0x8040,
|
|
MessageTypeIeeeAddressResponse = 0x0041,
|
|
MessageTypeIeeeAddressRequest = 0x8041,
|
|
MessageTypeNodeDescriptorRequest = 0x0042,
|
|
MessageTypeNodeDescriptorRsponse = 0x8042,
|
|
MessageTypeSimpleDescriptorRequest = 0x0043,
|
|
MessageTypeSimpleDescriptorResponse = 0x8043,
|
|
MessageTypePowerDescriptorRequest = 0x0044,
|
|
MessageTypePowerDescriptorResponse = 0x8044,
|
|
MessageTypeActiveEndpointRequest = 0x0045,
|
|
MessageTypeActiveEndpointResponse = 0x8045,
|
|
MessageTypeMatchDescriptorRequest = 0x0046,
|
|
MessageTypeMatchDescriptorResponse = 0x8046,
|
|
MessageTypeManagementLeaveRequest = 0x0047,
|
|
MessageTypeManagementLeaveResponse = 0x8047,
|
|
MessageTypeLeaveIndication = 0x8048,
|
|
MessageTypePermitJoiningRequest = 0x0049,
|
|
MessageTypeManagementNetworkUpdateRequest = 0x004A,
|
|
MessageTypeManagementNetworkUpdateResponse = 0x804A,
|
|
MessageTypeSystemServerDiscoveryRequest = 0x004B,
|
|
MessageTypeSystemServerDiscoveryResponse = 0x804B,
|
|
MessageTypeDeviceAnnounce = 0x004D,
|
|
MessageTypeManagementLqiRequest = 0x004E,
|
|
MessageTypeManagementLqiResponse = 0x804E,
|
|
|
|
// Group Cluster
|
|
MessageTypeAddGroupRequest = 0x0060,
|
|
MessageTypeAddGroupResponse = 0x8060,
|
|
MessageTypeViewGroupRequest = 0x0061,
|
|
MessageTypeViewGroupResponse = 0x8061,
|
|
MessageTypeGetGroupMembershipRequest = 0x0062,
|
|
MessageTypeGetGroupMembershipResponse = 0x8062,
|
|
MessageTypeRemoveGroupRequest = 0x0063,
|
|
MessageTypeRemoveGroupResponse = 0x8063,
|
|
MessageTypeRemoveAllGroups = 0x0064,
|
|
MessageTypeGroupIfIdentify = 0x0065,
|
|
|
|
// Identify Cluster
|
|
MessageTypeIdentifySend = 0x0070,
|
|
MessageTypeIdentifyQuery = 0x0071,
|
|
|
|
// Level Cluster
|
|
MessageTypeMoveToLevel = 0x0080,
|
|
MessageTypeMoveToLevelOnOff = 0x0081,
|
|
MessageTypeMoveStep = 0x0082,
|
|
MessageTypeMoveStopMove = 0x0083,
|
|
MessageTypeMoveStopMoveOnOff = 0x0084,
|
|
|
|
// Scenes Cluster
|
|
MessageTypeViewScene = 0x00A0,
|
|
MessageTypeViewSceneResponse = 0x80A0,
|
|
MessageTypeAddScene = 0x00A1,
|
|
MessageTypeAddSceneResponse = 0x80A1,
|
|
MessageTypeRemoveScene = 0x00A2,
|
|
MessageTypeRemoveSceneResponse = 0x80A2,
|
|
MessageTypeRemoveAllScenes = 0x00A3,
|
|
MessageTypeRemoveAllScenesResponse = 0x80A3,
|
|
MessageTypeStoreScene = 0x00A4,
|
|
MessageTypeStoreSceneResponse = 0x80A4,
|
|
MessageTypeRecallScene = 0x00A5,
|
|
MessageTypeSceneMembershipRequest = 0x00A6,
|
|
MessageTypeSceneMembershipResponse = 0x80A6,
|
|
|
|
//Colour Cluster
|
|
MessageTypeMoveToHue = 0x00B0,
|
|
MessageTypeMoveHue = 0x00B1,
|
|
MessageTypeStepHue = 0x00B2,
|
|
MessageTypeMoveToSaturation = 0x00B3,
|
|
MessageTypeMoveSaturation = 0x00B4,
|
|
MessageTypeStepStaturation = 0x00B5,
|
|
MessageTypeMoveToHueSaturation = 0x00B6,
|
|
MessageTypeMoveToColor = 0x00B7,
|
|
MessageTypeMoveColor = 0x00B8,
|
|
MessageTypeStepColor = 0x00B9,
|
|
|
|
// ZLL Commands
|
|
/* Touchlink */
|
|
MessageTypeInitiateTouchlink = 0x00D0,
|
|
MessageTypeTouchlinkStatus = 0x00D1,
|
|
MessageTypeTouchlinkFactoryReset = 0x00D2,
|
|
|
|
// Identify Cluster
|
|
MessageTypeIdentifyTriggerEffect = 0x00E0,
|
|
|
|
// On/Off Cluster
|
|
MessageTypeCluserOnOff = 0x0092,
|
|
MessageTypeCluserOnOffTimed = 0x0093,
|
|
MessageTypeCluserOnOffEffects = 0x0094,
|
|
MessageTypeCluserOnOffUpdate = 0x8095,
|
|
|
|
// Scenes Cluster
|
|
MessageTypeAddEnhancedScene = 0x00A7,
|
|
MessageTypeViewEnhancedScene = 0x00A8,
|
|
MessageTypeCopyScene = 0x00A9,
|
|
|
|
// Colour Cluster
|
|
MessageTypeEnhancedMoveToHue = 0x00BA,
|
|
MessageTypeEnhancedMoveHue = 0x00BB,
|
|
MessageTypeEnhancedStepHue = 0x00BC,
|
|
MessageTypeEnhancedMoveToHueSaturation = 0x00BD,
|
|
MessageTypeColourLoopSet = 0x00BE,
|
|
MessageTypeStopMoveStep = 0x00BF,
|
|
MessageTypeMoveToColorTemperature = 0x00C0,
|
|
MessageTypeMoveColorTemperature = 0x00C1,
|
|
MessageTypeStepColorTemperature = 0x00C2,
|
|
|
|
// ZHA Commands
|
|
// Door Lock Cluster
|
|
MessageTypeLockUnlockDoor = 0x00F0,
|
|
|
|
// Attributes
|
|
MessageTypeReadAttributeRequest = 0x0100,
|
|
MessageTypeReadAttributeResponse = 0x8100,
|
|
MessageTypeDefaultResponse = 0x8101,
|
|
MessageTypeAttributeReport = 0x8102,
|
|
MessageTypeWriteAttributeRequest = 0x0110,
|
|
MessageTypeWriteAttributeResponse = 0x8110,
|
|
MessageTypeConfigReportingRequest = 0x0120,
|
|
MessageTypeConfigReportingResponse = 0x8120,
|
|
MessageTypeReportAttributes = 0x8121,
|
|
MessageTypeAttributeDiscoveryRequest = 0x0140,
|
|
MessageTypeAttributeDiscoveryResponse = 0x8140,
|
|
|
|
/* Persistant data manager messages */
|
|
MessageTypeDataManagerAvailableRequest = 0x0300,
|
|
MessageTypeDataManagerAvailableResponse = 0x8300,
|
|
MessageTypeDataManagerSaveRecordRequest = 0x0200,
|
|
MessageTypeDataManagerSaveRecordResponse = 0x8200,
|
|
MessageTypeDataManagerLoadRecordRequest = 0x0201,
|
|
MessageTypeDataManagerLoadRecordResponse = 0x8201,
|
|
MessageTypeDataManagerDeleteAllRecordsRequest = 0x0202,
|
|
MessageTypeDataManagerDeleteAllRecordsResponse = 0x8202,
|
|
|
|
/* Appliance Statistics Cluster 0x0B03 */
|
|
// http://www.nxp.com/documents/user_manual/JN-UG-3076.pdf
|
|
MessageTypeStatisticsClusterLogMessage = 0x0301, // Was 0x0500, was 0x0301
|
|
MessageTypeStatisticsClusterLogMessageResponse = 0x8301,
|
|
|
|
/* IAS Cluster */
|
|
MessageTypeSendIasZoneEnroolResponse = 0x0400,
|
|
MessageTypeIasZoneStatusChangeNotify = 0x8401,
|
|
};
|
|
Q_ENUM(InterfaceMessageType)
|
|
|
|
|
|
enum ClusterId {
|
|
// Basics
|
|
ClusterIdBasic = 0x0000,
|
|
ClusterIdPower = 0x0001,
|
|
ClusterIdDeviceTemperature = 0x0002,
|
|
ClusterIdIdentify = 0x0003,
|
|
ClusterIdGroups = 0x0004,
|
|
ClusterIdScenes = 0x0005,
|
|
ClusterIdOnOff = 0x0006,
|
|
ClusterIdOnOffCOnfiguration = 0x0007,
|
|
ClusterIdLevelControl = 0x0008,
|
|
ClusterIdAlarms = 0x0009,
|
|
ClusterIdTime = 0x000A,
|
|
ClusterIdRssiLocation = 0x000B,
|
|
ClusterIdAnalogInputBasic = 0x000C,
|
|
ClusterIdAnalogOutputBasic = 0x000D,
|
|
ClusterIdValueBasic = 0x000E,
|
|
ClusterIdBinaryInputBasic = 0x000F,
|
|
ClusterIdBinaryOutputBasic = 0x0010,
|
|
ClusterIdBinaryValueBasic = 0x0011,
|
|
ClusterIdMultiStateInputBasic = 0x0012,
|
|
ClusterIdMultiStateOutputBasic = 0x0013,
|
|
ClusterIdMultiStateValueBasic = 0x0014,
|
|
ClusterIdCommissoning = 0x0015,
|
|
|
|
// Over the air uppgrade (OTA)
|
|
ClusterIdOtaUpgrade = 0x0019,
|
|
|
|
// Closures
|
|
ClusterIdShadeConfiguration = 0x0100,
|
|
|
|
// Door Lock
|
|
ClusterIdDoorLock = 0x0101,
|
|
|
|
// Heating, Ventilation and Air-Conditioning (HVAC)
|
|
ClusterIdPumpConfigurationControl = 0x0200,
|
|
ClusterIdThermostat = 0x0201,
|
|
ClusterIdFanControll = 0x0202,
|
|
ClusterIdDehumiditationControll = 0x0203,
|
|
ClusterIdThermostatUserControll = 0x0204,
|
|
|
|
// Lighting
|
|
ClusterIdColorControl = 0x0300,
|
|
ClusterIdBallastConfiguration = 0x0301,
|
|
|
|
// Sensing
|
|
ClusterIdMeasurementIlluminance = 0x0400,
|
|
ClusterIdIlluminanceLevelSensing = 0x0401,
|
|
ClusterIdTemperatureMeasurement = 0x0402,
|
|
ClusterIdPressureMeasurement = 0x0403,
|
|
ClusterIdFlowMeasurement = 0x0404,
|
|
ClusterIdRelativeHumidityMeasurement = 0x0405,
|
|
ClusterIdOccapancySensing = 0x0406,
|
|
|
|
// Security and Safty
|
|
ClusterIdIasZone = 0x0500,
|
|
ClusterIdIasAce = 0x0501,
|
|
ClusterIdIasWd = 0x0502,
|
|
|
|
// Smart energy
|
|
ClusterIdPrice = 0x0700,
|
|
ClusterIdLoadControl = 0x0701,
|
|
ClusterIdSimpleMetering = 0x0702,
|
|
|
|
// Electrical Measurement
|
|
ClusterIdElectricalMeasurement = 0x0B04,
|
|
|
|
// ZLL
|
|
ClusterIdTouchlinkCommissioning = 0x1000
|
|
};
|
|
Q_ENUM(ClusterId)
|
|
|
|
enum LightLinkDevice {
|
|
|
|
// Lightning devices
|
|
LightLinkDeviceOnOffLight = 0x0000,
|
|
LightLinkDeviceOnOffPlug = 0x0010,
|
|
LightLinkDeviceDimmableLight = 0x0100,
|
|
LightLinkDeviceDimmablePlug = 0x0110,
|
|
LightLinkDeviceColourLight = 0x0200,
|
|
LightLinkDeviceExtendedColourLight = 0x0210,
|
|
LightLinkDeviceColourTemperatureLight = 0x0220,
|
|
|
|
// Controller devices
|
|
LightLinkDeviceColourController = 0x8000,
|
|
LightLinkDeviceColourSceneController = 0x8010,
|
|
LightLinkDeviceNonColourController = 0x8020,
|
|
LightLinkDeviceNonColourSceneController = 0x8030,
|
|
LightLinkDeviceControlBridge = 0x8040,
|
|
LightLinkDeviceOnOffSensor = 0x8050
|
|
};
|
|
Q_ENUM(LightLinkDevice)
|
|
|
|
|
|
enum HomeAutomationDevice {
|
|
// Generic devices
|
|
HomeAutomationDeviceOnOffSwitch = 0x0000,
|
|
HomeAutomationDeviceOnOffOutput = 0x0002,
|
|
HomeAutomationDeviceRemoteControl = 0x0006,
|
|
HomeAutomationDeviceDoorLock = 0x000A,
|
|
HomeAutomationDeviceDoorLockController = 0x000B,
|
|
HomeAutomationDeviceSimpleSensor = 0x000C,
|
|
HomeAutomationDeviceSmartPlug = 0x0051,
|
|
|
|
// Lightning devices
|
|
HomeAutomationDeviceOnOffLight = 0x0100,
|
|
HomeAutomationDeviceDimmableLight = 0x0101,
|
|
HomeAutomationDeviceDimmableColorLight = 0x0102,
|
|
HomeAutomationDeviceOnOffLightSwitch = 0x0103,
|
|
HomeAutomationDeviceDimmableSwitch = 0x0104,
|
|
HomeAutomationDeviceColourDimmerSwitch = 0x0105,
|
|
HomeAutomationDeviceLightSensor = 0x0106,
|
|
HomeAutomationDeviceOccupacySensor = 0x0106,
|
|
|
|
// Heating, Ventilation and Air-Conditioning (HVAC) devices
|
|
HomeAutomationDeviceThermostat = 0x0301,
|
|
|
|
// Intruder Alarm System (IAS) devices
|
|
HomeAutomationDeviceIsaControlEquipment = 0x0400, // CIE
|
|
HomeAutomationDeviceIsaAncillaryControlEquipment = 0x0401, // ACE
|
|
HomeAutomationDeviceIsaZone = 0x0401,
|
|
HomeAutomationDeviceIsaWarningDevice = 0x0401 // WD
|
|
};
|
|
Q_ENUM(HomeAutomationDevice)
|
|
|
|
// enum DeviceType {
|
|
// DeviceTypeUnknown = 0xFFFF, // Unknown type
|
|
// DeviceTypeBasic = 0x0002, // Gateway
|
|
// DeviceTypeGateway = 0x0002, // Gateway
|
|
// DeviceTypeSimpleSensor = 0x000C, // ZHA Simple Sensor
|
|
// DeviceTypeSmartPlug = 0x0051, // ZHA Smart Plug
|
|
// DeviceTypeControlBridge = 0x0840, // Control Bridge
|
|
// DeviceTypeLampOnOff = 0x0000, // ZLL on/off lamp
|
|
// DeviceTypeLampDimm = 0x0100, // ZLL mono lamp
|
|
|
|
//#define SIMPLE_DESCR_LAMP_DIMM_ZLL 0x0100 // ZLL mono lamp
|
|
//#define SIMPLE_DESCR_LAMP_ONOFF 0x0100 // ZHA on/off lamp
|
|
//#define SIMPLE_DESCR_LAMP_DIMM 0x0101 // ZHA dimmable lamp
|
|
//#define SIMPLE_DESCR_LAMP_COLOUR 0x0102 // ZHA dimmable colour lamp
|
|
//#define SIMPLE_DESCR_LAMP_CCTW 0x01FF // ZHA / ZLL CCTW lamp
|
|
//#define SIMPLE_DESCR_LAMP_COLOUR_DIMM 0x0200 // ZLL dimmable colour lamp
|
|
//#define SIMPLE_DESCR_LAMP_COLOUR_EXT 0x0210 // ZLL extended colour lamp
|
|
//#define SIMPLE_DESCR_LAMP_COLOUR_TEMP 0x0220 // ZLL colour temperature lamp
|
|
//#define SIMPLE_DESCR_HVAC_HC_UNIT 0x0300 // ZHA HVAC HC Unit (HeatingManager)
|
|
//#define SIMPLE_DESCR_THERMOSTAT 0x0301 // ZHA Thermostat
|
|
//#define SIMPLE_DESCR_HVAC_PUMP 0x0303 // ZHA NVAC Pump
|
|
//#define SIMPLE_DESCR_SWITCH_ONOFF 0x0103 // ZHA On/Off Switch
|
|
//#define SIMPLE_DESCR_SWITCH_DIMM 0x0104 // ZHA Dimm Switch
|
|
//#define SIMPLE_DESCR_SWITCH_COLL_DIMM 0x0105 // ZHA Color Dimm Switch
|
|
//#define SIMPLE_DESCR_LIGHT_SENSOR 0x0106 // ZHA Light sensor
|
|
//#define SIMPLE_DESCR_SMOKE_SENSOR 0x0012 // CES - TriTech CO/smoke sensor
|
|
//#define SIMPLE_DESCR_WINDOW_SENSOR 0x0014 // CES - window sensor
|
|
//#define SIMPLE_DESCR_OCCUPANCY_SENSOR 0x0107 // ZH/ZLO - Occupancy Sensor
|
|
// };
|
|
|
|
};
|
|
|
|
#endif // ZIGBEE_H
|