专题五 在Cisco Packet Tracer中设计基于 PT 和 OneNet 的智能家居系统

这篇具有很好参考价值的文章主要介绍了专题五 在Cisco Packet Tracer中设计基于 PT 和 OneNet 的智能家居系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

摘    要

        智能家居是物联网在家庭中的基础应用,随着宽带业务的普及,智能家居产品涉及到方方面面。 家中无人,可利用手机等产品客户端远程操作智能空调,调节室温,甚者还可以学习用户的使用习惯,从而实现全自动的温控操作,使用户在炎炎夏季回家就能享受到冰爽带来的惬意;通过客户端实现智能灯泡的开关、调控灯泡的亮度和颜色等等; 插座内置Wifi,可实现遥控插座定时通断电流,甚者可以监测设备用电情况,生成用电图表让你对用电情况一目了然,安排资源使用及开支预算。

        本次课程设计要求设计一个基于 PT 和 OneNet 的智能家居系统,该系统要满足日常生活所使用的智能条件。

关键词

        Python;物联网;PT;Cisco Packet Tracer

 文章来源地址https://www.toymoban.com/news/detail-798268.html

1.平台及软件

        本次课设需要使用Cisco Packet Tracer模拟器和OneNet物联网平台。

        Packet Tracer是一个功能强大的网络仿真程序,允许学生实验与网络行为,问“如果”的问题。随着网络技术学院的全面的学习经验的一个组成部分,包示踪提供的仿真,可视化,编辑,评估,和协作能力,有利于教学和复杂的技术概念的学习。

        OneNET-中国移动物联网开放平台是由中国移动打造的PaaS物联网开放平台。平台能够帮助开发者轻松实现设备接入与设备连接,提供综合性的物联网解决方案,实现物联网设备的数据获取,数据存储,数据展现。

2.设计要求

2.1 环境参数设置

        用户地理位置:海南大学儋州校区,PT的环境参数设置为该位置的。

2.2必需实现以下功能:

        湿度大于阈值:风扇打开;否则关闭。湿度阈值的初始值为50%,可通过云平台oneNet发送控制指令,远程设置湿度阈值。

1. 光照度小于20%:台灯及LED灯打开;否则关闭。

2. 温度高于25度:空调打开;否则关闭。

3. 风速大于2KPH:关窗;否则,开窗。

        音箱播放音乐:

1. 门状态为doorstate=="1,0"时,即门打开且未上锁时(主人回家或在家),开始播放音乐。

2.  门状态为doorstate=="0,1"时,即门关闭且上锁时,停止播放音乐。

3. 门状态为doorstate=="0,0"时,即门关闭且未上锁时,可通过云平台oneNet发送控制指令,开始播放音乐或停止播放音乐。

2.3可选实现以下功能:

1.光照度小于20%且有人在家时:台灯及LED灯打开;否则关闭。

2. 温度高于25度且有人在家时:空调打开;否则关闭。无人在家时可通过云平台oneNet发送控制指令:当温度高于35度时打开空调;当温度低于35度时关闭空调。

3. 风速大于2KPH:关窗;否则,开窗。

4. 增加一个“室外花园”,当湿度小于30%时,开始“浇花”。

5. 增加你认为需要的其它功能。

3.功能实现

3.1用户地理位置

packet搭建智能家居系统毕业设计,PacketTracer,python练习,智能家居,python

 

 3.2必备功能

packet搭建智能家居系统毕业设计,PacketTracer,python练习,智能家居,python

packet搭建智能家居系统毕业设计,PacketTracer,python练习,智能家居,python

 

3.2.1系统概况

        第一部分是室内传感器,有温度传感器,湿度传感器,光照传感器,这三种传感器将数据发送到MCU0进行数据分析再发送到SBC发送到云端管理。

        第二部分是室内家具,有窗户,门,空调,电扇,台灯,LED灯,音响,它们受控于MCU1听从SBC发送的指令。

        第三部分是室外花园,有浇灌系统,湿度传感器,传感器将数据发送到MCU2进行数据分析再发送到SBC发送到云端管理,浇灌系统受控于MCU2听从SBC发送的指令。

 

3.2.2联动实现

        当湿度大于阈值:风扇打开;否则关闭。湿度阈值的初始值为 50%,可通过云平台 oneNet 发送控制指令,远程设置湿度阈值。

        在MCU1中代码实现,如果获取到“fan:open”,则打开风扇,否则关闭:

