ジグビーZCL明細書およびそのプロトコルスタック1
http://www.cnblogs.com/-song/archive/2013/03/16/3331818.html
ZigBee_Cluster_Library_Public_download_versionを参照してください。
1.zclは、いくつかの異なる機能領域に分割し、部分CLUSTERIDの占める各領域
の例は、以下の一般的な領域はCLUSTERID有する
........は
zcl.hにおけるプロトコルスタックは、上記に対応し、これらの定義を有するCLUSTERID不完全な文書が、
- //一般的なクラスタ
- #define ZCL_CLUSTER_ID_GEN_BASIC 0000
- #define ZCL_CLUSTER_ID_GEN_POWER_CFGは0x0001
- #define ZCL_CLUSTER_ID_GEN_DEVICE_TEMP_CONFIG 0×0002
- #define ZCL_CLUSTER_ID_GEN_IDENTIFY 0x0003
- #define ZCL_CLUSTER_ID_GEN_GROUPS 0x0004は
- #define ZCL_CLUSTER_ID_GEN_SCENES 0x0005
- #define ZCL_CLUSTER_ID_GEN_ON_OFF 0x0006
- #define ZCL_CLUSTER_ID_GEN_ON_OFF_SWITCH_CONFIG 0x0007
- #define ZCL_CLUSTER_ID_GEN_LEVEL_CONTROL 0x0008で
- #define ZCL_CLUSTER_ID_GEN_ALARMS 0x0009
- #define ZCL_CLUSTER_ID_GEN_TIME 0x000A
- #define ZCL_CLUSTER_ID_GEN_LOCATION 0x000B
- #define ZCL_CLUSTER_ID_GEN_KEY_ESTABLISHMENT 0x0800で
- //クロージャクラスタ
- #define ZCL_CLUSTER_ID_CLOSURES_SHADE_CONFIGは0x0100
- // HVACクラスタ
- #define ZCL_CLUSTER_ID_HVAC_PUMP_CONFIG_CONTROL 0x0200
- #define ZCL_CLUSTER_ID_HAVC_THERMOSTAT 0x0201
- #define ZCL_CLUSTER_ID_HAVC_FAN_CONTROL 0x0202
- #define ZCL_CLUSTER_ID_HAVC_DIHUMIDIFICATION_CONTROL 0x0203
- #define ZCL_CLUSTER_ID_HAVC_USER_INTERFACE_CONFIG 0x0204
- //ライティングクラスタ
- #define ZCL_CLUSTER_ID_LIGHTING_COLOR_CONTROL 0x0300
- #define ZCL_CLUSTER_ID_LIGHTING_BALLAST_CONFIG 0x0301
- //測定およびセンシングクラスター
- #define ZCL_CLUSTER_ID_MS_ILLUMINANCE_MEASUREMENT 0x0400
- #define ZCL_CLUSTER_ID_MS_ILLUMINANCE_LEVEL_SENSING_CONFIG 0x0401
- #define ZCL_CLUSTER_ID_MS_TEMPERATURE_MEASUREMENT 0x0402
- #define ZCL_CLUSTER_ID_MS_PRESSURE_MEASUREMENT 0x0403
- #define ZCL_CLUSTER_ID_MS_FLOW_MEASUREMENT 0x0404
- #define ZCL_CLUSTER_ID_MS_RELATIVE_HUMIDITY 0x0405
- #define ZCL_CLUSTER_ID_MS_OCCUPANCY_SENSING 0x0406
- //セキュリティと安全性(SS)クラスター
- #define ZCL_CLUSTER_ID_SS_IAS_ZONE 0x0500
- #define ZCL_CLUSTER_ID_SS_IAS_ACEて0x0501
- #define ZCL_CLUSTER_ID_SS_IAS_WD 0x0502
- //プロトコルインタフェース
- #define ZCL_CLUSTER_ID_PI_GENERIC_TUNNEL 0x0600
- #define ZCL_CLUSTER_ID_PI_BACNET_PROTOCOL_TUNNEL 0x0601
- #define ZCL_CLUSTER_ID_PI_11073_PROTOCOL_TUNNEL 0x0614
- //高度な計量イニシアティブ(SE)クラスター
- #define ZCL_CLUSTER_ID_SE_PRICING 0x0700
- #define ZCL_CLUSTER_ID_SE_LOAD_CONTROL 0x0701
- #define ZCL_CLUSTER_ID_SE_SIMPLE_METERING 0x0702
- #define ZCL_CLUSTER_ID_SE_MESSAGE 0x0703
- #define ZCL_CLUSTER_ID_SE_REGISTRATION 0x0704
- #define ZCL_CLUSTER_ID_SE_SE_TUNNELING 0x0705
- #define ZCL_CLUSTER_ID_SE_PRE_PAYMENT 0x0706
2のコレクションの数によって属性とコマンドの各々 CLUSTERIDセット
そのような
基本的なCLUSTERID一般的な技術は、以下の特性の非常に多くの(二つの部分、基本的なデバイス情報とデバイス構成情報に分割)がある
基本的なコマンド・フィールドは、一般CLUSTERIDあります ようなプロトコルスタックに実装CLUSTERID属性とコマンド、基本CLUSTERID一般的なフィールド位置zcl_general.h
- / ******************************** /
- / ***基本的なクラスタは***属性/
- / ******************************** /
- //基本的なデバイス情報
- #define ATTRID_BASIC_ZCL_VERSION 0000
- #define ATTRID_BASIC_APPL_VERSIONは0x0001
- #define ATTRID_BASIC_STACK_VERSION 0×0002
- #define ATTRID_BASIC_HW_VERSION 0x0003
- #define ATTRID_BASIC_MANUFACTURER_NAME 0x0004は
- #define ATTRID_BASIC_MODEL_ID 0x0005
- #define ATTRID_BASIC_DATE_CODE 0x0006
- #define ATTRID_BASIC_POWER_SOURCE 0x0007
- //基本的なデバイスの設定
- #define ATTRID_BASIC_LOCATION_DESC 0x0010
- #define ATTRID_BASIC_PHYSICAL_ENV 0x0011
- #define ATTRID_BASIC_DEVICE_ENABLED 0x0012
- #define ATTRID_BASIC_ALARM_MASK 0x0013
- ...
- / ****************************** /
- / ***基本クラスタコマンド*** /
- / ****************************** /
- #define COMMAND_BASIC_RESET_FACT_DEFAULT $ 00
- <スパンのスタイル= 「フォントファミリー:SimSun;」>
- </ span>の
zcl_general.h-ジェネリック
またはアクセス?Zcl_closures.h-室内
zcl_hvac.h-空調
zcl_lighting.h-照明
zcl_ms.h-測定とセンシングを
zcl_ss.h
zcl_pi.h
CLUSTERID性質を持っていますマクロ定義、構成属性(割当て)の必要性が
、このような配置は、各属性にzcl_samplelight.cはZCL_CLUSTER_ID_GEN_BASICが行わCLUSTERID。
- CONST zclAttrRec_t zclSampleLight_Attrs [SAMPLELIGHT_MAX_ATTRIBUTES] =
- {
- // ***一般的な基本的なクラスタは***属性
- {
- ZCL_CLUSTER_ID_GEN_BASIC、 //クラスタのID -土台(。すなわちzcl.h)で定義されています
- { //属性レコード
- ATTRID_BASIC_HW_VERSION、 //属性ID -クラスターライブラリヘッダで発見された(すなわちzcl_general.h。)
- ZCL_DATATYPE_UINT8、 //データタイプ- zcl.hで見つかりました
- ACCESS_CONTROL_READ、 //変数のアクセス制御- zcl.hで見つかりました
- (無効 *)&zclSampleLight_HWRevision 属性変数へのポインタ//
- }
- }、
- {
- ZCL_CLUSTER_ID_GEN_BASIC、
- { //属性レコード
- ATTRID_BASIC_ZCL_VERSION、
- ZCL_DATATYPE_UINT8、
- ACCESS_CONTROL_READ、
- (無効 *)&zclSampleLight_ZCLVersion
- }
- }、
- {
- ZCL_CLUSTER_ID_GEN_BASIC、
- { //属性レコード
- ATTRID_BASIC_MANUFACTURER_NAME、
- ZCL_DATATYPE_CHAR_STR、
- ACCESS_CONTROL_READ、
- (無効 *)zclSampleLight_ManufacturerName
- }
- }、
- {
- ZCL_CLUSTER_ID_GEN_BASIC、
- { //属性レコード
- ATTRID_BASIC_MODEL_ID、
- ZCL_DATATYPE_CHAR_STR、
- ACCESS_CONTROL_READ、
- (無効 *)zclSampleLight_ModelId
- }
- }、
- {
- ZCL_CLUSTER_ID_GEN_BASIC、
- { //属性レコード
- ATTRID_BASIC_DATE_CODE、
- ZCL_DATATYPE_CHAR_STR、
- ACCESS_CONTROL_READ、
- (無効 *)zclSampleLight_DateCode
- }
- }、
- {
- ZCL_CLUSTER_ID_GEN_BASIC、
- { //属性レコード
- ATTRID_BASIC_POWER_SOURCE、
- ZCL_DATATYPE_UINT8、
- ACCESS_CONTROL_READ、
- (無効 *)&zclSampleLight_PowerSource
- }
- }、
- {
- ZCL_CLUSTER_ID_GEN_BASIC、
- { //属性レコード
- ATTRID_BASIC_LOCATION_DESC、
- ZCL_DATATYPE_CHAR_STR、
- (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE)、
- (無効 *)zclSampleLight_LocationDescription
- }
- }、
- {
- ZCL_CLUSTER_ID_GEN_BASIC、
- { //属性レコード
- ATTRID_BASIC_PHYSICAL_ENV、
- ZCL_DATATYPE_UINT8、
- (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE)、
- (無効 *)&zclSampleLight_PhysicalEnvironment
- }
- }、
- {
- ZCL_CLUSTER_ID_GEN_BASIC、
- { //属性レコード
- ATTRID_BASIC_DEVICE_ENABLED、
- ZCL_DATATYPE_BOOLEAN、
- (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE)、
- (無効 *)&zclSampleLight_DeviceEnable
- }
- }、
- // *** ***クラスタ属性を識別
- {
- ZCL_CLUSTER_ID_GEN_IDENTIFY、
- { //属性レコード
- ATTRID_IDENTIFY_TIME、
- ZCL_DATATYPE_UINT16、
- (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE)、
- (無効 *)&zclSampleLight_IdentifyTime
- }
- }、
- // ***オン/オフクラスタ***属性
- {
- ZCL_CLUSTER_ID_GEN_ON_OFF、
- { //属性レコード
- ATTRID_ON_OFF、
- ZCL_DATATYPE_UINT8、
- ACCESS_CONTROL_READ、
- (無効 *)&zclSampleLight_OnOff
- }
- }、
- }
3.固有のコマンドCLUSTERIDに加えて、そのような属性CLUSTERIDの読み出しなどのいくつかの一般的なコマンドがある
zcl.hを配置プロトコルスタックの実装は、
- / ***財団コマンドIDは*** /
- #define ZCL_CMD_READ $ 00
- #define ZCL_CMD_READ_RSPが0x01
- #define ZCL_CMD_WRITEが0x02
- #define ZCL_CMD_WRITE_UNDIVIDED 0x03の
- #define ZCL_CMD_WRITE_RSP 0x04の
- #define ZCL_CMD_WRITE_NO_RSP 0x05の
- #define ZCL_CMD_CONFIG_REPORT 0x06で
- #define ZCL_CMD_CONFIG_REPORT_RSP 0x07の
- #define ZCL_CMD_READ_REPORT_CFGは0x08
- #define ZCL_CMD_READ_REPORT_CFG_RSP 0x09の
- #define ZCL_CMD_REPORTは0x0A
- #define ZCL_CMD_DEFAULT_RSP 0x0Bの
- #define ZCL_CMD_DISCOVER 0x0Cの
- #define ZCL_CMD_DISCOVER_RSPに0x0d
- #define ZCL_CMD_MAX ZCL_CMD_DISCOVER_RSP