概述
〇、参考文章
- Esp8266进阶之路⑨ 【小实战上篇】Windows系统搭建8266的本地Mqtt服务器,局域网点亮一盏LED灯。(带Demo)
- 【ESP8266】ESP8266的MQTT客户端搭建教程(基于NONS_SDK_v2.0)
- 【MQTT】在Windows下搭建MQTT服务器
- java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException解决办法
- MQTT协议-MQTT协议简介及协议原理
一、什么是MQTT
MQTT是一个基于客户端-服务器的消息发布/订阅传输协议
上图就是MQTT
的一个通信方式
-
MQTT
协议中的角色有三种:发布者(Publish
)、代理(Broker
)(服务器)、订阅者(Subscribe
)其中发布者和订阅者都是客户端,代理是服务器,发布者也可以是订阅者
-
MQTT
的通信消息分为两部分:主题(Topic
)和负载(payload
)两部分Topic
:可以理解为消息的类型,订阅者订阅(Subscribe
)后,就会收到该主题的消息内容(payload
)payload
:可以理解为消息的内容,是指订阅者具体要使用的内容
MQTT
提供三种的通信质量,也是订阅的等级:
-
QoS0
:就是推送之后就完事了,至于对方有没有收到,收到是什么,数据有没有丢失,都不管 -
QoS1
:就是你收到推送后,你还得返回一个Puback
给对方,告诉对方收到了,不然对方会以为你没收到,隔一段时间后重新给你推送,直到你给对方返回一个Puback
为止 -
QoS2
:与QoS1
相同,但是不同的是QoS1
可能收到相同的推送,但是QoS2
只能收到一次
其实三者的关系可以理解为,至多一次,至少一次,有且仅有一次
其他的关于具体的协议数据需要了解,参考下面的文章
- MQTT协议-MQTT协议解析(MQTT数据包结构)
- 深度剖析MQTT协议的整个通信流程
- MQTT通信知识
实验采用的一种方式是,自己订阅主题,自己发布该主题,自己接收该主题的信息,也就是发布者和订阅者都是自己(ESP8266
)
二、创建MQTT服务器
发布者和订阅者都是需要知道MQTT
服务器的端口和地址,因为创建的服务器是本地的,所以需要在同一个局域网内
镜像地址
根据自己的电脑来下载,然后解压到一个没有中文的路径下
当前目录右键打开cmd
窗口,输入
apollo.cmd create <名字> 例如:apollo.cmd create mymqtt
然后就在当前目录生成一个mymqtt文件夹,进入..mymqttbin
路径下,右击打开cmd
窗口,输入apollo-broker.cmd run
命令,出现下面的这一坨东西就是创建成功了
然后查看自己电脑的ip
地址
三、修改代码
打开工程的example
文件夹,找到里面的esp_mqtt_proj
,复制到工程根目录下,可以重命名为app
,打开include
里面的mqtt_config.h
文件
修改以下部分:
#define CFG_HOLDER 0x00FF55A4 // 这个是用来检验ESP8266flash里面的数据是否更新的,当前值和上一次烧写的软件值一定要不一样
#define MQTT_HOST "192.168.xxx.xxx" // 是你做为MQTT服务器的电脑的地址
#define MQTT_PORT 61613 // MQTT服务器的端口号,由apollo软件设置好了
#define MQTT_USER "admin" // MQTT服务器控制台用户名
#define MQTT_PASS "password" // MQTT服务器控制台登录密码
#define STA_SSID "TP-LINK-8266" // wifi名字
#define STA_PASS "123456789" // wifi密码
//#define PROTOCOL_NAMEv31 // 注释掉
#define PROTOCOL_NAMEv311 // 宏定义PROTOCOL_NAMEv311
修改完之后重新编译没有问题就可以烧录了
四、实验结果
串口输出的信息如下,可以看到,ESP8266
订阅了三个主题,且分别在这三个主题上发布了三个推送
这里面可以看到ESP8266收到了三个推送,分别是hello0
、hello1
和hello2
浏览器打开MQTT服务器的控制台http://127.0.0.1:61680/,然后输入登录名字admin
,登录密码password
,点击主题,可以看到有三个主题使用了,具体详情可以点击进去看到是谁发布的和推送的
上述就是本地MQTT服务器的通信了
2020.6.23
最后
以上就是清新金鱼为你收集整理的ESP-12S学习(11)--本地MQTT通信的全部内容,希望文章能够帮你解决ESP-12S学习(11)--本地MQTT通信所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复