if':'in data:

    cmd =data.split(':')

    if cmd[0] == "fan":

        if cmd[1]=="open":

        customWrite(3,1)

    if cmd[1]=="close":

        customWrite(3,0)

        在SBC中代码实现设置阈值,并通过云端发送指令修改阈值:

 packet搭建智能家居系统毕业设计,PacketTracer,python练习,智能家居,python

         如果获取到“window:open”,则打开窗户,否则关闭:

if cmd[0] == "window":			
	if cmd[1]=="open":
		customWrite(A1,1)
	if cmd[1]=="close":
		customWrite(A1,0)

packet搭建智能家居系统毕业设计,PacketTracer,python练习,智能家居,python

         如果获取到“light:open”,则打开台灯与LED灯,否则关闭:

if cmd[0] == "light":
    if cmd[1]=="open":
		customWrite(4,1)
		analogWrite(5,1023)
	if cmd[1]=="close":
		customWrite(4,0)
		analogWrite(5,0)

packet搭建智能家居系统毕业设计,PacketTracer,python练习,智能家居,python

 

        如果获取到“airconditioner:open”,则打开空调,否则关闭:

if cmd[0] == "airconditioner":

    if cmd[1]=="open":
    
        digitalWrite(2, HIGH)

    if cmd[1]=="close":

        digitalWrite(2, LOW)

packet搭建智能家居系统毕业设计,PacketTracer,python练习,智能家居,python

 

        如果获取到“music:open”,则打开音响,否则关闭:

if cmd[0] == "music":

    if cmd[1]=="open":

        digitalWrite(A0, HIGH)

    if cmd[1]=="close":

        digitalWrite(A0,LOW)

packet搭建智能家居系统毕业设计,PacketTracer,python练习,智能家居,python

 

        如果室外湿度小于30%,则开始浇花,否则关闭:

def check(shidu):

    if shidu < 30:

        customWrite(0,1)

    else:

        customWrite(0,0)

packet搭建智能家居系统毕业设计,PacketTracer,python练习,智能家居,python

         在SBC中进行本地数据与阈值比较判断,是否满足开启条件,代码实现如下:

def hum():
	
	if (sensor_humitidy >= humitidy_threshold):#fan
		for _client in clients:
			_client.send("fan:open")
	else: 
		for _client in clients:
			_client.send("fan:close")
	sleep(1)
	
	if (sensor_sunlight < sunlight_threshold):#light and led
		for _client in clients:
			_client.send("light:open")
	else: 
		for _client in clients:
			_client.send("light:close")
	sleep(1)		
	
	if (sensor_temperature > temperature_threshold):#air conditioner
		for _client in clients:
			_client.send("airconditioner:open")
	else: 
		for _client in clients:
			_client.send("airconditioner:close")
	sleep(1)
	if (sensor_door == 0 and music_threshold == 1):
		for _client in clients:
			_client.send("music:open")
	elif(sensor_door == 0 and music_threshold == 0):
		for _client in clients:
			_client.send("music:close")
	sleep(1)	
	
	if (sensor_wind >= wind_threshold):
		for _client in clients:
			_client.send("window:close")#window
	else: 
		for _client in clients:
			_client.send("window:open")
			
	sleep(1)

        本段代码分析:

        在hum函数中,有sensor_和threshold两类值,前者是传感器获取的本地数据,后者是默认阈值(可以通过云端下发命令进行更改),再结合设计书要求对数据进行比较再由服务端向客户端发送命令即可。

3.2.3通信实现

        在各开发板上创建客户端,在SBC上创建服务端,在云端创建对应的设备并在SBC上配置好对应的接收方法,代码如下:

        SBC:


serverIP = "183.230.40.40"
serverPort = 1811
###
auth1 = '*556835#humidty#Lab1*' #产品 ID#设备鉴权信息#脚本名称
auth2 = '*556835#sunlight#Lab1*'
auth3 = '*556835#temperature#Lab1*'
auth4 = '*556835#wind#Lab1*'
auth5 = '*556835#door#Lab1*'
###
oneNetclient = RealTCPClient()
oneNetclient2 = RealTCPClient()
oneNetclient3 = RealTCPClient()
oneNetclient4 = RealTCPClient()
oneNetclient5 = RealTCPClient()
###
def on1oneNet_TCPConnectionChange(type):
	if type == 3:
		oneNetclient.send(auth1)
def on1oneNet_TCPConnectionChange2(type):	
	if type == 3:
		oneNetclient2.send(auth2)
def on1oneNet_TCPConnectionChange3(type):
	if type == 3:
		oneNetclient3.send(auth3)
def on1oneNet_TCPConnectionChange4(type):
	if type == 3:
		oneNetclient4.send(auth4)
