太极创客的MQTT基础篇博文目录链接:零基础入门学用物联网 – MQTT基础篇 – 目录
备注:建议先学习一下MQTT的基础知识后再学习下面章节部分的内容。
MQTT服务器的搭建步骤如下:
docker run -d --name emqx -p 18084:1883 -p 18085:8081 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx
备注信息:
–name emqx:容器名为emqx,可自定义
-p 18083:18083:端口映射,web端后台管理页端口,前面一个18083是本机端口,可自定义
-p 18084:1883:端口映射,MQTT TCP端口,前面一个18082是自定义的本机的端口,可自定义
-p 8883:8883:端口映射,MQTT TCP TLS/SSL 端口,前面一个8883可自定义
-p 8083:8083:端口映射,HTTP and WebSocket 端口,前面一个8083可自定义
-p 8084:8084:端口映射,HTTPS and WSS 端口,前面一个8084可自定义
来源于:Docker搭建MQTT服务器
下图是放行18083端口的截图,其他端口号按到此步骤放行即可:
默认的账号:admin 密码:public,输入账号和密码进行登入,就会进入如下MQ的管理端:
设置中文的步骤如下:
功能非常的简单就是温度传感器发布了一个主题,该主题会经过MQTT服务器转发给所有订阅该主题的客户端。这里我采用MQTTX软件来模拟温度传感器发布主题,MQTTX的软件与使用可以参照这篇博文:MQTT 图形化客户端-MQTTX安装使用教程。
创建一个温度传感器的客户端连接:
利用MQTTX软件发布smartagriculture/data/temperature主题:
MQTT服务器中可以创建客户端来获取该主题的数据:
接下来我们通过SpringBoot项目来接收客户端发送的温度数据,这里不再自己创建项目了,我在网上找到一个MQTT的Demo,clone一下该项目即可,项目地址https://github.com/CallMeAdong/mqttDemo。
clone完毕后,用IDEA打开此项目,项目框架如下图所示:
如果在项目文件中出现下图提示:
在pom.xml中添加如下依赖即可解决:
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-configuration-processorartifactId>
<optional>trueoptional>
dependency>
接下来修改application-local.properties文件中的MQTT配置信息:
在MqttSubClient类中修改订阅主题为smartagriculture/#
运行项目,并使用MQTTX软件发布主题,项目控制台会收到如下图所示的内容:
MQTTX软件模拟的温度传感器怎么来接受另一个客户端发送来的数据呢,其实很简单只需要温度传感器订阅另一个客户端发起的主题即可。下图的控制类中提供了二个主题接口,访问其中一个接口就会发起一个test.queue的主题。
使用MQTTX软件订阅该主题,截图如下:
访问发送主题的接口 http://localhost:8099/mqttDemo/testPublishMessage1,发起主题。
MQTTX软件就会收到项目发来的主题消息,如下图所示。