ESP8266:MQTT

1. MQTT

  • 首先设备通过TCP/UDP通过云平台提供的端口,连接到云平台后,此时按照云服务器所规定的通信协议就可以发送和接收信息,实现物联网,百度云、阿里云、腾讯云都支持MQTT协议。
  • MQTT基于TCP协议实现,建立连接后,通过MQTT协议交换数据。
  • 基于客户端和服务端模式。
  • 基于请求/回答模式和发布/订阅模式。

请求/发布:假设需要打电话给朋友,需要等朋友接电话了,才能开始交流。(同步方式)
发布/订阅:假设发送邮件给朋友,邮件点击发送后,就不管了。朋友收到邮件后,任何时候去查看邮件都可以。(异步方式)

  • MQTT协议文档说明下载:https://mqtt.org/
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 资料来源参考[野火]《LwIP应用开发实战指南—基于野火 STM32 全系列(M47)开发板》

2. 使用MQTT.fx客户端连接百度云

  • 连接说明:https://cloud.baidu.com/doc/IoTCore/s/Akck4811r,根据生成的账户连接密码等,填入MQTT.fx客户端进行连接。

  • 创建主题,注意不要带$符号,不然MQTT.fx客户端可能收到不到订阅消息,创建云设备可以参考百度云的教程说明,这里不再说明。
    在这里插入图片描述

  • MQTT.fx客户端设置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3. ESP8266使用MQTT连接百度云

  1. 工程创建后,修改mqtt_config.h文件接入自己的云账号和WiFi密码等。
    在这里插入图片描述

  2. 修改使用的协议版本
    在这里插入图片描述

  3. 修改增加SNTP备用服务器
    在这里插入图片描述

  4. 修改mqttConnectedCb函数订阅自定义服务
    在这里插入图片描述

  5. 设置遗嘱
    在这里插入图片描述

  6. 修改config.h文件,用于解决MQTT重复断开连接问题,主要原因是服务器返回MQTT报文0x04拒绝连接:用户名/密码错误。
    在这里插入图片描述

MQTT: Connected to broker acncpzm.iot.gz.baidubce.com:1883
MQTT: Sending, type: 1, id: 0000
TCP: Sent
TCP: data received 4 bytes
TCP: data received 32,2,0,4 		//应答报文0x04拒绝连接:用户名/密码错误。
MQTT: Connected to acncpzm.iot.gz.baidubce.com:1883
MQTT: Connected
MQTT: queue subscribe, topic"LED", id: 1
MQTT: queuing publish, length: 23, queue size(86/2048)
TCP: Disconnected callback
MQTT: Disconnected

在这里插入图片描述

  1. 最后编译下载,就可以连接上云,提示订阅和发布成功了。
    在这里插入图片描述
ESP8266移植到MQTT是一种常见的方式,以实现物联网设备与云平台之间的通信。下面是一个简要的描述该过程的答案: ESP8266是一款低成本、低功耗、高性能的Wi-Fi微控制器,而MQTT是一种轻量级的通信协议,广泛用于物联网设备间的通信。将ESP8266移植到MQTT旨在利用ESP8266的Wi-Fi功能,将其作为一个MQTT客户端,与MQTT代理服务器进行通信。 首先,我们需要确保ESP8266的Wi-Fi功能模块已正确配置,可以与Wi-Fi网络进行连接。然后,我们需要在ESP8266上安装适当的MQTT库,例如PubSubClient。这个库将提供所需的MQTT功能,如连接、发布和订阅等。 接下来,我们需要在代码中设置与MQTT服务器相关的参数,如服务器地址、端口号、用户名、密码等。然后,我们可以使用MQTT库提供的函数,例如`mqtt.connect()`来连接到MQTT服务器。 一旦成功连接到MQTT服务器,我们就可以使用`mqtt.publish()`函数向主题发布消息,使用`mqtt.subscribe()`函数订阅特定主题,接收服务器发送的消息。通过这种方式,ESP8266就可以与MQTT代理服务器进行双向通信。 需要注意的是,ESP8266的资源相对有限,因此需要根据实际应用的需求来设计代码。例如,可以使用低功耗模式来节省电能,或者根据需要实现数据缓存和同步等机制来处理通信中可能出现的问题。 总结起来,将ESP8266移植到MQTT需要配置Wi-Fi功能、安装适当的MQTT库、设置相关参数,然后使用MQTT函数进行连接和通信。这样,我们就能够实现ESP8266MQTT代理服务器之间的通信,从而实现物联网设备的云平台连接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值