【PT+Arduino+OneNET基础教程7】PacketTracer上云OneNET详细教程(TCP透传)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

【PT+Arduino+OneNET基础教程7】PacketTracer上云OneNET详细教程

教程1.PacketTracer中MCU芯片编程入门教程
教程2.全部智能设备连接MCU使用方法
教程3.读卡器与红外探测器连接MCU使用方法
教程4.常用传感器使用方法
教程5.几种按钮与开关的使用方法
教程6.执行器使用方法
教程7.上云教程
教程8.多设备上云教程
教程9.Arduino+OneNET TCP透传上云教程发+收

1.进入OneNET主页进行注册登录
在这里插入图片描述
2.点击进入控制台
在这里插入图片描述
3.点击左上角切换至旧版
在这里插入图片描述
4.鼠标放在左上角→全部产品→多协议接入
在这里插入图片描述
5.点击TCP透传→添加产品
在这里插入图片描述
6.输入自己的产品名称、行业可以根据自己的需要选择全部选择其他也可以
联网方式wifi协议默认为tcp透传即可 其实只要协议正确其他的都问题不大
在这里插入图片描述
在这里插入图片描述

7.点击立即添加设备
在这里插入图片描述
8.把鼠标放在这个问号上点击下载脚本验证工具
在这里插入图片描述
9.得到一个压缩文件解压缩得到三个文件其中sample.lua是我们需要用到的
在这里插入图片描述
在这里插入图片描述
10.点击上传脚本→输入脚本名称脚本名称需要记住我们之后会经常用到不要取的太复杂→选择文件→选择sample.lua文件→双击或打开
在这里插入图片描述
11.点击上传
在这里插入图片描述
12.点击添加设备
在这里插入图片描述

13.设备名称是方便我们自己看的但是鉴权信息是我们以后需要用到的每个设备都有自己的鉴权信息这个就是每个设备的标识ID最好我们能够记住每个设备的鉴权信息记不住也没关系我们以后可以随时查看。设置完毕后点击下方添加
在这里插入图片描述
14.得到如下设备可以看到为离线状态
在这里插入图片描述
接下来就需要进入PacketTracer软件上云的讲解了

我们分为两部分 1.向onenet云平台发送数据 2.接收云平台的消息并控制本地设备

那么我们先进行第一部分的讲解
建立如下拓扑
在这里插入图片描述
1.点击芯片→编程→new→empty python→create
在这里插入图片描述
2.双击main.py进入编程
在这里插入图片描述
3.输入以下代码并运行

from gpio import *
from time import *
from realtcp import *

serverIP="dtu.heclouds.com"
serverPort=1811
auth='*513529#tem#jiaoben*'
client=RealTCPClient()


def onTCPConnectionChange(type):
	if int(type)==3:
		client.send(auth)

on=[1]
		
def onTCPReceive(data):
	if data=="Open" or data=="1":
		on[0]=1
	elif data=="Close" or data=="0":
		on[0]=0

client.onConnectionChange(onTCPConnectionChange)
client.onReceive(onTCPReceive)
client.connect(serverIP,serverPort)
sleep(1)	

while True:
	tem=analogRead(0)
	tem=round((tem-511)/5.12,2)
	print("tem:",tem)

	client.send(tem)
	sleep(1)

大家请注意请将红框中的三项分别修改为①自己的产品ID②自己的设备鉴权信息③自己的脚本名称
在这里插入图片描述

产品ID
在这里插入图片描述
设备鉴权信息

在这里插入图片描述
在这里插入图片描述
脚本名
在这里插入图片描述
4.修改完毕后运行可以看到设备在线
在这里插入图片描述
如果运行错误可以点击软件上方选项→参数选择→杂项→勾选这个
在这里插入图片描述

5.点击右侧数据流可以看到发来的数据
在这里插入图片描述
6.代码讲解

from gpio import *
from time import *
from realtcp import *
//上面三行为导入必要的库 第三行为上云需要的库

serverIP="dtu.heclouds.com"//onenet服务器
serverPort=1811//服务器端口号
auth='*自己的产品ID#自己的设备鉴权信息#自己的脚本名*'
client=RealTCPClient()//建立客户端


