在很多的行业规范中,都定义有网关设备。Digi的ZigBee网关除了可以作为通用的网关外,也可以作为ZigBee应用规范中定义的特定用途的网关。在作为ZigBee行业规范中的网关使用前,需要在网关中预加载有对应行业规范的程序,通常它是一套python软件和相关配置文件等。网关在ZigBee网络中扮演了一种数据和协议转换的身份,使得非ZigBee网络内的设备或服务器等,可以藉由网关来获取网内不同设备的信息和对设备进行操控。

ZigBee定义了一套ZCL的库,以方便不同制造商的设备进行信息交互。有关ZigBee网络的一些基本概念和术语,请参考ZigBee术语解析

启动过程

当网关上电后,会进行下列运行动作:

  • 导入核心模块并初始化对象。
    网关将加载配置文件中指定的模块和对象(参考网关上保存的文件)。当这一步完成后,所有的RPC请求将被注册并可以使用。注意RPC请求需要一定的条件来正常工作,比如时间同步,网络已经组建或加入等。
  • 网关等待它的XBee模块报告它已经入网,入网后ZigBee通信将可以使用。
  • 网关会尝试和一个时间服务器同步它的时间。一些网关的特性依赖于知道当前的时间,比如和ZCK/SE有关的事件等,在时间同步之前一些功能是不可用的。

时间同步

网关上的时间可以用三种方式来同步:NTP服务器,ZCL时间服务器,RPC调用set_time。用何种方式可以通过registry_settings来配置。

远端设备管理

网关会追踪网内设备的基本信息以及设备是否表现出正常活动通信状态。

设备活动

当它能响应指定ZDO匹配描述符的网关指令时,一个远端设备被检测为活动状态。下列事件会让网关生成指令请求发出:

  1. 网关收到一个未标注为活动状态的已知设备的非ZDO消息。
  2. 网关收到一个未知设备的非ZDO消息并且网关在开放网络加入的模式。
  3. 已经过了刷新周期规定的时间,参考registry_settings中的DO_Device_Manager.refresh_interval

通常设备会保持活动状态,只要:

  1. 对设备发送从未失败
  2. 正常响应周期刷新请求

如果对设备通信失败,并且连续失败超过一定次数(ZDO_Device_Manager.max_sequential_TX_failures)设备会被标注为非活动状态。这也意味着从网络中移除的设备最终也会通过周期刷新来自动被标注为非活动状态。

设备搜寻

网关会维护所有网内已知设备的信息,这是通过ZDO搜寻实现。 当一个设备首次被标注为活动状态,网关会发出下列ZDO查询请求:

  • 节点描述
  • 电源描述
  • 活动端点(Endpoints)
    当收到一个活动端点响应消息时, 会进一步发出端点描述的查询请求。
    通过这种方式,网关知道哪些cluster在远端设备可用。这些信息首先被网关用来同远端匹配本地ZCL的server和client命令簇,这种匹配反过来又被用作ZDO绑定请求的替代方法。

通过这种方法搜寻的信息在设备被标注为非活动状态时会被保留。特别地,如果一个远端模块被标注为非活动,然后又重新标注为活动,ZDO查询请求不会被重发。不过设备搜寻信息并不会断电保存,所以网关重启会重发相关的查询请求。

SE/ZCK 服务端Cluster和设备活动

如果网关上服务端的Cluster获取到远端设备中匹配的客户端Cluster的通知信息,对应的客户端Cluster会被添加到已知列表。服务端cluster使用这张客户端cluster列表来执行规范中定义的服务端操作,比如请求或确认事件。

服务端Cluster将尝试保证客户端设备能接到事件信息,如果一个事件没有成功发送给活动的客户端设备,或一个设备在事件之后才变为活动状态,并且没有主动请求服务端事件消息,那么服务端在过一段时间后(SE_Server.event_retransmission_check_interval参数)会再次发出事件消息。

当一个远端设备被标记为非活动,它的客户端cluster会被网关从列表移除。

SE/ZCK 客户端Cluster和设备活动

当网关上的客户端cluster被匹配的远端设备上的服务端cluster所通知时,服务端cluster会被添加到已知列表。此外,服务端Cluster对应的事件会自动被客户端查询。客户端cluster也会尝试做ZDO绑定到服务端cluster,以防止服务端要求客户端绑定。总之,客户端cluster使用它所知道的有服务端cluster列表来执行特定规范的客户端操作,比如查询或确认事件。

当一个远端设备被标记为非活动,它的服务端cluster会被网关从列表移除。

添加指定设备和开发加入

网关可以处于开入加入或添加指定设备的模式。在开放加入模式中,任何设备可以被标记为活动状态。变为活动状态的设备会被网关添加到已知设备列表中。在添加指定设备模式中,只有之前被添加的设备才能成为活动状态。不管是哪种模式,设备都可以通过add device的RPC命令被添加到已知设备列表中。

ZCL报告

网关支持发送和接收ZCL属性报告,网关上任何ZCL属性,只要不是纯写入的,都可以报告。 每个属性独立处理报告配置和定时器,这意味着:

  • 超时和最小/最大间隔的配置不会影响其它配置
  • RPC消息(received_attribute_report_collection*) 会为收到的每个属性独立生成报告,而不会合并。

伪报告(虚拟报告) 网关支持一种模拟报告接收模式称为伪报告。当一个报告配置设定为使用虚拟报告时,周期性的ZCL读取属性请求被送到远端设备,相当于配置远端设备发送报告给自身。这些读取请求被处理,用来生成基于指定最小/最大间隔和差异变化。从一个RPC接口来说,伪报告和正常的报告没有什么区别。这允许用户通过牺牲点ZigBee的流量来设置那些通常不支持ZCL报告的属性报告行为。请注意,除非指定不允许,伪报告也会用于正常的对远端设备ZCL报告设置请求失败后的回落报告机制。更多信息请参考start receiving reports RPC请求。

自动超时重配置 对于正常的ZCL报告,在配置指定的超时时间之后网关将不接收远端设备报告,它将重发配置到远端设备。这个目的是为了覆盖远端设备因断电或其它错误引发的配置丢失等异常。

设备无活动 进行行为报告的远端设备是否要标识为非活动:

  • 接收该设备报告的配置不进行超时重发
  • 接收伪报告配置不周期发给该设备
  • 报告发送配置发给该设备将不会发送报告。

如果该设备后来被标记为活动状态,报告机制将继续。

注册表 注册信息在网关首次启动时会被创建,并包含一个掉电保存的全局设置来控制网关行为的各种元素。单条信息可以通过registry configuration RPC请求来访问或更改。一个help RPC请求可以被用来获取所有注册条目。手动编译注册表并重启也是可行的,但通常没有必要。参考Registry Settings来查看注册表设置的相关信息。

掉电安全 一些信息会自动被保存到闪存中以维护网关在掉电重启后仍能正常工作。在正常的操作中,这些文件不需要手工修改。一般地,下列项目是掉电安全的:

  • Endpoint和Cluster配置
  • 特定的ZCL属性值
  • 报告配置
  • SE在SE 服务端cluster的事件
  • 别名定义

参考Saved Files获取进一步信息。

原文:https://digi-se.appspot.com/edocs/general_operation/general_operation.html