MQTT 协议接入阿里云物联网平台 | 学习笔记

简介: 快速学习 MQTT 协议接入阿里云物联网平台

开发者学堂课程【物联网平台开发全栈教程:MQTT 协议接入阿里云物联网平台】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/562/detail/7693


MQTT 协议接入阿里云物联网平台


内容介绍

一、主题

二、Tcp 通讯的一些规范

三、基于阿里云 IOT 平台的 MQTT 协议规范


一、主题:

基于51单片机接入阿里云 IOT 平台

主题:在 LP 平台使用 MQTT

1. MQTT 与阿里云 IOT 服务器进行 TCP 通讯

MQTT 通讯是基于 TCP 通讯方向之前也说过双向链路保障的基础之上的,首先要介绍一下如何接入 tcp 通信,其实当做 tcp 通信的时候,也是有一个简单的约束和规范。在他的文档这个位置去查看,首先先去文档这里。进入控制台之后,点产品文档就会直接在来到文档这个位置在设备端开发指南,多协议链接之后下面有一个 tcp 连接通讯。


二、Tcp 通讯的一些规范:

1.推荐使用 TLS 加密,保障 TCP 层不被截获

2.为了便于51单片机编程,采用了 TCP 直连的方法

首先是 tls 加密。tcp 通信可以进行 tls 加密,这样就保证在链路上不会被黑客或者第三方给截获或者破解。极大的增加了对方破解系统的难度。Tls 是对 tcp 加密的,就是说像电话线,分析是经过加密的是不可能说截获,之后发现就偷听到互相之间的通话内容。底层上就保证了数据的安全性和可靠性。但是这一系列视频没有使用 tls 加密,因为使用的是51单片机编程。Tls 加密还涉及到一个证书的问题,所以为了简化整个编程,采用了 tcp 直连的方法。采用这个方法其实也采取了一定的措施来保障他的可靠性,也就说使用的是一机一密的方法。

3.设备的一机一密

—机—密认证方式的安全性较高,推荐使用

(1)创建产品

(2)添加设备

添加设备 DevioetName 获得设备证书:DeviceName.

DevipeSecret

(3)产线烧录

产钱上为每台设备烧录?

ProductKey.DeviceName.

DewiceSeclGat(这个设备是不可忽略)

(4)设备联网(wifi 联网)

设备上电联网。携带产品证书

和设备证书。请求登陆云端

(5)云端缴活

云端根据产品证书和设备证书对设备进行认证,通过后则激活该设备,否则拒绝该设备接入

3.MQTT 链接域名,华东2节点

MQTT 链接在计算域名的时候,要记住使用的是华东二节点,首先再开通互联网平台的时候,要选择一个节点的位置。在国内只能选择华东2,上海地区或者其他的都是国外的节点。所以说在做这个小工具的时候,直接就使用了上海这个节点。用户名直连使用的方法是HTC客户端域名识别的方法。这里其实介绍了相关的一些概念。

MQTT 客户端域名直连

(1)推荐使用 TLS 加密。如果使用。需要下载根证书。

(2)使用 MQTT 客户端连接服务器。自主接入可以使用开源 MQTT 客户端参考;如果您对 MQTT 不了解,请参考thttp://maqt.org 相关文档。

4.CONNECT 报文计算规则

在阿里云互联网平台,是有一个地方规定的,因为它涉及到一个加密的问题。就是通过文档的这个部分,首先就是mqtt 这里的加密密码,如果使用的加密,就需要下载证书。你的电脑可以通过安装工具来装这样一个软件,那么你的单片机或者说你的嵌入式设备也可以跑一个 mqtt 的 client,只需要符合 mqtt 的协议规范,就可以称为 mqtt 的客户端,只要单片机能够发送和理解,符合 mqtt 协议规范的数据。就可以称它为他们的信息客户端 mqtt 服务器。

 连接服务器时,第一个连接域名

$(YourProductKey) . iot-as-mqtt. $ (YourRegionId).aliyunc s.com:1883

${YourProductKey}请替换为您的产品 key.

${YourRegionld}请参考地域和可用区替换为您的 Region ID。

在这个小工具里,是通过输入主信息来直接计算的。其实计算还是遵循一定的规则的,就是根据这个规范,先做了一个小工具,简化了一下手工计算的一个难题。之后是 MQTT 的 Connect 报文参数

MQTT 的 Connect 报文参数

sign 签名需要把以下参数按字典排序后,根据 signmethod 加签。

content 的值为提交给服务器的参数(ProductKey、DeviceName、timestamp和clientld),按照字母顺序排序,然后将参数值依次拼接。

