20422| 0
|
[M10教程] 【行空板图形化Python入门教程】第11课:IoT数据助手 |
第11课 IoT数据助手 你还记得学校体测时,体育老师是怎样记录体测数据的吗?老师一般有一个体测项目的名册表,每次体测时,老师会按照名单点名分组进行测试,测试完成后将学生体测数据填写到表格中。这种传统记录数据的方式,非常不利于老师开展工作。 物联网是一个非常强大的数据存储服务器,如果测试时,能够使用物联网来记录体测数据,体测完成后,老师只需要登录物联网平台就可以查看数据,这样就可以更好地帮助老师记录数据。接下来,我们就制作一款这样的IoT数据助手,来帮助老师吧! 任务目标 将检测到的肺活量数据,按照学号加肺活量数据的形式发送到SIoT物联网平台。 知识点 1. 了解物联网的概念 2. 认识SIoT物联网平台 3. 了解MQTT协议 4. 了解字符串 5. 掌握行空板物联网发送数据与接收数据的方法 材料清单 1. 硬件清单 行空板x1 Type-C&Micro二合一USB线x1 2. 软件使用 Mind+编程软件x1 下载地址:https://www.mindplus.cc 动手实践 上一节课程中,学习了如何将检测到的肺活量数据存放在列表中。虽然列表里可以存储数据,但是行空板一旦掉电,列表里的数据也不会被保存。如何才能有效地存储数据呢?接下来,从以下三个任务来实现如何将数据存储到SIoT物联网平台。 任务一:行空板向SIoT平台发送数据 学习使用行空板MQTT指令,在行空板上开启SIoT服务器,并向SIoT平台发送消息,登录SIoT平台后,学会查看对应主题中的数据。 任务二:行空板接收SIoT平台的数据 行空板接收SIoT平台的数据,并将接收到的数据在Mind+终端中打印出来。 任务三:行空板向SIoT平台发送肺活量数据 将检测到的实时肺活量数据,发送到SIoT物联网平台。 任务一:行空板向SIoT平台发送数据 1. 硬件搭建 使用USB连接线将行空板连接到计算机。 2. 软件准备 打开Mind+,按照下面图示完成软件准备过程。 3. 编写程序 这个任务,主要是学习行空板如何向SIoT物联网平台发送一条“hello”的文本消息,在发送消息之前需要做哪些准备。接下来,就一起来学习一下行空板开启和使用物联网需要哪些步骤吧! 注意:关于“物联网及物联网SIoT平台”的相关介绍见知识园地。 (1) 检查SIoT是否开启 长按行空板的“Home”键进入菜单页,点击“应用开关”,检查SIoT服务是否开启,如果显示“已禁用”,点击SIoT选项,切换SIoT状态为“已启用”。 具体操作如图所示: (2) MQTT-py库 要向SIoT平台发送数据,要有发送相关指令才能实现。但是现在行空板的指令区中没有这样的指令,该怎么办呢? 点击“拓展”,在官方库中找到“MQTT-py”并点击,完成添加。 (3) MQTT初始化 指令添加完成后,要使用MQTT构建物联网,首先需要使用指令 初始化MQTT,点击“设置”图标,将“SIoT服务器”的内容修改为行空板连接电脑的默认IP地址“10.1.2.3”。 初始化设置完成后,MQTT发起连接,使用指令MQTT发起连接;连接成功后,需要保持连接,使用指令 MQTT保持连接永久。 要向SIoT平台发送数据,就需要先订阅要发送到SIoT平台的主题,使用指令 MQTT订阅 。需要特别说明的是,MQTT订阅指令中填写的主题,并且固定的格式为“项目ID/设备号”。 (4) 行空板向SIoT物联网平台发送数据 完成了“MQTT的初始化——发起连接——保持连接——订阅”这四个步骤后,接下来,就可以向SIoT平台发送数据了,使用 MQTT发布 指令。 每隔5秒,向SIoT平台发送一条“hello”的文本数据。 4. 程序运行 运行程序,程序运行成功后,Mind+终端界面上打印“连接结果:连接成功”。 程序设置每隔5秒给SIoT平台发送一条“hello”的文本数据。但是当数据发送成功后,行空板屏幕上没有任何反馈,数据又应该怎么查看呢? 查看数据需要使用网页进入行空板服务页面,双击打开浏览器在地址栏输入“10.1.2.3”。 进入行空板服务页面后,点击“应用开关”,找到SIoT并点击下方的“打开页面”,进入SIoT服务页。 输入对应的账号和密码,点击登录。 账号:siot 密码:dfrobot 登录成功后,点击“设备列表”,找到订阅的主题。 点击“查看消息”,就可以看到对应的数据了。 5. 试一试 要实现按下A按键后,向物联网SIoT平台发送一条内容为“hello”的消息,程序应该怎么修改呢? 提示:使用 当按键A被按下 指令。 任务二:行空板接收SIoT平台的数据 1. 编写程序 上一个任务学习了如何向SIoT平台发送数据,接下来,一起学习行空板如何接收SIoT平台数据的方法,并且将该数据在Mind+终端中打印出来。 (1) SIoT平台向行空板发送消息 SIoT平台查看消息界面上,有一个发送消息的消息内容框,在消息内容框里输入“你好,行空板!”,按下发送按钮,完成消息发送。消息发送成功后,Topic里面会多一条“你好,行空板!”的消息。 (2) 行空板接收SIoT平台发送的数据 行空板要接收来自SIoT平台发送的消息数据,需要使用指令 当MQTT从MQTT主题接收到MQTT消息。 接收数据,首先需要判断数据是否是来自“肺活量/1班”这个主题。需要注意的是,MQTT消息的数据类型为字符串型,在进行MQTT消息判断时,需要将判断数据“肺活量/1班”放入英文状态下的引号内。 MQTT主题判断成功后,将接收到的 MQTT消息 在Mind+终端中打印出来。 完整程序如下: 2. 程序运行 点击运行,程序运行成功后,Mind+终端界面上打印“连接结果:连接成功”的消息。然后在SIoT平台的消息内容框中输入“你好,行空板!”,点击发送按钮,Mind+中终端打印接收到的消息数据“你好,行空板!”。 3. 试一试 行空板能够接收到SIoT平台发送的数据,并且可以将接收到的数据在Mind+终端打印出来。接下来,大家试一下将接收到的数据显示在行空板屏幕上。行空板屏幕显示效果如下图: 任务三:行空板向SIoT平台发送肺活量数据 1. 编写程序 第十一课的任务一中,完成了对肺活量数据的检测。接下来,就在该程序的基础上,添加一个选择学号功能和发送数据功能,通过“+/-”按钮来进行学号选择,按下A键开始检测肺活量,进度条反应肺活量的大小。按下B按键,将数据发送到SIoT平台的“肺活量/1班”的主题中。行空板界面效果图如下: (1) 选择学号功能 选择学号功能,当按下“+”按钮,学号加一;按下“-”按钮,学号减一。这个功能中用到的 文字对象 、 按钮对象 以及 变量 ,都是学习过的知识,这里就不做详细地讲解了。 (2) MQTT准备工作 实现行空板与SIoT物联网平台联网的第一步,先完成MQTT的准备工作。 (3) 发送肺活量数据 按下B按键,将检测到的肺活量数据发送到SIoT物联网平台的“肺活量/1班”主题中。判断B按键是否按下,使用指令 当按键B被按下 ;向SIoT平台发送数据,使用 MQTT发布 指令。 增加一个数据发送成功的反馈,数据发送成功后,蜂鸣器会响起,并清除检测到的数据和进度条。 (4) 发送带学号的肺活量数据 上面程序中使用 MQTT发布 指令,发布的数据是肺活量数据,没有学号,即使SIoT平台接收到了数据,也不知道该数据是哪位同学的。所以在发送数据时,最好带上学号标识,将学号和肺活量数据合并后一起发送到SIoT平台。合并字符使用文本指令区的 合并字符 指令。 注意:关于“字符串”的相关介绍见知识园地。 修改 MQTT发布 指令中的内容为合并后的学号和肺活量数据。 完整程序如下: 2. 程序运行 点击运行,程序运行成功后,通过行空板屏幕上的“+/-”按钮,选择对应的学号。然后按下A按键,开始测量肺活量,测量结束后,按下B按键,将带学号的肺活量数据发送到SIoT平台。 3. 试一试 为了避免重复多次的测量,当一个班的学生都测试完成后,行空板就不能再向SIoT平台发送肺活量数据了。接下来我们以一个班十个学生为例,当这十个学生都测试完成后,就断开MQTT连接,SIoT平台不再接收行空板发送的消息。 提示:十个学生测试完成后,使用指令 MQTT断开连接。 知识园地 1. 什么是物联网 物联网(Internet of Things,简称IoT)是借助互联网、传统电信网等,让具有一定功能的设备实现互联互通的网络。比如在智能家居场景下,通过房间里的无线网,将灯、风扇、摄像头等设备与手机相连,这就形成了万物互联。 物联网的原理是什么呢? 一个完整的物联网系统包含三个部分,分别是服务器、智能终端、移动终端。以智能家居场景为例,我们可以通过手机控制和查看灯、风扇、摄像头这些设备的状态,手机就是物联网系统中的移动终端;而那些可以直接连接网络的灯、摄像头等智能家电就是物联网系统中的智能终端;另外,在物联网系统中,移动终端和智能终端不能直接传输数据,它们之间还需要一个枢纽,用来存储和收发数据,这就是服务器。 行空板也可以构建这种有智能终端、移动终端、服务器的智能家居系统,如果我们手上只有一块行空板时,可以让这块行空板做智能终端,连接灯、风扇、摄像头这些设备,使用行空板自带的SIoT平台做物联网服务器端,我们的手机或者电脑做移动终端。 需要说明的是,本节课项目中的行空板,即是智能终端又是服务器,而电脑则对应移动终端。其中电脑是使用USB线这种有线连接的方式去查看服务器数据的。 其实,移动终端访问服务器数据还可以使用无线连接方式,这种方式是通过行空板自带的WIFI模块功能实现,详细操作,你可以进入行空板官网“物联网项目”进行查看,地址如下: https://wiki.unihiker.com/iot_project 2. 物联网SIoT平台 物联网中的服务器是通过物联网平台(又称IoT平台)实现的,常用的IoT平台有Easy IoT、SIoT。要实现物联网中的设备通信,通常采用HTTP协议或者MQTT协议。这节课使用到的是物联网SIoT平台,行空板与SIoT平台之间的通信采用MQTT协议,接下来,一起来了解一下什么是SIoT平台,什么是MQTT协议吧! SIoT是行空板自带的物联网服务器平台,你可以通过有线或无线的形式快速开启本地物联网服务器。SIoT重点关注物联网数据的收集和导出,是采集科学数据的最好选择之一。 3. MQTT协议 什么是MQTT协议? MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一个基于客户端-服务器的消息发布/订阅传输协议。 MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。 MQTT协议在行空板与SIoT平台中起到一个什么作用呢? 我们可以将MQTT协议理解为行空板与SIoT平台通信的桥梁,在行空板和物联网SIoT平台通信过程中,MQTT协议有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是设备端(行空板),消息代理是服务器,消息发布者可以同时是订阅者。 换种简单的理解方式,我们可以将这个消息代理理解为一个群,如果你想在这个群里发消息,首先你得进入这个群,才能发送消息,而进群的方式就是MQTT协议。进群后,发消息这个人就是发布者,群就是服务器,其他群成员就是订阅者,你发的消息自己也能看到,因此发布者也可以是订阅者。 4.什么是字符串 什么是字符串?字符串是一种数据类型,Python中有六种标准的数据类型,分别是字符串(文本)、数字、列表、元组、集合、字典。 大家注意一下,上面的字符串指令里都有一对引号。我们可以将字符串理解为放在引号里面的一系列字符,通俗的理解,就是由标点符号、字母、数字、文字组成的单词或句子就是字符串。其中组成字符串的标点符号、字母、数字、文字就是字符,字符串就是字符的集合。 现在你知道为什么任务二中,判断 MQTT主题 时,需要将“肺活量/1班”放入引号内了吗? 因为 MQTT主题 的数据类型是字符串,如果不将“肺活量/1班”放入引号内,两个数据就不能作比较,因为数据类型不一样。 如果觉得不好理解,简单地举个例子,现在有两组数据,一组是23,另一组是“23”。第一组数据的数据类型是数字型,第二组数据类型是字符型,两组数据的类型不一样,不能做比较。只有当两组数据类型一样时才可以作比较,所以“肺活量/1班”需要放入引号内。 为什么要用 合并字符 指令呢? 举个例,现在有“你”、“好”“,”、“行”、“空”、“板”、“!”这七个字符。如果不组合,那就是单个的字符,而 合并字符 指令的作用就是将这些字符组成一个完整的句子“你好,行空板!”。 5. 指令学习 该指令用于初始化设置MQTT,使用时需要点击设置图标,选择MQTT平台,写明服务器IP、服务器端口号、用户名以及密码。 该指令用于发起并建立MQTT连接。 该指令用于一直保持MQTT连接。 该指令用于订阅MQTT服务器的设备主题。主题名(topic)的格式为“项目ID/设备号”。 该指令用于向MQTT服务器的对应主题发送数据。 该指令用于接收SIoT物联网平台的数据,指令中包含MQTT主题和MQTT消息。 该指令用于合并两个及以上的字符。 挑战自我 学号和肺活量数据合并后,学号确实发送成功了。如果学号两位数,学号和肺活量数据合并后,很难分清数据。如果在学号与肺活量数据中间添加冒号(:)将学号和肺活量数据隔开,发送的数据形式为:学号:肺活量数据,这样就可以分清数据了。接下来,大家一起来试一下吧! 提示:添加冒号使用 合并字符 指令,在合并字符指令中嵌套合并字符指令。 SIoT接收到的消息如下图: 附件下载 第十一课资料.rar |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed