下面是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中文翻译相关推荐

  1. Z-Stack Home Developer's Guide—8. Additional Information for HA Applications中文翻译

    下面是Z-Stack Home 1.2.0开发资料中的Z-Stack Home Developer's Guide-8. Additional Information for HA Applicati ...

  2. Z-Stack Home Developer's Guide—4.Using the sample applications as base for new applications 中文翻译

    本章节是官方提供的文档说明 如何将样例程序改为我们自己需要开发的程序,下面是中文翻译 4.使用样例程序为基础开发一个新的应用程序 HA样例程序旨在用作用户开的应用程序的基础,修改他们需要遵循如下步骤: ...

  3. Z-Stack Home Developer's Guide—2. Overview中文翻译【Z-Stack Home 1.2.0开发文档】

    下面是Z-Stack Home 1.2.0开发资料中的Z-Stack Home Developer's Guide-2. Overview的中文翻译 2.1 简介 这章节将介绍 Z-Stack协议栈的 ...

  4. Z-Stack Home Developer's Guide—6. Clusters, Commands and Attributes中文翻译【Z-Stack Home 1.2.0的开发文档】

    这篇文章将翻译Z-Stack Home Developer's Guide开发文档中的6. Clusters, Commands and Attributes部分,在Z-Stack中Cluster.C ...

  5. Z-Stack Home Developer's Guide—7.EZ-Mode中文翻译【Z-Stack Home 1.2.0的开发文档】

    7. EZ-Mode EZ-Mode提供了两个设备正常交流的能力,无论这个2个设备是否在zigbee网络中.它包括网络控制.网络发现和网络绑定.EZ-Mode有如下特性: 网络控制 - 找到第一个开放 ...

  6. 终于知道为什么NVIDIA的linux驱动这么烂了,一波官方文档告诉你:Linux GPU Driver Developer’s Guide

    还记得Linus在记者会上那句话吗? so,NVIDIA, F**k you! https://www.kernel.org/doc/html/latest/gpu/index.html Linux ...

  7. Developer's Guide to Microsoft Enterprise Library, C# Edition

    Developer's Guide to Microsoft Enterprise Library, C# Edition 转载于:https://www.cnblogs.com/gavinhughh ...

  8. MAPI,SAPI,and TAPI Developer's Guide(NO.1)

    MAPI,        SAPI,  and                             TAPI    Developer's Guide by Michael C. Amundsen ...

  9. Stack Overflow Developer Survey 2016 Results(2016stack overflow 开发者调查报告)

    Overview总览 This year, over fifty thousand developers shared where they work, what they build, and wh ...

最新文章

  1. java源码推荐_基于java的推荐系统实现源代码
  2. Python加密—RSA加密
  3. 32时间片轮转_系统时间
  4. CentOS7开机启动图形界面的开启与关闭
  5. 大话设计模式—责任链模式
  6. 腾讯地图api_数据库API接口的类型及应用场景
  7. 【每日SQL打卡】​​​​​​​​​​​DAY 2 丨组合两个表【难度简单】
  8. 操作系统之进程管理:17、死锁
  9. utf-8与unicode是什么关系
  10. SolidWorks结构件铝型材无法对齐
  11. android最好的数独游戏,安卓好数独游戏是哪个?
  12. 交通灯matlab程序,毕业论文设计(交通灯).doc
  13. 可爱女人,等你下课——CDN美人串烧
  14. 【高等数学】高阶偏导数与隐函数的高阶偏导数的深度辨析
  15. python抬笔_『怎样在python里让海龟画图抬笔落笔?』
  16. 用root登录亚马逊云
  17. 小红书流量红利词「0基础」实操手册
  18. Vue列表渲染v-for ... of ... 与 v-for ... in ...区别
  19. 相机成像原理之物像之间的大小关系换算
  20. cad转dxf格式文件太大,将CAD图纸文件进行转换成低版本DXF格式如何进行?

热门文章

  1. PS(留学动机)的妙用——扭转你的劣势
  2. xming+putty在windows下远程linux主机图形界面程序及putty乱码解决
  3. IIR数字滤波器的设计及应用——MATLAB
  4. Mac如何快速导出保存Pages文档里的图片
  5. fcpx插件Corporate Story for Mac(商务公司视频宣传片头模板)
  6. linux分区表导出与恢复,Linux下硬盘数据恢复与分区表恢复
  7. ht1621b和单片机电平匹配_有备无患,单片机面试问题集
  8. ESP3 + ESP-IDF | 串口1 - 简单的串口回环测试
  9. python中and和or的惰性求值特点_Python中的惰性评估
  10. win7磁盘清理_为什么要清理磁盘碎片,win7电脑怎么清理磁盘碎片