def onTCPConnectionChange(type)://与设备建立连接的函数不需要明白具体含义无所谓
	if int(type)==3:
		client.send(auth)

on=[1]//一会儿用来存储云平台发来的数据的数组
		
def onTCPReceive(data)://从云平台接收信息的函数 这个函数会自动循环运行不需要调用
	if data=="Open" or data=="1"://如果云平台发来Open或1则把数组修改为1
		on[0]=1
	elif data=="Close" or data=="0"://如果云平台发来Close或0则把数组修改为0
		on[0]=0
//以下三行为必要的
client.onConnectionChange(onTCPConnectionChange)
client.onReceive(onTCPReceive)
client.connect(serverIP,serverPort)
sleep(1)//sleep一秒可以有效防止由于同时建立连接的设备太多导致的设备不在线问题

while True:
	tem=analogRead(0)//读取温度
	tem=round((tem-511)/5.12,2)//修改温度为摄氏度
	print("tem:",tem)//输出温度

	client.send(tem)//向云平台发送温度数据
	sleep(1)

接下来详细讲解接收云平台信息的方法
我们先修改MCU内代码如下

from gpio import *
from time import *
from realtcp import *


serverIP="dtu.heclouds.com"
serverPort=1811
auth='*513529#tem#jiaoben*'
client=RealTCPClient()


def onTCPConnectionChange(type):
	if int(type)==3:
		client.send(auth)

on=[1]
		
def onTCPReceive(data):
	if data=="Open" or data=="1":
		on[0]=1
	elif data=="Close" or data=="0":
		on[0]=0

client.onConnectionChange(onTCPConnectionChange)
client.onReceive(onTCPReceive)
client.connect(serverIP,serverPort)
sleep(1)	

while True:
	tem=analogRead(0)
	tem=round((tem-511)/5.12,2)
	print("tem:",tem)
	
	if(on[0]==1):
		digitalWrite(1,1023)
	else:
		digitalWrite(1,0)
	client.send(tem)
	sleep(1)

变动就是多加了以下操作

if(on[0]==1):
		digitalWrite(1,1023)
	else:
		digitalWrite(1,0)

意思就是当发现on数组存储1时就打开灯存储为0时就关闭灯
而在上面的代码讲解中我们知道当从云平台接收到Open字符串或1时就会把on数组置为1当接收到Close或0时就会把数组置为0

那么如何使用云平台发送信息呢我们先来看第一种方法
1.点击下图此处下发命令

在这里插入图片描述
2.选择字符串输入Close或0注意大小写点击发送
在这里插入图片描述
3.发现LED灯熄灭
在这里插入图片描述
4.我们再发送1或者Open 发现小灯又打开了

5.我们详细讲解一下接收信息的代码的结构


on=[1]
		
def onTCPReceive(data):
	if data=="Open" or data=="1":
		on[0]=1
	elif data=="Close" or data=="0":
		on[0]=0


while True:

	if(on[0]==1):
		digitalWrite(1,1023)
	else:
		digitalWrite(1,0)

	sleep(1)

以上就是接收信息用到的代码主要涉及onTCPReceive这个函数参数data就是云平台发送来的信息我们在这里选择使用全局数组on来辨别云平台发送来的信息。接收函数不需要我们去调用程序会自动调用然后循环。然后在while循环中会不断根据on数组控制小灯。代码结构很简单相信大家都能够看懂。

那么接下来我们开始讲解应用的设计因为onenet的更新现在的应用设计与之前有些不同我们就在这里开始全新的讲解。
通过应用我们可以轻松美观便捷地查看信息并能够通过命令框与按钮等发送信息而不需要去下发命令页面。

当然在这里需要先告诉大家想要舒服地使用应用必须要购买企业版会员价格不贵大家如果又比较强烈的学习欲望或者是竞赛需求可以购买企业版可以满足大多数人的需要当然大家如果需要专业的页面则需要购买专业版本价格也更高。

1.点击左侧应用管理
在这里插入图片描述
2.点击此处应用编辑器
在这里插入图片描述
3.点击右侧新建
在这里插入图片描述

