【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不可能只有一个设备上云,所以我们将通过一种巧妙的简单粗暴的方式避开数据流模板等复杂东西进行多设备上云,由于篇幅过长,我们在下一篇文章进行讲解。文章来源:https://www.toymoban.com/news/detail-778776.html
点击此处进入下一篇文章来源地址https://www.toymoban.com/news/detail-778776.html
到了这里,关于【PT+Arduino+OneNET基础教程7】PacketTracer上云OneNET详细教程(TCP透传)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!