小白入门搭建MQTT服务器,使用安信可AT透传MQTT固件,轻松对接服务器。(附带demo)

一、前言

    本着让大家学习的AT固件如何连接自有的MQTT服务器的精神,我们分享了一些经验。物联网通讯,第一时间就是想到服务器搭建,而最先想到的是开源的、免费的MQTT服务器搭建,给大家分享下 EMQ 服务器商用时候的心得,之后会介绍如何使用AT指令连接MQTT服务器,如何订阅发布主题。

二、MQTT服务器搭建

2.1 环境安装

  • 1:选择系统和版本
https://www.emqx.io/downloads#broker
  • 2:我这里选择3.23版本 centos7,得到下载链接:
https://packages.emqx.io/emqx-ce/v3.2.3/emqx-centos7-v3.2.3.zip
  • 3:然后下载压缩包:
wget https://packages.emqx.io/emqx-ce/v3.2.3/emqx-centos7-v3.2.3.zip

在这里插入图片描述

  • 4:安装或者更新 解压包zip工具: yum install unzip -y
    在这里插入图片描述
  • 5.解压:unzip emqx-centos7-v3.2.3.zip
  • 6.运行:./emqx/bin/emqx start
    在这里插入图片描述
  • 7.查看运行状态:./emqx/bin/emqx_ctl status
    在这里插入图片描述

2.2 禁止客户端任意连接

    软件安装之后,我们的服务器还要开放以下端口:

端口号 用途
18083 mqtt服务器面板
1883 tcp mqtt连接
8083 websocket连接
8084 websocket ssl连接
8080 rest api http使用

    EMQ软件不配置任何设置,都是可以匿名登录的,也即是可有可无用户名和密码鉴权登录连接,这点是非常危险的!下面教大家如何新建用户名和密码鉴权!

2.2.1 关闭匿名登录

    首先,关闭匿名登录,编辑配置文件 emqx.conf ,修改为 allow_anonymous改为 false,即修改后是 allow_anonymous = false

vim emqx/etc/emqx.conf

    操作演示:
在这里插入图片描述
    这时候,我们再连接,怎么连接都是失败的;
在这里插入图片描述

2.2.2 开启用户名字密码认证插件

    此插件emqx_auth_username.conf是中间件,做客户端的认证处理!

./emqx/bin/emqx_ctl plugins load emqx_auth_username

    启动之后,下面就可以添加用户了,比如我要添加 这样的客户端连接用户名字和密码数据:

username password
emq_u emq_x

    则,这样敲进去:

./emqx/bin/emqx_ctl users add emq_u emq_x

     我们再看看是否添加:

./emqx/bin/emqx_ctl users list

在这里插入图片描述

三、AT固件连接服务器

     首先需要到安信可docs官网上下载MQTT固件,烧录的方法也在安信可官网上能找到,烧录成功后可用串口工具来检测功能,IO13为RX、IO15为TX作为AT串口,串口1作为log串口,波特率为115200。连接示意图如下:
在这里插入图片描述

3.1 连接路由:

    路由ssid:CMW-AP 路由密码:12345678

AT+CWMODE=1  //设置为STA模式
AT+CWJAP="CMW-AP","12345678" //输入路由ssid和密码

在这里插入图片描述

3.2 设置MQTT服务器信息

    使用MQTT服务器,需连接 MQTT broker, 假设 MQTT broker IP 为 192.168.31.113, 端口为 1883,参考步骤如下:

AT+MQTTUSERCFG=0,1,"ESP8266", "admin","xuhong123",0,0,"" //设置MQTT服务器信息
AT+MQTTCONN=0,"192.168.31.113",1883,0 //连接至主机

    连接成功之后才能进行后续操作,当看到服务器里出现我们的设备的时候就说明成功了。
在这里插入图片描述在这里插入图片描述

3.3 发布消息

    当我们连接上MQTT服务器之后,就可以进行消息发布,这次展示的是字符串消息的发布,二进制消息的发布指令为AT+MQTTPUBRAW。现在我们先发布主题为World的消息字符串“hfauih4541”,其他订阅World主题的设备就可以收到来自我们发布的信息。

AT+MQTTPUB=0,"World","hfauih4541",0,0 //发布主题为World的消息字符串“hfauih4541”

在这里插入图片描述

3.4 订阅/查询主题

    当我们需要订阅或查询主题的时候,就可以使用AT+MQTTSUB这条指令,查询时使用AT+MQTTSUB?。假设我们订阅一个主题为aithinker,当其他设备发布主题为aithinker的消息时,我们就能接收到这个主题的消息。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.5 其他操作

AT+MQTTUNSUB //取消订阅主题
AT+MQTTCLEAN //关闭连接, 释放资源
AT+MQTTCONNCFG // 配置 MQTT 连接属性
发布了26 篇原创文章 · 获赞 7 · 访问量 6051

猜你喜欢

转载自blog.csdn.net/Boantong_/article/details/104625213