def on1oneNet_TCPConnectionChange5(type):
	if type == 3:
		oneNetclient5.send(auth5)

####
def on1oneNet_TCPReceive(data):
	print("received threshold from oneNet: " + data);
	if ':' in data:
		value = data.split(':')
		if value[0]=="humidity":
			global humitidy_threshold
			humitidy_threshold = value[1]
		if value[0]=="sunlight":
			global sunlight_threshold
			sunlight_threshold = value[1]
		if value[0]=="temperature":
			global temperature_threshold
			temperature_threshold = value[1]
		if value[0]=="wind":
			global wind_threshold
			wind_threshold = value[1]
def main():
	server.listen(port)
	server.onNewClient(onTCPNewClient)
	
	#1
	oneNetclient.onConnectionChange(on1oneNet_TCPConnectionChange) #add 3 lines
	oneNetclient.onReceive(on1oneNet_TCPReceive)
	oneNetclient.connect(serverIP, serverPort)
	#2
	oneNetclient2.onConnectionChange(on1oneNet_TCPConnectionChange2) #add 3 lines
	oneNetclient2.onReceive(on1oneNet_TCPReceive)
	oneNetclient2.connect(serverIP, serverPort)
	#3
	oneNetclient3.onConnectionChange(on1oneNet_TCPConnectionChange3) #add 3 lines
	oneNetclient3.onReceive(on1oneNet_TCPReceive)
	oneNetclient3.connect(serverIP, serverPort)
	#4
	oneNetclient4.onConnectionChange(on1oneNet_TCPConnectionChange4) #add 3 lines
	oneNetclient4.onReceive(on1oneNet_TCPReceive)
	oneNetclient4.connect(serverIP, serverPort)
	#5
	oneNetclient5.onConnectionChange(on1oneNet_TCPConnectionChange5) #add 3 lines
	oneNetclient5.onReceive(on1oneNet_TCPReceive)
	oneNetclient5.connect(serverIP, serverPort)	
	sleep(1)
	while True:
		oneNetclient.send(sensor_humitidy)
		oneNetclient2.send(sensor_sunlight)
		oneNetclient3.send(sensor_temperature)
		oneNetclient4.send(sensor_wind)
		oneNetclient4.send(sensor_door)

MCU0:

serverIP = "192.16.1.250"
serverPort = 1234

###
client = TCPClient()

def onTCPConnectionChange(type):
	print("connection to " + client.remoteIP() + " changed to state " + str(type))

def onTCPReceive(data):
	print("received from " + client.remoteIP() + " with: " + data)
def main():
	
	client.connect(serverIP, serverPort)
	client.onConnectionChange(onTCPConnectionChange)
	client.onReceive(onTCPReceive)

	while True:
		client.send(gethumidity())
		sleep(1)
		client.send(getsunlight())
		sleep(1)
		client.send(gettemperature())

MCU1:

serverIP = "192.16.1.250"
serverPort = 1234
client = TCPClient()

def onTCPConnectionChange(type):
	print("connection to " + client.remoteIP() + " changed to state " + str(type))

def onTCPReceive(data):
	global cmd
	print("received from " + client.remoteIP() + " with " + data)
def main():
	client.onConnectionChange(onTCPConnectionChange)
	client.onReceive(onTCPReceive)
	client.connect(serverIP, serverPort)
	
	while True:
		client.send(door())

本段代码解析:

        在SBC与MCU上分别设置客户端和服务端,多看两遍代码就可以看出来固定格式。

        首先,关键的是设置好云端的设备然后再SBC上将产品和设备进行绑定,auth设置好,然后将接收函数与发送函数的对应关系找到,做到一收一发完美对接。

        值得注意的是,传参过程中你看到的数字有可能并不是数字,可能是字符,因此,要将传出的值格式化,转换成 int 类型或者 float 类型都可。

运行如下:

packet搭建智能家居系统毕业设计,PacketTracer,python练习,智能家居,python

packet搭建智能家居系统毕业设计,PacketTracer,python练习,智能家居,pythonpacket搭建智能家居系统毕业设计,PacketTracer,python练习,智能家居,python

 完整工程文件 pkt 链接如下:

智能家居系统(密码请关注公众号:玹之空间 -->资料获取)

 

 

 

