两个mqtt服务器同步_[网络篇]ESP8266-NonOS学习笔记(七)之物联网标配MQTT初相识

7e22ef03852ef1acf2372f50e4c4da88.png

恭祝各位猪年大吉,今天是大年初一,放假回家四五天了,讲真的搁家比上班还累。。。今夜得闲觉得不能把时间浪费掉,得活跃活跃脑袋瓜,这几天在家喝酒喝的感觉都变笨了。

闲话少说,还是进入正题吧,对于MQTT可以这么说吧,但凡你对物联网有所了解相信你肯定没有没听过MQTT这几个字,但是未必有过深入的了解,那么我们在本片文章中一起来回顾一下。

不知道各位去学习新知识的时候是怎么开始的,我个人是比较喜好先去官方了解一下,如果没有官网我会尝试先看一下百科,然后再就是博客园中大神写的文章,个人感觉官网是最官方的,因为百科词条跟博文可能不会跟官网的信息实时同步,所以我们先去官网看一下,戳卡片,官网并没有太多内容,但已经把我们想要了解的都写出来了,大家可以先看一下:

MQTT​mqtt.org
MQTT stands for MQ Telemetry Transport. It is a publish/subscribe, extremely simple and lightweight messaging protocol, designed for constrained devices and low-bandwidth, high-latency or unreliable networks. The design principles are to minimise network bandwidth and device resource requirements whilst also attempting to ensure reliability and some degree of assurance of delivery. These principles also turn out to make the protocol ideal of the emerging “machine-to-machine” (M2M) or “Internet of Things” world of connected devices, and for mobile applications where bandwidth and battery power are at a premium.

上面这段英文就是对MQTT最好的介绍,如果还觉得长,那我们可以从这简短的文字中提取出有用的关键字:

  • protocol
  • machine-to-machine(M2M)
  • Internet of Things(IoT)

可以看出这是一个通讯协议,主要应用M2M和IoT领域,所以如果你从事物联网相关的行业,对这个协议就要有所了解了,这是目前个人感觉智能设备(手机、智能音响)与智能终端设备(灯、加湿器、窗帘等)之间交互比较好用的协议,是对硬件和网络都要求不高的通讯协议,就目前而言这也是业内大多数大厂也在使用的通讯协议,所以对其了解与熟练使用也是很有必要的。

MQTT最早由IBM发布,目前作为一个Eclipse Paho开源项目,由Eclipse团队维护,最新版本是5.0,我们先看一下几个版本的各种语言支持情况:

496b0baccf79518b97cba534516f578f.png

这里只列举了三个版本,主要原因是3.1.1是MQTT的第一个OASIS标准版本,3.1版本应该是目前使用最广泛的版本,5.0版本是最新版本:

MQTT and MQTT-SN software​www.eclipse.org

特性:

MQTT是客户端服务器发布/订阅消息传输协议。它重量轻,开放,简单,易于实现。这些特性使其非常适合在许多情况下使用,包括受限制的环境,例如机器到机器(M2M)和物联网(IoT)环境中的通信,其中需要小的代码占用空间和/或网络带宽非常宝贵。

  • 该协议通过TCP / IP或其他提供有序,无损,双向连接的网络协议运行。
  • 使用发布/订阅消息模式,该模式提供一对多消息分发和应用程序的分离。
  • 与有效负载内容无关的消息传输。

消息传递的三种服务质量:

  • “最多一次”,根据操作环境的最佳努力传递消息。可能会发生消息丢失。例如,该水平可以用于环境传感器数据,其中如果某个读数丢失无关紧要,因为下一个读数将很快发布。
  • “至少一次”,确保消息到达但可能发生重复。
  • “完全一次”,确保消息准确到达一次。例如,此级别可用于计费系统,其中重复或丢失的消息可能导致应用不正确的费用。

网络开销小和断线机制:

  • 最小化传输开销和协议交换,以减少网络流量。
  • 发生异常断线时通知相关方的机制。

更多相关内容可以戳下面卡片:

MQTT Version 5.0​docs.oasis-open.org