clientld:表示客户端 ID,建议使用设备的 MAC 地址或 SN 码,64字符内。

timestamp:表示当前时间毫秒值,可以不传递。

mqttClientld:格式中 I 内为扩展参数。

signmethod:表示签名算法类型。支持 hmacmd5, hmacsha1, hmacsha256和 sha256,默认为 hmacmd5。

securemode:表示目前安全模式,可选值有2(TLS 直连模式)和3(TCP 直连模式)。

其实 Connect 报文参数需要的是三个:

Client ID

User Name

Password

需要对三元素的简单计算得来的,最后得到的每一个单片机都是唯一的。

5.MQTT 保活

小工具里面是60S

小工具保护时间是60秒,在60秒时间内,必须给服务器发送一个心跳,或者说发布一些可靠的数据过去,让服务器知道你还活着。

在进行 MQTT CONNECT 协议设置时:

(1)Connect 指令中的 KeepAlive 不能小于30秒,否则会拒绝连接。建议值为[60秒,300秒]之间。

(2)如果同一个设备三元组,同时用于多个连接,可能导致客户端互相上下线。

(3)MQTT 默认开源 SDK 会自动重连,您可以通过日志服务查看设备行为。

使用 HTTPS 认证再连接模式

MQTT 保活

本文档主要介绍基于 TCP 的 MQTT 连接,并提供了两种设备认证模式:MQTT 客户端域名直连可以使用参考本文自主接入设备。

设备端在保活时间间隔内,至少需要发送—次报文,包括 ping 请求。

如果服务端在保活时间内无法收到任何报文,物联网平台会断开连接,设备端需要进行重连。

设置保活时间的取值,建议取值范围60~300s。

一般生活中在60左右,间隔太短对服务器压力过大。


三、基于阿里云 IOT 平台的 MQTT 协议规范

1.阿里云支持 MQTT 标准协议接入,兼容3.1.1和3.1版本协议

2.不支持 will、retain msg

3.不支持 QOS2

这几个概念都在 mqtt 的中文手册有讲,这里选出的这几个,他协议上为了保障数据的可靠性,做了一个等级约定。但是阿里云不支持,因为有其他的机制来保证数据,所以说就没有支持几个,因为 qos2对服务器的压力也特别大。具体可以看一下与标准 mqtt 区别。

4.标准 MQTT 的区别

支持 MQTT 的 PUB、SUB、PING、PONG、CONNET、DISCONNECT 和 UNSUB 等报文。

支持 cleanSession。

清理绘画功能,掉线后服务器会清理有关残留的信息。服务器会在一定时间后清理状态与订阅。

不支持 will、retain msg.·不支持 QOS2,

基于原生的 MQTT topic 上支持 RRPC 同步模式,服务器可以同步调用设备并获取设备回执结果。

5.基于原生的 MQTT topic 上支持 RRPC 同步模式

当控制的时候,服务器需要可靠的知道下发的命令有没有可靠的到达设备,如果是基于技术的模式,是不知道的。虽说做了一个 rrpg,这个呢之前是用 qos2可能会来实现,但是不能一次到达。今天 rrpc 提升的模式来替代他,这样的可能对服务器的压力会小很多。

6.安全等级

支持 TLSV1、TLSV1.1和 TLSV1.2版本的协议建立安全连接。

TCP 通道基础+芯片级加密(ID2硬件集成):安全级别高。

TCP 通道基础+对称加密(使用设备私钥做对称加密):安全级别中。 TCP 方式(数据不加密):安全级别低。

7.TOPIC 规范(如果是常规的可以随便约定)

会发现每个 topic 是有约定好的,发只能这样发,收只能这样收。具体的可以看一下,不过小工具也是根据这个规则来计算出相关的操作。可以发现每一个都是和设备关联,也就是说单位的设备在整个 topic 设备都进行的设备维度的隔离。所有的 topic 进行设备维护,每个设备发消息是他发的。这样就可以防止被 topic 跨设备越权。

所以阿里云还通过 rrpc 的方式解决了数据同步的问题,通过一机一密增加设备安全性。所以 lp 平台在 mqtt 使用就十分放心的。