到了这里,关于专题五 在Cisco Packet Tracer中设计基于 PT 和 OneNet 的智能家居系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Cisco Packet Tracer 计网课程设计

    包含:主机配置、Web服务器配置、FTP服务器配置、DHCP服务器配置、DNS服务器配置、交换机接口配置、交换机安全配置、交换机端口绑定、三层交换机配置、VLAN划分、路由器接口配置、静态路由配置、RIP路由、静态NAT、动态NAT、ACL访问控制、DHCP、DNS等知识点。 具体拓扑结构如

    2024年02月03日
    浏览(35)
  • VLAN基本配置(Cisco Packet Tracer )

    1.实验目的 (1)熟悉 VLAN的创建。 (2)把交换机接口划分到特定的VLAN。 (3)配置交换机的端口安全特性。 (4)配置管理VLAN。 2.实验拓扑 连接线:使用直通线连接 ​ 3.实验步骤 (1)在划分VLAN前﹐配置路由器Rl和R2的e0/0接口,从R1 上 ping 192.168.12.2进行测试。默认时,交换机的全部接口

    2024年02月05日
    浏览(44)
  • 在Cisco Packet Tracer中无线路由配置

    5.1实验设备与条件 无线局域网由一台无线路由器,PC、网线若干。 Cisco Packet Tracer模拟软件 实验拓扑图,如图5-1所示 图5-1 无线局域网拓扑图   实验计算机名称和IP规划如表5-1所示。 表5-1 PC-IP规划表 设备 IP 网关 PC1 192.168.40.100 192.168.40.1 PC2 192.168.40.102 192.168.40.1 5.2 无线路由配

    2024年02月09日
    浏览(43)
  • RIP协议路由配置(Cisco Packet Tracer)

    实验环境: windows10操作系统、思科模拟器、网络正常; 实验内容: 新建packettracer拓扑图; 设置PC机的网络配置信息; 配置路由器的接口IP; 为路由器的RIP添加地址; 为路由器添加静态路由。 测试PC机之间的互通性。 1、新建拓补图: 2、配置PC机的网络信息 3、配置路由信息

    2024年02月10日
    浏览(40)
  • Cisco packet tracer的多级DNS配置

    需要用到的服务器用红框框出来了,我这里是为了观察具体过程所以每一级都有第二个选项,可以适当删减。 2、3、4项纪录是跟邮件系统相关的,这里可以忽略不计; 添加NS项是为了声明权威服务器,通俗来讲就是告诉当前DNS目标网址(如cat.edu.cn)要交给下一级更小范围的

    2024年01月15日
    浏览(34)
  • Cisco Packet Tracer 实验——配置交换机

    您好,我的博客是不周阁 大三局域网实验,使用Cisco Packer Tracer模拟软件,本篇内容为路由器的配置 实验目的 辨识交换机、路由器;熟悉网络设备接口、配线架、连接器等。 掌握通过Console口连接交换机、路由器设备。 掌握微机Telnet到交换机、路由器的配置方法。 熟悉配置

    2024年02月09日
    浏览(57)
  • Cisco Packet Tracer如何搭建拓扑并连通(基础)

    将设备列表中需要的设备拖到拓扑区合适的位置,或单击设备图标,再在拓扑区合适位置再次单击即可放置设备 比如这样 到现在,各个设备之间还是相对独立的,我们需要将他们通过适当的方式连接起来,形成整体,我们可以先将三台电脑(终端设备)连接到交换机上 连线

    2023年04月12日
    浏览(31)
  • 【Cisco Packet Tracer】路由器 NAT实验

    NAT的实现方式有三种,即静态转换Static Nat、动态转换Dynamic Nat和端口多路复用OverLoad。 静态转换是指内部本地地址一对一转换成内部全局地址,相当内部本地的每一台PC都绑定了一个全局地址。一般用于在内网中对外提供服务的服务器。 [3] 动态转换是指将内部网络的私有I

    2024年02月04日
    浏览(48)
  • Cisco Packet Tracer配置命令——路由器篇

    路由器用于互联两个或多个网络,具有两项功能:为要转发的数据包选择最佳路径以及将数据包交换到正确的端口,概括为路由选择和分组转发。 路由选择 路由选择就是路由器根据目的IP地址的网络地址部分,通过路由选择算法确定一条从源节点到目的节点的最佳路径。 在

    2024年02月05日
    浏览(52)
  • 计算机网络实验---Cisco Packet Tracer 实验

    直接连接两台 PC 构建 LAN 用交换机构建 LAN 交换机接口地址列表 生成树协议(Spanning Tree Protocol) 路由器配置初步 静态路由 动态路由 RIP 动态路由 OSPF 基于端口的网络地址翻译 PAT 虚拟局域网 VLAN 虚拟局域网管理 VTP VLAN 间的通信 DHCP、DNS及Web服务器简单配置 WLAN初步配置 总结

    2024年02月04日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包