陈 诠, 毕忠勤, 刘大明
(上海电力学院 计算机科学与技术学院, 上海 200090)
基于树莓派的物联网ZigBee网关的设计与实现
陈 诠, 毕忠勤, 刘大明
(上海电力学院 计算机科学与技术学院, 上海 200090)
利用树莓派这种体积小、成本低、便于携带的微型主机实现了一个电能监测ZigBee网络的多网融合网关,并基于非阻塞异步I/O,实现了PC端和手机端的并发访问.各部分功能均通过实验进行了验证.
树莓派; 物联网; 网关; 电能监测
随着物联网技术的发展,无线传感器网络技术除了在工业控制、办公自动化等领域得到应用之外,也开始现身于家庭级别的应用,如智能家电、楼宇自动化等.传感器节点一般都具有体积小、成本低、功耗低的优势,而ZigBee技术也是一种新兴的短距离无线通信技术,特别适用于低成本、低功耗、小范围的网络设备的无线通信.随着对传感器数据的收集、传输与分析,人们的日常生活也会变得更加便利和智能化.
但是ZigBee 协议与互联网中TCP/IP 协议族并不兼容,如何将ZigBee消息接入互联网,是物联网研究中的热点问题,如文献[1]基于龙芯1B开发板实现了一个物联网ZigBee网关.
树莓派作为世界上最小的台式机,外形只有信用卡大小,却具备电脑的所有基本功能,具有体积小、成本低、便于携带的应用优势及实用价值.树莓派比个人电脑体积小、耗能低;用于开发网关时,比专用开发板功能更完善,更易于维护.将树莓派作为ZigBee网络接入互联网的中继网关,特别适用于家庭级别及小规模的工业企业的传感器监测工作,例如文献[2]和文献[3]介绍了树莓派在水质监测、网络监控等方面的应用.
为了用树莓派实现ZigBee无线传感器网络的网关,本文基于一个电能监测ZigBee网络[4-5],提出了一种树莓派作为网关的设计方案,实现了ZigBee协议向TCP协议的数据传输转换,以及用于移动手机和个人电脑访问的服务器端功能.
网关是实现无线传感器网络与局域网、互联网连接的重要设备,其性能及工作状态对后续的数据存储和分析有重要影响.本文将树莓派作为家庭级别网络的网关,利用其“麻雀虽小,五脏俱全”的特性,将其部署为PC访问、手机端访问的数据服务中心,大大减少了家庭级别用户的设备需求.
整个系统的硬件结构原理如图1所示.
图1 基于ZigBee技术及树莓派网关的电能监测系统
网关为树莓派2代,B型,RAM为1GB,并配有一个无线传输WiFi模块.ZigBee网络的汇聚节点以USB端口与树莓派相接,占用的串口设备端口为ttyUSB0,波特率为115 200.连接了汇聚节点的树莓派网关实物如图2所示.
图2 已接入汇聚节点的网关实物
树莓派网关的上游实现了电能监测的ZigBee无线传感器网络,监测的数据包含各节点设备的温度、湿度、光照、电压、电流、功率、电量及数据传输的路径信息.各个节点均可作为其他节点数据无线传输的中继,且数据的无线传输一般可以穿过两面墙体,所有数据最后经过一个汇聚节点传入树莓派网关.这些无线传输的性能足以满足家庭级别及小型工业企业的需求.
树莓派网关的下游可以连接3类设备,实现3类功能,除了B/S型的PC端访问及手机端访问外,还可以C/S模式下的TCP/IP协议接收传感器数据,再将数据上传至数据库或云端设备.
2.1 网关协议转换方法
网关的首要功能是协议转换,以此为基础实现多网融合.根据文献[6],ZigBee协议与TCP/IP协议转换的工作原理如图3所示.由图3可知,网关在收到汇聚节点发来的消息后,需要根据ZigBee协议规范去除物理层、数据链路层、网络层的包头,对应用层数据进行处理.这里电能监测ZigBee网络应用层的消息帧为十六进制数据,且不包含时间戳,因此需要进行解析,并记得加入时间戳.在对应用层数据处理完毕后,按照TCP/IP协议标准重新对数据进行封装,以待发出.
图3 ZigBee协议与TCP/IP协议转换示意
网关还需要通过设置TCP服务器实现数据的转发功能.对于传感器数据,如果需要存储和分析,就要保证数据的完整性,因此网关要实现一对一的可靠数据流传输,即TCP协议传输.通过在网关上设置多线程TCP服务器,可以实现多个PC客户端对数据的接收和处理,在数据量较大时可以分工协作,最终完成数据的转发、存储等功能.
利用树莓派的优势,网关还可以实现PC端网页访问和移动手机端的访问.除了对选择好的数据加入特定的http协议头外,这里需要解决的主要问题是多个终端对网关的并发访问,移动手机端的数据访问很可能需要数秒就更新一次数据,即每隔数秒访问一次服务器,而且需要考虑多个手机同时访问的情形.
2.2 树莓派网关的总体架构设计
由于树莓派以Linux系统为基础,提供了Python语言作为用户可选的主要开发语言,因此本系统也采用Python作为主要的开发语言,涉及的主要模块有串口通信模块、套接字模块、多线程模块和异步I/O模块,均为树莓派中Python库的已有模块.
网关的架构设计如图4所示.
图4 树莓派网关的总体架构设计
利用串口通信模块可以对无线传感器网络的汇聚节点进行读写.套接字模块可以将解码后的数据以TCP/IP协议发给远程客户端,从而上传数据库或进行分析.
通过多线程并发处理,可以保证数据采集、中继及并发访问等几大主要功能的性能,这对整个网关的稳定性及性能具有关键作用.
3.1 传输协议转换
网关需要实现的首要功能便是从ZigBee协议向TCP/IP协议转换,涉及的具体工作便是对应用层传输数据格式的解码,可划分为6个主要步骤:识别帧边界,将串行数据根据边界标识符(帧头“0x7E”)划分为单个的数据帧;数据转义,将因帧头转义的数据恢复为初始数据;识别合法帧,根据特定标识位的数据判别帧的完整性及合法性,舍弃失真帧;数据解码,根据各类传感器数据的编码,对其数据进行解码计算;生成时间标签,根据当前时间加入采集时间标签;生成新数据对象,组合各传感器数据,生成数据对象,构建新的数据存储结构.
新生成的数据可以列表或字典的形式存储于内存中,而列表和字典均为线程安全,可供其他线程并行访问和编辑.
3.2 TCP数据传输服务器的搭建
由于树莓派以TF卡作为永久存储设备,因此其容量有限,而且这种设备的访问次数和访问频率也会受到一定的限制.虽然可以在树莓派上搭建数据库服务器,但由于传感器设备的数据产出频率高、数据量大,所以更好的处理方法,是将数据传输给远程客户端或云端设备,以此实现永久存储.树莓派作为网关,可以在内存中存储特定的数据结构,从而向上层提供具有一定限制的第一手分析数据.
本系统的树莓派网关,以多线程模式设置TCP协议下的套接字服务器,进行传感器数据的分发.通过监测待发送数据的长度,对连接上的各个套接字端口进行询问,从而发出数据.虽然树莓派基于Linux系统,但通过TCP协议发出的数据可以适用于各个操作系统下终端的接收,因此具有一定的普适性和灵活性.
若没有必要对数据进行永久存储,即无其他终端访问时,用于数据分发的内存中的消息列表会定时清空.
3.3 http服务器的搭建
TCP数据传输服务器的主要功能是实现无线传感器网络数据的永久存储,其并发访问要求不高,通过多线程机制足以满足数据传输的要求.但若要实现PC端或手机端对最新数据的访问,则要考虑到多用户、高频率访问的情况,这里采用了epoll异步I/O的模式进行服务器端的编程.其内核采用红黑树机制,可以大大提高epoll 的性能.
PC端用户用浏览器访问的效果如图5所示.该图是在和网关位于同一网络的个人电脑上,经Chrome浏览器,访问网关的IP(192.168.1.104)所得.访问所得的结果概览中,记录了智能用电设备的节点号、采集数据的时间,以及采集所得的温度、湿度、光照、电压、电流、功率、电能数据等.网关的PC端访问端口为8080,移动手机端访问的端口为8081.
图5 PC端浏览器访问效果
无线传感器网络的网关是将收集的数据传入局域网或互联网的关键设备,对于家庭用户及小型企业用户,配置专门的PC主机作为服务器并不现实,而树莓派这种超微型主机便成了网关开发的合适平台.本文针对一个电能监测ZigBee网络,以树莓派这种体积小、成本低、便于携带的设备作为网关,实现了数据的中继传输以及PC端、手机端直接访问的服务器端功能,具有很强的实用性能.
[1] 张艺粟,李鸿彬,贾军营,等.物联网ZigBee网关的设计与实现[J].计算机系统应用,2013(6):34-38.
[2] 于志强,温志渝,谢瑛珂,等.基于树莓派的多参数水质检测仪控制系统[J].仪表技术与传感器,2015(6):20-23.
[3] 蔡燕敏,孔维通.基于树莓派网络监控系统的研究[J].实验室科学,2015,18(6):87-90.
[4] 雷景生,苏峰,刘大明.基于WSN的智能用电监测节点的设计[J].上海电力学院学报,2016,32(2):115-119.
[5] 翁同洋,刘大明,毕忠勤.电能能耗实时监测系统的设计与实现[J].上海电力学院学报,2016,32(2):203-209..
[6] 朱剑锋,熊志斌,尹成国.ZigBee 无线传感网络与IP网络的网关设计[J].软件,2011,32(9):53-55.
(编辑 白林雪)
Design and Implementation of ZigBee Gateway in theInternet of Things Based on Raspberry Pi
CHEN Quan, BI Zhongqin, LIU Daming
(SchoolofComputerScienceandTechnology,ShanghaiUniversityofElectricPower,Shanghai200090,China)
Raspberry Pi,which is of small size,low price and light to carry,is used as a gateway of one electricity monitoring ZigBee networks.And based on non-blocking asynchronous I/O,the concurrent visit from both PC and mobile phone is realized.All the part of the gateway is verified through experiments.
raspberry Pi; internet of things; gateway; power monitoring
10.3969/j.issn.1006-4729.2016.06.020
2016-06-09
简介:陈诠(1988-),男,在读硕士,江苏盐城人.主要研究方向为物联网软件技术.E-mail:chenq182@sina.com.
TP391;TN929.5
A
1006-4729(2016)06-0599-04