




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章物联网网关开发4.1物联网网关概述4.1.1认识物联网网关又称网间连接器、协议转换器。●网关在传输层上实现网络互连,是复杂的网络互连设备,仅用于两个高层协议不同的网络互●网关和路由器的相似之处在于它们都可用于调节两个或多个独立网络之间的流量。但是,路由器用于连接两个相似类型的网络,网关用于连接两个不同的网络。由于这种逻辑,路由器可能被视为网关,但网关并不总是被视为路由4.1.1认识物联网网关●“物联网网关”是物联网的体系架构中,在感知层和网络层两个不同的网络之间的中间设备。●物联网网关是专用的硬件设备或软件程序。●物联网网关能够把不同的物体收集到的信息整合起来,并且把它们传输到下一层次。此外,物联网智能网关还具备设备管理功能4.1.2物联网网关的功能☆1.广泛的接入能力目前用于近程通信的技术标准很多,仅常见的WSN技术就包括LonWorks、ZigBee、6LowPAN、RUBEE等。各类技术主要针对某一应用展开,缺乏兼容性和体系规划,如LonWorks主要应用于智能社区,RUBEE适用于恶劣环境。如何实现协议的兼容性、接口和体系规划,目前在国内外已经有多个组织在开展物联网网关的标准化工作,如代合作伙伴计划)、传感器网络标准工作组,以实现各种通信技术标准的互联互通。4.1.2物联网网关的功能2.可管理能力强大的管理能力,对于任何大型网络都是必不可少的。首先要对网关进行管理,如注册管理、访问控制、服务集成、状态监测等。网关实现子网内节点的管理,如获取节点的属性、状态等,以及对节点的远程控制、唤醒、诊断和数据传输等。由于子网的技术标准不同,协议的复杂性不同,所以网关具有的管理能力不同。物联网网关可以管理不同的感知网络、不同的应用,使用统一的管理接口技术对网络节点进行统一管理。4.1.2物联网网关的功能3.协议转换能力由于不同类型的感知网络与接入网络有不同的协议,各个协议之间不能直接的进行通信,物联网网关可以实现从不同的感知网络到接入网络的协议转换、将下层的标准格式的数据统一封装、保证不同的感知网络的协议能够变成统一的数据和信令;将上层下发的数据包解析成感知层协议可以织别的信令和控制指令进行数据的传输。4.2智能灯光控制系统的网关开发4.2.1功能概述必随着信息技术的发展,物联网技术与传统行业的联系愈发紧密,其中智能家居已然成为物联网应用的成功案例之一。而智能灯光作为智能家居必不可少的组成部分,是家庭智能化的重要手段和体现。智能灯光的开关控制可以通过光照传感器采集光照强度,以此作为判断灯光开关的条件,同时通过远程客户端进行开关控制。4.2.2功能设计4.2.2功能设计2.网关工作流程●网关能对光源信息做出正确判断,控制灯光的开关并发送数据信息到客户端;●客户端发送请求登录数据到网关,通过验证后显示灯光状态并可以远程控制灯光开关。4.2.3功能实施×1.创建新工程2.利用config.txt文本文件配置网关ip地址、尤许登录的用户名和密码×3.网关功能程序编写☆4.设置数据源和客户端,测试网关程序4.2.3功能实施●定义全局变量存放从数据源获得的数据、网关的ip地址、外部光源传感器的状态4.2.3功能实施#全局变量使用声明#打开config.txt#读第一行写到变量ip上#关闭文本文档4.2.3功能实施socket也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过“套接字”向网络发出请求或者应答网络请求。即都可以用“打socket就是该模式的一个实现,socket即是一种特殊函数就是对其进行的操作(读/写4.2.3功能实施●从数据源获取数据(getData函数)通过数据源模拟传感器的数据信息,网关的任务是负责接收并处理信息,接收需要使用Python套接字接收TCP流并转化成字符串使用,数据源的使用将在本节最后予以展示,接下来还要添加对数据的判断,从而完成对灯光智能开关的效果,在日常生活中,当环境低于一定的亮度是肯定需要开灯的,这时将这个外部光源传感器能探测到的亮度值设置为100,当外部光源过亮的时候,室内就无需再开灯,这时将外部光源传感器能探测到的亮度值设置为400,在区间100至400时则灯的开关无需智能处理。defgetData():whileTrue:globaldataFromSource,status#dataFromSource,status与ip一样需要声明全局变量#网络通讯(TCP/IP-IPv4,TCP流)#主动初始化TCP服务器连接,如果连接出错,返回socket.error错误。#发送TCP数据,将string中的数据发送到连接的套接字。返回值是要发送的字节数量,该数量可能小于string的字节大小。#接收TCP数据,数据以字符串形式返回,bufsize指定要接收的最大数据量。#字符串转化为字典if(int(dataFromSource['0200'])>400):dataFromSource.update(status)#字典更新dataFromSource=str(dataFromSource)#字典转化为字符串s.close()#关闭连接time.sleep(9)#间隔9秒执行#网关暂存当前数据并待命,其中dataFromSource则用来暂存。4.2.3功能实施多知识拓展:字典在Python中,字典是一系列“键-值对”,每个键都与一个值相关联,可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对象用作字典中值对”是两个相关联的值。指定键时,Python将返回与之相关联的值。键和值之间用冒号分隔,而“键-值对”之间用逗号分隔。在字典中,可以存储任意数量的“键-值对”。4.2.3功能实施●网关检测客户端登录合法性(clientComm函数)网关不仅要接收数据源发出的数据信息,还需要与客户端建立通讯,才能将客户端上的请求传输到网关,合法的用户被保存在config.txt中,此时需要网关来检验用户合法性,以及开启线程保持与客户端的通讯,线程发送信息到客户端线程。f=open('config.txt')#打开config.txtf.readline()#读行#创建字典-可登录用户名和密码print('可登录用户--',allowedUser)#在控制台上打印可登录用户f.close()#关闭文本s.bind((ip,10067))#绑定地址(host,port)到套接字。#开始TCP监听。backlog指定在拒绝连接之前,操作系统可以挂起的最whileTrue:#被动接受TCP客户端连接,(阻塞式)等待连接的到来#将已编码的JSON字符串解码为Python对象#打印正在从客户端登录的用户信息#判断客户端输入的用户名密码是否正确print('user--',user,loginsuccessfully,reply:1.')#若正确则登录成功#发送TCP数据,将string中的数据发送到连接的套接字。 threadstartnewthread#建立新线程运行sendToClient模块#打印登录失败的用户#发送TCP数据,将string中的数据发送到连接的套接字。#关闭连接cs#关闭总连接4.2.3功能实施用户成功登录后,则发送线程被打开,网关需要周期性的向客户端发送传感器数据,客户端才能获取实时数据,从而实现数据可视化。#提示执行sendToClient函数,用户将创建一个发送线程s.send((str(dataFromSource)encodeUTF#数据源以UTF-8编码字符串形式发送出去print('数据:',dataFromSource,'发送给ip',ip)#提示数据已成功发送#间隔7秒执行4.2.3功能实施●Python主函数(main函数)一段具有多功能模块的代码要运行则需要有一个主函数,程序执行时就是运行主函数,而不是一个个的功能函数(函数没有先后顺序),就是像排序一样将先后需要运行的功能模块作为主函数的代码写好放在整段代码末尾或者开头。4.2.3功能实施●Python主函数(main函数)一段具有多功能模块的代码要运行则需要有一个主函数,程序执行时就是运行主函数,而不是一个个的功能函数(函数没有先后顺序),就是像排序一样将先后需要运行的功能模块作为主函数的代码写好放在整段代码末尾或者开头。getip()#先获得网关ip地址print('服务器启动,ip:'+ip+',数据源通信端口:10068,客户端通信端口#控制台打印网关信息 #使用客户端与网关通讯模块4.2.3功能实施●使程序运行主函数要运行主函数则还得加上一句让程序开始的时候就直接找到主函数开始运行。4.3智能酒店控制系统的网关开发4.3.1功能概述必伴随着物联网技术的发展,旅行不只是看风景,也是另一种生活方式。作为旅行途中不可或缺的住宿环节,酒店也不再仅仅是休息的场所,更多的是承载着新的生活方式的空间,智能酒店为旅客提供了更舒适的住宿体验和高质量的服务。必客户端登录并发送请求给网关,网关对接收到的环境数据进行处理,当用户验证正确时,将数据发送给客户端,客户端接收并显示。4.3.2功能设计数据4.3.2功能设计酒店内设有温度传感器、湿度传感器、光照强度传感器、气压传感器、PM2.5传感器,为了智能控制环境以达到舒适居住的目的,通过多个传感器采集各个设备数据,网关接收数据,对环境状态做出判断,从而智能控制酒店设备。4.3.3功能实施×1.打开上一节的工程☆3.设备智能控制逻辑分析×4.网关功能编写必5.设置数据源和客户端,测试网关程序4.3.3功能实施●室内温度智能调节人体的舒适温度在25度上下,温度传感器可以感知房间内温度,从而控制中央空调出暖风还是出冷风或不出风,以保证室温在25度左右4.3.3功能实施获得室内温度IF室内温度>28度THEN中央空调吹冷气空调吹暖气ELSE关闭空调status={'0001':'不出风'}4.3.3功能实施多空气智能加/除湿空气干湿程度也是影响人们日常生活舒适度的一大重要因素,过低的湿度和过高的湿度,人体都会感到不适,久而久之产生慢性疾病,智能控制加湿器,在空气湿度高时开启除湿功能,在空气湿度低时开启加湿获得室内湿度IF室内温度>55%THEN开启加湿器除湿功能ELSEIF室内温度<40%THEN开启加湿器加湿功能ELSE关闭加湿器status={'0101':'关'}4.3.3功能实施在日常生活中,当环境低于一定的亮度是需要开灯,这时将这个外部光源传感器能探测到的亮度值设置为300,当外部光源过亮的时候,室内无需再开灯,这时将外部光源传感器能探测到的亮度值设置为700,在区间300至700时则灯的开关无需智能处理,获得室外光源强度数值开室内灯具THEN关闭室内灯具4.3.3功能实施净化空气空气质量已成为日常生活的一大关键指标,优质的空气对人们的身体健康至关重要,当PM2.5大于30时就开启空气净化器净化微小颗粒,当PM2.5很低的时候可以自动关闭空气净化器省电。获得室内PM2.5数值IF室内PM2.5数值>30THEN开启空气净化器ELSE关闭空气净化器ifint(dataFromSource['0400'])>30:status={'0401':'运行中'}4.4创建日志记录文件4.4.1功能概述必在程序运行中需要通过创建日志记录的方式及时记录重要的状态信息变化,以便在程序产生问题时及时找到症结所在。对网关所有的行为进行日志记4.4.2功能设计多日志可以记录所有后台功能产生的信息,只需熟悉logging模块的用法,用户可自定义log格式并且可在每一个模块上添加log信息,注意语言使用规针对4.4.3功能实施必1.打开上一节的工程多3.修改功能函数×4.设置数据源和客户端,测试网关程序4.4.3功能实施些问题在不久的将来。(例如磁盘空间低)但这个软件还能按预期4.4.3功能实施4.4.3功能实施#[升序时间][信息级别][名称][运行文件名,该文件的第几行进行过输出][自定义信息内容]#设置日志级别:记录info文档位置格式为format4.3.3功能实施logginginfogetdataFromSour4.5用户操作记录数据库4.5.1功能概述客户端进行操作之后将操作内容记录到后台是一种好的使用习惯,当遇到错误或者不规范的使用情况时可以配合4.4节提供的日志功能逐一排查原因,修改代码使程序更加完善,同时还可以记录用户的操作内容,方便日后进行数据分析,分析用户的使用习惯等内容。本功能使用Python与MySQL数据库连接,并将带有时间戳的用户操作记录与用户登录记录录入数4.5.2功能设计流程图4.5.3功能实施必1.打开上一节的工程必3.建立数据库必4.编写与数据库交互的相关功能×5.设置数据源和客户端,测试网关程序4.5.3功能实施●数据表的建立1Timing(键)0Timing(键)04.5.3功能实施4.5.3功能实施●连接数据库#localhost代表本地也可以#用户名为本地数据库连接用到的用户名#密码需要跟本地数据库密码相同#数据库需要填写刚刚建立的数据库名#创建一个db游标,则可以输入各种数据库指令操作数据库4.5.3功能实施whileTrue:#此处为logging需要用format格式化#!!!Attention!!!无论是数字(包括整数和浮点数)、字符串日期时间或其他任意类型,都应该使用%s占位符。#用户的密码,用户的名字,1代表连接成功#游标执行数据库命令sql,val为参数#数据库更新一定要执行commit才能实现数据库更新print(cursor.rowcount,"用户登录成功记录插入成功。")#print到控制台表示有用户登录行为 #此处为logging需要用format格式化val=(user['password']userusername#用户的密码,用户的名字,0代表信息有误连接失败#游标执行数据库命令sql,val为参数#数据库更新一定要执行commit才能实现数据库更新print(cursor.rowcount,"用户登录失败记录插入成功。")#print到控制台表示有用户登录行为4.5.3功能实施中记录用户对设备进行的操作#一定要解码为utf-8编码,否则接收的TCP流无法直接使用print('user---{}使设备{}改变了状态'.format(user,order))#!!!Attention!!!无论是数字(包括整数和浮点数)、字符串、日期时间或其他任意类型,都应该使用%s占位符。#用户的密码,用户的名字,用户操作的设备号#游标执行数据库命令sql,val为参数#数据库更新一定要执行commit才能实现数据库更新print(cursor.rowcount,"记录插入成功。")#print到控制台表示有用户操作行为('user--{}使设备{}改变了状态'.format(user,order))#此处为logging需要用format格式化4.6本章习题4.6.1单选题1.网关在上实现网络互连。A.传输层B.物理层C.网络层D.数据链路层A.网关既不可以用于广域网互连,也不可以用于局域网互连B.网关既可以用于广域网互连,但不可以用于局域网互连C.网关既可以用于广域网互连,也可以用于局域网互连D.网关既不可以用于广域网互连,但可以用于局域网互连4.6.1单选题4.物联网网关可以实现感知网络与通信网络,以及不同类型感知网络之间的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论