当前位置 博文首页 > freemote的博客:【玩转ESP32】14、esp32 mqtt基础

    freemote的博客:【玩转ESP32】14、esp32 mqtt基础

    作者:[db:作者] 时间:2021-07-05 09:53

    系列文章:

    【玩转ESP32】1、开发环境搭建
    【玩转ESP32】2、开发参考资料
    【玩转ESP32】3、点亮LED,Blink,blink,blink
    【玩转ESP32】4、ESP32驱动DHT11
    【玩转ESP32】5、i2c-tools访问i2c设备
    【玩转ESP32】6、驱动i2c设备—0.96 OLED
    【玩转ESP32】7、ESP32连接wifi
    【玩转ESP32】8、ESP32 Guru MeditationError报错分析
    【玩转ESP32】9、ESP32 作为TCP客户端连接服务器(非阻塞接收)
    【玩转ESP32】10、创建用户分区表,数据读写存储
    【玩转ESP32】11、编译报错:esp_bt.h:No such file or directory
    【玩转ESP32】12、esp32串口使用
    【玩转ESP32】13、软件定时器esp_timer使用

    1、前言

    MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件 。

    MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

    2、 架构

    在这里插入图片描述
    mqtt的典型架构是Broker(Server)和Client,也就是服务器和客户端;
    服务器是消息代理者;
    客户端既可以是消息发布者(Publish),也可以是订阅者(Subscribe)。
    这里举一个不是特别恰当的例子:微博,只有你关注(订阅)了某个人,某个人发布(发布)博文(消息)后,微博(代理者/服务器)就会第一时间给你推送。

    MQTT传输的消息分为:主题(Topic)和负载(Payload)两部分;Topic:可以理解为消息的类型;
    Payload:可以理解为消息的内容,是指订阅者具体要使用的内容;

    MQTT的消息质量:QoS 0,QoS 1和 QoS 2。

    QoS 0:最多分发一次。消息的传递完全依赖底层的TCP/IP网络,协议里没有定义应答和重试,消息要么只会到达服务端一次,要么根本没有到达。
    QoS1:至少分发一次。服务器的消息接收由PUBACK消息进行确认,如果通信链路或发送设备异常,或者指定时间内没有收到确认消息,发送端会重发这条在消息头中设置了DUP位的消息。
    QoS 2:只分发一次。这是最高级别的消息传递,消息丢失和重复都是不可接受的,使用这个服务质量等级会有额外的开销。

    3、MQTT版本

    MQTT-SN v1.2
    MQTT 3.1
    MQTT 3.1.1
    MQTT 5
    其中MQTT3.1和MQTT3.1.1是目前最常用的版本。

    4、MQTT Servers

    Ably MQTT Broker
    Apache ActiveMQ :开源
    Mosquitto:开源,对应的测试服务器(https://test.mosquitto.org/)
    RabbitMQ:开源
    EMQ :开源,国内一家公司开发的

    5、MQTT Client

    嵌入式C 客户端:https://os.mbed.com/teams/mqtt/code/MQTTPacket/
    ESP8266/ESP32的客户端:https://github.com/tuanpmt/esp_mqtt
    基于elang的客户端:https://github.com/emqx/emqtt
    基于go的客户端:https://github.com/eclipse/paho.mqtt.golang

    6、调试工具

    MQTT.fx:http://mqttfx.jensd.de/index.php/download
    MQTT X:https://mqttx.app/

    7、其他资料

    MQTT中文网:http://mqtt.p2hp.com/
    MQTT官网:https://mqtt.org/

    cs