4.选择空白模板 输入基本信息点击确认
在这里插入图片描述
5.点击此处进入编辑
在这里插入图片描述
6.可以在右侧修改页面名字、手机端或电脑端(就是页面比例的区别最终我们都是通过浏览器访问应用)、默认页面(一个项目可以有多个页面使用应用时可以选择下面会给大家介绍到)、背景颜色等信息

在这里插入图片描述

7.在常规图标一栏可以找到仪表盘这是我们最常用的仪表单击仪表盘可以放置一个
在这里插入图片描述
8.点击仪表盘点击数据取消勾选数据过滤器
过滤器应该是当我们使用比如arduino串口通信时可能会发送错误的信息过来(比如指令信息)我们可以通过过滤器过滤掉但软件里上云通信很稳定不需要这个
在这里插入图片描述
在这里插入图片描述

9.点击管理数据源
在这里插入图片描述
10.新增数据源
在这里插入图片描述
11.数据类型选择onenet
在这里插入图片描述
12.输入名称、ID、KEY后就可以选择设备与数据流了名称不能使用中文大家可以用拼音或者英语总之方便自己回忆就可以了。key就是自己的accesskey在如图所示获取。
在这里插入图片描述
这里查看自己的产品ID
在这里插入图片描述

在右侧通过验证码获取accesskey
在这里插入图片描述

在这里插入图片描述
13.创建成功之后直接关闭这个界面
在这里插入图片描述
14.选择刚刚建好的数据流
在这里插入图片描述
15.发现已经显示温度数据了但是还带着一个百分号
在这里插入图片描述
16.在样式→表盘数值→格式中修改单位 其余的包括阈值范围字体大小颜色等等大家应该都可以自行掌握十分简单。
在这里插入图片描述
17.接下来我们添加一个段落
在这里插入图片描述
18.同样在数据里取消勾选过滤器
在这里插入图片描述
19.在样式中可以修改内容、字体等信息下方缩进可以改为0当字体过大请注意字体大小不要大过行高否则两行时会出现字体重叠的状况可以把行高修改大一些就可以了
可以拖动框框角落边缘改变文本框大小
在这里插入图片描述
20.我们也可以使用段落显示数据流信息比如温度信息我们再添加一个段落并取消勾选过滤器→选择数据流
在这里插入图片描述
21.可以看到段落显示当前温度信息
在这里插入图片描述
22.调整以下字体和刚刚的段落调整一下位置如图这就是两种显示数据流的方法
在这里插入图片描述
23.接下来我们添加一个文本命令框
在这里插入图片描述
24.同样的操作取消过滤器选择数据流
在这里插入图片描述
25.在这里可以更改命令框名字以及默认的命令
在这里插入图片描述

26.修改完毕后点击右上方保存并预览
在这里插入图片描述
27.输入Open点击发送 开灯
在这里插入图片描述
在这里插入图片描述
28.输入Close或0点击发送 关灯
在这里插入图片描述
在这里插入图片描述
29.点击上方小箭头
在这里插入图片描述
30.可以进行一些基本操作
在这里插入图片描述31.点击继续编辑 添加一个按钮
在这里插入图片描述
32.同样取消过滤器 并选择数据流
在这里插入图片描述
在这里插入图片描述

33.为了方便我们直接把按钮2删掉按钮名颜色什么的根据需要来就可以了按钮值我们修改为0关键是命令内容这个就是我们点一下按钮就会发送什么信息相当于是固定的文本命令框
在这里插入图片描述
在这里插入图片描述

34.然后我们ctrl+c ctrl+v复制粘贴一个新的按钮 修改样式如右
在这里插入图片描述

35.拖动这里修改大小
在这里插入图片描述
36.点击上方保存预览→点开启按钮
在这里插入图片描述
小灯打开
在这里插入图片描述
点关闭灯就关闭
在这里插入图片描述
在这里插入图片描述

至此我们已经成功完成了一个MCU控制一个设备上云的方法
但是我们一个MCU不可能只有一个设备上云所以我们将通过一种巧妙的简单粗暴的方式避开数据流模板等复杂东西进行多设备上云由于篇幅过长我们在下一篇文章进行讲解。

点击此处进入下一篇

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6