实验三 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文件的如下图所示。
(2)根据局域网所在的ip地址以及config.json文件中的端口号,登录http://192.168.31.164:8084网页实现SIoT的配置。
新建项目ID和设备名称,即topic0,如下图所示。
(3)在Mind+上新建项目,项目中程序的截图如下所示。
其中,由于SIoT 1.3压缩包中config.json的参数如下图所示:
故在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。
(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连接成功:
(2)按钮A被按下,屏幕的第一行显示“消息发送成功”,第二行显示“接收到的消息:”,第三行显示接收到的MQTT消息。
(3)按钮A被按下,MQTT发送消息到服务器,服务器设备成功接收到MQTT消息,接收消息列表如下:
【实验二】通过AppInventor结合sIoT实现手机app控制掌控板的灯和显示内容。
2、核心代码截图:
(1)进入http://app.gzjkw.net/网页,导入siotapp.aia文件。
(2)打包apk并显示二维码
(3)用手机扫描二维码并安装该软件。
(4)项目程序
其中,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连接成功:
(2)打开安装好的手机app, 编辑好手机app中的相关信息,如下图所示。
(3)点击发送,掌控板的变化如下图所示。
说明手机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。
标签:app,sIoT,MQTT,myIot,实验,display 来源: https://blog.csdn.net/weixin_43597729/article/details/116240849