Z-Stack Home Developer's Guide—3. The Home Automation Profile and the Sample Applications中文翻译
下面是Z-Stack Home 1.2.0開發資料中的Z-Stack Home Developer’s Guide—3. The Home Automation Profile and the Sample Applications的中文翻譯。Profile這個單詞 不太好翻譯,翻譯成中文 也比較別扭,可以看做描述吧。
3.HA Profile和樣例應用程序
3.1介紹
HA Profile,一個標準的Zigbee profile用ProfileID 0x0104定義,一般依賴于ZCL,特別是在基礎和一般功能領域。
本節描述樣例應用程序的實現,關于如何使用它們的詳細描述請參閱Texas Instruments document SWRU354, Z-Stack Home Sample Application User’s Guide.
3.2初始化
如前些章節所示,用戶必須添加至少一個任務(到OSAL任務系統)來服務一個或多個任務應用程序對象。但是在實現HA應用程序對象時,一個用于ZCL的任務必須添加(參見“OSAL任務”一節),按照HA樣例應用程序中所示的順序(例如,在此之前任何其他使用ZCL的任務)。
除了在上一節的通用示例中學習的用戶任務初始化過程之外,HA應用程序對象的初始化也需要步驟來初始化ZCL。以下HA樣例應用程序(電燈和開關)在任務初始化函數中實現這個額外的初始化(例如zclSampleLight_Init()),如下。
- 用HA Profile 注冊一個簡單的描述(例如:zclSampleLight_SimpleDesc)使用zclHA_Init()。
- 將命令回調表(例如zclSampleLight_CmdCallbacks)注冊為General功能域使用zclGeneral_RegisterCmdCallbacks()。
- 在ZCL 層注冊屬性列表(例如zclSampleLight_Attrs)使用zcl_registerAttrList()。
3.3軟件架構
應用程序通過各種發送函數發送數據(例如zclGeneral_SendOnOff_CmdToggle)。應用程序在注冊回調函數后在回調函數中接收數據。每個族都有自己的注冊和回調函數集合(例如zclSampleLight_OnOffCB)
Z-Stack與其他設備通信的方式可以用圖1來描述。客戶端發起一個命令或請求響應。服務器命令執行或交付響應。
圖片1 - 命令流程圖
一個族的回調函數在應用程序的初始化函數中注冊(比如 zclSampleLight_Init)通過包含每個應用程序端點和一個指向每個回調函數的指針并調用通過一個注冊函數(例如zclGeneral_RegisterCmdCallbacks)。每個族,或者一組族,都有自己注冊方式。
聚一個回調函數的例子,如果客戶端發送一個BasicReset 命令到服務器,這個應用程序注冊的BasicReset回調函數在服務端將被調用(比如 zclSampleDoorLockController_BasicResetCB),這個函數能夠重置這個設備到出廠默認值。
應用程序中的回調函數提供了特定于此的命令的附加處理應用程序。
高級選項,通過發送函數發送的數據從本地格式轉換為小端的無線格式。通過無線傳輸的數據在ProcessIn函數中轉換為本地格式。從一個應用的觀點,所有的數據都是本地的結構形式。
對于Send和ProcessIn函數必須是可用的,族,或者一組族必須啟用,他們在f8wZCL.cfg文件中或者在編譯器的predefined選項的預定義常量中。
3.4文件結構
下面的目錄保存了大部分的HA相關代碼:
3.4.1On Off Light Sample Application (Light and Switch).
- Light 工程的IAR工作空間文件:
\Projects\zstack\HomeAutomation\SampleLight\<platform> - Light 工程的源文件:
\Projects\zstack\HomeAutomation\SampleLight\Source - Switch 工程的IAR工作空間文件:
\Projects\zstack\HomeAutomation\SampleSwitch\<platform> - Switch 工程的源文件:
\Projects\zstack\HomeAutomation\SampleSwitch\Source
3.4.2 DoorLock Sample Application (DoorLock and DoorLockController).
- DoorLock 工程的IAR工作空間文件:
\Projects\zstack\HomeAutomation\SampleDoorLock\<platform> - DoorLock 工程的源文件:
\Projects\zstack\HomeAutomation\SampleDoorLock\Source - DoorLockController 工程的IAR工作空間文件:
\Projects\zstack\HomeAutomation\SampleDoorLockController\<platform> - DoorLockController 工程的源文件:
\Projects\zstack\HomeAutomation\SampleDoorLockController\Source
3.4.3 HVAC Sample Application (Thermostat, TemperatureSensor and HeatingCoolingUnit).
- Thermostat 工程的IAR工作空間文件:
\Projects\zstack\HomeAutomation\SampleThermostat\<platform> - Thermostat 工程的源文件:
\Projects\zstack\HomeAutomation\SampleThermostat\Source - TemperatureSensor 工程的IAR工作空間文件:
\Projects\zstack\HomeAutomation\SampleTemperatureSensor\<platform> - TemperatureSensor 工程的源文件:
\Projects\zstack\HomeAutomation\SampleTemperatureSensor\Source - HeatingCoolingUnit 工程的IAR工作空間文件:
\Projects\zstack\HomeAutomation\SampleHeatingCoolingUnit\<platform> - HeatingCoolingUnit 工程的源文件:
\Projects\zstack\HomeAutomation\SampleHeatingCoolingUnit\Source
3.4.4 Additional Home Automation Project Files.
- 所有Home Automation 工程通用的源文件:
\Projects\zstack\HomeAutomation\Source - ZigBee Cluster Library源代碼存放目錄:
\Components\stack\zcl
3.5 Sample Light Application
3.5.1 介紹
樣例程序能夠開/關 LED4 在設備中使用 On/Off cluster 命令, 或者 通過ZCL Write 命令設置IdentifyTime屬性為非0值 讓設備進入 Identification模式(也就是 點亮LED4)。
3.5.2 模塊
The Sample Light application由以下模塊組成 (ZigBee協議棧的最上層):
OSAL_SampleLight.c - 任務初始化的函數和表
zcl_samplelight.c – 主應用程序,有init 和 事件循環 函數
zcl_samplelight.h – 應用程序的頭文件模塊.
zcl_samplelight_data.c – 聲明 attributes, clusters, simple descriptor.
3.6 Sample Switch Application
3.6.1 介紹
運行樣例程序,這個程序可以用作電燈開關(使用SW1)來打開/關閉設備上的LED 4。
3.6.2 模塊
The Sample Switch application 由以下模塊組成 (ZigBee協議棧的最上層):
OSAL_SampleSw.c - 任務初始化的函數和表
zcl_samplesw.c – 主應用程序,有init 和 事件循環 函數
zcl_samplesw.h – 應用程序的頭文件模塊.
zcl_samplesw_data.c – 聲明 attributes, clusters, simple descriptor.
3.7 Sample Switch OTA Update Application
3.7.1 介紹
這個樣例是一個OTA升級的樣例. 它具有類似的功能,并且提供了通過使用ZigBee來升級固件的標準方法 (也就是OTA)。當使用OTA升級固件的時候, 在單個時間點,最多有2個固件鏡像可以在閃存中保存: 活動的鏡像,和下載的鏡像,下載的鏡像將在下一次上電的時候激活。
當前的鏡像版本在會在初始化時顯示在LCD上。
除了OTA指定的添加項外,Cluster Attributes,ZCL回調函數,和其他的樣例程序功能可以在 “Z-Stack OTA Upgrade User’s Guide”開發文檔中的3.6. For details of OTA update functionality進行查看。
3.7.2 模塊
The Sample Switch OTA application 由以下模塊組成 (ZigBee協議棧的最上層):
OSAL_SampleSwOta.c - 任務初始化的函數和表
zcl_sampleswota.c – 主應用程序,有init 和 事件循環 函數.
zcl_sampleswota.h – 應用程序的頭文件模塊.
zcl_sampleswota_data.c – 聲明 attributes, clusters, simple descriptor.
ota_common.h – 包含當進行OTA升級時必要的定義.
3.8 Sample Door Lock Application
3.8.1 介紹
這個樣例程序被作為一個Door Lock, 能夠接受 Door Lock cluster commands, 比如觸發
lock/unlock, 和設置一個主 PIN, 來自于Door Lock 控制設備.
3.8.2 模塊
The Sample Door Lock application 由以下模塊組成 (ZigBee協議棧的最上層):
OSAL_SampleDoorLock.c - 任務初始化的函數和表
zcl sampledoorlock.c – 主應用程序,有init 和 事件循環 函數.
zcl sampledoorlock.h – 應用程序的頭文件模塊.
zcl sampledoorlock_data.c – 聲明 attributes, clusters, simple descriptor.
3.9 Sample Door Lock Controller Application
3.9.1 介紹
這個樣例程序作為 Door Lock Controller, 能夠發送 Door Lock cluster commands, 比如觸發
lock/unlock, 和設置一個主 PIN, 發送到 Door Lock 設備.
3.9.2 模塊
The Sample Door Lock Controller application 由以下模塊組成 (ZigBee協議棧的最上層):
OSAL_SampleDoorLockController.c - 任務初始化的函數和表
zcl_sampledoorlockcontroller.c – 主應用程序,有init 和 事件循環 函數.
zcl_sampledoorlockcontroller.h – 應用程序的頭文件模塊.
zcl_sampledoorlockcontroller_data.c – 聲明 attributes, clusters, simple descriptor.
3.10 Sample Thermostat Application
3.10.1 介紹
這個樣例程序作為 Thermostat; 它接受來自Temperature Sensor device的溫度的測量值 和發送Thermostat commands到Heating Cooling Unit 設備.局部加熱或冷卻點可以配置為恒溫器設備。
3.10.2 模塊
The Sample Thermostat application 由以下模塊組成 (ZigBee協議棧的最上層):
OSAL_SampleThermostat.c - 任務初始化的函數和表
zcl_samplethermostat.c – 主應用程序,有init 和 事件循環 函數.
zcl_samplethermostat.h – 應用程序的頭文件模塊.
zcl_samplethermostat_data.c – 聲明 attributes, clusters, simple descriptor.
3.11 Sample Temperature Sensor Application
3.11.1 介紹
這個樣例程序被作為Temperature Sensor device發送溫度測量值到 Thermostat device. 局部溫度可以增加/減少,也可以手動發送當前的溫度到 Temperature Sensor。
3.11.2 模塊
The Sample Temperature Sensor application 由以下模塊組成 (ZigBee協議棧的最上層):
OSAL_SampleTemperatureSensor.c - 任務初始化的函數和表
zcl_sampletemperaturesensor.c – 主應用程序,有init 和 事件循環 函數.
zcl_sampletemperaturesensor.h – 應用程序的頭文件模塊.
zcl_sampletemperaturesensor_data.c – 聲明 attributes, clusters, simple descriptor.
3.12 Sample Heating/Cooling Unit Application
3.12.1 介紹
樣例程序作為 Heating/Cooling Unit device 接受Thermostat commands 來自于 Thermostat device和 模擬加熱和冷卻的動作, 根據從Thermostat獲取到的數據.
3.12.2 模塊
The Sample Heating/Cooling Unit application 由以下模塊組成 (ZigBee協議棧的最上層):
OSAL_SampleHeatingCoolingUnit.c - 任務初始化的函數和表
zcl_sampleheatingcoolingunit.c – 主應用程序,有init 和 事件循環 函數.
zcl_sampleheatingcoolingunit.h – 應用程序的頭文件模塊.
zcl_sampleheatingcoolingunit_data.c – 聲明 attributes, clusters, simple descriptor.
3.13 主功能
所有的示例程序都有相同的架構 和有相同的基礎模塊:
<Sample_App>_Init() – 初始化應用程序任務:
- 注冊應用程序的端點及其簡單描述符.
- 注冊ZCL General Cluster’s 回調函數.
- 注冊應用程序的屬性列表.
- 注冊應用程序 去接受未處理的Foundation command/響應消息.
- 注冊EZ Mode 數據.
- 注冊所有的key-press 事件.
- 注冊一個測試端點
- 注冊以下的ZDO消息: Match_Desc_rsp
<Sample_App>_event_loop() - 這是樣例程序的任務。它處理下列的事件,會根據不同的樣例程序:
- SYS_EVENT_MSG / ZCL_OTA_CALLBACK_IND:處理ZCL OTA的回調函數,通過調用zclSampleSwOta_ProcessOTAMsgs()。
- SYS_EVENT_MSG / ZCL_INCOMING_MSG:處理接受到的ZCL 基礎的命令/響應的消息。
- SYS_EVENT_MSG / ZDO_CB_MSG:處理響應的消息,通過調用<Sample_App>_ProcessZDOMsgs()
- SYS_EVENT_MSG / KEY_CHANGE:處理按鍵事件
- SYS_EVENT_MSG / ZDO_STATE_CHANGE:處理設備網絡狀態改變
<Sample_App>_ProcessZDOMsgs() – 處理一下響應消息:
- Match_Desc_rsp
- 樣例程序注冊的所有的ZDO messages.
<Sample_App>_HandleKeys() – 處理key-presses. 支持的按鍵請參閱 Texas Instruments document SWRU354, Z-Stack Home Sample Application User’s Guide.
<Sample_App>_ProcessIdentifyTimeChange() - 處理標識的LED閃爍。
<Sample_App>_IdentifyCB() – ZCL初始化Identification時將調用這個函數. 它將調用
<Sample_App>_ProcessIdentifyTimeChange() to 開始閃爍各自的LED.
<Sample_App>_ProcessIncomingMsg() - 這是一個根函數, 為開發人員提供一個簡單的起點,用于處理ZCL Foundation傳入的消息.
<Sample_App>_EZModeCB() – 這個回調將被告知EZ模式事件和狀態。
總結
以上是生活随笔為你收集整理的Z-Stack Home Developer's Guide—3. The Home Automation Profile and the Sample Applications中文翻译的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 排序算法:归并排序算法实现及分析
- 下一篇: 利用异步I/O复制文件及详解