资源目录
压缩包内文档预览:(预览前20页/共81页)
编号:167780886
类型:共享资源
大小:7.36MB
格式:ZIP
上传时间:2021-11-24
上传人:文***
认证信息
个人认证
常**(实名认证)
河北
IP属地:河北
30
积分
- 关 键 词:
-
联网
技术
发展
应用
课件
- 资源描述:
-
物联网技术的发展与应用课件,联网,技术,发展,应用,课件
- 内容简介:
-
第4章物联网网关开发学习目标蒙握网关、物寐网网美的林念02.理斛物解网网关的功怩0 3.皆握物寐网网关工隹创建04.魏琳蒙报物寐网网关程序微材和模料器微据获取:.5,薮糅察握应用接口数据寐劭4.1物联网网关概述4.1.1认识物联网网关-1,网关网关(Gateway)又称网间遮接器、仍衩转换器。网关点传输层上实现网络亘速,是复盖的网络 亘透被备,以用于两个离层仍衩系同的网络亘 速。网关右路由器的相他之处矗于它们都可用于碉 节两个或多个独贪网络之间的流量。但是,路 由器用4直接两个相何类型的网络,网关用4 隹接两个系同的网络。由于送种逻:晴,路由器 可怩被视,网关,但网关并系总是被视,路由 器。02.物寐网网关 “物珠网网美”是物寐网的体系架构中,点感知层 布网格层两个系同的网格之间的中间微备。物联网网美是专用的硬件核备或软件程本。物珠网网关怩被杷系同的物体收集到的倍息整合起 来,并且把它们传输到下一层次。此外,物寐网窗 怩网关迷具备核备管理切犍4.1.2物联网网关的功能01.广达的摄入犍力目啼用4近程通信的技术标尊很多,仇有见的 WSN技术就包括LonWorks、ZigBee、6LowPAN、 RUBEE等。各类技术要针对某一应用展开,鞅 乏兼容桃布体系规划,电LonWorks i要应用孑臂 怩社区,RUBEE逶用于怒走环境。电何实现仞衩 的兼容桃、接口和体系规划,目喻我国内外已经 市多个组躯我开展物寐网网关的标雁化工作,电 3GPP f(Third Generation Partnership Project,第三 代合作及伴花刻)、传感器网络标率工作组,。实 现各种通信披术标雁的亘寐互通。02 .可管理犍力根上的管理犍力,对于值何大型网冷都是赤系可 夕的。首先要对网关进行管理,电灌册管理、访 问控制、服务集感、技态蓝测得。网关实现3网 内节点的管理,电获取节点的属桃、收态备,山 及对节点的逐程按喇、蟆醵、诊新命照据传输备 o由于3网的核术标灌系同,仍衩的复盖桃系同 ,所。网关具有的管理就力系同。物寐网网关可 心管理系同的感知网络、系同的应用,使用疣一 的管理接口裁木对网络节点进行疣一管理。3.伊衩箝换惚力由孑系同类型的感知网络与接入网络有系同的怀 衩,各个4办衩之间系犍直接的进行通信,物寐网 网关可。实现柩系同的感知网络到接入网络的价 衩转换、桁下层的标瘠格式的数据疣一封装、保 证系同的感知网络的伤衩犍够变鼠疣一的微踞右 信令/特上层干农的数据包解析就感知层怀衩可 。窃别的信令令按喇婿令进行熬据的传输。4.2智能灯光控制系统的网关开发4.2.2功能设计。成淆倍息技术的发展,场寐网披木马传疣行业的 寐系愈发紧密,其中智犍家居已勉或,物寐网应 用的感功嚓例之一。而智怩灯先作,智怩家居处 系可少的俎鼠郡今,是家蓬帝怩化的童要手段和 体现。:臂犍灯先的开关搜喇可。遍逑究能传感器采集先 矮极盛,。此作,判断灯先开关的条件,同时通 过逐程客户端进行开关搜喇。.系挽翘架:*2.网关工作流隹 目标地址(网关)接收传感器熬据; 网关怩对宪源信息做出正确判断,控制灯宪的开 房弄发送照据信息到唐户端, 客户端发送请求密录熬据刎网关,通过脸证后显 示灯先正态界可。逐程控刷灯先开关。4.23功能实施创建新工程 :*2.利用config.txt丈本次件配置网关ip地址、允许於 录的用户名右密鸡 :*3 ,网关功惚钱本编写 :*4.微置剧据源右客户端,测诙网关隹星4.2.3功能实施导入库import socketimport jsonimport timeimport _thread定义会扃变量落数双照据源获得的照据、网案的ip 地址、外部先曝传感器的状态dataFromSource =ip =status = 乂获得config.txt中获取IP地征(getjp笛密J def get_ip():global ip# 小局变量使用声阚 f = open(config.txt)# 打开config.txtip = freadlineO.replaceCXn,)# 裱第一行写到变量ip上 f.close()# 关闭次冷次格。知拥名展:socket介殆socket也称作套接生,用孑描述IP也征布端。, 是一个通信铤的句柄。应用在本通存通过“春接室” 向网格或出错或或者反入网格错点。即都可。用“打 topen4t % write/readM 闭close”模 式来猱作。 socket就是该模式的一个实现,socket即是一种特殊 的文件,一些socket笛微就是对其进行的操作(裱/写 10、打开、关闭)o 乂照据源获取照据(getData西豳J遍过剧据源模料传感器的照据信息,网关的G务是负 责接收并处理信息,接收需要使用Python套接室接收 TCP流并箝化观多符串使用,剧据源的使用指我冷手景 后手。展赤,接下耒迷要流加对照据的判断,从而完 阀对灯先号怩开关的致累,我日帝眩活中,劣环境低 于一友的亮度是南是需要开灯的,送时桁送个外部先 源传感器怩探测到的亮波值核置卷100,咨外部先源还 亮的时候,宦内就无需善开灯,送时桁外部先源传感 器怩探测到的亮度值枝黄,400,点区间100至400时则 灯的开关无需智怩处理。def getDataf):while True:global dataFromSource, status# dataFromSource, status与ip一书需要声阚小扃变量s = socket.socket(socket.AF_lNET, socket.SOCK_STREAM)# 网络通讯(TCP/IP-IPv4,TCP 流)s.connect(ip, 10068)# i劭初胎化TCP服务器座接,电泵接*错,退socket.error 褶篌。s.send(bfindn)# 发送TCP微据,物string中的微据发送割it接的套接室。返他 是要发送的生节微量,祓微量可惚小string的冬节上小。dataFromSource = s.recv(4096).decode(utf-8)# 接收TCP微据,微据“4室符串形式返,bufsize猾笑要接收的 量大微据量。dataFromSource = eval(dataFromSource)# 室符串箝化名容典if(int(dataFromSource0200) 400):status = 0201: O, 0202: O, 0203: 0 dataFromSource.update(status) # 庄 &更新 dataFromSource = str(dataFromSource) #:典辂化为 9 符串 s.close) #关闭速接 time.sleep(9) #间隔9秒执行# 网关新方省瑞微据笄稗命,其中dataFromSource则用来新花。4.23功能实施。知拥名展:多典在Python中,有典是一系列神-值对,每个便都 与一个值相关珠,可也使用穗耒访间号之相关麻的 他。与神和关珠的他可。是照多、多符串、列表乃 至生典。事实上,可桁但何Python对象用作生典中 的他。穗-他对”是两个相关珠的值。指定植时 ,Python粉返命与之和关麻的伍。桂我他之间用胃号 今隔,而“诡他时”之间用途号令隔。点多翼中, 可心花储值意照量的“利-依对”。4.2.3功能实施网关检测客户端密录合法植(clientComm笛密J 网关系以要接收熬据源发出的熬据信息,迷需要与客户 端建走通讯,才惚将客户端上的谛求传输到网关,合法 的用户被保4点config.txt中,此时需要网关来检验用户合 修植,。及开启彼程保持马客户端的通讯,彼程发送信 感到客户端彼福。def clientComm():f = open(config.txt,) # 打开config.txtf.readlinef) # 篌行allowedUser = dict(username=f.readline().replace(,n,), password=f.readline().replace(n,)#创建冬典-可於录用户名布密妈print(可於录用户TallowedUseij #在控制台上打印可受录用户f.close() #关闭次有s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 网络通讯(TCP/IP-IPv4,TCP 流)s.bind(ip, 10067) # 佛定地址(host,port)一套接室。s.listen(lOOO)#开胎TCP蓝听。backlog指定戒拒疱接接之嗡,操作系疣可八激起的景 Vil接微量。while True:cs, addr = s.accept()# 狼劭接盘TCP客户端速接,(双索式)等将速接的割束user = json.loads(cs.recv(2048).decode(utf-8)# 检已编鸣的JSON室符串解妈,Python对象 print(user:, user, is log in from:, addr)# 打印正戒乂客户端於录的用户信息if userusername = allowedUserlusername and userpassword= allowedUserlpassword:# 判断客户端输入的用户名密鸣是否正确print(user-,user,log in successfully, reply:l/) # ,正确则於录就切 cs.send(bln)# 发送TCP微据,揩String中的微据发送刎接接的套接室。 _thread.start_new_thread(sendToClient, (cs, ip)# 建豆新狡程运行sendToClient模块else:printf user-,user,log in failed, reply:0.)# 打印整录失败的用户cs.send(bOn)# 发送TCP微据,粉string4的熬据或送割速接的套接室。 cs.closed# 关闭接css.close()#关闭总接接双网关於农熬据源信息到密户端fsendToClient&a;用户周功於录启,则发送废程被打开,网关需要周期H的向哈 户端发送传感器熬据,鹿户端才惚获取实时数据,从而实现激 据可视化。def sendToClient(s, user):print(A send thread is created for user-, user)#梃示执行sendToClient雷微,用户将创建一个发送拨程 while True:s.send(str(dataFromSource) + rT).encode(UTF-8)# 微据源山UTF-8偏鸡庄符串形式发送出去 print(徽据:dataFromSource,发送给ip, ip)# 梃示熬据已感切发送time.sleep(7)# 间隔7秒执行 Python i & 剧(main 房剧)一段具市多功健模块的代鸡要运行则需要嗡一个:西熬,4 执行时就是运行2曲叔,而不是一个个的功犍苗熬(曲烈没嗡 先后顺星),就是像排格一曲将先后需要运行的功怩模块作名 i落剧的代码写肠数位整段代妈束是或老外杀。 Python 1 函微(main 函破)一段具市多功惚模块的代码要运行则需要市一个西熬,程停 执行时就是运行j徐叔,而不是一个个的功犍属熬(西数救市 先后顺本),就是像揶泽一曲特先后需要运行的功惚模块作, i笛微的代妈写中数左整段代码末尾或者开头。def main():get_ip() #先获得网关ip地址printf服务器启劭,ip: + ip + ,熬据源遹信端口 :10068,客户端遹信瑞口 :10067)# 按制台打印网关信息_thread.start_new_thread(getData,()# 开启getData依程则动惚模块会一直运行clientComm()# 使用客户端与网关通讯梗块4.23功能实施使程本运行2筛微要运行 笛烈则迎得加上一旬让程本开船的时候就 直接找刎i胸剧开胎运行。if _name_ = _main_main()43.1功能概述4.3智能酒店控制系统的网关开发。伴成房场寐网裁木的发展,旅行系兄是看风建, 也是另一种皮活方式。作,旅行途中系可或缺的 隹霜环手,酒府也系苒仇奴是你息的场所,戛多 的是来战房新的成活方式的空间,智怩涵府,旅 客提供了更野逶的性霜体验布离质量的服务。客户端密录并发送错求令网关,网关对接收割的 环境殿据进行处理,由用户验证正确时,特数据 发送令客户端,客户嫁接收并显示。4.3.2功能设计.系挽翘架43.2功能设计02 ,网关功怩通括为微嗡温液传感器、湿或传感器、宪熊极盛传 感器、气及传感器、PM2.5传感器,了臂怩控制球 旗。达到得适后他的目的,通过多个传感器采集各 个假备熬据,网关接收照据,对环境状态做出判断 ,从而臂怩控制涵括核备。.打开上一节的工程 2.配置 config, txt 攵件03 .核备智犍捏喇遂何今折 :*4.网关功犍编写 :*5 .微置微据源右客户端,测信网关隹星宦的温液智惚倜节人体的野逡温盛京25点上下,温盛传感器可。感知房 间内温度,乂而按喇中央室调出暧贰迷是出冷风或左 也网,。保证宦温在25波左右4.3.3功能实施Begin获得宦肉温度IF宦内温液28/THEN中央空碉 吹舜至ELSE IF宦内温度22度THEN中央 空碉吹嗫气ELSE关闭空倜END IFEND IFif int(dataFromSource0000) 28: status = 0001:政寿网else:status = 0001:定出凤dataFromSource.update(status)433功能实施。宠气臂犍加/除混变气十湿程波也是影响人们日有生活野逡渡的一大叠 要因素,过俄的湿/乱过之的湿凌,人体都会感到系 逡,久而久之产尘慢植成痴,智怩控制加湿器,病或 气湿波密时开启除湿功犍,在生气温度俄时开启加温 切犍。Begin获得宦肉湿度IF宦内温度55%THEN开启加湿器 除湿功惚ELSE IF宦内温40% THEN开启和 湿器加湿切惚ELSE关闭加湿器END IFif int(dataFromSource0100) 55: status =010T:除湿中else:status = 0101:MdataFromSource.update(status)END IF。宦肉灯具自劭化在日帝皮话中,由环境低于一定的亮波是需要开灯, 送时将送个外部卷源传感器犍探测到的亮盛值残置名 300,咨外部宪源迎亮的时候,宦内无需苒开灯,送 时将外部先派传感器怩探测刎的亮波值微置,700, A区间300至700时则灯的开关无需置犍处理,Begin获得宦外宪源强度熬他IF宦外兆源强盛剧值300THEN t 叶蜜向灯具ELSE IF宦外宪源穆盛烈值700THEN关闭宦内灯具END IFEND IFif int(dataFromSource0200) 700: status = ,0201:0202:0203:if status != :previous = statusdataFromSource.update(status)4.3.3功能实施净化空上变气质量已周,日帝生话的一大美穗娟标,优质的变 先对人们的身体值朦至关唾要,咨PM2.5大于30时就 开启变气净化器净化微小颗攫,咨PM2.5很像的时候 可山自劭关闭变气净化器省电。Begin获得宦肉PM2.5鼎他IF tPM2.530THEN 开启全气净化器ELSE关闭变气净化器END IFif int(dataFromSource0400) 30: status = 0401?运行中else:status = 0401:关dataFromSource.update(status)4.4创建日志记录文件4.4.1功能概述。我被停运行中需要通过创建日志忆录的方式及时 忆录童要的技态倍息变化,。便森在序产皮向奥 时及时我到症住所充。本功怩使用Python对网关所有的行,进行日志和 录,皮感.log文件。4.4.2功能设计。日志可。忆录所市后台功怩产成的倍息,只需魏 患logging模块的用法,用户可匈定义log格式并且 可我每一个模块上瞬加log倍息,灌意语言使用现 范。4.43功能实施打开上一节的工程 :. 2.由已置config, txt丈件 :.3 .修改功惚属微 :*4 .微置数据源右修户端,测信网关程序4.4.3功能实施:知拥名展:logging日志模块介殆日志一易今欣5个等公,乂假割裔今别是;DEBUG INFO WARNING ERROR CRITICALo DEBUG/样料的信息,通常只出现在馀断冏驳上。 INFO;确伏一切按预期运行。 WARNING/ 一个迹象表现一的意想系割的多情发皮了,或表飒一 的问驳我不久的粉主。(倒电磁盘空间像)但这个软件迷惋按预期 工作。 ERROR;更尹堂的问驳,软件没犍执行一的切惚。 CRITICAL; 一个尹堂的错篌,送宏期程序律身可惚无法健候运行。这5个等公,也今别对应5种打日志的方法;debug、info、warning, error, criticalo默伏的是WARNING,省双WARNING或之上时才被砥导入logging梗块import logging # 导入logging梗块文福依置不与与次福格式定义log_file = ./test.logFORMAT = %(asctime)s %(levelname)s %(name)s %(filename)s line %(lineno)d %(message)s# 升博时间倍息您别名繇运行次件名,裱次件的第几行进行逑 输心自定义信息内容logging.basicConfig(level=logging.INFO, filename=log_file, format=FORMAT)#筱置日志秋别;和录info次福假置 格式名format Logging存例语句(get-+ dataFromSource + from-+ip+,:10068,)(可登录用户-.format(allowedUser)fuser: is log in from .format(user, addr) logging.error(e)4.5用户操作记录数据库4.5.1功能概述:客户端进行摇作之后将摇作内容祀录刎后台是一 种肠的使用灯惯,咨遢到错篌或者系规范的使用 情况时可。配合4.4节提供的日志功惚逐一狒重晨 国,修改代妈使程序更加党善,同忖迷可心和录 用户的糅作的客,方便日后进行数据今折,合折 用户的使用习惯备内察。:本功惚使用Python与MySQL数掂薜速接,并将带 市时间戳的用户据作和录与用户於录和录录入微 据库。4.5.2功能设计流程画APP应用数据库命令数据反馈4.4.3功能实施 :*1 .打开上一节的工隹 2.配置 config.txt 攵件 :*3 .毫克殿据库 :*4.编写与数据薜玄至的相关功犍 :*5,微置数据源和客户端,测裁网关程序4.4.3功能实施敏踞表的建克生段名就名段类型usernamevarcharpasswordvarcharstatusbinaryTiming (硬Jtimestamp庄段名卷生候类型passwordvarcharusernamevarchareqnumvarcharTiming (健)timestamp辱收也盘允许变值允许安值导入 mysql. connector 模块import mysql.connector4.4.3功能实施这接数据滓db = mysql.connector.connect) host=localhost,# localhost代表埼池 也可。 user=root,# 用户名,漳地徽据犀it接用到的用户名 passwd=root,# 密鸣需要砥埼也熬据薜密妈相同 database=userope# 恭据薜需要嫉与刚刚建定的微据薜名)cursor = db.cursor()#创建一个db涛标,则可推输入各种微据薜器令操作微据薜京clientComm房微里流加数据库提作语句def clientComm():f = open(config.txt)f.readline()allowedUser = dict(username=f.readline().replace(n,), password=f.readline().replace(n,)(可於录用户-尸.format(allowedllser)f.closef)s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.bind(ip, 10067)s.listen(lOOO)try:while True:cs, addr = s.accept()user = json.loads(cs.recv(2048).decode(utf-8)fuser: is log in from .format(user, addr)#此处 logging需要用format辂式化if userusername = allowedUsertusername and userpassword = allowedUserlpassword:fuser- log in successfully, reply:l.format(user)cs.send(bln)sql = INSERT INTO login (password,username,status) VALUES (%s,%s,%s)# !Attention!无卷是微庄(包括整微和浮直感J、容符串 、日期忖间或其他G意类型,都应该使用$占住符。val = (userpassword, userusername, 1)# 用户的密鸣,用户的名客,1代表it接鼠切 cursor.execute(sql, val)# 港株执行微据薜命令sql, val,参微 mit()# 微据薜更新一是要执行commit才怩实现微据薜更新 print(cursor.rowcount, ”用户於录.切忆录插入感功。)# print到控榭台表示1用户整录御名_thread.start_new_thread(getFromClient, (cs, user)_thread.start_new_thread(sendToClient, (cs, user) else:fuser- log in failed, reply:0.format(user)# 此处,logging需要用format楮式化cs.send(bOn)sql = INSERT INTO login (password,username,status) VALUES (%s,%s,%s)val = (userpassword, userusername, 0)# 用户的密妈,用户的名庄,0代表信息市篌接接失败cursor.execute(sql, val)# 港标执行微据薜命令sql, val,参微mit()# 徽据薜更新一窕,要执行commit才惚实现微据薜更新print(cursor.rowcount, “用户於录失收和录插入鼠切。)# print割控制台表示1用户整录御名cs.closedexcept Exception as e:logging.error(e)finally:s.closed在getFromClient中和录用户对微备进竹的糅作def getFromClient(s, user):(A get thread is created for user- .format(user)while True:order = s.recv(8).decode(utf-8)# 一是要解码,utf-8编码,番则接收的TCP流无法直接使用 printfuser - 使微备改变 了 状态.format(user, order) sql = INSERT INTO operation (password, username, eqnum) VALUES (%s,%s,%s)# !Attention!无卷是微庄(包括整微和浮点感J、室符串、日 期时间或其他G意类型,都应该使用5占住符。val = (userpassword, userusername, order)# 用户的密码,用户的名庄,用户操作的微备号cursor.execute(sql, val)# 游标执行剧据薜命令sql, val%参微 mit
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。