原文转自:http://www.deyisupport.com/question_answer/wireless_connectivity/zigbee/f/104/t/81385.aspx

ZHA Coordinator 如何控制ZLL Light/Philips Hue Light

缩写:

ZHA: ZigBee Home Automation profile

ZLL:  ZigBee Light Link profile

TCLK: Trust Center Link Key

  1. 为什么ZLL 灯加入ZHA网络

在ZLL网络中,设备支持两种方式Join ZigBee网络,一种是通过Touch Link[1]方式入网,遥控器和灯靠近配对的方式把灯拉入到ZLL网络中。另外一种是传统入网,称为Classic Commission Join的方式加入ZigBee 网络。传统入网过程如下,

(1)         节点以Trust Center(一般是协调器)作为父节点加入到网络中

(2)         节点以路由器作为父节点加入到网络中

以上入网过程都是在使能SECURE的情况下测试的,ZLL灯在通过Classic Commission Join的方式入网时,父设备通过发送Transport Key消息将网络秘钥发送给子设备,这个秘钥称为Network Key,该秘钥用于对网络内的通信数据进行加密。Network Key在从父设备发送给子设备的过程中,如果以明文发送,则有可能会被其他设备监听到,导致Network Key被窃取,使得通信不安全。所以ZigBee协议中使用Trust Center Link Key(TCLK)对通过AES  128bit加密算法对该 Network Key进行加密,过程如下。在TI Z-Stack 协议栈中通过开启TC_LINKKEY_JOIN宏定义。关于ZigBee网络的Security说明,详细参考《Z-Stack Developer's Guide.pdf》 在TI S-Stack 安装目录下的Document里面。

(3)      Network Key加密/解密过程

在ZHA的协议栈中,TCLK是公开的一个Key,在ZHA Specification[3]里面5.3.3中提到

在ZLL协议中规定默认的Trust Center Link Key和ZHA的默认TCLk是一样,在[1]的8.1.6.2节中,

这也是为什么ZLL的灯能够成功加入到ZHA的网络中去,原因是他们使用的TCLK都是一样的,当然Philips Hue Light也不例外,也可以成功的加入到ZHA网络中。

  1. ZLL灯如何加入到ZHA网络中

本节中使用TI的开发板和ZigBee协议栈Z-Stack让ZLL灯加入到ZHA的网络中。

  • 硬件:

1)  ZHA Coordinator

http://www.ti.com/tool/CC2530DK?keyMatch=CC2530DK&tisearch=Search-EN-Everything

2) ZLL Light

http://www.ti.com/tool/cc2530zdk-zll?keyMatch=CC2530%20ZLL&tisearch=Search-EN-Everything

  • 软件:

1) ZHA Coordinator

Z-Stack Home 1.2.2   http://www.ti.com/tool/z-stack

2) ZLL Light

Z-Stack Lighting 1.0.2 http://www.ti.com/tool/z-stack

  • 相关工具:

1)  Packet Sniffer Tool

http://www.ti.com/tool/cc2531usb-rd?keyMatch=CC2531%20USB%20Dongle&tisearch=Search-EN-Everything

1)  CC Debugger

http://www.ti.com/tool/cc-debugger?keyMatch=CC%20Debugger&tisearch=Search-EN-Everything

3)  SmartRF Flash Programmer

http://www.ti.com/tool/flash-programmer?keyMatch=smart%20flash%20programer&tisearch=Search-EN-Everything

4)  Packet Sniffer

http://www.ti.com/tool/packet-sniffer?keyMatch=packet%20sniffer&tisearch=Search-EN-Everything

安装Z-Stack Home 1.2.2 协议栈到默认路径下。

1) 利用IAR for 8051 9.10 打开Smapleswitch工程,选择CoordinatorEB

在C:\Texas Instruments\Z-Stack Home 1.2.2.42930\Projects\zstack\HomeAutomation\SampleSwitch\CC2530DB

默认情况下已经使能了TC_LINK_JOIN宏定义,打开NV_RESTORE用于保存网络参数。

编译并下载到SmartRF05EB开发板,

2) 利用CC Debugger和SmartRF Flash Programmer下载ZllLight-ZLIGHT.hex文件到ZLL Light,hex文件位于C:\Texas Instruments\Z-Stack Lighting 1.0.2\Projects\zstack\ZLL\SampleApp\CC253x\hex

