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模式事件和状态。

猜你喜欢

转载自blog.csdn.net/qq_29542611/article/details/81412979