文章目录

  • 前言
  • 一、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.iotcloud.tencentdevices.com,其中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:客户端id
  • username:用户名
  • 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与物联网平台(一):基础知识和设备接入物联网平台的实现(以华为云为例)相关推荐

  1. 设备如何使用go sdk轻松连接华为云IoT平台

    本文分享自华为云社区<设备如何使用go sdk轻松连接华为云IoT平台>,作者:华为云IoT专家团 . 本文介绍使用huaweicloud-iot-device-sdk-go 连接华为云I ...

  2. NBIOT 设备接入ONENET平台

    NBIOT 设备接入ONENET平台 一.ONENET平台的注册与配置 1.1.注册与创建产品 1.2.添加设备: 1.2.1 获取 IMEI 及 IMSI 二.连接NB-IOT 2.1 ONETET ...

  3. 如何通过安防网络设备的EHOME协议把设备接入EasyCVR平台,进行互联网直播及分发?

    在对接项目过程中,我们发现实际的安防可视化监控系统搭建中,设备端的协议往往会被分为很多种,设备型号也多种多样.以往,不同协议对应不同的方案部署,在同一项目有多个不同协议设备的场景下,这样的部署显得繁琐 ...

  4. RK3399平台开发系列讲解(内核驱动外设篇)6.5、音频芯片ES8323 基础知识及设备树相关配置

    平台 内核版本 安卓版本 RK3399 Linux4.4 Android7.1 文章目录 Codec Block Diagram 录音过程(ADC data) 放音过程(`DAC data`) 基础知 ...

  5. 硬件基础:嵌入式物联网系统软硬件基础知识大全

    本文主要介绍嵌入式系统的基础知识,涉及嵌入式软件和硬件的方方面面,希望对各位有帮助. 嵌入式系统基础 1.嵌入式系统的定义 (1)定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功 ...

  6. 浙江大学远程教育平台计算机基础知识,浙江大学远程教育计算机作业计算机基础知识题和 Windows知识题...

    第1章 计算机基础知识(单选题) 这些题目必须做一遍,来自统考题库(期末考试题也来自这里),参考答案在另一个Word文档中(要把自己做的答案上传后才可以下载-).据说,统考题库中大约有10,000测试 ...

  7. 【嵌入式Linux】嵌入式Linux驱动开发基础知识之设备树模型

    文章目录 前言 1.设备树的作用 2.设备树的语法 2.1.设备树的逻辑图和dts文件.dtb文件 2.1.1.1Devicetree格式 1DTS文件的格式 node的格式 properties的格 ...

  8. 基本组网-(适用场景:一般家庭网络、微型企业网络、20人以内)、基础知识、设备知识、运营商选择、设备选择、设备配置

    基本组网 本文可使读者了解组网所需要的基础知识,一般家庭网络.微型企业网络.20人以内的组网相关的设备选择.基本配置方法. 基础知识 调制解调 我们知道,计算机内的信息是由"0"和 ...

  9. JetLinks平台二次开发 : 一、TCP设备接入JetLinks平台

    jetlinks是一个开源的物联网云平台,功能比较强大.支持MQTT.TCP.COAP.HTTP等设备的接入,若要在平台中接入设备,可根据此文档进行相关操作. 关于该平台的基本信息,这里不做过多介绍, ...

最新文章

  1. iOS开发-UITextField手机号和邮箱验证
  2. org.springframework.security.web.util.TextEscapeUtils
  3. 贝叶斯推断及其互联网应用(一):定理简介
  4. 新鲜抓取古文赏析五千篇
  5. 气象科学与计算机应用论文,面向气象数据的智能分析方法分析-计算机应用技术专业毕业论文.docx...
  6. 用JavaScript嵌入你的SWF
  7. Map排序,获取map的第一值,根据value取key等操作(数据预处理)
  8. 金山云纳斯达克敲钟上市,雷军手中又多了家上市公司
  9. 使用DataX从ORACLE同步数据到MYSQL
  10. CISA 发布关于 Treck TCP/IP 栈中新漏洞的 ICS 安全公告
  11. yaahp使用教程_结合层次分析法和模糊综合评价法的评价方法-利用yaahp
  12. python打开excel大文件慢,excel内容很少,文件却很大,怎么解决:python处理excel文件...
  13. 线程控制-客户端获取信息无反应
  14. 锐达机械对H型钢抛丸机的维修调整工作
  15. 如何通过YouTube实现财富自由?
  16. 囿 (内容转载自wiki)
  17. dcs常用的冗余方式_dcs试题
  18. 给服务器上传文件高并发,基于容器实现高并发网站
  19. 【mask2former】环境配置+cityscapes全景分割
  20. 论文笔记丨关于稳态视觉诱发电位的脑机接口

热门文章

  1. 利用背景流量数据(contexual flow data) 识别TLS加密恶意流量
  2. python股票量化交易(6)---使用TA-Lib计算技术指标
  3. 【十年磨一剑】我们能从阿里架构师的身上学到什么?
  4. 麻省理工学院公开课:计算机科学及编程导论习题2
  5. 365天挑战LeetCode1000题——Day 103 400题 检查二进制字符串字段 最大子序列交替和 最低票价 K 站中转内最便宜的航班
  6. MyBatis初学总结(五)
  7. 数字三角形(动态规划经典例题)
  8. win8系统下载 mysql 64位 win8_win8系统64位iso镜像
  9. 近期中国互联网搜索领域纵横谈
  10. 斯蒂夫乔布斯传札记:第五波