失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > MQTT与物联网平台(一):基础知识和设备接入物联网平台的实现(以华为云为例)

MQTT与物联网平台(一):基础知识和设备接入物联网平台的实现(以华为云为例)

时间:2022-08-11 01:06:21

相关推荐

MQTT与物联网平台(一):基础知识和设备接入物联网平台的实现(以华为云为例)

文章目录

前言一、MQTT是什么?二、接入物联网平台(以华为云为例)1.创建产品和新增设备2.建立TCP连接3.建立MQTT连接 三、学习交流群

前言

本文简单介绍了MQTT的基础知识和使用方法,以蓝牙WIFI双模芯片W801作为硬件设备,接入到华为云。

一、MQTT是什么?

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

好了,以上都是一些文绉绉的说辞,了解一下即可。然后我们要知道,它是如何实现通信的??

MQTT协议中有三种身份:发布者(Publish)、服务器(Broker)、订阅者(Subscribe)。

如下图,每个设备之间都已经建立了MQTT连接。某手机和某电脑订阅了“温度”主题,充当订阅者,温度计充当发布者。当温度计向“温度”主题发布一条消息时,那么订阅了“温度”主题的订阅者都会收到这条消息。而服务器只是充当转发的角色

下面是在MQTT中的一些操作:

Connect:与服务器进行MQTT连接;Disconnect:与服务器断开MQTT连接;Subscribe:订阅某个主题;UnSubscribe:取消订阅某个主题;Publish:发布消息;

以下是通信过程中使用到的报文,在下文中会使用到。

二、接入物联网平台(以华为云为例)

下面是物联网应用的一个典型的示意图。现在举一个例子加以说明:假设设计一个温度监测的应用。设备端(温度传感器+可以联网的芯片)进行数据采集,将数据通过MQTT协议传输到物联网平台(服务器、Broker)。与此同时,应用端(手机APP、小程序或电脑网页等)从物联网平台接收数据进行显示监测。应用端和物联网平台之间的通信协议并非只限于MQTT,也可能是HTTP、AMQP等。

1.创建产品和新增设备

首先我们需要在物联网平台上新建一个产品并新增一个测试设备,具体设置如下:

2.建立TCP连接

因为MQTT是建立在TCP连接上的。因此,在建立MQTT连接之前需要建立TCP连接。具体一般是使用套接字进行建立TCP连接,需要的参数包括域名(解析出IP地址),端口(一般是1883)

从腾讯云的文档中找到域名和端口:

中国大陆:productid.,其中productid更换为产品ID端口:1883

调用函数建立TCP连接

static int mqtt_init_socket(mqtt_broker_handle_t *broker, const char *hostname, short port);//broker:MQTT信息的结构体//hostname:域名//port:端口

3.建立MQTT连接

设备端与服务器建立MQTT连接的步骤如下:1、发送CONNECT报文;2、接收CONNACK报文;3、定时发送心跳包。

1、CONNECT报文

CONNECT报文的内容如下:

client id:客户端idusername:用户名password:密码clean session:清除会话keepalive:心跳时间

其中前三个参数可以在华为云提供的工具中获取(如下图):华为云MQTT报文内容生成工具。填入上图生成的设备ID和密钥即可生成。

参数clean session与Qos(服务质量)有关,保持默认即可;心跳时间的设置建议60-300,单位是s。

2、接收CONNACK报文

发送CONNECT报文后会接收到连接确认报文CONNACK。

3、发送心跳包

Keepalive指定连接最大空闲时间T,当客户端检测到连接空闲时间超过T时,必须向Broker发送心跳报文PINGREQ,Broker收到心跳请求后返回心跳响应PINGRESP。若Broker超过1.5T时间没收到心跳请求则断开连接,并且投递遗嘱消息到订阅方;同样,若客户端超过一定时间仍没收到心跳响应PINGRESP则断开连接。简单来说,心跳包是让对方知道设备还在线,没有断开连接

完成上述步骤后,即可激活设备。

三、学习交流群

关注下方公众号,回复“交流群”,进群一起讨论分享知识!

如果觉得《MQTT与物联网平台(一):基础知识和设备接入物联网平台的实现(以华为云为例)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。