ESP-12S学习(11)--本地MQTT通信

〇、参考文章
  1. Esp8266进阶之路⑨ 【小实战上篇】Windows系统搭建8266的本地Mqtt服务器,局域网点亮一盏LED灯。(带Demo)
  2. 【ESP8266】ESP8266的MQTT客户端搭建教程(基于NONS_SDK_v2.0)
  3. 【MQTT】在Windows下搭建MQTT服务器
  4. java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException解决办法
  5. 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只能收到一次

其实三者的关系可以理解为,至多一次,至少一次,有且仅有一次

其他的关于具体的协议数据需要了解,参考下面的文章

  1. MQTT协议-MQTT协议解析(MQTT数据包结构)
  2. 深度剖析MQTT协议的整个通信流程
  3. MQTT通信知识

实验采用的一种方式是,自己订阅主题,自己发布该主题,自己接收该主题的信息,也就是发布者和订阅者都是自己(ESP8266


二、创建MQTT服务器

发布者和订阅者都是需要知道MQTT服务器的端口和地址,因为创建的服务器是本地的,所以需要在同一个局域网内

镜像地址

根据自己的电脑来下载,然后解压到一个没有中文的路径下
在这里插入图片描述
当前目录右键打开cmd窗口,输入

apollo.cmd create <名字>	例如:apollo.cmd create mymqtt

然后就在当前目录生成一个mymqtt文件夹,进入..\mymqtt\bin\路径下,右击打开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收到了三个推送,分别是hello0hello1hello2
在这里插入图片描述
浏览器打开MQTT服务器的控制台http://127.0.0.1:61680/,然后输入登录名字admin,登录密码password,点击主题,可以看到有三个主题使用了,具体详情可以点击进去看到是谁发布的和推送的
在这里插入图片描述
上述就是本地MQTT服务器的通信了


2020.6.23
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值