注: 如果是从TI购买的ZLL 开发套件,出厂时是已经烧写过该程序的,所以不需要再重复烧写。

1) 将SmartRF05EB上电,Coordinator会建议一个Zigbee PAN 网络

2) 将ZLL Light 上电,按住ZLL Light上按键,保持>10s松开,ZLL Light会触发Classic Commission Join的方式开始加网过程。

3) 将整个过程利用CC2531 USB Dongle和Packet Sniifer抓包如下,

这样ZLL Light就通过Classic Commission Join的方式成功加入到ZHA的网络中
  1. ZLL 灯的Service Discovery 过程

虽然ZLL Light已经成功的加入到ZHA网络中了,现在需要通过ZHA Coordinator对ZLL Light实现控制,包括on/off,Level, Color 等方面的控制。但是此时ZHA Coordinator只知道有一个子设备(Router)加入了网络,并不知道这个是个什么设备,也不知道他支持哪些功能,他工作在什么EndPoint上面,每个EndPoint 支持哪些cluster等等。所以这时ZHA Coordinator需要开始Service Discovery过程,去获得该设备应用层面的信息。

这个Service Discovery的过程主要是调用ZDO层的相关API函数,在ZigBee Specification 2.5.5.6 Device and Service Discovery节[4]中也有说明。

1) 利用Active Endpoints Request获取ZLL Light支持的EndPoint

当ZLL Light 成功入网以后,ZHA Coordinator 调用ZDP_ActiveEPReq() API发送Active_EP_req命令给ZLL Light。 ZLL Light在收到Active_EP_req 命令以后,会在ZDP_IncomingData调用call back函数 ZDO_ProcessActiveEPReq,最后调用ZDP_ActiveEPRsp回复Active_EP_rsp,ZHA Coordinator在收到Active_EP_rsp以后,会调用ZDApp_ProcessMsgCBs函数,最后在Switch-Case下面,通过ZDO_ParseEPListRsp对这个消息进行解析。

2) 利用Simple Descriptor Request获取ZLL Light在每个EndPoint下的Cluster

通过以上步骤ZHA Coordinator获得了ZLL Light工作在哪几个EndPoint上面,现在需要对每个Endpoint进行请求获得EndPoint上面支持的In Cluster和Out Cluster。 ZHA Coordinator调用ZDP_SimpleDescReq API发送Simple_Desc_req命令给ZLL Light, ZLL Light在收到命令以后会在ZDP_IncomingData调用call back函数ZDO_ProcessSimpleDescReq,最后调用ZDP_SimpleDescMsg回复Simple_Desc_rsp,ZHA Coordinator在收到Simple_Desc_rsp以后,会调用ZDApp_ProcessMsgCBs函数,最后在Switch-Case下面,通过ZDO_ParseSimpleDescRsp对这个消息进行解析。

3) ZHA Coordinator在收到ZLL Light的device announce以后,开始进入Service Discovery过程,具体实现的程序见附件代码中,搜索ZHAZLL关键字。

在节点入网成功(Device Announce),1s后对该节点发起Service Discovery过程,完成Service Discovery以后,通过CC2530EB开发板上的Joystick-Center,可以实现对ZLL Light的On/Off Toggle, 当然对Level,Color也是类似的。

对于Philips Hue Light也不例外,可以通过同样的方式对Philips Hue Light进行控制。

  1. 对ZLL灯进行控制

1) 节点成功入网
2)Service Discovery
3)Toggle LED
测试代码(基于Z-Stack Home 1.2.2)
8510.zcl_samplesw.zip
zcl_SampleSwitch.c
zcl_SampleSwitch.h
在IAR定义宏定义 ZHAZLL
Reference:

[1] docs-11-0037-10-0zll-zigbee-light-link-zll-profile-specification.pdf

[2] 2654.Z-Stack Developer's Guide.pdf

[3] ZB_AFG-Home_Automation_Profile_for_Public_Download.pdf

[4] docs-05-3474-20-0csg-zigbee-specification.pdf