相关文章
|
消息中间件 安全 物联网
海量接入、毫秒响应:易易互联基于 Apache RocketMQ + MQTT 构筑高可用物联网消息中枢
易易互联科技有限公司是吉利集团旗下专注于换电生态的全资子公司,致力于打造安全、便捷、便宜的智能换电网络。公司依托吉利GBRC换电平台,基于电池共享与车辆全生命周期运营,已布局超470座换电站,覆盖40多个城市,计划2027年达2000座。面对海量设备高并发连接、高实时性要求及数据洪峰挑战,易易互联采用阿里云MQTT与RocketMQ构建高效物联网通信架构,实现稳定接入、低延迟通信与弹性处理,全面支撑其全国换电网络规模化运营与智能化升级。
848 1
海量接入、毫秒响应:易易互联基于 Apache RocketMQ + MQTT 构筑高可用物联网消息中枢
|
数据采集 传感器 监控
Modbus 与 MQTT 协议兼容:MyEMS 的泛在能源数据采集技术实现
MyEMS深度融合Modbus与MQTT协议,破解能源数据采集中协议碎片化、网络异构、数据孤岛等难题。通过Modbus接入95%以上工业设备,实现现场数据精准“拉取”;依托MQTT构建高效物联网传输通道,支持多源数据主动“推送”与云端集成。边缘侧采集规整,中心侧汇聚分析,形成统一、可靠、低延迟的数据流。该架构兼具高兼容性、强扩展性与低运维成本,广泛应用于工业园区、商业楼宇及集团型企业,支撑实时监控、AI分析与跨系统融合,打造泛在互联的能源数据底座,助力企业实现全面智慧能源管理。
755 6
|
数据采集 监控 网络协议
​MCP协议深度解析:原理、应用与物联网时代的机遇-优雅草卓伊凡
​MCP协议深度解析:原理、应用与物联网时代的机遇-优雅草卓伊凡
1925 40
​MCP协议深度解析:原理、应用与物联网时代的机遇-优雅草卓伊凡
|
物联网
(手把手)在华为云、阿里云搭建自己的物联网MQTT消息服务器,免费IOT平台
本文介绍如何在阿里云搭建自己的物联网MQTT消息服务器,并使用 “MQTT客户端调试工具”模拟MQTT设备,接入平台进行消息收发。
4241 42
|
物联网
如何在腾讯云等平台搭建自己的物联网MQTT服务器Broker
物联网技术及MQTT协议被广泛应用于各种场景。本文介绍物联网MQTT服务助手下载,如何搭建自己的物联网平台,并使用 “MQTT客户端调试工具”模拟MQTT设备,接入平台进行消息收发。
1073 37
|
监控 物联网 网络性能优化
【杂谈】-MQTT与HTTP在物联网中的比较:为什么MQTT是更好的选择
通过上述分析,可以看出MQTT在物联网应用中的确是更好的选择。其高效的通信模型、低带宽消耗、稳定的连接保持机制以及可靠的消息质量保证,使其在各种物联网场景中都能表现出色。开发者在设计和实现物联网系统时,应优先考虑采用MQTT协议,以充分发挥其在资源受限环境下的优势,提升系统的整体性能和可靠性。
3873 26
|
监控 安全 Java
Java 开发中基于 Spring Boot 3.2 框架集成 MQTT 5.0 协议实现消息推送与订阅功能的技术方案解析
本文介绍基于Spring Boot 3.2集成MQTT 5.0的消息推送与订阅技术方案,涵盖核心技术栈选型(Spring Boot、Eclipse Paho、HiveMQ)、项目搭建与配置、消息发布与订阅服务实现,以及在智能家居控制系统中的应用实例。同时,详细探讨了安全增强(TLS/SSL)、性能优化(异步处理与背压控制)、测试监控及生产环境部署方案,为构建高可用、高性能的消息通信系统提供全面指导。附资源下载链接:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)。
2875 0
|
消息中间件 数据管理 Serverless
阿里云消息队列 Apache RocketMQ 创新论文入选顶会 ACM FSE 2025
阿里云消息团队基于 Apache RocketMQ 构建 Serverless 消息系统,适配多种主流消息协议(如 RabbitMQ、MQTT 和 Kafka),成功解决了传统中间件在可伸缩性、成本及元数据管理等方面的难题,并据此实现 ApsaraMQ 全系列产品 Serverless 化,助力企业提效降本。
|
消息中间件 Java Kafka
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
本文深入解析了 Kafka 和 RabbitMQ 两大主流消息队列在 Spring 微服务中的应用与对比。内容涵盖消息队列的基本原理、Kafka 与 RabbitMQ 的核心概念、各自优势及典型用例,并结合 Spring 生态的集成方式,帮助开发者根据实际需求选择合适的消息中间件,提升系统解耦、可扩展性与可靠性。
824 1
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
|
消息中间件 JSON Java
开发者如何使用轻量消息队列MNS
【10月更文挑战第19天】开发者如何使用轻量消息队列MNS
1217 113

相关产品

  • 物联网平台