基于ZigBee的通信基站环境监控系统设计

基于ZigBee的通信基站环境监控系统设计

ID:37030148

大小:1.46 MB

页数:68页

时间:2019-05-15

上传者:文档小小白
基于ZigBee的通信基站环境监控系统设计_第1页
基于ZigBee的通信基站环境监控系统设计_第2页
基于ZigBee的通信基站环境监控系统设计_第3页
基于ZigBee的通信基站环境监控系统设计_第4页
基于ZigBee的通信基站环境监控系统设计_第5页
资源描述:

《基于ZigBee的通信基站环境监控系统设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

单位代码:10293密级:专业学位硕士论文论文题目:基于ZigBee的通信基站环境监控系统设计学号1313080480姓名朱天成朱天成导师王文鼐教授赵越高工专业学位类别申请在职类型申请工程硕士专业(领域)电子与通信工程论文提交日期2017.10 DesignoftelecommunicationbasestationenvironmentmonitoringsystembasedonZigBeeThesisSubmittedtoNanjingUniversityofPostsandTelecommunicationsfortheDegreeofMasterofEngineeringByTianchengZhuSupervisor:Prof.WennaiWang,SnEngr.YueZhaoOctober.2017 南京邮电大学学位论文原创性声明本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得南京邮电大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。本人学位论文及涉及相关资料若有不实,愿意承担一切相关的法律责任。研究生签名:_____________日期:____________南京邮电大学学位论文使用授权声明本人授权南京邮电大学可以保留并向国家有关部门或机构送交论文的复印件和电子文档;允许论文被查阅和借阅;可以将学位论文的全部或部分内容编入有关数据库进行检索;可以采用影印、缩印或扫描等复制手段保存、汇编本学位论文。本文电子文档的内容和纸质论文的内容相一致。论文的公布(包括刊登)授权南京邮电大学研究生院办理。涉密学位论文在解密后适用本授权书。研究生签名:____________导师签名:____________日期:_____________ 摘要在我国,通信基站遍布全国各地,人工管理通信基站不仅效率低下,而且浪费大量的人力和财力。为提高通信基站的管理和维护水平,本文综合运用嵌入式技术、数据存储技术、网络通信技术等方法对基站环境进行实时监控,及时发现通信基站的异常状况,上报和记录报警信息,以有效保证通信基站安全可靠运行。论文介绍了通信基站环境监控的国内外研究状况,针对通信基站环境监控的实际需求,确定了远程监控系统的总体方案。系统由远程监控单元、服务端和客户端组成,系统架构的骨干协议选用MQTT协议,采用无线网络实现相互间数据通信。运用嵌入式技术设计了远程监控单元,该单元包括多个ZigBee节点模块。传感器检测基站环境温湿度、烟雾、UPS电压及图像等参数,经模块向网关传输数据,再通过协调器将数据上传给服务端。在服务端开发了数据库管理程序,实现了监控数据的记录、历史数据的查询及用户管理等功能。应用AndroidStudio设计了客户端程序,提供了实时查看、发送控制命令等功能,满足了客户端数据输入输出处理的要求。测试结果表明:系统运行稳定,满足通信基站监控的要求。关键词:通信基站,ZigBee,远程监控,客户端I AbstractInourcountry,thecommunicationbasestationspreadsalloverthecountry;theartificialcommunicationbasestationmanagementisnotonlyinefficient,butalsowastesalotofmanpowerandfinancialresources.Inordertoimprovethecommunicationbasestationmanagementandmaintenancelevel,embeddedtechnology,datastoragetechnologyandnetworkcommunicationtechnologyisusedforreal-timemonitoringandcontrol,detectingtheabnormalsituationofcommunicationstation,reportingandrecordingalarminformation,effectivelyensuringthesafeandreliableoperationofcommunicationbasestation.Thisthesisintroducestheenvironmentalmonitoringstationcharacteristicsandtheresearchsituation.Thesystemiscomposedofremotemonitoringunit,clientandserver.TheunitconsistsofmultipleZigBeenodemodules;theycanchecktemperature,humidity,smoke,UPSvoltageandimageofthebasestationandtransmitdatathroughthemoduletothegateway.Theserverdesigndataandthecommunicationprotocolbetweenclientandserver.TheclientprogramisdesignedbyusingAndroidStudio,whichprovidesthefunctionsofreal-timeview,sendingcontrolcommandandsoon,andrealizesthedatainputandoutputprocessing.Inaddition,themonitoringsystemcanprovidehistoricaldataqueryandusermanagementfunctions.Keywords:CommunicationBaseStations,ZigBee,RemoteMonitor,ClientII 目录专用术语注释表..............................................................................................................................................V第一章绪论....................................................................................................................................................11.1研究背景及意义..............................................................................................................................11.2国内外研究现状..............................................................................................................................21.3论文的主要内容与组织结构..........................................................................................................21.3.1论文的主要内容..................................................................................................................21.3.2论文的组织结构..................................................................................................................3第二章ZigBee技术介绍...............................................................................................................................52.1ZigBee介绍......................................................................................................................................52.2ZigBee技术的特点..........................................................................................................................52.3ZigBee网络的设备分类及功能介绍..............................................................................................62.4ZigBee网络的拓扑结构..................................................................................................................62.5ZigBee协议框架..............................................................................................................................72.6本章小结..........................................................................................................................................7第三章环境监控系统总体方案及分析........................................................................................................83.1环境监控系统的概况......................................................................................................................83.2环境监控系统的分析......................................................................................................................83.3环境监控系统的功能......................................................................................................................83.4环境监控系统实现的方案..............................................................................................................93.5开发环境简介................................................................................................................................103.6本章小结........................................................................................................................................11第四章远程监控单元的设计与通信的实现..............................................................................................124.1远程监控单元的结构组成与硬件选型........................................................................................124.1.1远程监控单元的结构设计................................................................................................124.1.2远程监控模块的器件及设备选型....................................................................................134.2协调器与监控单元程序设计........................................................................................................174.2.1协调器程序设计................................................................................................................174.2.2监控单元程序设计............................................................................................................184.3远程监控模块的通信协议分析与设计........................................................................................194.3.1通信协议的基本帧格式....................................................................................................194.3.2远程监控单元与协调器报文的设计................................................................................204.3.3协调器与服务器报文的设计............................................................................................204.4本章小节........................................................................................................................................22第五章服务端设计与实现..........................................................................................................................235.1服务端介绍....................................................................................................................................235.2服务端功能的分析........................................................................................................................235.3服务端通信协议的选择................................................................................................................235.4服务端数据的存储........................................................................................................................255.4.1数据存储的分析................................................................................................................255.4.2数据存储的设计................................................................................................................255.4.3数据存储的实现................................................................................................................325.5服务端及客户端间数据通信的实现............................................................................................33III 5.6本章小结........................................................................................................................................35第六章客户端的软件设计..........................................................................................................................366.1客户端功能分析............................................................................................................................366.2客户端开发环境的配置................................................................................................................366.3客户端接口的实现........................................................................................................................386.3.1用户管理接口....................................................................................................................386.3.2设备模块管理接口............................................................................................................396.3.3设备历史记录接口............................................................................................................416.4客户端实时显示模块的实现........................................................................................................436.4.1实时显示模块的原理........................................................................................................436.4.2实时显示模块的实现........................................................................................................466.4.3实时控制模块的实现........................................................................................................506.4.4监控图像显示的实现........................................................................................................526.5本章小结........................................................................................................................................55第七章总结与展望......................................................................................................................................567.1论文总结........................................................................................................................................567.2展望................................................................................................................................................56参考文献........................................................................................................................................................58致谢................................................................................................................................................................60IV 南京邮电大学专业学位硕士研究生学位论文专用术语注释表专用术语注释表缩略词说明:MQTTMessageQueuingTelemetryTransport消息队列遥测传输XMPPExtensibleMessagingandPresenceProtocol可扩展通讯和表示协议CoAPConstrainedApplicationProtocol受限应用协议MACMediaAccessControl媒体介入控制层UPSUninterruptiblePowerSystem不间断电源APIApplicationProgrammingInterface应用程序编程接口APPApplication应用程序SDKSoftwareDevelopmentKit软件开发工具包V 南京邮电大学专业学位硕士研究生学位论文第一章绪论第一章绪论1.1研究背景及意义随着移动通信技术的日益普及,通信网络规模也愈来愈庞大,截止2017年4月,我国移动终端的用户数达到13.5亿个,占全球移动终端用户数的27%,移动通信网络系统包括移动基站、传输媒介、交换设备、接收终端等。其中,基站是在一定的无线电覆盖区中,通过移动通信交换中心与移动电话终端之间进行信息传递的无线电收发信电台[1]。作为通信网络的组成部分,基站起着重要的作用,直接影响着网络的通信质量。基站动力设备和环境设施的好坏是决定通信网络能否正常工作的关键。我国目前通讯基站的数量达560万个,而且数量还在不断增加。由于基站分布广泛且每个基站又没有配备专人值班,因此当机房环境出现变化时运维人员不能及时了解情况,容易导致基站工作故障,甚至造成局域通信网络的通信中断,影响用户感知。目前,基站维护管理中存在以下问题:(1)由于基站分布范围广,部分基站地理位置相对偏僻,人工定期巡检交通不便,管理和维护人员需要花费大量的时间。且人工巡检还受制于天气等因素,工作效率较低。(2)人工采集的数据准确度差,汇总统计工作繁重,容易出现信息不全、混乱及错误的现象。现存的基站信息统计表中有些设备的数据是过时的老数据,一些新设备没有数据记录而且现有数据中有些明显不符合实际正常值的错误数据,这给监管人员的统计工作带来了很大的困难。(3)现有的基站监控系统虽然可以实现监控,但不能实现智能联动,而且不同厂家的设备相互不能通信,还是需要人工介入,没有实现统一的机房监控管理系统,这也会增加各种成本。目前,已有许多公司开发出类似的基站环境监控系统,这些产品涉及监控的环境变化量多,适合集中的大型通信基站环境监控。但是对于中小型基站而言,这些产品复用性较小,价格偏高。整体来说,不适合中小型通信基站的监控,因此,迫切需要中小型基站的监控系统[2]。针对目前运营商基站分布广、数量大、维护人员不足、管理困难和监控系统未普及的现状,本课题运用ZigBee无线传感网络技术实现机房环境的参数采集,并结合嵌入式系统实现1 南京邮电大学专业学位硕士研究生学位论文第一章绪论远程监控的功能。无线数据采集方案省掉铺设电缆的费用和安装与重新布控的施工费用,无线设备本身成本较低,非常便于监控系统的安装及普及,实现对基站设备、环境及出入人员科学有效的监管,加强了基站的安全防范,具有很高的性价比和相当的技术竞争优势,可为基站的运行维护提供良好的保障[3]。1.2国内外研究现状目前,针对通信基站国内外通信设备企业与科研院所已相继开发了多种类型的监控系统。胥小武提出了采用嵌入式技术、数据存储技术、网络通信等技术,设计了通信基站环境监控系统的解决方案[1]。娄阳提出了采用基于2M双向环组网的动力与环境集中监控系统的解决方案,实现移动基站动力与环境集中监控人机交互功能、数据存储功能[4]。崔恒源提出了一种通信电源集中监控管理系统,基于GPRS通讯实现对移动通信基站电源进行实时的监测和管理[5]。肖扬设计了通信基站应急发电机监测系统,实现了发电信息显示和存储,并发送人机管理信息给监控平台,进而完成人机管理和发电机调度[6]。华为公司开发了动力设备及环境集中监控系统;香港丰联研发了通信电源和空调设备集中监控系统;中兴通信公司研发的监控系统,能够实时监控基站的动力设备及环境变量,上报监控信息并进行分析处理。这些系统已经投入到大型机房中使用。但这些设备大部分是集中式的监管和报警系统,各厂家研发的设备之间缺乏兼容性,相互之间不能互联互通,因而设备使用有较多的局限性。在国外,艾默生能源有限公司,针对不同规模通信机房研制了不同的成熟产品,如小型通信机房空调监控产品,能适应机房运行的要求。爱立信公司开发的监控系统,可将报警信息划分为不同等级,并能够采用不同状态灯代表不同的报警内容,方便维保人员处理。由于各个厂家的监控设备和通信协议不一样,操作和维保人员需要熟记各种指令信息,而指令本身信息多且繁琐,会导致工作量增加[7]。1.3论文的主要内容与组织结构1.3.1论文的主要内容本论文采用ZigBee技术对通信基站环境进行实时监测,由于基站分布广泛,每个机房均可使用ZigBee模块,可以将各个基站监测数据汇总分析。2 南京邮电大学专业学位硕士研究生学位论文第一章绪论本系统要求能够实现对基站环境的温湿度、烟雾、人体入侵、UPS电源电量进行实时监测,并根据实时监测的结果控制基站室内空调的运行、远程开关门禁。用户可通过手机客户端查看监控参数,通过图像监控实时查看通信机房状况。本课题研究的监控系统包括三部分:远程监控单元、服务端和客户端。远程单元的各釆集信息模块以主控芯片CC2530为核心,采集基站环境的各类参数,远程单元中协调器利用网络把数据传输到服务端,管理人员通过客户端能够及时掌握被监控基站的运作情况,如果出现远程终端不能够处理的情况,监控中心可以及时做出解决方案。本课题主要完成以下几项工作:(1)完成通信基站环境监控系统总体方案设计。(2)完成基站远程单元各个监控设备的协调运作,包括基站内部各种传感器和智能设备的选型。(3)完成协调器的程序开发。(4)实现底层硬件与协调器传输数据和控制命令等。(5)实现服务端与各个监控设备、客户端通信。(6)在服务器上设计数据库,实现监控数据存储与查询。(7)利用开源开发软件AndroidStudio设计手机客户端软件。1.3.2论文的组织结构本论文利用计算机网络技术、嵌入式开发技术,设计并实现通信基站环境监控系统。论文的组织结构安排如下:第1章绪论。首先介绍了论文研究背景及意义;其次对通信基站环境监控国内外研究现状做了简要的介绍;最后,阐述了论文的主要研究内容和组织结构安排。第2章ZigBee技术介绍。主要阐述了ZigBee的技术特点、ZigBee网络的设备分类及功能、ZigBee网络的拓扑结构及ZigBee协议框架。第3章环境监控系统总体方案及分析。简要介绍了通信基站,分析了监控系统的需求,对监控系统进行了详细的设计,包括通信网络选择、系统工作方式、硬件设备选型、开发工具等。第4章远程监控单元的设计与通信的实现。介绍了远程监控单元的结构组成,搭建硬件平台,确定远程单元中各个监控设备的数据通信协议,完成了远程单元的设计与程序实现。3 南京邮电大学专业学位硕士研究生学位论文第一章绪论第5章服务端的设计与实现。主要确定服务端与网关和客户端间通信协议,通过订阅同一“话题”,实现各数据实时传输。同时,确定数据库中的表结构以及需要存储的字段。第6章客户端软件的设计与实现。分析了监控软件的结构,根据监控软件结构设计了监控软件的功能,详细介绍了客户端软件读取监控数据和给出控制命令的设计与实现过程。第7章总结与展望。对本文的工作进行总结,并对下一步研究工作提出建议。4 南京邮电大学专业学位硕士研究生学位论文第二章ZigBee技术介绍第二章ZigBee技术介绍2.1ZigBee介绍ZigBee技术是一种近距离、低复杂度、低功耗、低速率、低成本的双向无线通讯技术,用于距离短、功耗低且传输速率不高的各种电子设备之间进行数据传输以及典型的有周期性数据、间歇性数据和低反应时间数据传输的应用[8]。ZigBee的网络标准由IEEE802.15工作组制定,故称为802.15(ZigBee)技术标准。2.2ZigBee技术的特点作为一种无线通信技术,ZigBee技术具有如下特点[9]:(1)速率低:ZigBee的数据传输速率只有20~250kb/s,分别提高250kb/s(2.4GHz),40kb/s(915MHz)和20kb/s(868MHz)的原始数据的吞吐率,满足低速率的传输数据的应用需求。(2)功耗低:在低功耗的待机模式下,2节普通5号电池可以使用6~24个月。(3)成本低:因为ZigBee数据传输速率低、协议简单,所以大大降低了成本;并且ZigBee协议免收专利费,ZigBee网络模块一般在1000元以下,而主要使用的网络节点价格可降到100元以下。(4)容量大:ZigBee网络可由一个节点管理若干个子节点,最多一个节点可以管理254个子节点,同时该节点还可有上一层网络节点管理,可组成65000多个节点大型网络。(5)时延短:ZigBee的响应速度较快,一般从睡眠状态转入工作状态只需15ms,节点连接进入网络只需要30ms,相对其他短距离无线通信而言,蓝牙需要3~10s,Wi-Fi需要3s,这样一方面节省了能量消耗,另一方面更适用于对时延敏感的场合。(6)距离近:ZigBee的传输范围一般介于10~100m之间,能覆盖普通的家庭和办公场所,在增加RF发射功率后,可增加到1~3KM。(7)安全性高:ZigBee提供了三级安全模式,保证安全性。5 南京邮电大学专业学位硕士研究生学位论文第二章ZigBee技术介绍(8)可靠性高:采取了碰撞避免策略,同时为需要固定宽带的通信业务预留了专用时隙,避开了发送数据的竞争和冲突。同时,MAC层采用了完全确认的数据传输模式,每个发送的数据包都必须等待接收方的确认信息,如果传输过程中出现问题可进行重发。2.3ZigBee网络的设备分类及功能介绍ZigBee网络设备分为全功能设备和精简功能设备两种类型;根据设备在网络中承担通信任务的不同赋予协调器、路由器和终端三种节点类型。(1)设备类型ZigBee网络中,支持两种类型的物理设备:全功能设备和精简功能设备。全功能设备支持任何拓扑结构,可以成为协调器,能和任何终端通信。精简功能设备只能和网络协调器通信,不能成为网络协调器[10]。(2)节点类型ZigBee网络通常有三种节点,分别是:协调器,路由器和终端。协调器是最复杂的一种,主要功能用于建立一个网络、管理网络节点、存储网络节点信息等,它属于全功能设备。路由器负责将申请加入网络的新的ZigBee终端节点添加到网络拓扑中,然后可以管理和维护新加入的终端并和其他节点通信,它也属于全功能设备。终端节点没有搭建网络的能力,但它能便捷的与路由节点结合在一起,满足用户对一些数据测量的需求,是精简功能设备[11]。2.4ZigBee网络的拓扑结构ZigBee网络主要有三种组网方式[12]:星型,簇状型和网状型,其拓扑结构如图2.1所示。图2.1网络拓扑结构6 南京邮电大学专业学位硕士研究生学位论文第二章ZigBee技术介绍星型网络拓扑结构的数据和网络命令都是通过协调器传输[13]。该网络结构简单,协调器需要承担较多的管理工作,网络的覆盖范围有限。簇状型网络拓扑结构是多个星型拓扑的集合。树簇型拓扑结构的优点是它保持了星型拓扑的简单性,具有较少的上层路由信息和较低的存储器需求,但是它不能很好的适应外部的动态环境[14,15]。网状型网络拓扑结构是一个自由设计的拓扑,具有很高的环境适应能力。网状型拓扑结构的网络中每个节点都是一个小的路由器,都具有重新选择路由的能力,以确保网络最大限度的可靠性[16]。2.5ZigBee协议框架ZigBee是一组基于IEEE批准通过的802.15.4无线标准研制开发的组网、安全和应用软件方面的技术标准。与其他无线标准(如802.11或802.16)不同,ZigBee和802.15.4以250Kbps的最大传输速率承载有限的数据流量[17,18]。采用ZigBee技术的产品可以在2.4GHz上提供250kbit/s(16个信道)、在915MHz提供40kbit/s(10个信道)和在868MHz上提供20kbit/s(1个信道)的传输速率。传输范围依赖于输出功率和信道环境,介于10m到100m之间,一般是30m左右[19]。由于ZigBee使用的是开放频段,已有多种无线通讯技术使用。相比较2.4GHz频段,900MHz频段为低频频段,无线传播的损失较少,传输距离较长。在MAC层上,主要沿用WLAN中802.11系列标准的CSMA/CA方式,以提高系统兼容性,所谓的CSMA/CA是在传输之前,会先检查信道是否有数据传输,若信道无数据传输,则开始进行数据传输,若产生碰撞,则稍后一段时间重传[20]。ZigBee协议套件紧凑且简单,具体实现的硬件需求很低,8位微处理器80c51即可满足要求,全功能协议软件需要32K字节的ROM,最小功能协议软件需求大约4K字节的ROM[21]。2.6本章小结本文旨在设计一个基于ZigBee技术的基站环境监测系统,因此,在本章中对研究与设计过程中所用的ZigBee技术做了简单介绍。本章主要阐述了ZigBee的技术特点、ZigBee网络的设备分类及功能、ZigBee网络的拓扑结构及ZigBee协议框架。7 南京邮电大学专业学位硕士研究生学位论文第三章环境监控系统总体方案及分析第三章环境监控系统总体方案及分析3.1环境监控系统的概况随着当前通信技术的迅速发展,通信基站的数量也在明显增长,基站的运行环境将直接影响设备运行的稳定性。而通信基站的分布范围广泛,需要环境监控系统进行自动监控、控制机房环境,但是现阶段只有大型基站的监控设备配备较为完善,许多中小型基站监控设备缺乏,技术水平也较低,多采用人工巡检的方式控制机房环境,这不仅效率低,而且也无法及时发现潜在危险。基站环境监控的内容包括动力设备参数、机房环境参数、机房安全等[1]。除监控外,系统还需要联动空调设备、摄像头设备与其环境(温度、湿度)进行协调工作,使基站运行在一个相对稳定的环境中。3.2环境监控系统的分析为了保障基站设备的稳定运行,要求机房必须保持合适温湿度环境。环境温度过高或者过低会导致基站设备运行不稳定甚至烧毁板卡。因此,在基站机房中配备有空调系统,当机房的环境温度高于30度时,环境监测系统能够检测到温度的变化并打开空调,低于26度时能关闭空调,节能降耗。监控单元温湿度传感器采样周期20秒,在客户端可以实时查看温度信息。为防止火灾发生和蔓延,需要对基站环境的烟雾进行检测和报警。对巡检人员的定期巡检需要进行登记,便于考核管理,巡检人员通过RFID卡或客户端控制门禁进入基站。非法人员入侵基站,监控系统应能检测报警并启动图像监控。此外,监控系统还需要具备检测基站有无水灾、UPS电源的状态等功能,所有数据必须记录在数据库中,方便生成报表和历史数据查询。3.3环境监控系统的功能为了更好的管理基站环境及设备,开发用于基站环境及设备的监控管理系统,为基站设备安全稳定运行提供了一个良好的环境基础。该系统大大减轻了基站维护人员负担,提高了系统的可靠性,实现了基站的科学管理。该系统支持无线网络传输,运维人员可以通过手机8 南京邮电大学专业学位硕士研究生学位论文第三章环境监控系统总体方案及分析客户端随时随地的远程查看基站各种监控设备的工作状况,基站的实时图像以及各种环境参数等[2]。本系统的功能结构如图3.1所示,主要实现机房的环境监测、门禁控制、UPS电源监控等功能。通信基站监控方案主要分为:门禁系统,环境监测系统,手机客户端三个功能模块。图3.1系统功能结构图(1)门禁系统:主要实现当有巡检人员刷卡时记录下巡检人员的编号,巡检时间信息,并将数据上传到服务端。(2)环境监测系统:主要实现温湿度采集、烟雾浓度采集、空调控制、人员入侵监控、摄像头控制、UPS电源监控功能。实现各个环境参数的采集并上传到服务端。(3)手机客户端:手机客户端主要与服务端进行通信实现温湿度的呈现、远程控制门禁的开关、视频图像的呈现、UPS电源电量的显示、远程控制空调的启动等功能。3.4环境监控系统实现的方案本系统主要使用ZigBee作为通信媒介,将现场数据收发传递。通信系统的架构图如图3.2所示。门禁系统和监控系统视为ZigBee的节点,各个节点与ZigBee网关进行相连。ZigBee网关可以通过网络与远程服务器进行连接实现信息的传递。服务端部署在阿里云服务器中,主要负责将收到的信息进行处理,如存储、转发等。手机客户端通过与服务器进行通信获取需要的信息、进行展示控制等。9 南京邮电大学专业学位硕士研究生学位论文第三章环境监控系统总体方案及分析图3.2系统架构图系统架构中的主要通信协议是MQTT协议。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,它的这些特点适用范围非常广泛。在偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。本监控系统使用该协议实现消息的相互传递功能。3.5开发环境简介本系统中的安卓系统开发环境使用谷歌官方提供的AndroidStudio作为开发平台,使用Java作为标准开发语言,服务端使用Python3.6语言。(1)AndroidStudio它是一个Android集成开发工具,基于IntelliJIDEA,类似EclipseADT。AndroidStudio提供了集成的Android开发工具用于开发和调试。在IDEA的基础上,AndroidStudio提供:基于Gradle的构建支持;Android专属的重构和快速修复;提示工具以捕获性能、可用性、版本兼容性等问题;基于模板的向导来生成常用的Android应用设计和组件;功能强大的布局编辑器,可以让你拖拉UI控件并进行效果预览[22]。(2)Python3.6语言10 南京邮电大学专业学位硕士研究生学位论文第三章环境监控系统总体方案及分析它是一种语法简洁清晰的编程语言,具有丰富和强大的库,常被称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如性能要求特别高的模块,可以用C/C++重写,而后封装为Python可以调用的扩展类库。现已被逐渐广泛应用于系统管理任务的处理和Web编程[23]。3.6本章小结本章主要分析了通信基站环境监控系统的需求,明确监控系统需要实现的功能,确定了监控系统的总体方案。并对远程监控单元的工作要求、硬件结构等做出了说明,最后介绍了系统使用的开发工具和开发环境等相关内容。11 南京邮电大学专业学位硕士研究生学位论文第四章远程监控单元的设计与通信的实现第四章远程监控单元的设计与通信的实现本章在第三章通信基站环境监控系统的总体结构设计基础上,对远程监控单元进行具体分析与设计,包括硬件的选择、通信协议的设计和软件的设计。4.1远程监控单元的结构组成与硬件选型4.1.1远程监控单元的结构设计根据通信基站环境监控远程单元的需求可知,有多个ZigBee单元,因此,协调器的作用非常重要,它的用处是接收各监控单元采集的数据并上传至服务器,同时发送客户端的指令,实现对空调、门禁开关的智能控制。本系统采用树型结构,如图4.1所示,由一个协调器和多个终端构成,每个终端和协调器之间采用点对点的通信方式,终端和终端之间不通信。其中协调器实现了服务器到终端,终端到服务器的数据转发。服务器协调器终端1终端2...终端n-1终端n图4.1系统结构图图4.2为终端的结构图,连接了多个传感器设备,可以检测温湿度、烟雾、UPS电源电量、人体红外以及巡检状态。各个终端可以根据不同的需求安装不同的监测模块,实现灵活调整的功能。终端温湿度烟雾电量人体红外巡检图4.2终端结构图根据基站的运行环境要求,温湿度采集模块与空调协同工作才能让机房的环境温湿度保持在一定的范围。温湿度、烟雾采集模块把定时采集的数据上传至协调器,协调器的数据处理模块判断当前环境温度是否超过阈值,若超过阈值则启动相应的设备,使环境保持在一个稳定的范围,并实时将数据信息上传至客户端,运维人员可实时查看或进行人工干预。例如,12 南京邮电大学专业学位硕士研究生学位论文第四章远程监控单元的设计与通信的实现当检测到的环境温度超过阈值时,协调器发送指令使空调开启工作,低于阈值时则关闭空调;如果是烟雾超过阈值,协调器发送打开摄像头指令,及时获取现场图像,把图片信息传输至客户端,同时关闭摄像头,减少图片数据传输时给协调器及网络带来过大的负荷。远程监控模块各环境参数采集的硬件接线图,如图4.3所示。选用CC2530作为主控芯片,连接了温湿度模块,烟雾检测模块、人体检测模块、电量检测模块、空调开关、门禁开关和RFid模块。图4.3硬件接线图其中温湿度模块用于检测基站内部的温度和湿度;烟雾模块用于检测机房内部是否发生火灾;人体检测模块用于检测机房内部是否有人入侵;电量监测模块用于检测UPS电源的电量,以保证机房正常运行;空调开关用于打开或关闭空调;门开关则用于用户刷卡时打开机房门,RFid模块检测是否有人刷卡。4.1.2远程监控模块的器件及设备选型(1)主控芯片本系统采用的主控芯片CC2530是用于2.4-GHzIEEE802.15.4、ZigBee和RF4CE应用的一个真正的片上系统(SoC)解决方案。主控芯片的实物如图4.4所示,它能以非常低的材料成本建立强大的网络节点。CC2530结合了领先的RF收发器的优良性能,业界标准的增强型8051CPU,系统内可编程闪存,8KBRAM和许多其它强大的功能[24]。CC2530有四种不同的闪存版本:CC2530F32/64/128/256,分别具有32/64/128/256KB的闪存,系统选用的是13 南京邮电大学专业学位硕士研究生学位论文第四章远程监控单元的设计与通信的实现CC2530F128。CC2530具有不同的运行模式,使得它尤其适应超低功耗要求的系统。运行模式之间的转换时间短,进一步确保了低能源消耗。图4.4核心板卡实物图(2)RFid模块本系统选用的RFid模块型号是MFRC522,其实物如图4.5所示,它是应用于13.56MHz非接触式通信中高集成度读写卡系列芯片中的一员。MFRC522也是NXP公司针对“三表”应用推出的一款低电压、低成本、体积小的非接触式读写卡芯片[25]。MFRC522利用了先进的调制和解调概念,完全集成了在13.56MHz下所有类型的被动非接触式通信方式和协议。支持ISO14443A的多层应用,其内部发送器部分可驱动读写器天线与ISO14443A/MIFARE卡和应答机的通信,无需其它的电路[26]。接收器部分提供一个坚固而有效的解调和解码电路,用于处理ISO14443A兼容的应答器信号。数字部分处理ISO14443A帧和错误检测(奇偶&CRC)。此外,它还支持快速CRYPTO1加密算法,用于验证MIFARE系列产品。MFRC522支持MIFARE更高速的非接触式通信,双向数据传输速率高达424kbit/s。它与主机间的通信采用连线较少的串行通信,且可根据不同的用户需求,选取SPI、I2C或串行UART(类似RS232)模式之一,有利于减少连线,缩小PCB板体积,降低成本[27,28]。图4.5RFid模块(3)人体监测模块人体监测模块选用的是HC_SR505红外探测器,其实物如图4.6所示。HC_SR505是基于红外线技术的自动控制模块。它的工作电压范围是直流时为4.5V至20V,电平输出为高电14 南京邮电大学专业学位硕士研究生学位论文第四章远程监控单元的设计与通信的实现平3.3V,低电平0V,工作温度为-15-+70度,感应角度小于100度锥角,感应距离最大为7米,触发方式分为L-不可重复触发和H-重复触发。本系统选用可重复触发方式,即感应输出高电平后,在一定的后续时间中,如果检测到有人在感应区中,其输出将持续高电平不变,直到人离开后才过一定时间将高电平改为低电平。图4.6人体监测模块(4)温湿度检测模块本模块采用DHT11型数字温湿度传感器,其实物如图4.7所示。它是一款有已校准数字信号输出的温湿度传感器。其精度:湿度±1%RH,温度±0.2℃;量程:湿度20-90%RH,温度0~50℃。它常用于专用的数字模块采集技术和温湿度传感技术,以确保产品具有极高的可靠性和卓越的长期稳定性。DHT11型数字温湿度传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此,该产品具有品质卓越、响应快、抗干扰能力强、性价比高等优点[29,30]。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。该产品为4针单排引脚封装,连接方便。体积小、功耗低,使其成为该类应用中,在苛刻应用场合的最佳选择[31]。图4.7温湿度监测模块(5)烟雾监测模块15 南京邮电大学专业学位硕士研究生学位论文第四章远程监控单元的设计与通信的实现本模块选用的是MQ-2型烟雾传感器,其外形如图4.8所示。它属于二氧化锡半导体气敏材料,属于表面离子式N型半导体[32]。处于200~300摄氏度时,二氧化锡吸附空气中的氧,形成氧的负离子吸附,使半导体中的电子密度减少,从而使其电阻值增加。当与烟雾接触时,如果晶粒间界处的势垒收到烟雾的调至而变化,就会引起表面导电率的变化。利用这一特性就可以获得这种烟雾存在的信息,烟雾的浓度越大,导电率越大,输出电阻越低,则输出的模拟信号就越大[33,34]。图4.8烟雾监测模块(6)摄像头模块摄像头模块选用海康威视130万像素枪型网络摄像机,其外形如图4.9所示。它的最高分辨率可达1280×960@30fps,在该分辨率下可输出实时图像。该型号摄像头采用ROI等视频压缩技术,压缩比高,可以适应不同场景下对图像质量、流畅性的不同要求。同时,支持智能报警、越界侦测,区域入侵侦测,适用于金融、电信、政府、学校、机场、工厂、酒店、博物馆、交通监控等要求高清画质且光线较暗的场所,适合逆光环境。图4.9摄像头16 南京邮电大学专业学位硕士研究生学位论文第四章远程监控单元的设计与通信的实现4.2协调器与监控单元程序设计4.2.1协调器程序设计协调器程序流程图,如图4.10所示。软件的设计采用TI的ZigBee协议栈,在其之上进行二次开发。开始芯片及协议栈初始化配置设备为协调器创建设备表创建定时任务接收串口数据服务器请求数据是否向终端下发数据接收到终端数据是否解析终端上传数据并上传至服务器结束图4.10协调器流程图协调器模块上电后,ZigBee协议栈会初始化CC2530芯片,并配置为协调器模式。初始化完成后,程序将使用Mydevmydevice[num]创建终端设备表,大小由num指定。Mydev结构如下:typedefstructMydevice{uint16Dev_id;//用户自定义的设备iduint16Net_id;//zigbee局域网中设备网络地址iduint8temp;//温度值uint8humi;//湿度值uint8smok;//烟雾值17 南京邮电大学专业学位硕士研究生学位论文第四章远程监控单元的设计与通信的实现uint8prox;//人体检测uint8rout;//巡检uint8upsd;//电量uint16time;//设备剩余寿命}Mydev;osal_start_timerEx(SampleApp_TaskID,Periodic_MSG_EVT,1000+(osal_rand()&0x00FF))函数将创建一个名为Periodic_MSG_EVT的1s定时任务,用于减少设备表中各个设备的寿命,寿命为0的设备信息将被清除。调用osal_start_timerEx(SampleApp_TaskID,Poll_MSG_EVT,2000+(osal_rand()&0x00FF))创建一个定时向服务器发送数据的任务,每隔30s向服务器发送一个设备的数据。随后调用osal_start_timerEx(SampleApp_TaskID,Esp_EVT,5000)创建一个服务器请求网关id的任务,直到请求成功才删除此任务。除了以上任务,程序将通过SampleApp_MessageMSGCB(MSGpkt)回调函数接受各个终端设备的数据,并且把接收到的数据存入mydevice[num]设备表中,并重置更新对应的设备寿命。程序还将通过串口接受服务器下发的数据。如果接收到数据,则使用strstr()函数对数据进行层层解析。如果数据是返回以上任务请求的网关id时,程序把收到的id存入数组中,以便以后向服务器上传数据使用。如果是请求终端设备,程序则解析出要请求的终端id和需要请求或者控制的设备类型,随后组装出数据包,通过Send_Req_Message()函数发送出去,终端收到请求后将返回数据。4.2.2监控单元程序设计监控单元的程序流程如图4.11所示,软件的设计采用TI的ZigBee协议栈,在其之上进行二次开发。协调器模块上电后,ZigBee协议栈会初始CC2530芯片,并配置为终端模式。初始化完成后,使用osal_start_timerEx(SampleApp_TaskID,END_EVT,(3000+(osal_rand()&0x00FF)))创建终端定时向协调器发送数据的任务。18 南京邮电大学专业学位硕士研究生学位论文第四章远程监控单元的设计与通信的实现开始芯片及协议栈初始化配置设备为终端创建定时任务采集温湿度等环境参数协调器请求数据是否终端返回数据协调器控制数据是否控制设备并返回数据结束图4.11终端流程图使用osal_start_timerEx(SampleApp_TaskID,RFid_EVT,300)创建定时任务,检测用户是否刷卡,如果有人刷卡,则使用Gen_Sub_Messg()向协调器发送数据,检测人体状态是否改变,改变则使用Gen_Sub_Messg()向协调器发送数据。除了以上任务,程序将使用SampleApp_MessageMSGCB(MSGpkt)函数接收协调器下发的数据,接收到数据后,首先判断数据类型,若是请求传感器数据,程序则采集机房内部温度,湿度,烟雾,人体,电源数据并使用Gen_Sub_Messg()上传;若是控制类型数据,则根据数据信息开关门或者空调,并返回当前门或者空调的开关状态使用Gen_Sub_Messg()上传。4.3远程监控模块的通信协议分析与设计4.3.1通信协议的基本帧格式服务器和协调器中间采用串口转网络的通信方式,数据使用json作为格式规范。基本帧格式如下:{"id":"er/12345671234x",19 南京邮电大学专业学位硕士研究生学位论文第四章远程监控单元的设计与通信的实现"type":"s","stype":"temp","data":"025"}。为了简化设计并达到相同的功能,协调器与终端之间使用自定义字符串。4.3.2远程监控单元与协调器报文的设计(1)协调器发给终端的报文报文包含请求报文和控制报文。请求报文:reqa代表请求终端的全部传感器数据;reqt代表请求终端的温度数据;reqh代表请求终端的湿度数据;reqs代表请求终端的烟雾数据;reqp代表请求终端的人体检测数据;requ代表请求终端的电源数据;reqd代表请求终端的门禁状态数据;reqc代表请求终端的空调状态数据;控制报文:cond1代表打开门,cona1代表打开空调,cona0代表关闭空调。(2)终端返回给协调器的报文adt:xxxxxxxxx代表返回终端的全部传感器数据,xxxxxxx代表具体数据;tdt:xx代表返回终端的温度数据,xx代表具体数据;hdt:xx代表返回终端的湿度数据,xx代表具体数据;sdt:xx代表返回终端的烟雾数据,xx代表具体数据;pdt:xx代表返回终端的人体检测数据,xx代表具体数据;udt:xx代表返回终端的电源数据,xx代表具体数据;ddt:xx代表返回终端的门禁状态数据,xx代表具体数据;cdt:xx代表返回终端的空调状态数据,xx代表具体数据。4.3.3协调器与服务器报文的设计(1)服务器下发给协调器的报文报文包括数据请求报文和控制报文。请求报文如下:{"id":"er/6636366/1234x"","type":"g","gtype":"temp",}20 南京邮电大学专业学位硕士研究生学位论文第四章远程监控单元的设计与通信的实现请求报文是服务器用来请求指定终端的指定传感器数据的,其中id为终端设备的id,type为g代表此数据包是请求报文,gtype为temp代表请求温度信息,为humi代表请求湿度信息,为smok代表请求烟雾信息,为prox代表请求人体检测信息,为upsd代表请求ups电源信息,为door代表请求门信息,为airc代表请求空调信息。控制报文如下:{"id":"er/6636366/1234x"","type":"c","ctype":"door","data":"100"}控制报文是服务器用来控制指定终端的门或者空调设备的,其中id为终端设备的id,type为c代表此数据包是控制报文,ctype为door代表要控制的为门,为airc代表控制的为空调。data为100代表打开此设备,为000代表关闭此设备,其中门不支持关闭报文。(2)协调器上传给服务器的报文报文包括数据上传报文和网关id请求报文。数据上传报文格式如下:{"id":"er/6636366/1234x"","type":"s","stype":"temp","data":"025"}其中id为终端设备的id,type为s代表此数据包是上传数据报文,stype为temp代表上传的是温度信息,为humi代表上传的是湿度信息,为smok代表上传的是烟雾信息,为prox代表上传的是人体检测信息,为upsd代表上传的是UPS电源信息,为rfid代表上传的是巡检信息,为door代表上传的是门信息,为airc代表上传的是空调信息。网关id请求报文如下:{'chip':'?'},返回格式如下返回id:{'chip_id':'xxxxxx'},xxxxxx代表具体数据。21 南京邮电大学专业学位硕士研究生学位论文第四章远程监控单元的设计与通信的实现4.4本章小节本章主要介绍了系统硬件的选型,监控单元与协调器的程序设计,以及监控单元至协调器、协调器至服务器之间通信报文的格式,规范了请求报文和控制报文的格式。22 南京邮电大学专业学位硕士研究生学位论文第五章服务端设计与实现第五章服务端设计与实现5.1服务端介绍服务端是为客户端服务的平台,服务的内容诸如向客户端提供资源,保存客户端数据等。这是实现数据通信的重要途径,比如要修改某个参数,重加载后,在客户端可以立刻呈现。服务端可以是一台电脑,也可以是一台服务器,但物理主机会存在宕机、硬件损坏、被黑客攻击等风险,造成数据永久丢失。本系统将服务器部署在云计算中并选用阿里云主机。阿里云主要有以下3点优势:(1)高性价比:相比传统IDC,节约80%成本投入,相比其他服务商,节省60%成本投入。(2)高稳定性:拥有多重备份,秒级恢复,按需自动扩容等功能,应用灵活、便捷、稳定。(3)安全可靠:掌握全球最大网络攻击防御经验,有效帮助客户降低安全风险。5.2服务端功能的分析一般的物联网通信系统主要包括用户管理、设备列表管理、设备历史记录管理、即时通信协议、硬件网关(可选)、传感器和执行器。根据设计需求,除了摄像头之外,所有组件全部通过服务器进行数据处理和通信中转,数据历史记录存储在MySQL数据库中,服务端API采用PythonFlask设计用来实现用户登录逻辑、设备列表保存、设备历史记录保存三项功能。摄像头画面则采用海康威视云服务进行中转,在APP中嵌入海康威视SDK,权限认证成功之后即可看到摄像头画面。5.3服务端通信协议的选择目前常用的服务端通信协议主要有XMPP协议,CoAP协议和MQTT协议。XMPP协议是一种基于标准通用标记语言的子集XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地23 南京邮电大学专业学位硕士研究生学位论文第五章服务端设计与实现址的服务等应用程序。而且XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个已经配置好XMPP协议的系统添加功能。但是,该协议有较复杂、冗余(基于XML)、费流量、费电,部署硬件成本高的缺点[35]。CoAP协议的全称为受限应用协议,其开发目的在于允许资源相对有限的设备利用UDP而非TCP通过互联网实现通信。CoAP是一种简单的请求/响应协议(与REST非常相似),且遵循传统的客户端/服务器模式。CoAP数据包采用位字段以最大限度提升内存利用效率,且经常将字符串映射至整数以降低数据包在设备内部以及网络中传输时所占用的带宽。除了数据包体积极度小巧之外,CoAP的另一大优势在于其采用UDP,数据报文使得CoAP能够在各类基于数据包的技术之上起效——例如短信。CoAP的弊端之一在于,它属于一对一协议。尽管我们可以通过扩展方式实现组广播,但这种广播能力并非原生存在。除此之外,CoAP的另一大缺陷在于不提供公共订阅消息队列。MQTT协议是一种由IBM主导开发的物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。它的核心设计思想是开源、可靠、轻巧、简单,具有以下主要的几项特性:非常小的通信开销(最小的消息大小为2字节);支持各种流行编程语言(包括C,Java,Ruby,Python等等)且易于使用的客户端;支持发布/预定模型,简化应用程序的开发;提供三种不同消息传递等级,让消息能按需到达目的地,适应在不稳定工作的网络传输需求。这些特点使它适用范围非常广泛,包括受限的环境,如:机器与机器(M2M)通信、物联网(IoT)系统中运用,在通过卫星链路通信的传感器、医疗设备、智能家居、及一些小型化设备中已广泛使用,该协议实现消息的相互传递功能[36,37]。本基站环境监测系统需要实现消息的相互传递,因此,系统架构中的骨干协议选择MQTT协议。MQTT设计架构如图5.1所示。图5.1MQTT架构图24 南京邮电大学专业学位硕士研究生学位论文第五章服务端设计与实现在此系统中,服务端上运行MQTT代理服务器,当MQTT客户端向服务器订阅了一个话题之后,任何其他连接到相同服务器的客户端向此话题发送消息都能被该客户端接收到。5.4服务端数据的存储云服务HTTP部分为与手机客户端通信的API设计,用来实现用户鉴权(登录)、设备管理、历史记录存储三项功能,手机客户端用户使用用户名密码登陆之后可以通过设备API获取到设备列表并渲染显示出来,同时向MQTT代理服务器订阅设备列表所对应的所有话题,此时手机客户端就可以收到其他客户端向此话题推送的消息,传感器连接网关之后向服务器传送数据,手机APP就可以收到并实时更新传感器数据,同时把传感器数据存储在MySQL数据库中以备查阅。5.4.1数据存储的分析在物联网中,很多数据需要保存下载以备查阅、分析,所以设计数据存储功能是非常必要的。数据库是有组织的存储应用程序数据,可以查询检索指定需要的部分。大部分web应用程序都采用基于关系模型的数据库,也称作结构化查询语言(SQL)数据库。关系数据库将数据保存在表中来模拟应用程序中不同的实体。例如,一个订单管理应用程序数据库可能会有user、products和orders表。一个表有一个固定数量的列和一个可变的行数。列定义了数据表所代表的实体的属性。例如,user表会有name、address、phone等列。表中的每一行定义了由所有列的值组成的实际数据元素。表的特殊列称为主键,它持有一个惟一的标识符为表中存储的每一行。表也可以有外键,用于引用其他表的主键。这些行之间的连接称作关系,也是关系数据库模型的基础。5.4.2数据存储的设计本系统数据模型一共分为三个部分:用户管理部分、设备管理部分和设备数据历史记录部分。其中,用户管理部分用来控制用户权限,在不登入的情况下无法进行设备管理与设备列表查看,即没有权限订阅设备话题,从而接收不到设备任何信息。(1)用户管理25 南京邮电大学专业学位硕士研究生学位论文第五章服务端设计与实现用户数据表节构如表5.1所示。表5.1用户数据表结构参数数据类型描述idInteger数据库唯一idUsernameString(128)用户名password_hashString(128)用户密码hash值用户数据表部分Flask模型:classUser(Base):'''用户数据表节构:======================================================ParameterTypeDescription======================================================idInteger数据库唯一idusernameString(128)用户名password_hashString(128)用户密码hash值======================================================__tablename__='user'id=Column(Integer,primary_key=True)username=Column(String(128),unique=True,nullable=False)password_hash=Column(String(128),nullable=False)device=relationship("Device",backref="user")当用户登录成功之后,通过API可以获取当前用户所拥有的设备列表信息,并获取设备最新的数据,以防止用户登陆之后数据为空,还需等待设备上传数据才可以看到数据,用户登录部分代码如下:classUserAuth(Resource):'''用户认证类,负责验证密码并生成token并返回给用户'''def__init__(self):self.login_marshaller=login_marshallerself.response_code=400defpost(self):'''提交用户名密码换取token函数,需要用户名和密码这两个参数。..code-block::pythonurl:/api/user/get_token:return:使用login_marshaller装饰的格式'''session=Session()username=request.values.get('username')26 南京邮电大学专业学位硕士研究生学位论文第五章服务端设计与实现password=request.values.get('password')user=session.query(m_user.User).filter_by(username=username).first()ifnotuserornotusername:self.login_marshaller['success']=1self.login_marshaller['msg']='Usernotexists!'self.login_marshaller['data']={'token':''}self.response_code=404else:ifnotpasswordornotuser.verify_password(password=password):self.login_marshaller['success']=1self.login_marshaller['msg']='Userauthorizefailed!'self.login_marshaller['data']={'token':''}self.response_code=401else:login_user(user)self.login_marshaller['success']=0self.login_marshaller['msg']='Userauthorizesuccess!'token=token_auth.generate_auth_token(username)self.login_marshaller['data']={'token':token}self.response_code=200session.close()returnself.login_marshaller,self.response_code用户注册的时候App通过post方法向/user接口发送用户名和密码到服务器,如果用户名不存在即新用户可以注册,服务器会回应:{"success":0,"msg":"Userinsertok!","data":{"username":"test1"}}如果用户名或者密码已经存在,则不允许新用户注册,服务器会回应:{"success":1,"msg":"Useralreadyexists!","data":{"username":"test"}}27 南京邮电大学专业学位硕士研究生学位论文第五章服务端设计与实现用户注册之后,使用注册的用户名和密码登录,即用户通过App向服务器的/login接口post用户名和密码数据,服务器接收到后验证用户名是否存在以及密码是否正确,之后向客户端回应:{"success":0,"msg":"Userauthorizesuccess!","data":{"token":"eyJ1c2VybmFtZSI6ICJ0ZXN0IiwgImV4cCI6ICIyMDE3LTA3LTIzIDAyOjI5OjAyIn0="}}如果用户名或密码不正确,则拒绝用户登陆,服务器会向客户端回应:{"success":1,"msg":"Userauthorizefailed!","data":{"token":""}}(2)设备管理用户登录之后App会向服务器请求设备列表数据,其中,设备数据表节构设计如表5.2所示。表5.2设备数据表结构参数数据类型描述idInteger数据库唯一idUsernameString(128)用户名device_nameString(32)设备名称topicString(16)设备唯一id,MQTT话题设备value数值,默认为0(预留),valueString(64)用来保存设备最近一次数据remarksString(256)设备备注date_timeDateTime设备创建时间/数据更新时间(预留)设备数据表的Flask模型如下所示:classDevice(Base):'''设备数据表节构:28 南京邮电大学专业学位硕士研究生学位论文第五章服务端设计与实现=========================================================ParameterTypeDescription=========================================================idInteger数据库唯一idusernameString(128)用户名device_nameString(32)设备名称topicString(16)设备唯一id,MQTT话题valueString(64)设备value数值,默认为0(预留)remarksString(256)设备备注date_timeDateTime设备创建时间/数据更新时间(预留)========================================================='''__tablename__='device'id=Column(Integer,primary_key=True)username=Column(String(128),ForeignKey('user.username'),nullable=False)device_name=Column(String(128),nullable=True)topic=Column(String(64),nullable=False,unique=True)value=Column(String(64),nullable=False)remarks=Column(String(256),nullable=True)date_time=Column(DateTime,nullable=False,default=datetime.datetime.utcnow())查询设备列表使用httpget方法用来查找设备信息,输出信息遵循Python-Flaskdevices_response_marshaller格式,需要提供token和topic两个参数来获取设备列表,提供token是为了提供用户身份,如果提供了topic则显示指定设备信息,如果不提供topic则返回该token对应用户名下所有设备信息。如果Token认证成功并且用户名下存在此设备,服务器会回应:{"success":0,"msg":"Getdevicelistsuccess!","data":[{"device_name":"tdevice","topic":"er/a","value":"0","remarks":"hhhh"}]}如果用户需要添加新设备到用户名下,则需要提供如下信息:token:用户认证令牌topic:设备topic可以认为是设备唯一标示,为空则返回所有设备29 南京邮电大学专业学位硕士研究生学位论文第五章服务端设计与实现device_name:设备名称remarks:设备备注信息如果该用户名下没有这个设备topic,则允许添加该设备,服务器回应:{"success":0,"msg":"Insertdevicesuccess!","data":[{"device_name":"tdevice","topic":"er/a","value":"0","remarks":"hhhh"}]}但是如果已经存在此设备的唯一id,则服务器不允许重复添加此设备,设备会添加失败,服务器回应:{"success":1,"msg":"Topichasbeenused!","data":[]}如果用户需要删除设备,需要向服务器提供用户登录时候获取的token令牌和设备topic,通过认证之后即可删除设备,服务器回应:{"success":0,"msg":"Deletedevicesuccess!","data":[]}如果删除的设备已经被删除或者根本不存在,服务器回应:{"success":1,"msg":"Deletenotexists!","data":[]}或者客户端没有提供topic,服务器会报告错误信息:{"success":1,"msg":"Topiccannotbenull!",30 南京邮电大学专业学位硕士研究生学位论文第五章服务端设计与实现"data":[]}(3)设备数据历史记录在物联网系统中,设备历史记录不仅能用来查看当前环境下的情况,还可以用来分析环境趋势、甚至联合多个设备分析当前数据。本设计中数据采用MySQL进行存储,设备历史记录数据表结构如表5.3所示。表5.3设备历史记录数据表参数数据类型描述idInteger数据库唯一idtopicString(16)设备唯一id,MQTT话题valueString(64)设备value数值,默认为0date_timeDateTime设备创建时间/数据更新时间设备历史记录表的Flask模型如下所示:classDeviceLog(Base):'''设备历史记录数据表节构:======================================================ParameterTypeDescription======================================================idInteger数据库唯一idtopicString(16)设备唯一id,MQTT话题valueString(64)设备value数值,默认为0date_timeDateTime设备创建时间/数据更新时间======================================================='''__tablename__='device_log'id=Column(Integer,primary_key=True)topic=Column(String(64),nullable=False)value=Column(String(64),nullable=False)date_time=Column(DateTime,nullable=False)def__init__(self,topic,value="0",date_time=datetime.datetime.utcnow()):self.topic=topicself.value=valueself.date_time=date_time设备历史记录是通过MQTT即时通信系统插入,无需客户端向服务器发送请求,只要网关向MQTT代理服务器发布传感器数据,该数据就会被服务器接收到并自动记录在数据库中。因此,设备历史记录只提供一个历史查询功能,向服务器通过get请求发送如下信息:31 南京邮电大学专业学位硕士研究生学位论文第五章服务端设计与实现token:用户认证令牌topic:设备topic可以认为是设备唯一标识,为空则返回所有设备per:每页返回的条目数量page:请求的第几页,默认应该填写1客户端会得到服务器回应传感器的历史数据:{"success":0,"msg":"Getdevicelogssuccess!","page":2,"current_page":2,"data":[{"value":"025","date_time":"2017-07-1210:13:43"},{"value":"025","date_time":"2017-07-1210:13:44"},{"value":"025",]}客户端接收到信息之后,只需要通过图表绘图展示出来,即可看到此设备运行期间的环境趋势信息,便于各种数据的分析和预测。5.4.3数据存储的实现Python有大部分的数据库引擎包,包括开源的和商业的。Flask在可使用的数据库包上没有限制,所以可以使用MySQL、Postgres、SQLite、Redis、MongoDB或者CouchDB中的任何一个,本设计中选择使用MySQL进行数据存储。Flask-SQLAlchemy是一个Flask扩展,它简化了在Flask应用程序中对SQLAlchemy的使用。SQLAlchemy是一个强大的关系数据库框架,支持一些数据库后端[38]。提供高级的ORM和底层访问数据库的本地SQL功能。和其他扩展一样,通过pip安装Flask-SQLAlchemy:(venv)$pipinstallflask-sqlalchemy32 南京邮电大学专业学位硕士研究生学位论文第五章服务端设计与实现在Flask-SQLAlchemy,数据库被指定为URL。表5.4列出三个最受欢迎的数据库引擎URL的格式。表5.4各数据库URL格式数据库引擎URLMySQLmysql://username:password@hostname/databasePostgrespostgres://username:password@hostname/databaseSQLite(Unix)sqlite:///absolute/path/to/databaseSQLite(Windows)sqlite:///absolute/path/to/database在这些URL中,hostname是指托管MySQL服务的服务器,可以是本地(localhost)或远程服务器。数据库服务器可以托管多个数据库,所以database指出要使用的数据库名。数据库需要身份验证,username和password是数据库用户凭证。应用程序数据库URL必须在Flask配置对象中的SQLALCHEMY_DATABASE_URI键中进行配置。另一个有用的选项是SQLALCHEMY_COMMIT_ON_TEARDOWN,可以设置为True来启用在每个请求中自动提交数据库更改。数据库连接配置:engine=create_engine(app.config['SQLALCHEMY_DATABASE_URI'],pool_recycle=3600)Session=sessionmaker(bind=engine)之后在python代码中导入此Session并实例化就可以访问数据库了:session=Session()5.5服务端及客户端间数据通信的实现由于客户端无法直接使用ZigBee协议传输的数据,因此需要ZigBee网关将数据进行转换并发布。网关是连接感知网络与传统通信网络的纽带。作为网关设备,物联网网关可以实现感知网络与通信网络,以及不同类型感知网络之间的协议转换,既可以实现广域互联,又可以实现局域互联。此外,网关还需要具备设备管理功能,用户通过物联网网关设备可以管理底层的各感知节点,了解各节点的相关信息,并实现远程控制[39]。因此,本设计数据通信系统采用MQTT协议实现,在通过HTTPAPI获取到设备列表之后手机客户端会通过MQTT协议订阅设备所关联的话题。MQTT服务端代理服务器组件采用了杭州小莉科技开源的emqtt中间件,它具有如下优点:(1)稳定承载大规模的MQTT客户端连接,单服务器节点支持50万到100万连接。(2)分布式节点集群,快速低延时的消息路由,单集群支持1000万规模的路由。33 南京邮电大学专业学位硕士研究生学位论文第五章服务端设计与实现(3)消息服务器内扩展,支持定制多种认证方式、高效存储消息到后端数据库。(4)完整物联网协议支持,MQTT、MQTT-SN、CoAP、WebSocket或私有协议支持。MQTT是发布订阅(Publish/Subscribe)模式的消息协议,与HTTP协议请求响应(Request/Response)模式不同。MQTT发布者与订阅者之间通过“话题”(Topic)进行消息路由,话题(Topic)格式类似Unix文件路径,例如:sensor/1/temperaturechat/room/subjectpresence/user/fengsensor/1/#sensor/+/temperatureuber/drivers/joe/inboxMQTT话题(Topic)支持‘+,#’的通配符,‘+’通配一个层级,‘#’通配多个层级(必须在末尾)。MQTT消息发布者(Publisher)只能向特定“话题”(不支持通配符)发布消息,订阅者(Subscriber)通过订阅“话题”(支持通配符)来匹配消息。在服务器下载emqtt中间件安装之后,emqtt自动注册为服务,此后便可以开机运行,或者手动进行控制:serviceemqttdstart|stop|restart。emqtt中间件启动之后会打开如下TCP服务端口对外提供服务,服务端口如表5.5所示。表5.5TCP服务端口1883MQTT协议端口8883MQTT/SSL端口8083MQTT/WebSocket端口8080HTTPAPI端口18083Dashboard管理控制台端口在本设计中使用了1883端口进行通信,手机客户端只要使用MQTT协议连接服务器1883端口,并订阅话题,当传感器向网关发送数据的时候网关会提取传感器设备id并将设备id作为话题向服务器的该话题发送数据,手机客户端订阅到该话题之后就能接收到实时推送消息,并显示在屏幕上实现实时显示,另一方面手机客户端可以向执行器的话题发送数据:比如开关指令等,网关接收到此即时消息之后,转换为ZigBee协议通知执行器,此时执行器进行动作完成控制,开关指令用于门禁的打开及空调的开关。在数据通信同时,要把传感器历史数据保存到数据库中以备查阅与分析,所以在HTTP模块中也向MQTT服务器订阅该话题树的根话题:erm/#,此话题可以接收到本项目所有数据,然后根据消息发来的话题存储传感器数值到数据库中。34 南京邮电大学专业学位硕士研究生学位论文第五章服务端设计与实现5.6本章小结本章主要介绍服务端几种常见的协议,最终选择MQTT协议。建立数据的存储流程,包括用户如何管理认证,当前数据如何请求查看以及历时数据如何查询。定义数据库表结构,实现了服务端与客户端之间通信的功能。35 南京邮电大学专业学位硕士研究生学位论文第六章客户端的软件设计第六章客户端的软件设计6.1客户端功能分析随着机房建设往大型数据中心、全国联网、多级联网的方向发展,机房监控也从宏观环境上的监管慢慢转变为对微观设备的控制。运维人员对机房监控系统的要求也越来越高,APP移动管理系统的推出势在必行。传统的机房监控管理由于网络的缘故,以及特殊单位行业保密性等要求,需要指定的人员在指定的区域和指定的时间里完成必要的运维工作,工作综合交叉性具有极大限制,造成资源的浪费,效率低下。从而,管理人员面对当前复杂的监控要求,一套智能的APP移动管理监控系统对各级联网机房等大型数据中心的综合运维至关重要。通过APP移动管理系统,可使不同的管理人员随时随地了解各自所需要的监控信息。突破了监控人员、时间、地点的要求限制;整合了单一零散的工作内容;减少了机房监控资源的浪费;提高了机房设备运行的环境续航能力,保证机房设备安全、高效地运行[40,41]。根据需求,系统架构使用了C/S架构,Android手机负责接收服务器传过来的数据,并呈现系统的实时数据。通过用户界面操作数据,来调节监测系统的运行和状态。客户端需要从用户登陆验证开始,对用户身份进行核实并实现记住密码的功能,可以避免短时间内的重复登录。成功登录之后需要认证摄像头权限及获取设备列表,可以查看各设备的参数及控制相应设备的开关。6.2客户端开发环境的配置根据监控系统需要,客户端的操作流程如图6.1所示。在客户端中主要使用了海康威视摄像头开发SDK、IBM公司的MQTT协议的开发包以及其他网络通信必要的开发包。使用前需对相应的工具进行配置,导入相应的开发包。具体开发包如图6.2所示。36 南京邮电大学专业学位硕士研究生学位论文第六章客户端的软件设计图6.1客户端流程图图6.2项目的依赖包导入相应的开发包后,需要对相应的环境进行配置,在项目的build.gradle文件中进行配置:dependencies{compilefileTree(include:['*.jar'],dir:'libs')androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2',{excludegroup:'com.android.support',module:'support-annotations'})compile'com.android.support:appcompat-v7:25.3.1'compile'com.android.support.constraint:constraint-layout:1.0.0-alpha8'compile'com.android.support:design:25.3.1'compile'com.github.PhilJay:MPAndroidChart:v3.0.2'testCompile'junit:junit:4.12'compilefiles('libs/EZOpenSDK_V4.5.0.20170605.jar')37 南京邮电大学专业学位硕士研究生学位论文第六章客户端的软件设计compilefiles('libs/glide-3.6.1.jar')compilefiles('libs/jmdns-3.4.1.jar')compilefiles('libs/zxing.jar')compile'com.jakewharton:butterknife:8.7.0'annotationProcessor'com.jakewharton:butterknife-compiler:8.7.0'compile'io.reactivex:rxjava:1.1.0'compile'io.reactivex:rxandroid:1.1.0'compile'com.squareup.retrofit2:retrofit:2.0.0-beta4'compile'com.squareup.retrofit2:converter-gson:2.0.0-beta4'compile'com.squareup.retrofit2:adapter-rxjava:2.0.0-beta4'compile'com.orhanobut:logger:1.15'compilefiles('libs/com.ibm.micro.client.mqttv3.jar')compilegroup:'com.google.code.gson',name:'gson',version:'2.8.1'}通过以上配置,基本完成了开发环境的配置功能。6.3客户端接口的实现客户端的数据通过MQTT协议来进行传输,服务端提供了API接口以供APP调用,主要接口分为用户管理接口、设备模块管理接口和历史数据记录接口。6.3.1用户管理接口用户管理接口主要负责用户的注册、登录的管理。接口地址为:url:/user;用户登录接口的参数为:username,password。APP使用post方法将参数传给服务端,来注册新用户。如果注册成功服务端会返回如下信息:{"success":0,"msg":"Userauthorizesuccess!","data":{"token":"eyJ1c2VybmFtZSI6ICJ4dXNodW4iLCAiZXhwIjogMDEifQ=="}}如果success为0表示登录成功。这时候我们会获取到代表身份信息的“token”。软件的代码实现如下:publicclassLoginMethod{privatestaticfinalintDEFAULT_TIMEOUT=5;privateRetrofitmRetrofit;privateLoginServicemLoginService;38 南京邮电大学专业学位硕士研究生学位论文第六章客户端的软件设计//在访问HttpMethods时创建单例privatestaticclassSingletonHolder{privatestaticfinalLoginMethodINSTANCE=newLoginMethod();}//获取单例publicstaticLoginMethodgetInstance(){returnSingletonHolder.INSTANCE;}privateLoginMethod(){OkHttpClient.Builderbuilder=newOkHttpClient.Builder();builder.connectTimeout(DEFAULT_TIMEOUT,TimeUnit.SECONDS);mRetrofit=newRetrofit.Builder().client(builder.build()).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).baseUrl(BASE_URL).build();mLoginService=mRetrofit.create(LoginService.class);}publicvoidlogin(Subscribersubscriber,Stringusername,Stringpassword){Observableobservable=mLoginService.login(username,password);toSubscribe(observable,subscriber);}privatevoidtoSubscribe(Observableo,Subscribers){o.subscribeOn(Schedulers.io()).unsubscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe((Observer)s);}}用户在登录后会获取到登录的状态信息,通过解析相应的状态信息即可判断登录是否成功。6.3.2设备模块管理接口设备管理模块主要用来管理设备,对设备进行增删查改的操作。接口地址为:url:/device。如获取设备列表,接口参数为token,使用GET方法向服务器请求,获取设备的列表,软件的代码具体实现如下:publicinterfaceGetDeviceListService{@GET("device")39 南京邮电大学专业学位硕士研究生学位论文第六章客户端的软件设计ObservablegetDeviceList(@Query("token")Stringtoken);}在此定义了一个回调函数,如果获取列表成功,则会返回一个DeviceListData的对象,代码如下:{"success":0,"msg":"Getdevicelistsuccess!","data":{{"device_name":"温度","topic":"er/6636366/00021","value":"0","remarks":"温度"},{"device_name":"ups电源","topic":"er/6636366/00015","value":"0","remarks":"ups电源"}{"device_name":"人体接近","topic":"er/6636366/00024","value":"0","remarks":"人体接近"}}如果success的状态为0,则表示获取列表成功,data中即为我们的设备列表,通过解析数据,即可获得设备的ID和设备状态等信息。在页面上展示相应的设备信息,效果如下图6.3所示。40 南京邮电大学专业学位硕士研究生学位论文第六章客户端的软件设计图6.3设备列表界面6.3.3设备历史记录接口设备历史记录主要用来对设备的历史信息进行管理,便于统计和展示相应的设备的历史状态。接口地址为:URL:/log。使用get方法进行请求,获取历史记录列表。接口参数为:token、topic、per、page四个参数。实现代码如下:publicinterfaceLoginService{@FormUrlEncoded@POST("login")Observablelogin(@Field("username")Stringusername,@Field("password")Stringpassword);}该接口如果请求成功会返回指定设备的历史信息数据。通过解析数据,可以将数据呈现在界面上,实现代码如下:publicclassDateChartActivityextendsAppCompatActivity{//floatdates[]={10.2f,11.1f,19f,30f,29f,30f,20f};Listdates=newArrayList<>();Listxaxis=newArrayList<>();privateSubscribersubscriber;Stringtopic="er/6636366/00033";LineChartchart;@OverrideprotectedvoidonCreate(@NullableBundlesavedInstanceState)41 南京邮电大学专业学位硕士研究生学位论文第六章客户端的软件设计{super.onCreate(savedInstanceState);setContentView(R.layout.activity_linechart);Intentintent=getIntent();topic=intent.getStringExtra("topic");chart=(LineChart)findViewById(R.id.chart);//String[]week={"2017-09-1403:35:53","2017-09-1403:35:53","2017-09-1403:35:53","2017-09-1403:35:53","2017-09-1403:35:53","2017-09-1403:35:53","2017-09-1403:35:53"};ChartUtils.initChart(chart);//getDetails(subscriber,topic,""+20,""+1,Constant.TOKEN);subscriber=newSubscriber(){@OverridepublicvoidonCompleted(){System.out.println("onCompleted:");}@OverridepublicvoidonError(Throwablee){System.out.println("onError:");}@OverridepublicvoidonNext(DetailsListEntitydetailsListEntity){System.out.println("onNext:");Gsongson=newGson();Logger.json(gson.toJson(detailsListEntity));for(inti=0;igetData(){Listvalues=newArrayList<>();for(inti=0;imsubscriber,Stringtopic,intper,intpage,Stringtoken){GetLogMethod.getInstance().getlog(msubscriber,topic,per,page,token);42 南京邮电大学专业学位硕士研究生学位论文第六章客户端的软件设计}@OverrideprotectedvoidonPause(){super.onPause();subscriber.unsubscribe();}@OverrideprotectedvoidonResume(){super.onResume();System.out.println("onResume:");}}通过以上代码便可以在统计表中展示历史记录了。例子中获取了湿度传感器的信息。记录的湿度历史记录如图6.4所示。图6.4湿度传感器历史记录6.4客户端实时显示模块的实现6.4.1实时显示模块的原理客户端在服务端的中转下将传感器过来的数据解析并呈现在界面上,在MQTT协议的规范下通过订阅和传感器一样的Topic便可以收到传感器接收到的数据,原理图如下图6.5所示。43 南京邮电大学专业学位硕士研究生学位论文第六章客户端的软件设计图6.5MQTT基本示意图在图6.5中,ClientA发布话题temperature,如果ClientB和C订阅了temperature话题,就会受到ClientA发布的消息,这就是MQTT协议的基本流程。Android客户端MQTT的代码使用了IBM公司的开发包作为开发工具,具体实现代码如下:publicstaticbooleanconnectionMqttServer(Handlerhandler,StringServAddress,StringServPort,StringuserID,ArrayListTopics){StringconnUrl="tcp://"+ServAddress+":"+ServPort;try{client=newMqttClient(connUrl,userID,null);for(inti=0;i(){@OverridepublicvoidonCompleted(){System.out.println("onCompleted:");}46 南京邮电大学专业学位硕士研究生学位论文第六章客户端的软件设计@OverridepublicvoidonError(Throwablee){System.out.println("onError:");}@OverridepublicvoidonNext(DetailsListEntitydetailsListEntity){System.out.println("onNext:");//返回成功解析相应数据。Gsongson=newGson();Logger.json(gson.toJson(detailsListEntity));for(inti=0;i0){DeviceListDataBean.get(position).setValue("000");linkedHashMap.put("data","000");mDeviceDetailsGridAdapter.notifyDataSetChanged();}else{linkedHashMap.put("data","100");DeviceListDataBean.get(position).setValue("100");mDeviceDetailsGridAdapter.notifyDataSetChanged();}//Iterator>it=linkedHashMap.entrySet().iterator();//while(it.hasNext()){//Map.Entrye=it.next();//Logger.d("Key:"+e.getKey()+";Value:"+e.getValue());//}message=gson.toJson(linkedHashMap);MqttV3Service.publishMsg(message.trim().replace(":",":"),Qos,position);Logger.d("message:"+message.trim().replace(":",":"));50 南京邮电大学专业学位硕士研究生学位论文第六章客户端的软件设计break;软件呈现如图6.10所示。图6.10门禁控制图(2)空调控制的实现空调控制协议中定义类型为aric,在软件中点击空调控制按钮即可发出相应的报文信息,将数据发送出去。具体代码如下:caseConstant.TYPE_AIRCOND:Logger.d("value:"+DeviceListDataBean.get(position).getValue());linkedHashMap.put("ctype","airc");if(Integer.parseInt(DeviceListDataBean.get(position).getValue())>0){DeviceListDataBean.get(position).setValue("000");linkedHashMap.put("data","000");mDeviceDetailsGridAdapter.notifyDataSetChanged();}else{linkedHashMap.put("data","100");DeviceListDataBean.get(position).setValue("100");mDeviceDetailsGridAdapter.notifyDataSetChanged();}message=gson.toJson(linkedHashMap);MqttV3Service.publishMsg(message.trim().replace(":",":"),Qos,position);Logger.d("message:"+message.trim().replace(":",":"));break;软件实现如下图6.11所示。51 南京邮电大学专业学位硕士研究生学位论文第六章客户端的软件设计图6.11空调控制软件截图6.4.4监控图像显示的实现监控摄像头使用了海康威视的摄像头,SDK的主要流程如图6.12所示。图6.12摄像头设备初始化52 南京邮电大学专业学位硕士研究生学位论文第六章客户端的软件设计在初始化SDK后,可以获取设备列表,在返回的EZDeviceInfo数组中找到使用的设备的deviceSerial和CameraNo.来进行视频的实时预览。通过如下代码便可以实现视频的实时预览功能。privateclassGetCamersInfoListTaskextendsAsyncTask>{privatebooleanmHeaderOrFooter;privateintmErrorCode=0;publicGetCamersInfoListTask(booleanheaderOrFooter){mHeaderOrFooter=headerOrFooter;}@OverrideprotectedvoidonPreExecute(){super.onPreExecute();//mListView.setFooterRefreshEnabled(true);if(mHeaderOrFooter){}}@OverrideprotectedListdoInBackground(Void...params){if(RealPlayActivity.this.isFinishing()){returnnull;}if(!ConnectionDetector.isNetworkAvailable(RealPlayActivity.this)){mErrorCode=ErrorCode.ERROR_WEB_NET_EXCEPTION;returnnull;}try{Listresult=null;result=getOpenSDK().getDeviceList(0,20);returnresult;}catch(BaseExceptione){ErrorInfoerrorInfo=(ErrorInfo)e.getObject();mErrorCode=errorInfo.errorCode;LogUtil.debugLog(TAG,errorInfo.toString());returnnull;}}@OverrideprotectedvoidonPostExecute(Listresult){super.onPostExecute(result);if(RealPlayActivity.this.isFinishing()){return;53 南京邮电大学专业学位硕士研究生学位论文第六章客户端的软件设计}if(result!=null){System.out.println("reslut.size():"+result.size());mDeviceInfo=result.get(0);mCameraInfo=EZUtils.getCameraInfoFromDevice(mDeviceInfo,0);StringverifyCode="YEKKCT";LogUtil.debugLog(TAG,"verifycodeis"+verifyCode);DataManager.getInstance().setDeviceSerialVerifyCode(mCameraInfo.getDeviceSerial(),verifyCode);startRealPlay();}if(mErrorCode!=0){onError(mErrorCode);}}protectedvoidonError(interrorCode){switch(errorCode){caseErrorCode.ERROR_WEB_SESSION_ERROR:caseErrorCode.ERROR_WEB_SESSION_EXPIRE:ActivityUtils.handleSessionException(RealPlayActivity.this);break;default:break;}}/***开始播放**@see*@sinceV2.0*/privatevoidstartRealPlay(){Log.d(TAG,"startrealplay");if(mCameraInfo!=null){if(mEZPlayer==null){mEZPlayer=EzvizApplication.getOpenSDK().createPlayer(mCameraInfo.getDeviceSerial(),mCameraInfo.getCameraNo());}if(mEZPlayer==null)return;if(mDeviceInfo==null){return;}54 南京邮电大学专业学位硕士研究生学位论文第六章客户端的软件设计if(mDeviceInfo.getIsEncrypt()==1){mEZPlayer.setPlayVerifyCode(DataManager.getInstance().getDeviceSerialVerifyCode(mCameraInfo.getDeviceSerial()));}//mEZPlayer.setHandler(mHandler);mEZPlayer.setSurfaceHold(mRealPlaySh);mEZPlayer.startRealPlay();}}}通过以上关键代码实现摄像头图像的呈现,具体效果如图6.13所示:图6.13视频的实时预览6.5本章小结本章主要介绍客户端各功能的实现,定义了与服务端数据通信的接口。通过解析上传报文的类型,在客户端实现了各传感器数据的实时呈现。通过定义控制报文的格式,可以在客户端发送指令进行相关开关的控制。并论证了系统的可行性与稳定性。55 南京邮电大学专业学位硕士研究生学位论文第七章总结与展望第七章总结与展望7.1论文总结基站管理一直是通信运营商日常工作中的重中之重,基站维护和监管的好坏直接影响通信基站网络服务的质量,进而决定运营商在网络使用者心中的印象。作为基站正常运行的保障系统,环境监测系统是基站管理中的关键部分,然而随着通信业的蓬勃发展,通信运营商建立基站数量的增多,传统仅仅依靠人工进行巡检的方法使通信运营商对基站环境的监管越来越弱。论文研究的通信基站环境监测系统远程监控对于提升通信运营商对基站的监管力度提供了很好的借鉴,通过采集基站现场的温湿度、ups电源电压和入室人员图像信息,结合基站管理人员远程客户端的操作,系统满足了运营商对基站的远程监控、提高基站维护和管理效率、降低运营成本的迫切需求。论文主要工作体现在:(1)在对基站环境监控实际情况进行分析的基础上进行系统的总体分析,选用无线网络将数据传输至服务端,采用MQTT协议上传各项数据至客户端,最后设计监控系统的整体方案。(2)对远程单元进行具体详细的分析设计,选用通用的ZigBee传感器和其它辅助模块,搭建硬件平台;分析设计了远程单元和网关间的通信协议。(3)服务端部署在云端,不仅节省成本,同时也降低数据损坏、丢失的风险。选用MySQL数据库存储各传感器数据,实现实时查看及历史数据查看。(4)客户端软件基于Android系统开发,使用户使用更加便捷。软件可以向用户提供实时监控、数据查询、系统管理等功能模块,操作员可以通过软件显示界面实时的实行远程控制及整个系统的维护管理。7.2展望由于本人的能力和时间关系,本论文还存在很多不足,在以后的工作与学习中,可以从以下两方面进行深入的研究,使系统更加完善、稳定。56 南京邮电大学专业学位硕士研究生学位论文第七章总结与展望(1)远程监控系统网关与服务端数据可以基于4G流量传输,可以扩大系统的应用范围,这也是未来发展的趋势。如果基于流量传输,图像数据在微处理器上的存储及转发对整个远程单元网关也是负担,同时,要避免过多占用基站资源,不影响用户使用感受,这都是需要解决的问题。(2)本系统只采用手机客户端进行远程查看和操作,相比电脑客户端有便捷性的优势。但是在数据统计和分析中,无法在手机中完成,因此还是需要开发电脑客户端使系统更加完善。57 南京邮电大学专业学位硕士研究生学位论文参考文献参考文献[1]胥小武.通信基站环境监控系统的设计与软件实现[D].西南交通大学硕士论文,2014.05.01.[2]何永峰.基于移动通信基站的监控系统设计[D].电子科技大学硕士论文,2016.05.04.[3]路娟.基于ZigBee网络的电信机房动力环境远程监控系统的设计研究[D].太原理工大学硕士论文,2012.05.01.[4]娄阳.移动通信基站动力与环境集中监控系统的设计及实现[D].南京理工大学论文,2015.01.[5]崔恒源.移动通信基站动力环境监控系统设计及实现[J].计算机测量与控制,2009,17(10):1955-1957.[6]肖洋.通信基站应急发电机监测系统研究与实现[D].哈尔滨理工大学硕士论文,2012.03.01.[7]王士磊.无线通信基站信息管理系统的设计分析[J].中小企业管理与科技(下旬刊),2013,(2):201-202.[8]蒲泓全,贾军营,张小娇,等.ZigBee网络技术研究综述[J].计算机系统应用,2013,22(9):6-11.[9]龚志.智能家居安防子系统的设计与实现[D].南京邮电大学硕士论文,2011.12.01.[10]黎志碧.无线传感器网络在航空现场测试中的应用研究[D].电子科技大学硕士论文,2007.03.01.[11]王娜.煤矿安全预警系统中汇聚节点的研究与设计[D].河北联合大学硕士论文,2013.11.22.[12]ZigBee技术及其应用[OL].http://wenku.baidu.com/view/b90c1f2658fb770bf78a5541.html,2017.[13]闫富松,赵军辉,李秀萍.ZigBee技术及其应用[J].广东通信技术,2006,26(4):48-51.[14]尹锋,陈临安.基于ZigBee的高速公路隧道灯控系统设计[J].公路工程,2011,36(5):95-99[15]无线网络ZigBee技术[OL].http://wenku.baidu.com/view/15ae2005b52acfc789ebc96a.html,2017.[16]基于ZigBee技术的室内定位系统研究与实现[OL].http://wenku.baidu.com/view/9590be781711cc7931b71682.html,2017.[17]徐小涛,高泳洪,章炜,等.基于IEEE802.15.4的ZigBee无线网络数据传输安全的研究与探讨[J].信息网络安全,2009,(6):10-12.[18]ZigBee协议的基本概念及框架[OL].http://blog.csdn.net/apn172/article/details/7280910,2012.[19]王兴.基于ZigBee的无线传感器网络时钟同步算法的研究[D].北京邮电大学硕士论文,2012.01.01.[20]高岩.基于ZigBee技术的高速公路智能收费管理系统硬件技术方案设计[D].北京邮电大学硕士论文,2009.11.11.[21]介质访问子层[OL].http://www.docin.com/p-554417974.html,2016.[22]尹孟征.基于Android的APP开发平台综述[J].通信电源技术,2016,33(4):154-155.[23]EricMatthes.python编程从入门到实践[M].北京:人民邮电出版社,2017.[24]基于LabVIEW与RFID技术的实验室设备管理系统[R].学术论文联合比对库,2015.01.08.[25]MFRC522设计报告[OL].http://wenku.baidu.com/view/7e8b6982b9d528ea81c779c2.html,2017.[26]基于单片机的RFID读写器设计[OL].http://www.docin.com/p-447096190.html,2012.[27]RFID_MFRC522_图文[OL].http://wenku.baidu.com/view/d3cee98602d276a201292e01.html,2017.[28]智能家居门禁控制系统[OL].http://wenku.baidu.com/view/401ad905ba1aa8114431d9dc.html,2016.[29]袁喜斌.一种新型温室气传病害预警方式[J].现代化农业,2017,(1):71-72.[30]胡欣宇,郭凯星,郭军君,等.基于ZigBee的智能养殖生态控制系统[J].物联网技术,2017,7(1):67-70.[31]王剑.基于智能手机平台的空气环境质量检测系统[J].中国科技信息,2015,(5):60-63.[32]MQ-2烟雾传感器的工作原理[OL].http://max.book118.com/html/2016/0823/52492629.shtm,2016.[33]王朝玉,王建卫,王顺勇,等.基于物联网的智能家居控制系统设计[J].电子制作,2017,(1)1:37-38.[34]高林林.基于物联网的电梯监控系统设计[D].中国科学技术大学硕士论文,2016.06.02.[35]王铮.XMPP协议分析及客户端开发[D].吉林大学硕士论文,2007.10.23.58 南京邮电大学专业学位硕士研究生学位论文参考文献[36]MQTT协议-MQTT协议简介及协议原理[OL].http://blog.csdn.net/changsimeng/article/details/64441129,2017.[37]谢杨.基于云计算的现代农业物联网监控系统[D].西南交通大学硕士论文,2015.05.10.[38]孔祥龙,王燕.适用于低成本物联网终端的消息通讯协议比较研究[J].无线互联科技,2015,(16):49-52.[39]何晓明,欧亮,朱永庆.物联网网关的设计与实现[J].广东通信技术,2012,32(4):2-6.[40]刘瑞易.试论无线移动通信基站维护[J].中国新通信,2017,19(14):14-16.[41]颜少汉,吴雪冰.无线基站节能减排解决方案[J].中国新技术新产品,2011,(14):13-14.59 南京邮电大学专业学位硕士研究生学位论文致谢致谢时光飞逝,我的研究生学习也即将结束,在这两年多的学习中,使我受益颇多。首先,我要感谢的是我的导师王文鼐教授。王老师学识广博,在他的悉心指导和帮助下,我顺利完成了我的论文。在学习过程,王老师在给予了我很大的帮助。感谢王老师在我课题遇到困难时,给我的指导和意见。其次,感谢所有授课老师,是你们教会我各种知识并解答我的困惑。同时,也感谢各位同学所给予我的鼓励和帮助。最后,我要深深地感谢我的父母和爱人,谢谢你们对我的支持和理解,谢谢你们毫无保留的关心和爱,促使我顺利完成学业。再次感谢所有关心、帮助过我的亲人、老师、朋友和同学,谢谢你们!60

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