>[success] 導師視頻講解:[去聽課](https://www.bilibili.com/video/BV1k34y1D7Vz/)
>[success] **技術支持說明:**
>**1**.一般以自主學習為主
> **2**.可到官方問答社區中提問:[**去提問**](https://bbs.csdn.net/forums/zigbee)
> **3**.工程師**會盡快**解答社區問題,但他們是一線開發,【**難以保證**】解答時效,解答辛苦,感謝理解!
<br/>
ZCL主要包含有應用領域(Profile)、設備類型(Device)、集群(Cluster)、屬性(Attribute)和命令(Command)這幾部分內容。
<br/>
## **應用領域(Profile)**
前面的章節已經多次提過Profile了,在這里做一個正式的介紹。在ZigBee協議中,Profile是指應用領域。ZigBee協議中定義了多個Profile,例如面向家居自動的ZHA(ZigBee Home Automation)、面向照明的ZLL(ZigBee Light Link)等。本文一直在使用智能插座就是屬于ZHA這個Profile的產品。
###
ZigBee協議給**每種類型的Profile分配了一個固定的ID**,打開Profile/zcl_ha.h文件,可以找到ZHA Profile的ID值,代碼如下:
```
// Zigbee Home Automation Profile Identification
#define ZCL_HA_PROFILE_ID 0x0104
```
###
打開協議棧中的Components\stack\zcl\zcl_ll.h文件,可以找到ZLL Profile的ID值,代碼如下:
```
// Zigbee Light Link Profile Identification
#define ZLL_PROFILE_ID 0xc05e
```
###
使用這個方式,還可以查看其它Profile的ID。在講解簡單描述符的章節中,曾經講到AppProfId字段表示這個簡單描述所屬的應用場景,它的取值其實就是這些Profile ID。
<br/>
## **設備類型(Device)**
每種Profile可以包含多種類型的設備,例如ZHA Profile中包含智能插座、溫濕度傳感器、窗簾控制器等類型的設備。每種類型的設備都被分配了一個ID,稱為Device ID,并且在同一個Profile,每個Device ID都是不同的。
###
在 ZigBee 3.0 中,ZHA Profile中的各個設備類型被劃分為5大類,分別是Generic、Lighting、Closures、HVAC(Heating Ventilation and Air Conditioning,供暖通風與空氣調節)和IAS(Intruder Alarm Systems,入侵報警系統)。





###
ZHA相關的源文件是Profile工程目錄下的zcl\_ha.h和zcl\_ha.c。打開zcl\_ha.h文件,可以找到以上所有設備類型的Device ID,代碼如下:
1.Generic
```
// Generic Device IDs
#define ZCL_HA_DEVICEID_ON_OFF_SWITCH 0x0000
#define ZCL_HA_DEVICEID_LEVEL_CONTROL_SWITCH 0x0001
#define ZCL_HA_DEVICEID_ON_OFF_OUTPUT 0x0002
#define ZCL_HA_DEVICEID_LEVEL_CONTROLLABLE_OUTPUT 0x0003
#define ZCL_HA_DEVICEID_SCENE_SELECTOR 0x0004
#define ZCL_HA_DEVICEID_CONFIGURATION_TOOL 0x0005
#define ZCL_HA_DEVICEID_REMOTE_CONTROL 0x0006
#define ZCL_HA_DEVICEID_COMBINED_INTERFACE 0x0007
#define ZCL_HA_DEVICEID_RANGE_EXTENDER 0x0008
#define ZCL_HA_DEVICEID_MAINS_POWER_OUTLET 0x0009
#define ZCL_HA_DEVICEID_DOOR_LOCK 0x000A
#define ZCL_HA_DEVICEID_DOOR_LOCK_CONTROLLER 0x000B
#define ZCL_HA_DEVICEID_SIMPLE_SENSOR 0x000C
#define ZCL_HA_DEVICEID_CONSUMPTION_AWARENESS_DEVICE 0x000D
#define ZCL_HA_DEVICEID_HOME_GATEWAY 0x0050
#define ZCL_HA_DEVICEID_SMART_PLUG 0x0051
#define ZCL_HA_DEVICEID_WHITE_GOODS 0x0052
#define ZCL_HA_DEVICEID_METER_INTERFACE 0x0053
```
2.Lighting
```
// Lighting Device IDs
#define ZCL_HA_DEVICEID_ON_OFF_LIGHT 0x0100
#define ZCL_HA_DEVICEID_DIMMABLE_LIGHT 0x0101
#define ZCL_HA_DEVICEID_COLORED_DIMMABLE_LIGHT 0x0102
#define ZCL_HA_DEVICEID_ON_OFF_LIGHT_SWITCH 0x0103
#define ZCL_HA_DEVICEID_DIMMER_SWITCH 0x0104
#define ZCL_HA_DEVICEID_COLOR_DIMMER_SWITCH 0x0105
#define ZCL_HA_DEVICEID_LIGHT_SENSOR 0x0106
#define ZCL_HA_DEVICEID_OCCUPANCY_SENSOR 0x0107
```
3.Closures
```
// Closures Device IDs
#define ZCL_HA_DEVICEID_SHADE 0x0200
#define ZCL_HA_DEVICEID_SHADE_CONTROLLER 0x0201
#define ZCL_HA_DEVICEID_WINDOW_COVERING_DEVICE 0x0202
#define ZCL_HA_DEVICEID_WINDOW_COVERING_CONTROLLER 0x0203
```
4.HVAC
```
// HVAC Device IDs
#define ZCL_HA_DEVICEID_HEATING_COOLING_UNIT 0x0300
#define ZCL_HA_DEVICEID_THERMOSTAT 0x0301
#define ZCL_HA_DEVICEID_TEMPERATURE_SENSOR 0x0302
#define ZCL_HA_DEVICEID_PUMP 0x0303
#define ZCL_HA_DEVICEID_PUMP_CONTROLLER 0x0304
#define ZCL_HA_DEVICEID_PRESSURE_SENSOR 0x0305
#define ZCL_HA_DEVICEID_FLOW_SENSOR 0x0306
#define ZCL_HA_DEVICEID_MINI_SPLIT_AC 0x0307
```
5.IAS
```
// Intruder Alarm Systems (IAS) Device IDs
#define ZCL_HA_DEVICEID_IAS_CONTROL_INDICATING_EQUIPMENT 0x0400
#define ZCL_HA_DEVICEID_IAS_ANCILLARY_CONTROL_EQUIPMENT 0x0401
#define ZCL_HA_DEVICEID_IAS_ZONE 0x0402
#define ZCL_HA_DEVICEID_IAS_WARNING_DEVICE 0x0403
```
<br/>
ZLL相關的源文件在工程目錄Profile下的zcl_ll.h和zcl_ll.c,打開zcl_ll.h文件,可以找到ZLL Profile(領域)定義的Device ID,代碼如下:
```
// ZLL Basic Lighting Device IDs
#define ZLL_DEVICEID_ON_OFF_LIGHT 0x0000
#define ZLL_DEVICEID_ON_OFF_PLUG_IN_UNIT 0x0010
#define ZLL_DEVICEID_DIMMABLE_LIGHT 0x0100
#define ZLL_DEVICEID_DIMMABLE_PLUG_IN_UNIT 0x0110
// ZLL Color Lighting Device IDs
#define ZLL_DEVICEID_COLOR_LIGHT 0x0200
#define ZLL_DEVICEID_EXTENDED_COLOR_LIGHT 0x0210
#define ZLL_DEVICEID_COLOR_TEMPERATURE_LIGHT 0x0220
// ZLL Lighting Remotes Device IDs
#define ZLL_DEVICEID_COLOR_CONTORLLER 0x0800
#define ZLL_DEVICEID_COLOR_SCENE_CONTROLLER 0x0810
#define ZLL_DEVICEID_NON_COLOR_CONTORLLER 0x0820
#define ZLL_DEVICEID_NON_COLOR_SCENE_CONTROLLER 0x0830
#define ZLL_DEVICEID_CONTROL_BRIDGE 0x0840
#define ZLL_DEVICEID_ON_OFF_SENSOR 0x0850
```
使用這個方式,還可以查看其它Profile中可以被使用的Device ID,在講解簡單描述符的章節中,曾經講到AppDeviceId字段表示這個設備的類型,它的取值其實就是這些Device ID值。
<br/>
## **集群(Cluster)**
Cluster的作用是什么呢?讀者可以保持著這個疑問繼續往下閱讀。
###
在講解AF通信的章節中,筆者自定義了3個Cluster ID,每個Cluster ID都代表著一個Cluster,用于表示不同的通信類型。這3個Cluster是筆者自定義的,并不是由ZigBee聯盟定義的,因此只有自己寫的代碼能夠理解它們的意義,其它開發者并不知道,所以這3個Cluster可以理解為是私有的。
###
然而,ZigBee聯盟已經定義了許多標準的Cluster,可供所有開發者使用,這些Cluster可以理解為是公有的。每一個Cluster分配有一個唯一的ID,稱為 Cluster ID。這些Cluster可以分成兩類:屬于特定Profile的Cluster,以及各個Profile共用的、不屬于某個Profile的一般性Cluster(General Clusters)。
<br/>
Cluster ID的定義在文件zcl.h中,本文列舉部分Cluster,代碼如下:
(1)General Clusters
```
// General Clusters
#define ZCL_CLUSTER_ID_GEN_BASIC 0x0000
#define ZCL_CLUSTER_ID_GEN_POWER_CFG 0x0001
#define ZCL_CLUSTER_ID_GEN_DEVICE_TEMP_CONFIG 0x0002
#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_ANALOG_INPUT_BASIC 0x000C
#define ZCL_CLUSTER_ID_GEN_ANALOG_OUTPUT_BASIC 0x000D
#define ZCL_CLUSTER_ID_GEN_ANALOG_VALUE_BASIC 0x000E
#define ZCL_CLUSTER_ID_GEN_BINARY_INPUT_BASIC 0x000F
#define ZCL_CLUSTER_ID_GEN_BINARY_OUTPUT_BASIC 0x0010
#define ZCL_CLUSTER_ID_GEN_BINARY_VALUE_BASIC 0x0011
#define ZCL_CLUSTER_ID_GEN_MULTISTATE_INPUT_BASIC 0x0012
#define ZCL_CLUSTER_ID_GEN_MULTISTATE_OUTPUT_BASIC 0x0013
#define ZCL_CLUSTER_ID_GEN_MULTISTATE_VALUE_BASIC 0x0014
#define ZCL_CLUSTER_ID_GEN_COMMISSIONING 0x0015
#define ZCL_CLUSTER_ID_GEN_PARTITION 0x0016
#define ZCL_CLUSTER_ID_GEN_POWER_PROFILE 0x001A
#define ZCL_CLUSTER_ID_GEN_APPLIANCE_CONTROL 0x001B
#define ZCL_CLUSTER_ID_GEN_POLL_CONTROL 0x0020
```
(2)Retail Clusters
```
// Retail Clusters
#define ZCL_CLUSTER_ID_MOBILE_DEVICE_CONFIGURATION 0x0022
#define ZCL_CLUSTER_ID_NEIGHBOR_CLEANING 0x0023
#define ZCL_CLUSTER_ID_NEAREST_GATEWAY 0x0024
```
(3)Closures Clusters
```
// Closures Clusters
#define ZCL_CLUSTER_ID_CLOSURES_SHADE_CONFIG 0x0100
#define ZCL_CLUSTER_ID_CLOSURES_DOOR_LOCK 0x0101
#define ZCL_CLUSTER_ID_CLOSURES_WINDOW_COVERING 0x0102
```
(4)HVAC Clusters
```
// HVAC Clusters
#define ZCL_CLUSTER_ID_HVAC_PUMP_CONFIG_CONTROL 0x0200
#define ZCL_CLUSTER_ID_HVAC_THERMOSTAT 0x0201
#define ZCL_CLUSTER_ID_HVAC_FAN_CONTROL 0x0202
#define ZCL_CLUSTER_ID_HVAC_DIHUMIDIFICATION_CONTROL 0x0203
#define ZCL_CLUSTER_ID_HVAC_USER_INTERFACE_CONFIG 0x0204
```
(5)Lighting Clusters
```
// Lighting Clusters
#define ZCL_CLUSTER_ID_LIGHTING_COLOR_CONTROL 0x0300
#define ZCL_CLUSTER_ID_LIGHTING_BALLAST_CONFIG 0x0301
```
(6)Measurement and Sensing Clusters
```
// Measurement and Sensing Clusters
#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
```
(7)Security and Safety (SS) Clusters
```
// Security and Safety (SS) Clusters
#define ZCL_CLUSTER_ID_SS_IAS_ZONE 0x0500
#define ZCL_CLUSTER_ID_SS_IAS_ACE 0x0501
#define ZCL_CLUSTER_ID_SS_IAS_WD 0x0502
```
(8)Protocol Interfaces
```
// Protocol Interfaces
#define ZCL_CLUSTER_ID_PI_GENERIC_TUNNEL 0x0600
#define ZCL_CLUSTER_ID_PI_BACNET_PROTOCOL_TUNNEL 0x0601
#define ZCL_CLUSTER_ID_PI_ANALOG_INPUT_BACNET_REG 0x0602
#define ZCL_CLUSTER_ID_PI_ANALOG_INPUT_BACNET_EXT 0x0603
#define ZCL_CLUSTER_ID_PI_ANALOG_OUTPUT_BACNET_REG 0x0604
#define ZCL_CLUSTER_ID_PI_ANALOG_OUTPUT_BACNET_EXT 0x0605
#define ZCL_CLUSTER_ID_PI_ANALOG_VALUE_BACNET_REG 0x0606
#define ZCL_CLUSTER_ID_PI_ANALOG_VALUE_BACNET_EXT 0x0607
#define ZCL_CLUSTER_ID_PI_BINARY_INPUT_BACNET_REG 0x0608
#define ZCL_CLUSTER_ID_PI_BINARY_INPUT_BACNET_EXT 0x0609
#define ZCL_CLUSTER_ID_PI_BINARY_OUTPUT_BACNET_REG 0x060A
#define ZCL_CLUSTER_ID_PI_BINARY_OUTPUT_BACNET_EXT 0x060B
#define ZCL_CLUSTER_ID_PI_BINARY_VALUE_BACNET_REG 0x060C
#define ZCL_CLUSTER_ID_PI_BINARY_VALUE_BACNET_EXT 0x060D
#define ZCL_CLUSTER_ID_PI_MULTISTATE_INPUT_BACNET_REG 0x060E
#define ZCL_CLUSTER_ID_PI_MULTISTATE_INPUT_BACNET_EXT 0x060F
#define ZCL_CLUSTER_ID_PI_MULTISTATE_OUTPUT_BACNET_REG 0x0610
#define ZCL_CLUSTER_ID_PI_MULTISTATE_OUTPUT_BACNET_EXT 0x0611
#define ZCL_CLUSTER_ID_PI_MULTISTATE_VALUE_BACNET_REG 0x0612
#define ZCL_CLUSTER_ID_PI_MULTISTATE_VALUE_BACNET_EXT 0x0613
#define ZCL_CLUSTER_ID_PI_11073_PROTOCOL_TUNNEL 0x0614
#define ZCL_CLUSTER_ID_PI_ISO7818_PROTOCOL_TUNNEL 0x0615
#define ZCL_CLUSTER_ID_PI_RETAIL_TUNNEL 0x0617
```
(9)Smart Energy (SE) Clusters
```
// Smart Energy (SE) Clusters
#define ZCL_CLUSTER_ID_SE_PRICE 0x0700
#define ZCL_CLUSTER_ID_SE_DRLC 0x0701
#define ZCL_CLUSTER_ID_SE_METERING 0x0702
#define ZCL_CLUSTER_ID_SE_MESSAGING 0x0703
#define ZCL_CLUSTER_ID_SE_TUNNELING 0x0704
#define ZCL_CLUSTER_ID_SE_PREPAYMENT 0x0705
#define ZCL_CLUSTER_ID_SE_ENERGY_MGMT 0x0706
#define ZCL_CLUSTER_ID_SE_CALENDAR 0x0707
#define ZCL_CLUSTER_ID_SE_DEVICE_MGMT 0x0708
#define ZCL_CLUSTER_ID_SE_EVENTS 0x0709
#define ZCL_CLUSTER_ID_SE_MDU_PAIRING 0x070A
#define ZCL_CLUSTER_ID_SE_KEY_ESTABLISHMENT 0x0800
#define ZCL_CLUSTER_ID_TELECOMMUNICATIONS_INFORMATION 0x0900
#define ZCL_CLUSTER_ID_TELECOMMUNICATIONS_CHATTING 0x0904
#define ZCL_CLUSTER_ID_TELECOMMUNICATIONS_VOICE_OVER_ZIGBEE 0x0905
#define ZCL_CLUSTER_ID_HA_APPLIANCE_IDENTIFICATION 0x0B00
#define ZCL_CLUSTER_ID_HA_METER_IDENTIFICATION 0x0B01
#define ZCL_CLUSTER_ID_HA_APPLIANCE_EVENTS_ALERTS 0x0B02
#define ZCL_CLUSTER_ID_HA_APPLIANCE_STATISTICS 0x0B03
#define ZCL_CLUSTER_ID_HA_ELECTRICAL_MEASUREMENT 0x0B04
#define ZCL_CLUSTER_ID_HA_DIAGNOSTIC 0x0B05
```
(10)Light Link cluster
```
// Light Link cluster
#define ZCL_CLUSTER_ID_TOUCHLINK 0x1000
```
<br/>
每個Cluster中可以包含多個特定的屬性(Attribute)和命令(Command)。
<br/>
## **屬性(Attribute)**
與面向對象編程思想中屬性類似,這里的屬性是用來描述描述某一類事物的特點的,例如老虎的屬性有性別、年齡和體重等屬性。ZigBee聯盟除了預定義了多個Cluster,還為每個Cluster預定義了一組對應的屬性供開發者使用。Cluster應該包含哪幾個屬性,可由開發者自行定義。
###
打開zcl\_samplesw\_data.c文件,可以找到如圖所示代碼。

上述代碼中創建了一個屬性數組,這是一個結構體數組。分析一下其中的第1個元素:
```
{
ZCL_CLUSTER_ID_GEN_BASIC,//Basic Cluster,由ZigBee聯盟預定義
{ //Attribute record
ATTRID_BASIC_ZCL_VERSION,//ZCL版本號屬性,由ZigBee聯盟自定義
ZCL_DATATYPE_UINT8,//說明這個屬性的數據類型是8個比特位的變量(無符號整型變量)
ACCESS_CONTROL_READ,//說明這個屬性只能被讀取不能被修改
(void*)&zclSampleSw_ZCLVersion//函數引用,暫不做講解
}
}
```
上述代碼的設計有點特別,其主要工作內容是往ZCL\_CLUSTER\_ID\_GEN\_BASIC這個Cluster中添加ATTRID\_BASIC\_ZCL\_VERSION這個屬性,并且說明這個屬性的數據類型和只能被讀取。
###
再觀察一下下面的兩個元素,會發現其實是把另外兩個屬性也添加進ZCL\_CLUSTER\_ID\_GEN\_BASIC這個Cluster中。如此一來,這個Cluster便包含了3個屬性,以及這3個屬性對應的操作命令。
<br/>
## **命令(Command)**
開發者可以讓源設備向目標設備的某個Cluster發送命令。當目標設備接收到這條命令時,需要執行與該Cluster相關的處理,例如修改該Cluster的中的屬性等。
###
每個Cluster都包含有一組特定的命令,即每個Cluster只能接收一組特定的命令。命令可以分為兩種,分別是基礎命令和屬性關聯命令。
* **基礎命令**
每個Cluster均包含基礎命令,即基礎命令能被所有Cluster接收,例如讀命令、寫命令和上報命令等,這部分命令的定義在zcl.h文件中,如圖所示。

###
* **Cluster限定命令**
Cluster限定命令只存在于某些特定的Cluster中,即Cluster限定命令只能被某些特定的Cluster接收。打開zcl\_general.h,可以找到如圖所示代碼:

其中的COMMAND\_OFF和COMMAND\_ON就是專門作用于ON\_OFF Cluster的命令。
<br/>
## **Cluster應用舉例**
現在終于可以舉個例子說明Cluster的用途了。現在需要設計一盞支持亮度調整的ZigBee燈,可以用兩個Cluster來描述其服務,分別是開關Cluster和亮度Cluster。
* **開關Cluster**用于表示和控制這個燈的開關狀態,因此開關Cluster應該包**含一個開關屬性**,并且能夠被開命令和關命令來控制。
* **亮度Cluster**用于表示和控制這個燈的亮度,因此亮度Cluster應該**包含一個亮度屬性**,并且能夠被調整亮度命令來控制。
從這個例子可以看出Cluster的作用是非常強大的,可用于在邏輯上實現設備的各個服務,而且其用途遠不止于此,后續章節將講解Cluster的更多用途。
<br/>
<br/>
## **項目定制**
* 如需項目定制開發,可掃碼添加項目經理好友(注明“**項目定制**”)
* 定制范圍:**NB-IoT**、**CATn(4G)**、**WiFi**、**ZigBee**、**BLE Mesh**以及**STM32**、**嵌入式Linux**等IoT技術方案
* 善學坊官網:[www.sxf-iot.com](https://www.sxf-iot.com/)

* 非項目定制**勿擾**,此處**非**技術支持
- 課程簡介
- 配套資源下載
- 配套開發套件簡介
- 簡介
- 技術參數
- 電路原理圖 & PCB圖——標準板
- 電路原理圖 & PCB圖——MiNi板
- CC2530F256 核心模組
- MCU簡介
- 模組尺寸 & 引腳定義
- 模組技術參數
- 電路原理圖 & PCB設計圖
- 封裝及生產指導
- 第一部分:準備
- 1.1 小白也能讀懂的 ZigBee 3.0 簡介
- 1.2 IAR EW for 8051 簡介與安裝
- 1.3 TI Z-Stack 3.0 簡介與安裝
- 1.4 SmartRF Flash Programmer 下載與安裝
- 1.5 串口助手簡介與安裝
- 1.6 SmartRF04EB 驅動程序
- 1.7 USB轉串口驅動程序
- 其他軟件安裝(非必須)
- 1.7.1 Xshell 7 簡介與安裝指南
- 1.7.2 PuTTY 簡介與安裝
- 第二部分:51單片機入門——基于CC2530
- 第1章:CC2530 開發基礎實驗
- 1.1 新建工作空間及工程
- 1.2 源代碼編寫及編譯
- 1.3 程序下載及仿真
- 1.4 固件燒錄
- 第2章:GPIO實驗
- 2.1 多工程管理基礎
- 2.2 GPIO輸出實驗——LED控制
- 2.3 GPIO輸入實驗——機械按鍵
- 2.4 GPIO輸入輸出通用配置實驗
- 2.5 GPIO外部中斷實驗
- 第3章:定時器實驗
- 3.1 工程概述
- 3.2 定時器T1實驗——查詢觸發
- 3.3 定時器T3實驗——中斷觸發
- 3.4 看門狗定時器實驗
- 3.5 低功耗定時器實驗
- 第4章:串口通信實驗
- 第5章:ADC實驗——使用光照傳感器
- 第6章:OLED 顯示器實驗
- 第7章:外設實驗
- 7.1 DHT11溫濕度傳感器
- 7.2 NorFLASH讀寫實驗
- 7.3 繼電器控制實驗
- 第三部分:Z-Stack 3.0 詳解
- 第1章:Z-Stack 3.0 架構詳解
- 1.1 Z-Stack 3.0.1 文件組織
- 2.2 Z-Stack 3.0.1 工程框架
- 第2章:操作系統的任務調度原理
- 第3章:OSAL 詳解
- 3.1 OSAL的任務調度原理
- 3.2 任務初池始化與事件處理
- 3.3 Z-Stack 事件的應用
- 3.4 使用動態內存
- 第4章:硬件適配層應用——LED
- 4.1 HAL的文件結構和工程結構
- 4.2 HAL的架構簡介
- 4.2 LED API簡介
- 4.3 LED 實驗
- 第5章:硬件適配層應用——按鍵
- 5.1 按鍵實驗
- 5.2 HAL 按鍵框架詳解(選修)
- 第6章:硬件適配層應用——串口
- 第7章:硬件適配層應用——顯示屏
- 第8章:硬件適配層應用——ADC
- 第四部分:ZigBee 3.0 網絡編程
- 第1章:ZigBee 3.0 網絡原理
- 1.1 協議層次結構
- 1.2 IEEE 802.15.4協議
- 1.3 網絡層
- 第2章:ZigBee 3.0 BDB
- 2.1 BDB 簡介
- 2.2 BDB Commissioning Modes
- 2.3 ZigBee 3.0 組網實驗
- 第3章:基于AF的數據通信
- 3.1 簡單描述符
- 3.2 通信原理
- 3.3 數據發送API簡介
- 3.4 ZigBee 3.0 通信實驗
- 第4章:ZCL 基本原理
- 4.1 ZCL 簡介
- 4.2 ZCL 內容詳解
- 第5章:基于ZCL的開關命令收發
- 5.1 應用層對 ZCL API 的調用
- 5.2 ZCL 開關命令收發 API
- 5.3 ZCL 開關命令收發實驗
- 第6章:基于ZCL的屬性讀寫
- 6.1 ZCL 屬性讀寫 API
- 6.2 ZCL 屬性讀寫實驗
- 第7章:基于ZCL的屬性上報實驗
- 7.1 概述
- 7.2 終端設備開發
- 7.3 協調器設備開發
- 7.4 仿真調試
- 課外篇:項目實戰
- ZigBee 3.0 環境信息采集
- 基于ZigBee的農業環境信息采集
- 基于ZigBee的文件傳輸系統
- 基于ZigBee的光照自動開關窗簾
- 基于ZigBee的溫濕度 & 光照強度采集系統
- 其他項目
- 基于ZigBee的溫度和有害氣體短信報警系統
- 基于ZigBee的多傳感器探測與亮燈報警系統
- 基于ZigBee的溫濕度、人體紅外與聲光報警系統
- ZigBee 3.0 多節點組網實戰
- 基于ZigBee的溫濕度 & 信號強度探測系統
- 課外篇:進階選修
- 《課外篇:進階選修》的說明
- 第1章:串口通信協議設計
- 1.1 設計基礎
- 1.2 協議格式
- 第2章:優化協調器工程結構
- 2.1 工程結構
- 2.2 應用框架詳解
- 2.2.1 框架說明
- 2.2.2 zbmsg
- 2.2.3 zbcategory
- 第3章:協調器上位機調試
- 3.1上位機說明
- 3.2 調試說明
- 第4章:信道及PanId的動態修改
- 4.1 串口協議
- 4.2 重要接口說明
- 4.2.1 NIB
- 4.2.2 NLME_UpdateNV
- 4.3 架構調整
- 4.4 應用
- 4.4.1 zbnwk接口實現
- 4.4.2 串口通信解析
- 4.4.3 燒錄調試
- 第5章:網絡短地址及MAC地址的獲取
- 5.1 接口說明
- 5.1.1 描述
- 5.1.2 調用流程
- 5.1.3 異步數據
- 5.2 調試
- 第6章:入網控制及白名單
- 6.1 基本內容
- 6.1.1 入網控制
- 6.1.2 白名單
- 6.2 函數封裝
- 6.3 程序調試
- 第7章:協調器分區存儲管理
- 7.1 軟件框架
- 7.2 應用
- 7.3 調試
- ZigBee 2 WiFi —— 基于ESP8266
- 1.使用云端服務器
- 2.源碼說明與測試
- 3.ESP8266模塊參考資料
- ZigBee 無線報文的抓取與分析
- 接入小米Aqara智能插座和溫濕度傳感器
- Z-Stack的NV應用
- 1. NV 簡介
- 2. NV的讀寫
- 基于HAL的外部FLASH應用
- TFT顯示器實驗(選修)
- Lighting工程源碼分析
- 9.1 ZHA Lighting工程
- 9.2 ZHA Lighting源碼分析
- 9.3 Lighting亮度調節實驗
- TemperatureSensor工程源碼分析
- 10.1 ZHA TemperatureSensor工程
- 10.2 ZHA TemperatureSensor源碼分析
- 版權聲明與免責聲明