本着让大家学习的AT固件如何连接自有的MQTT服务器的精神,我们分享了一些经验。物联网通讯,第一时间就是想到服务器搭建,而最先想到的是开源的、免费的MQTT服务器搭建,给大家分享下 EMQ 服务器商用时候的心得,之后会介绍如何使用AT指令连接MQTT服务器,如何订阅发布主题。
https://www.emqx.io/downloads#broker
https://packages.emqx.io/emqx-ce/v3.2.3/emqx-centos7-v3.2.3.zip
wget https://packages.emqx.io/emqx-ce/v3.2.3/emqx-centos7-v3.2.3.zip
yum install unzip -y
unzip emqx-centos7-v3.2.3.zip
./emqx/bin/emqx start
./emqx/bin/emqx_ctl status
软件安装之后,我们的服务器还要开放以下端口:
端口号 | 用途 |
---|---|
18083 | mqtt服务器面板 |
1883 | tcp mqtt连接 |
8083 | websocket连接 |
8084 | websocket ssl连接 |
8080 | rest api http使用 |
EMQ软件不配置任何设置,都是可以匿名登录的,也即是可有可无用户名和密码鉴权登录连接,这点是非常危险的!下面教大家如何新建用户名和密码鉴权!
首先,关闭匿名登录,编辑配置文件 emqx.conf
,修改为 allow_anonymous
改为 false
,即修改后是 allow_anonymous = false
;
vim emqx/etc/emqx.conf
此插件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
首先需要到安信可docs官网上下载MQTT固件,烧录的方法也在安信可官网上能找到,烧录成功后可用串口工具来检测功能,IO13为RX、IO15为TX作为AT串口,串口1作为log串口,波特率为115200。连接示意图如下:
路由ssid:CMW-AP 路由密码:12345678
AT+CWMODE=1 //设置为STA模式
AT+CWJAP="CMW-AP","12345678" //输入路由ssid和密码
使用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 //连接至主机
连接成功之后才能进行后续操作,当看到服务器里出现我们的设备的时候就说明成功了。
当我们连接上MQTT服务器之后,就可以进行消息发布,这次展示的是字符串消息的发布,二进制消息的发布指令为AT+MQTTPUBRAW
。现在我们先发布主题为World
的消息字符串“hfauih4541”
,其他订阅World
主题的设备就可以收到来自我们发布的信息。
AT+MQTTPUB=0,"World","hfauih4541",0,0 //发布主题为World的消息字符串“hfauih4541”
当我们需要订阅或查询主题的时候,就可以使用AT+MQTTSUB
这条指令,查询时使用AT+MQTTSUB?
。假设我们订阅一个主题为aithinker
,当其他设备发布主题为aithinker
的消息时,我们就能接收到这个主题的消息。
AT+MQTTUNSUB //取消订阅主题
AT+MQTTCLEAN //关闭连接, 释放资源
AT+MQTTCONNCFG // 配置 MQTT 连接属性