基于树莓派的物联网开放平台
苏祥林1,陈文艺2,闫洒洒1
(1.西安邮电大学 通信与信息工程学院,陕西 西安710061;2.西安邮电大学 物联网与两化融合研究院,陕西 西安710061)
摘要针对当前物联网所面对的共性需求,提出了建立开放性的物联网服务平台,为物联网世界提供开放的服务。完成了对传感器数据的接入、管理、存储、处理及应用。并以树莓派作为网关设备端进行图像数据的采集,通过Http或Socket.IO与云平台服务器建立连接,完成数据的实时传输。
关键词物联网;树莓派;Socket.IO
收稿日期:2015-01-25
作者简介:苏祥林(1989—),男,硕士研究生。研究方向:物联网的应用。E-mail:xlsu@foxmail.com。陈文艺(1964—),男,博士,教授,硕士生导师。研究方向:通信集成电路设计,视频图像处理。闫洒洒(1988—),女,硕士研究生。研究方向:数据库应用。
doi:10.16180/j.cnki.issn1007-7820.2015.09.009
中图分类号TP399
Open Platform for Internet of Things Based on Raspberry Pi
SU Xianglin1,CHEN Wenyi2,YAN Sasa1
(1.School of Communication and Information Engineering,Xi’an University of Posts and Telecommunications,
Xi’an 710061,China;2.Institute of Internet of Things and Integration of IT Application and Industrialization,
Xi’an University of Posts and Telecommunications,Xi’an 710061,China)
AbstractAt present the Internet of things is applied more and more widely in every industry.This paper proposes the establishment of open networking service platform to meet the common demand of the Internet of things by providing an open service for world of the Internet.The access,management,storage,handling and application of sensor data are performed.The raspberry pi is used as a gateway device port for image data acquisition,connected through Http or Socket.IO to the cloud platform server for real-time data transmission.
Keywordsinternet of things;raspberry pi;Socket.IO
当今世界物联网已成为信息社会科技发展趋势,各国都将物联网的发展纳入重大规划中。我国也早已将物联网研究提上了议事日程,并且由中科院启动了传感网研究,但是目前世界各国对于物联网的研究还处于技术研发和试验阶段[1]。物联网的价值在于其使人与机器、机器与机器之间(M2M)的交互变得更加简单,使物理世界与计算机虚拟世界融合为一体。目前,物联网应用已涉及多个领域,如智能电网、智能家居、智能交通、智能物流、生态监视、医疗行业等。
尽管目前物联网在各领域的应用广泛,但由于市场的碎片化,各行业根据应用需求,独自建立自己的系统及终端,导致了各系统间数据无法共享,致使没有形成大规模、开放式的行业应用。本文所提及的物联网平台使用了基于 RESTful 架构的开放API体系,通过统一的 Web服务展现给用户,且该平台采用统一的资源描述方式和面向资源的架构(ROA),且具备高效的数据事件引擎、高并发处理机制等特点。通过在服务端以及设备端上同时构建Node.JS环境,使得设备端和服务端可以同时运行JavaScript代码,从而可将JavaScript作为服务器端语言,利用其异步非阻塞特性,因此在长连接、多请求的环境下优势明显[2]且在设备端树莓派上通过Node.js来实现数据的采集以及实时传输。
1物联网开放平台总体框架
本文所提出的IOT物联网开放平台的总体体系架构如图1所示,在一般B/S架构的互联网基础上[3],增加机器客户端,建立人和机器为客户端的实时B/S/M架构。
从图1中可看到,该系统主要由3部分组成:
(1)用户浏览器Browser(B)。用户浏览器与物联网云平台的Web服务器通过Socket.IO建立连接,实现实时Web通信,其主要工作是完成IOT网关的注册、管理、维护和应用,并建立各种物联网应用的人与物联网平台接口。
图1 物联网平台的体系结构
(2)IOT网关端(M)。IOT网关端即设备端与物联网云平台的Web服务器建立Http或socket.IO连接,通过Socket.IO构建实时Web通信,完成传感数据的实时传输、设备管理和维护,并实现物联网网关物理实体与物联网平台注册的虚拟实体数据库同步。
(3)物联网云平台(S)。该物联网云平台与IOT网关(Machine User agent)建立双向通信连接,将IOT网关的传感数据传输到云平台,物联网云平台基于云计算中心强大的存储和计算能力,建立网关和传感器的虚拟实体数据库,且与网关和传感器的物理实体数据实时同步,并实现对网关和设备资源的注册、存储、管理和应用服务,授权用户通过浏览器实现对资源的访问和操作。
2该物联网开放平台的特色
本文所提及的物联网开放平台,总体而言,具有以下几点特色。
(1)端+开放的云。使用了基于 RESTful 架构的开放 API 体系,通过统一的 Web服务免费展现给用户,使得企业及个人用户不必花费过多的时间在繁琐的服务器编程及维护上,可集中精力进行产品开发。
(2)统一的资源描述方式和面向资源架构。在物联网中,可被网络获取的信息、控制的操作均可被称作资源。物联网资源具有显著的异构特点,不同属性和功能的感知设备会收集到不同格式的数据,这些数据在内容、表现形式和处理方式上均有一定的差异,需创建一套流程清晰、统一的资源描述方式,并采用面向资源的架构,管理和开放资源。
(3)基于物联网网关的端。物联网网关的主要功能是完成传感器数据的预处理,实现资源的统一描述,执行操作命令。物联网网关是传感器接入物联网开放平台的入口,与传感器在物理链路上相连,可读取传感器感知的数据信息,对传感器下发控制指令[4]。
(4)事件驱动机制。物联网开放平台独有的、高效的数据事件引擎,使得传感器不再是冰冷的节点,借助事件引擎,以及平台提供的触发动作,使用户可根据自身的需要设置触发应用,从而方便地实现M2M。
3系统基本功能需求及其实现
如图2所示,系统每个模块的具体实现方式以及系统的数据流过程。在云平台中,可看到该平台主要分为4个模块:node.js反向代理、基于KeystoneJS框架的针对互联网浏览器Web服务器、基于Restify框架的针对设备端的Web服务器以及IOT资源服务平台,即应用MongoDB数据库建立的网关和设备的虚拟实体数据库[5]。其中Node.js反向代理的主要作用是用来区分对于该平台的数据请求是来自于浏览器端还是设备端,从而分发到相对应的服务器。Web服务器对数据的处理主要通过内嵌的Mongoose来实现。
图2 系统原理框图
通过以上分析,可对本文所涉及的物联网开放平台及其具体的模块结构有了详细的了解,本文要完成的基本工作是在该平台上完成设备端树莓派的注册以及通过Node.js控制树莓派摄像头实现抓图,并实现图像数据向云平台的传输和存储,从而从功能上验证了该物联网开放平台。
由于树莓派的功能较为强大,基本具备PC的所有基本功能且价格便宜,能较好地满足基本需求,所以文中选择Raspberry Pi来作为设备端[6]。通过构建Node.js环境来实现图片抓取以及传输功能。
(1)树莓派系统的启动:首先通过SD卡将Raspbian系统写入树莓派中,插入SD卡后,系统会自动启动。使用putty.exe的ssh客户端软件来连接树莓派,进入pi的登录界面输入账号和密码,Raspbian的默认账号和密码分别为pi和123。
图3 树莓派系统的启动界面
(2)树莓派摄像头的配置及启动过程:首先进行摄像头的硬件设置,RPi固件和raspi-config已为摄像头更新,接着通过执行apt-get update、apt-get upgrade命令来进行系统更新,然后重启树莓派即可。最后通过使能摄像头命令sudo raspi-config使能pi摄像头,选择Enable Camera回车即可。摄像头使能后,可通过raspistill-v-o test.jpg测试,进行图片拍摄[6]。
图4 摄像头的使能界面
由于node.js的配置是基于Python语言的,所以首先需要在树莓派上安装Python,文中通过命令apt-get install python g++在树莓派上进行源码安装。接着进行Node.js的安装,具体步骤如下:
mkdir~/nodejs && cd $_;
wget-N
nodejs.org/dist/node-latest.tar.gz;
tar xzvf node-latest.tar.gz && cd `ls-rd node v*`;
./configure;
make;
make install;
至此,在树莓派中完成了node.js环境的搭建,可通过编写Hello.js程序来进行测试node.js是否安装成功。
任何设备在接入物联网开放平台时都必须要先进行注册,在MongoDB数据库中生成其虚拟物理实体。其中设备信息包括设备标识信息、设备状态信息、设备描述信息等[7]。
设备注册时,设备标识DID、设备类型、设备状态必需定义,并至少定义一个设备操作或数据点;设备标识DID,作为设备在网关内的唯一标识,一般用自然数升序排列生成;设备类型分为数值型、位置型、图像型、视频型、音频型,其它自定义类型;当设备状态为关闭时,只能看到设备,但不能进行读写操作;Location设备地址用于描述与网关不同的传感器位置;设备描述是对设备使用的在线说明;设备操作主要实现平台对设备的输出控制、管理和维护,可定义多个设备操作,由设备内唯一的设备操作ID区分,一般用自然数升序排列生成;设备操作名称定义操作任务名,设备操作参数定义具体的输入参数,设备操作描述是对操作任务的在线说明,不同的设备有不同的操作任务,如图像型设备可以通过设备操作设定图像大小、拍摄参数、手动拍照、控制云台等。
在完成用户注册后,可在用户管理中心“我的设备”中选择增加新设备,完成设备的注册,如图5所示。
图5 设备的注册页面
设备在物联网平台上完成注册后,可通过Node.js调用树莓派的摄像头进行图像的采集以及传输工作[8],具体流程如图6所示。
图6 图片传输流程图
通过Node.js调用树莓派的拍照程序Raspistill进行图片拍摄,使用命令raspistill-t2000-otest.jpg-w640-h480可进行图片名、格式以及尺寸的更改。接着通过JPEG压缩程序对所抓取的图片进行压缩,压缩后通过Socket.IO实时传输到云平台上,经Mongoose服务器处理后存储到数据库MongoDB中,本文通过浏览器访问云平台即可观看所拍摄的图片。
4结束语
本文所提及的物联网开放平台使用了基于RESTful架构的开放API体系,通过统一的Web服务展现给用户,同时是基于Node.js环境构建的,较为新颖,虽然实现了基本的功能,但仍存在诸多不足,还有待进一步改善。本文仅通过添加设备树莓派验证了设备的注册以及图片的传输功能,后面还将添加更多的设备,如正在开发的基于FPGA+DM36X的IPCamera,以实现更多功能。
参考文献
[1]杨震.物联网及其技术发展[J].南京邮电大学学报:自然科学版,2010,30(4):9-14.
[2]黄丹华.Node.JS来发实战详解[M].北京:清华大学出版社,2014.
[3]王群.物联网体系结构研究及模拟实验平台的组建[J].实验技术与管理,2010,27(10):178-181.
[4]孙利民,李建中,陈渝,等.无线传感器网络[M].北京:清华大学出版社,2005.
[5]KyleBanker,丁雪峰.MongoDB实战[M].北京:人民邮电出版社,2012.
[6]汪鑫,彭丽薇.基于树莓派的网络监控系统的研究与发现[J].SiliconValley,2014,14(5):23-26.
[7]沈苏斌,范曲立,宗平.传感器网络及其研究进展[J].南京邮电大学学报:自然科学版,2006,17(9):2013-2018.
[8]胡金辉.物联网网关技术研究和实现方案[D].西安:西安电子科技大学,2012.