云计算百科
云计算领域专业知识百科平台

基于esp8266芯片,以emqx为服务器实现mqtt传输协议

mqtt通信双方:esp8266、电脑

工具:安信可烧录软件、emqx

固件包:esp8266官方mqtt固件包

简单介绍mqtt协议:全称是消息队列遥测传输(英语:Message Queuing Telemetry Transport),它是ISO标准下基于发布(publish)/订阅(subscribe)范式的消息协议,工作于应用层,是为网络状况糟糕而设计的发布/订阅型消息协议。它是基于TCP/IP协议上工作的,因此本质还是通过IP地址连接各主机。

简单概括mqtt的通信原理:需要一个支持mqtt协议的服务器(broker),需要通信的各机都作为客户端通过网络连接服务器。各主机通信时,发信息的一方需要先设置发送主题、服务质量(QoS),再写上发送的信息打包发送给服务器。服务器收到信息后会将信息发送给所有订阅了该主题的客户端。因此收信息的一方需要订阅发信息一方的发送主题、服务质量。

项目步骤:

1.首先给8266烧录mqtt固件,给8266赋予mqtt通信的功能,在官网AT固件汇总 | 安信可科技可以选择固件下载。

   根据8266flash大小选择固件包,我选的是1471固件包。接着下载烧录软件 

开发工具清单 | 安信可科技

2.在官网下载emqx,注意选择v5.3.2之前的版本,后面的版本没有支持windows的软件包Directory listing for EMQX: / | EMQ

3.下载完进入emqx文件夹,右键选择bin目录->在终端中打开。在终端界面输入.\\emqx start然后回车,此时emqx服务器打开,在浏览器中跳转127.0.0.1:18083可以打开emqx自带的控制面板emqx Dashboard。初始用户名和密码为admin和public,我这里已经改了密码。 

4.登录后在左侧选项卡找到客户端认证 ,点击右上角创建,这里不用修改什么,一直点下一步直到成功创建。然后在用户管理中添加用户,设置用户名和密码,这个用户名和密码对应接下来AT指令中的账号和密码。相当于添加了一个服务端。

5.8266连接电脑,打开串口调试助手,下图是一些8266的AT指令,具体的AT指令参数可以在官网查询,不想那么麻烦可以按照下列步骤发送AT指令:

先用AT+CWMODE=3\\r\\n指令设置8266为STA/AP模式,即既能连热点又能开热点。

发送AT+CIPMODE=1\\r\\n开启透传模式,

然后发送AT+CWJAP="热点","密码"\\r\\n指令连接热点,注意自己填写双引号里自己的热点密码,

发送AT+MQTTUSERCFG=0,1,"esp8266","admin","public",0,0,""\\r\\n设置用户属性,其中admin和public是刚刚创建的用户名和密码,esp8266是客户端名称可以自己改,其他参数不用改。

发送AT+MQTTCONN=0,"127.0.0.1",1883,0\\r\\n实现mqtt连接。

此时在emqx Dashboard上发现8266已经连接。

6.在左侧打开WebSocket客户端,他是emqx自带的一个客户端,填上第四步设置的用户名和密码即可连接,这样8266和WebSocket两个客户端就在emqx服务器上建立通信了。

在串口调试助手使用AT+MQTTSUB=0,"topic",0\\r\\n订阅主题,"topic"可以改成自己想要的主题,在WebSocket客户端设置相同主题然后发布信息即可在串口助手收到。(我这里用的mqttx,一个可以创建mqtt客户端的软件,更加方便)。

 

赞(0)
未经允许不得转载:网硕互联帮助中心 » 基于esp8266芯片,以emqx为服务器实现mqtt传输协议
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!