sIoT在局域网上实现mqtt消息的通讯

一、实验原理

SIoT是一个为中小学STEM教育定制的跨平台的开源MQTT服务器程序,S指科学(Science)、简单(Simple)的意思。SIoT重点关注物联网数据的收集和导出,是采集科学数据的最好选择之一。
本实验通过SIoT在局域网上实现mqtt消息的通讯。(局域网通过连接同一热点形成)

二、实验过程

1、先下载SIoT,点击如下程序,使它在后台运行

在这里插入图片描述
在这里插入图片描述

2、再打开config.json文件,修改配置如下:

在这里插入图片描述
在这里插入图片描述

3、在浏览器上打开网站http://127.0.0.1:8888/html/login.html,端口号可自行配置,并登陆账号
在这里插入图片描述

3、点击“发送消息”,添加两个项目ID
在这里插入图片描述

在这里插入图片描述

4、点击“设备列表”,可查看到两个ID
在这里插入图片描述

5、在Mind+中,在网络服务中添加MQTT和WIFI,
在这里插入图片描述
并添加代码块:

在这里插入图片描述
在这里插入图片描述

注:合作者需要连接同一热点,且服务器地址需相同

6、代码如下:

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


// 主程序开始
void setup() {
	mPython.begin();
	myIot.setMqttCallback(msgHandles);
	myIot.wifiConnect("dyj", "12345678");
	while (!myIot.wifiStatus()) {yield();}
	display.setCursorLine(1);
	display.printLine("WIFI连接成功");
	myIot.init("192.168.43.234","2018764227","","dyj", topics, 1883);
	myIot.connect();
	while (!myIot.connected()) {yield();}
	display.setCursorLine(2);
	display.printLine("MQTT连接成功");
}
void loop() {
	if ((touchPadP.isTouched())) {
		myIot.publish(topic_1, "2018764227邓咏健");
	}
}


// 事件回调函数
void obloqMqttEventT0(String& message) {
	display.setCursorLine(3);
	display.printLine(message);
}

三、实验结果

1.本人掌控版如下显示:
在这里插入图片描述
2.小伙伴掌控版如下显示:
在这里插入图片描述

四、实验中遇到的问题

1、一开始与小伙伴都以为登陆同一账号时,只要一方发出项目ID或者删除项目ID,另一方也能及时收到,事实是不会同步的;

2、MQTT一开始连接不上,原因是MQTT初始化参数时,服务器地址未填写与小伙伴一致,导致连接不上,因为用的是小伙伴的热点;

3、WIFI和MQTT连接上后,一直接收不到小伙伴发送的消息,原因是将WIFI的连接与MQTT的连接写在循环块里,导致一直进行初始化,使得无法进行下一步操作,需要进行初始化的操作不能写在循环块中。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值