新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > 多个Zigbee监测网络远程监控的实现

多个Zigbee监测网络远程监控的实现

作者:李强时间:2008-07-31来源:微计算机信息收藏

  1.概述

本文引用地址:http://www.eepw.com.cn/article/86468.htm

  基于标准的技术是一种短距离、低速率无线网络技术。其低功耗、易部署等特性,使它在无线监控、工业自动化、家居智能化等领域成了应用研究的热点。

  结合IP网络技术,可方便地实现对监测网络的远程监控。通常的实现方式是在两种异质网络的结合点(网关节点)上实现一个嵌入式的WebServer。对于多个监测网络,这种实现方式在集中监管上存在一定的困难。

  本文给出了利用IBM的消息中间件技术,对多个Zigbee监测网络进行远程集中管理的实现方法。

  2.IBM中间件

  IBM的WebSphere消息中间件产品,根据功能、应用对象的不同有不同的版本。WebSphere Connection Server Micro Edition,称为微型消息代理,主要用于嵌入式的应用,使用MQTT通信协议。

  MQTT是IBM开发,在2001年发布的一个开放、轻型的消息传输协议,专门用于远程传感应用等低带宽的网络通信,并支持发布/订阅消息传递模式。

  消息中间件系统的基本元素是客户端、消息和消息代理。在发布/订阅消息传递模式中,发布者和订阅者是客户端,通过连接到消息代理在网络中传递数据。发布者向消息代理发送特定主题的消息,订阅者向消息代理订阅特定主题的消息,发布者和订阅者之间的连接由消息代理管理。当消息代理收到发布提供的消息后,由它向订阅者传递所订阅的消息。

  3.实现原理

  采用中间件技术后,整个系统结构由两层结构变成了三层结构,如图1所示。


图1系统结构

  底层为多个Zigbee监测网络,负责监测数据的采集。每个Zigbee监测网络有一个网关节点和若干的数据采集节点。监测网络采用星型结构,网关节点作为每个监测网络的基站。网关节点具有双重功能,一是充当网络协调器的角色,负责网络的自动建立和维护、数据汇集;二是作为监测网络与中间层交互的接口,与中间层的消息代理传递消息。

  中间层为消息代理,完成消息的路由功能。分别接收管理应用、网关节点发来的消息,然后进行转发,使管理应用与监测网络的网关间实现数据交互。

  上层为管理应用,作为人机接口,实时显示各个Zigbee监测网络的监测数据;接收用户的各种设置参数和控制命令。

  网关节点与管理应用间的数据传递是双向的,即网关节点接收到数据采集节点发来的监测数据后,预处理后形成消息发给消息代理,由消息代理转给管理应用;管理应用收到用户的设置参数或控制命令后,形成消息传递给消息代理,再由消息代理发给网关节点。所以,它们即是消息的提供者,也是消息的使用者。

  发布/订阅模型允许多个消息提供者向同一主题发布消息。因此,多个Zigbee监测网络通过其网关节点分别连接到消息代理,向同一主题发布有关监测数据的消息。管理应用通过订阅同一个主题,就能获得所有监测网络的监测数据。

  另外,发布/订阅模型还允许多个消息使用者订阅同一个主题,消息代理会向不同的订阅者广播。因此,不同网关节点订阅同一主题后,管理应用只需向消息代理发送一条控制命令,多个监测网络的网关节点就能收到同一条控制命令。

  4.  具体实现

  4.1. 与消息代理间的消息传递

  通过MQTT协议实现管理应用、监测网络中网关节点与中间层消息代理间的数据传输。

  首先需要对中间层的消息代理进行配置,主要包括:创建连接工厂、创建主题、创建激活规范等。

  在消息代理上需要创建两个主题,一个用于传递监测数据,一个用于传递控制命令。不同监测网络的网关节点向监测数据主题提供消息,管理应用订阅监测数据主题。管理应用向控制命令主题提供消息,不同的网关节点订阅控制命令主题。

  网关节点、管理应用作为客户端,还需要编写专门的消息收、发送模块。虽然它们运行平台不同,网关节点运行于嵌入式设备的Linux环境,管理应用运行于台式机的Windows环境,但它们实现的步骤和原理是一样的。用MQTT库实现消息的发布和订阅模块,主要包括以下几个部分。

  一、连接 MQTT

  1) 生成连接字符串:指定消息代理主机的IP地址和MQTT分配的端口号,端口号缺省值为 1883;

  2) 设置连接属性,包括客户机的标识、订阅类型、发送活动消息的间隔时间;

  3) 创建 MQTT 客户机对象。

  二、向代理发布信息

  直接使用MQTT 提供的API函数publish,需要提供主题、消息、服务质量等参数。

  三、向代理订阅消息

  订阅是由 MQTT 对象处理的,要求有两个数组参数。分别是订阅主题数组、服务质量数组。这两个数组是“索引关联的”。

  主题数组是一个字符串对象数组,主题按层次结构排列,并且通过“/”字符分隔。


  服务质量数组是一个整数类型的数组。服务质量的值可以为 0、1 和 2,根据具体的应用设置。通常将服务质量的值置为2,使消息仅传递一次,以减少传输开销。

  四、接收来自代理的消息

  要使应用能接收到订阅的消息,必须创建一个回调处理函数,并且在MQTT客户端注册。

  用MqttSimpleCallback 接口创建简单接口的对象,并实现connectionLost 和 publishArrived两个方法。

  当与代理的连接意外终止时,就调用 connectionLost 方法。如果出现这种情况,则此方法试图重新连接到代理。如果 connectionLost 方法无法重新连接,则会抛出异常来通知客户机重新连接失败。

  publishArrived 方法通知系统订阅主题的消息已到达客户端。

 


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