ZHA Coordinator 如何控制ZLL Light/Philips Hue Light
原文转自: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
为什么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网络中。
ZLL灯如何加入到ZHA网络中
本节中使用TI的开发板和ZigBee协议栈Z-Stack让ZLL灯加入到ZHA的网络中。
- 硬件:
1) ZHA Coordinator
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 灯的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进行控制。
对ZLL灯进行控制
[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相关推荐
- hue权限控制_如何通过键盘快捷键控制Philips Hue灯
hue权限控制 Being able to turn your lights on and off with your voice is one of the best things about ha ...
- hue数据导出到hdfs_如何将智能灯泡迁移到新的Philips Hue Bridge
hue数据导出到hdfs Philips recently released a new Hue bridge with support for Apple's new HomeKit bridge. ...
- 离线环境下hue 3 安装_您可以在没有集线器的情况下使用Philips Hue灯泡
离线环境下hue 3 安装 Philips Hue bulbs connect to a central hub that allows you to control your lights remo ...
- cdh中使用hue使用教程_我可以在户外使用Philips Hue灯泡吗?
cdh中使用hue使用教程 Philips Hue lights are great to have in your house, and they can add a lot of convenie ...
- hue zookeeper_这个甜美的Philips Hue插件使您的Minecraft照明栩栩如生
hue zookeeper Microsoft/Philips 微软/飞利浦 PC gamers drop big bucks to feel immersed in their games. But ...
- PHILIPS hue+Yeelight+HomeKit+智汀家庭云,打造全屋智能
随着人们的生活质量提高,智能家居也在逐渐的参与到我们的日常生活中. 各种设备变成智能家居,只需要动动手指或者一句话就可以对家庭中各种设备进行操控,例如在米家APP上对它进行一个配置,定点定时都可,也可 ...
- 2018/8/05--OpenGL学习笔记(七)Light Caster/Multiple Light
开篇的话:接着赶笔记,这篇写完正好回学校开始学习新的内容了. 投光物 将光投射(Cast)到物体的光源叫做投光物(Light Caster). 平行光(Directional Light) (我们通常 ...
- 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 ...
- EFR32芯片Z3LightSoc对接Philips Hue Bridge 2.1方法
一.需要的硬件 需要使用到的芯片平台是EFR32MG21A020,我这边使用一个USB Dongle代替,如下 需要一个最新的飞利浦Hue 网桥2.1,方形的,如下: 二.软件工程配置 2.1 直接使 ...
最新文章
- 德富莱智能抹墙机器人_深圳智能制造应急生产联盟成立,大咖共探机器人行业新机遇...
- 面向消息的中间件(MOM)的代表JMS
- 自己构建GlassFish 4.0快照
- np.random.uniform,random,choice,newaxis
- 科略教育:《三项管理技能企业CEO不得不修炼》
- 技巧:如何从苹果Mac跟踪设备上所有电池的电量?
- 世界各国各地区名称代码对应表
- 裸辞自学java和报培训班_程序员:裸辞十多天,不敢告诉家里人,假装每天上班,安静地成长...
- 基于C++实现惊险刺激的Flappy Bird设计
- GitHub的Java面试项目
- 如何在线将CAD图纸文件进行转换成黑白PNG格式?
- 软件测试项目流程报告,周口软件测试报告流程,科技项目申报
- 【习题35】交互程序三 + 汉化版
- [Swift]LeetCode61. 旋转链表 | Rotate List
- php小蛋白奶粉有哪些牌子,部分水解蛋白奶粉有哪些
- 网络时间的那些事及 ntpq 详解
- the file size exceeds the configured limit.code insight features are not available
- 百度推广“删除重提”是什么意思?
- RemoteFX 中的USB重定向功能
- oracle批量插入报错,MyBatis Oracle批量插入数据
热门文章
- 520 送女朋友礼物大全 (推荐男生收藏)
- 小学计算机网络培训记录表,学校校本培训活动记录表(信息技术讲座)
- 需要访问其他服务器信息吗,设置服务器访问其它电脑吗
- IDEA常用操作总结(长期更新)
- vrops vRealize Operations Manager 8云管平台部署与配置
- Tomcat(一) Tomcat是什么:Tomcat与Java技术 Tomcat与Web应用 以及 Tomcat基本框架及相关配置
- Android获取重力加速度和磁场强度
- netdisk error2
- 京东 java程序员_33岁的Java程序员火了!通过了京东社招月薪25K!我激动地一顿吃了四碗饭!...
- python类型对象<class ‘type‘>的理解与探究