实验三 sIoT及安卓app实现mqtt实验

实验三 sIoT及安卓app实现mqtt实验

一、实验目的及要求

【实验一】实现sIoT配置并实现sIoT上mqtt消息的通讯。
【实验二】通过AppInventor结合sIoT实现手机app控制掌控板的灯和显示内容。

二、实验原理与内容

sIoT可以在局域网上实现mqtt消息的通讯。借助sIoT可以通过手机app实现局域网内的设备操控。

三、实验软硬件环境

硬件:掌控板
软件:Mind+

四、实验过程(实验步骤、记录、数据、分析)

1.源码仓库地址:https://github.com/WXJ-ux/-sIoT-app-mqtt-

【实验一】实现sIoT配置并实现sIoT上mqtt消息的通讯。
2.核心代码截图:
(1)用管理员身份打开cmd,输入ipconfig,查看到电脑所连接的无线局域网适配器 WLAN的IPv4 地址为192.168.31.164;在cmd中输入netstat -abon,发现config.json文件中所用的8080端口处于监听状态,于是需改用另一端口号,此时更改config.json文件中的端口号为8084,更改后的config.json文件的如下图所示。
实验三     sIoT及安卓app实现mqtt实验
(2)根据局域网所在的ip地址以及config.json文件中的端口号,登录http://192.168.31.164:8084网页实现SIoT的配置。
实验三     sIoT及安卓app实现mqtt实验

新建项目ID和设备名称,即topic0,如下图所示。
实验三     sIoT及安卓app实现mqtt实验

(3)在Mind+上新建项目,项目中程序的截图如下所示。
实验三     sIoT及安卓app实现mqtt实验

实验三     sIoT及安卓app实现mqtt实验
其中,由于SIoT 1.3压缩包中config.json的参数如下图所示:
实验三     sIoT及安卓app实现mqtt实验
故在MQTT初始化参数中,物联网平台是SIOT,服务器地址是电脑所连接的无线局域网适配器 WLAN的IPv4 地址192.168.31.164,账号和密码是SIoT 1.3压缩包中config.json中的“siot”和“dfrobot”。Topic_0为在http://192.168.31.164:8084网页中新建的设备,即2018324104/Amy。
实验三     sIoT及安卓app实现mqtt实验

(4)核心代码:

/*!
 * MindPlus
 * mpython
 *
 */
#include <MPython.h>
#include <DFRobot_Iot.h>
// 函数声明
void obloqMqttEventT0(String& message);
// 静态常量
const String topics[5] = {"XX/XX","","","",""};
const MsgHandleCb msgHandles[5] = {obloqMqttEventT0,NULL,NULL,NULL,NULL};
// 创建对象
DFRobot_Iot myIot;


// 主程序开始
void setup() {
	mPython.begin();
	myIot.setMqttCallback(msgHandles);
	myIot.wifiConnect("602iot", "18wulian");
	while (!myIot.wifiStatus()) {yield();}
	display.setCursorLine(1);
	display.printLine("wifi连接成功");
	myIot.init("192.168.31.164","siot","","dfrobot", topics, 1883);
	myIot.connect();
	while (!myIot.connected()) {yield();}
	display.setCursorLine(2);
	display.printLine("MQTT连接成功");
}
void loop() {
	if ((buttonA.isPressed())) {
		myIot.publish(topic_0, "XX  XX");
		display.setCursorLine(1);
		display.printLine("消息发送成功");
	}
}


// 事件回调函数
void obloqMqttEventT0(String& message) {
	rgb.write(-1, 0xFF0000);
	display.setCursorLine(2);
	display.printLine("接收到的消息:");
	display.setCursorLine(3);
	display.printLine(message);
}

注:代码中的XX XX分别为ID号和设备名称。

3.实验效果图:
(1)WiFi连接成功、MQTT连接成功:
实验三     sIoT及安卓app实现mqtt实验
(2)按钮A被按下,屏幕的第一行显示“消息发送成功”,第二行显示“接收到的消息:”,第三行显示接收到的MQTT消息。
实验三     sIoT及安卓app实现mqtt实验

(3)按钮A被按下,MQTT发送消息到服务器,服务器设备成功接收到MQTT消息,接收消息列表如下:
实验三     sIoT及安卓app实现mqtt实验
【实验二】通过AppInventor结合sIoT实现手机app控制掌控板的灯和显示内容。
2、核心代码截图:
(1)进入http://app.gzjkw.net/网页,导入siotapp.aia文件。
实验三     sIoT及安卓app实现mqtt实验
(2)打包apk并显示二维码
实验三     sIoT及安卓app实现mqtt实验
(3)用手机扫描二维码并安装该软件。
(4)项目程序
实验三     sIoT及安卓app实现mqtt实验
其中,MQTT初始化参数的设置和上面的实验一一样,如下图所示。
实验三     sIoT及安卓app实现mqtt实验

(5)代码

/*!
 * MindPlus
 * mpython
 *
 */
#include <MPython.h>
#include <DFRobot_Iot.h>
// 函数声明
void obloqMqttEventT0(String& message);
// 静态常量
const String topics[5] = {"XX/XX","","","",""};
const MsgHandleCb msgHandles[5] = {obloqMqttEventT0,NULL,NULL,NULL,NULL};
// 创建对象
DFRobot_Iot myIot;


// 主程序开始
void setup() {
	mPython.begin();
	myIot.setMqttCallback(msgHandles);
	myIot.wifiConnect("602iot", "18wulian");
	while (!myIot.wifiStatus()) {yield();}
	display.setCursorLine(1);
	display.printLine("wifi连接成功");
	myIot.init("192.168.31.164","siot","","dfrobot", topics, 1883);
	myIot.connect();
	while (!myIot.connected()) {yield();}
	display.setCursorLine(2);
	display.printLine("MQTT连接成功");
}
void loop() {

}

// 事件回调函数
void obloqMqttEventT0(String& message) {
	rgb.write(-1, 0xFF0000);
	display.setCursorLine(2);
	display.printLine("接收到的消息:");
	display.setCursorLine(3);
	display.printLine(message);
}

注:代码中的XX XX分别为ID号和设备名称。

3、实验效果图:
(1)WiFi连接成功、MQTT连接成功:
实验三     sIoT及安卓app实现mqtt实验
(2)打开安装好的手机app, 编辑好手机app中的相关信息,如下图所示。
实验三     sIoT及安卓app实现mqtt实验
(3)点击发送,掌控板的变化如下图所示。
实验三     sIoT及安卓app实现mqtt实验
说明手机app能够掌控板的灯和显示内容,实验成功。

五、测试/调试及实验结果分析

1.最初由于不清楚实验原理,以为不需要新建设备topic_0,因此导致发送出去的MQTT消息后,在SIot配置的相应网页上没有接收到MQTT消息。
2.在http://192.168.31.164:8080网页中新建设备,但是访问网页失败,后来在用管理员身份打开cmd, 在cmd中输入netstat -abon,发现8080端口处于监听状态,所以需要换用另一个端口,这里我换用了8084端口,此时需要修改SIoT 1.3压缩包中的config.json文件的 "WebServerAdrr"为 “WebServerAdrr”: “0.0.0.0:8084”,这样设置后才可以在网页http://192.168.31.164:8084中新建设备,注意,此时网页的地址后面的端口号要改为8084。

上一篇:MQTT测试工具


下一篇:MQTT