ZigBee是一种自组网协议,它是由来自全球三百多家知名企业会员民的ZigBee联盟在基于IEEE802.15.4之上定义的一个开放式全球网络协议标准,它在802.15.4的基础上定义了一套网络层协议来实现自组网功能。在标准的ZigBee协议之上,可以定义不同的profile(规范)。ZigBee联盟还定义了一系列公有规范,除此之外,任何用户也可以根据自己的需求定义自己的私有规范。

不同的规范可以定义不同的zigbee cluster library(ZCL),ZCL相当于一个存储命令集合的仓库。节点与节点之间,利用ZCL的命令来进行通信。ZCL采用的client/server模型,簇就是命令和属性的集合,而命令和属性定义了具体功能的接口。属性是设备的变量或特性,能够设置或获得。比如设置自动调温器的加热点。ZCL还提供了一种机制,利用这种机制设备能够将变化异步地报告给属性(attribute),比如当空气变热时自动控温器服务器就将室温改变报告给他的客户端,这个过程不需要客户端发起请求。

通常地,Digi的zigBee网关和网络内的ZigBee设备一起运作一个特定的ZigBee网络。任何的ZigBee设备首先都必须有ZDO(ZigBee设备对象)功能,ZDO的对应功能在XBee模块上就已经集成,主要包括像:联网通告,获取ZigBee网络ID,信道,短地址,链路质量等等ZigBee网络的基础功能。除此之外,标准的XBee模块还支持Drop-in networking协议,它能将通过串口向远端任意节点发送指令或接收数据,配置xbee模块等。除此之外,对于特定规范的支持,ZigBee网关内需要有支持这个规范的ZCL框架程序。

通常有两种方式来访问Digi的网关,并获取网络内设备的数据:一种是TCP socket程序,另一种是RPC接口的API,它是基于RCI接口协议,您可以通过Digi的设备云或是通过本地以太网访问RCI接口。通过ZCL的API调用,您可以获取ZigBee网络和网内设备基于相关的profile所定义的所有信息。

对于不跑任何公有ZigBee规范,只利用串口和ZigBee无线组网功能本身的网络。可以通过自定义的python程序来实现ZigBee网络内数据和TCP/IP程序的交互。一个常见的例子是:TCP to Zigbee dynamic name mapping。同时您也可以利用RPC接口来设置或获取一些标准的ZDO/ZCL信息。

对于一些公有规范,比如smart energy或是Home Automation之类profile,规范本身就定义了符合规范的网关设备。通常网关内会有符合规范定义的python框架程序。你可以很方便地通过RCI来获取该profile对应的ZCL定义的各种属性。

请参考RCI(Remote Command Interface)的文档来获取详细接口文档。注意RCI实现方式可以是通过设备云(Digi Remote Manager)或是本地RPC的方式。本地通过网络访问RCI接口(参考文档中的Legacy RCI)。

文档位于:https://digi-se.appspot.com/edocs/overview/index.html
RCI在线文档:https://www.digi.com/resources/documentation/digidocs/90000569/ 一个简单的本地RCI访问实例(python)

注意,这份文档虽然是Smart Energy,但其中RPC和标准ZCL的API调用,不同的规范均可参考这份文档。只是cluster定义和属性在不同规范是不同的定义而已! 更确切地,ZCL相关的文档在:https://digi-se.appspot.com/edocs/interface_reference/RPC_ZCL_Interface.html

因为文档存放在谷哥的appspot上,所以需要翻墙才能访问。