关于MQTT的一些基础知识我们就先了解到这里,可能没有接触过的同学对这个协议还是有一点迷茫,对两个设备之间如果建立起通信是有点比较好奇的,我简单一说可能你就懂了,在这个通信协议中必不可少的一个环节就是有一台消息服务器,前面特性当中也有说:MQTT是客户端服务器发布/订阅消息传输协议。其实两台设备之间的消息都是经由消息服务器转发的,前面特性中也说过:该协议通过TCP / IP或其他提供有序,无损,双向连接的网络协议运行。所以MQTT是在TCP/IP协议之上的,所以两个设备如果没在一个局域网中是很难建立起TCP连接的,所以消息服务器就显得很重要了,整个通讯架构简图如下:

39e23662ce88ca1c11afea0277676ac9.png

设备1想跟设备2打个招呼:hi,这条消息是需要经由消息服务器转发的,因为从整个网络来看,消息服务器是可以部署在公网当中的,也就是有唯一的IP地址,但是两个设备基本是不太可能有固定IP的,但是MQTT是在TCP协议之上的,这也就意味着我们必须要有某一个固定的IP去监听消息,所以这条消息就在消息服务器监听到后会转发给设备2,那么到这里你可能又会想问,消息服务器为什么会知道要转发给设备2呢?其实,这里说转发给某一个设备是不对的,因为MQTT采用的是主题机制,这里我们可以先将主题理解成为每一条消息所跟的一个属性,这个属性会决定到哪些设备可以接收到,哪些设备接收不到消息,比如下图:

e0b6413fc1e8640cbd1186b9b88592df.png

其中设备1以主题:/topic1,发送了一条消息:hi,由于这个主题只被设备2订阅了,所以只有设备2接收到了该消息,但是设备2以主题:/topic2,发送了一条消息:hello world,由于这个主题被设备1和设备3同时订阅了,所以,这条消息会被设备1跟设备3都接收到,这就是主题在这里面起的作用,后面我们会在代码中更加具体的了解什么是主题,这里只是以一种比较抽象的说法让大家先了解一下。

关于MQTT的一些基础知识先写到这,主要是先对其有一定了解,后面预计还会有两篇,一篇是如何在电脑(ubuntu)上搭建环境本机测试,另一篇是如何在ESP8266上利用MQTT,实现手机点灯?

夜深了,抓住了大年初一的尾巴,最后祝大家:猪年行大运,诸事大吉!

物联网开发交流群​jq.qq.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32和ESP8266(ESP-12F)可以结合使用来创建一个物联网温度计,并通过移植Paho MQTT协议来连接到一个私有MQTT服务器。 首先,我们需要准备好硬件。在STM32上,我们可以使用一个温度传感器来测量温度,并使用ESP8266作为WiFi模块,用于与MQTT服务器进行通信。ESP-12F模块已经集成了WiFi功能,并且非常适合用于此应用。 接下来,我们需要准备好软件。Paho MQTT是一个开源的MQTT客户端库,可用于连接到MQTT服务器。我们需要将Paho MQTT库移植到STM32的开发环境中,并编写代码来配置和连接到MQTT服务器。 在使用Paho MQTT之前,我们还需要了解私有MQTT服务器的连接参数,例如服务器的IP地址、端口号、用户名和密码。这些参数将用于在代码中配置MQTT连接。 在代码中,我们需要使用STM32的串口(UART)和SPI接口来与ESP8266进行通信。通过UART,我们可以发送AT指令给ESP8266并接收其响应。通过SPI,我们可以将温度数据传输给ESP8266。 首先,我们需要始化ESP8266并配置它的WiFi连接。然后,我们可以使用Paho MQTT库的API来创建一个MQTT客户端,并配置其连接参数。一旦连接建立,我们可以使用MQTT客户端来发布和订阅主题,并发送和接收数据。 在温度计的应用中,我们可以在固定时间间隔内测量温度,并通过MQTT发布到服务器。其他设备可以订阅这个主题,并接收到最新的温度数据。 总结起来,通过移植Paho MQTT协议,我们可以将STM32和ESP8266结合起来创建一个物联网温度计,并将其连接到一个私有MQTT服务器。通过配置和管理MQTT连接,我们可以实现设备之间的实时数据交换,从而实现更智能化和高效的物联网应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值