ZHA Coordinator 如何控制ZLL Light/Philips Hue Light相关推荐

  1. hue权限控制_如何通过键盘快捷键控制Philips Hue灯

    hue权限控制 Being able to turn your lights on and off with your voice is one of the best things about ha ...

  2. hue数据导出到hdfs_如何将智能灯泡迁移到新的Philips Hue Bridge

    hue数据导出到hdfs Philips recently released a new Hue bridge with support for Apple's new HomeKit bridge. ...

  3. 离线环境下hue 3 安装_您可以在没有集线器的情况下使用Philips Hue灯泡

    离线环境下hue 3 安装 Philips Hue bulbs connect to a central hub that allows you to control your lights remo ...

  4. cdh中使用hue使用教程_我可以在户外使用Philips Hue灯泡吗?

    cdh中使用hue使用教程 Philips Hue lights are great to have in your house, and they can add a lot of convenie ...

  5. hue zookeeper_这个甜美的Philips Hue插件使您的Minecraft照明栩栩如生

    hue zookeeper Microsoft/Philips 微软/飞利浦 PC gamers drop big bucks to feel immersed in their games. But ...

  6. PHILIPS hue+Yeelight+HomeKit+智汀家庭云,打造全屋智能

    随着人们的生活质量提高,智能家居也在逐渐的参与到我们的日常生活中. 各种设备变成智能家居,只需要动动手指或者一句话就可以对家庭中各种设备进行操控,例如在米家APP上对它进行一个配置,定点定时都可,也可 ...

  7. 2018/8/05--OpenGL学习笔记(七)Light Caster/Multiple Light

    开篇的话:接着赶笔记,这篇写完正好回学校开始学习新的内容了. 投光物 将光投射(Cast)到物体的光源叫做投光物(Light Caster). 平行光(Directional Light) (我们通常 ...

  8. Coaxial Light vs Ring Light on Reflective Surfaces

    Coaxial Light vs Ring Light on Reflective Surfaces同轴光对比环形光 The ring light has been the chioce of evi ...

  9. EFR32芯片Z3LightSoc对接Philips Hue Bridge 2.1方法

    一.需要的硬件 需要使用到的芯片平台是EFR32MG21A020,我这边使用一个USB Dongle代替,如下 需要一个最新的飞利浦Hue 网桥2.1,方形的,如下: 二.软件工程配置 2.1 直接使 ...

最新文章

  1. 德富莱智能抹墙机器人_深圳智能制造应急生产联盟成立,大咖共探机器人行业新机遇...
  2. 面向消息的中间件(MOM)的代表JMS
  3. 自己构建GlassFish 4.0快照
  4. np.random.uniform,random,choice,newaxis
  5. 科略教育:《三项管理技能企业CEO不得不修炼》
  6. 技巧:如何从苹果Mac跟踪设备上所有电池的电量?
  7. 世界各国各地区名称代码对应表
  8. 裸辞自学java和报培训班_程序员:裸辞十多天,不敢告诉家里人,假装每天上班,安静地成长...
  9. 基于C++实现惊险刺激的Flappy Bird设计
  10. GitHub的Java面试项目
  11. 如何在线将CAD图纸文件进行转换成黑白PNG格式?
  12. 软件测试项目流程报告,周口软件测试报告流程,科技项目申报
  13. 【习题35】交互程序三 + 汉化版
  14. [Swift]LeetCode61. 旋转链表 | Rotate List
  15. php小蛋白奶粉有哪些牌子,部分水解蛋白奶粉有哪些
  16. 网络时间的那些事及 ntpq 详解
  17. the file size exceeds the configured limit.code insight features are not available
  18. 百度推广“删除重提”是什么意思?
  19. RemoteFX 中的USB重定向功能
  20. oracle批量插入报错,MyBatis Oracle批量插入数据

热门文章

  1. 520 送女朋友礼物大全 (推荐男生收藏)
  2. 小学计算机网络培训记录表,学校校本培训活动记录表(信息技术讲座)
  3. 需要访问其他服务器信息吗,设置服务器访问其它电脑吗
  4. IDEA常用操作总结(长期更新)
  5. vrops vRealize Operations Manager 8云管平台部署与配置
  6. Tomcat(一) Tomcat是什么:Tomcat与Java技术 Tomcat与Web应用 以及 Tomcat基本框架及相关配置
  7. Android获取重力加速度和磁场强度
  8. netdisk error2
  9. 京东 java程序员_33岁的Java程序员火了!通过了京东社招月薪25K!我激动地一顿吃了四碗饭!...
  10. python类型对象<class ‘type‘>的理解与探究