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