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 的值为提交给服务器的参数(ProductKeyDeviceNametimestampclientld),按照字母顺序排序,然后将参数值依次拼接。

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

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

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

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

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

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

Client ID

User Name

Password

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

5.MQTT 保活

小工具里面是60S

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

在进行 MQTT CONNECT 协议设置时:

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

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

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

使用 HTTPS 认证再连接模式

MQTT 保活

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

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

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

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

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


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

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

2.不支持 willretain msg

3.不支持 QOS2

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

4.标准 MQTT 的区别

支持 MQTT PUBSUBPINGPONGCONNETDISCONNECT UNSUB 等报文。

支持 cleanSession

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

不支持 willretain msg.·不支持 QOS2,

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

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

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

6.安全等级

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

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

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

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

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

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

相关文章
|
18天前
|
消息中间件 存储 Serverless
【实践】快速学会使用阿里云消息队列RabbitMQ版
云消息队列 RabbitMQ 版是一款基于高可用分布式存储架构实现的 AMQP 0-9-1协议的消息产品。云消息队列 RabbitMQ 版兼容开源 RabbitMQ 客户端,解决开源各种稳定性痛点(例如消息堆积、脑裂等问题),同时具备高并发、分布式、灵活扩缩容等云消息服务优势。
52 2
|
1月前
|
消息中间件 弹性计算 运维
阿里云云消息队列RabbitMQ实践解决方案评测报告
阿里云云消息队列RabbitMQ实践解决方案评测报告
57 9
|
1月前
|
网络协议 物联网 网络性能优化
物联网江湖风云变幻!MQTT CoAP RESTful/HTTP XMPP四大门派谁主沉浮?
【9月更文挑战第3天】物联网(IoT)的兴起催生了多种通信协议,如MQTT、CoAP、RESTful/HTTP和XMPP,各自适用于不同场景。本文将对比这些协议的特点、优缺点,并提供示例代码。MQTT轻量级且支持QoS,适合大规模部署;CoAP基于UDP,适用于低功耗网络;RESTful/HTTP易于集成但不适合资源受限设备;XMPP支持双向通信,适合复杂交互应用。通过本文,开发者可更好地选择合适的物联网通信协议。
34 2
|
2月前
|
网络协议 物联网 网络性能优化
物联网江湖风云变幻!MQTT CoAP RESTful/HTTP XMPP四大门派谁主沉浮?
【8月更文挑战第14天】本文概览了MQTT、CoAP、RESTful/HTTP及XMPP四种物联网通信协议。MQTT采用发布/订阅模式,轻量高效;CoAP针对资源受限设备,基于UDP,低延迟;RESTful/HTTP易于集成现有Web基础设施;XMPP支持双向通信,扩展性强。每种协议均附有示例代码,助您根据不同场景和设备特性作出最佳选择。
34 5
|
2月前
|
物联网 C# 智能硬件
智能家居新篇章:WPF与物联网的智慧碰撞——通过MQTT协议连接与控制智能设备,打造现代科技生活的完美体验
【8月更文挑战第31天】物联网(IoT)技术的发展使智能家居设备成为现代家庭的一部分。通过物联网,家用电器和传感器可以互联互通,实现远程控制和状态监测等功能。本文将探讨如何在Windows Presentation Foundation(WPF)应用中集成物联网技术,通过具体示例代码展示其实现过程。文章首先介绍了MQTT协议及其在智能家居中的应用,并详细描述了使用Wi-Fi连接方式的原因。随后,通过安装Paho MQTT客户端库并创建MQTT客户端实例,演示了如何编写一个简单的WPF应用程序来控制智能灯泡。
75 0
|
2月前
|
物联网 网络性能优化 Python
"掌握MQTT协议,开启物联网通信新篇章——揭秘轻量级消息传输背后的力量!"
【8月更文挑战第21天】MQTT是一种轻量级的消息传输协议,以其低功耗、低带宽的特点在物联网和移动应用领域广泛应用。基于发布/订阅模型,MQTT支持三种服务质量级别,非常适合受限网络环境。本文详细阐述了MQTT的工作原理及特点,并提供了使用Python `paho-mqtt`库实现的发布与订阅示例代码,帮助读者快速掌握MQTT的应用技巧。
62 0
|
21天前
|
供应链 物联网 区块链
未来技术的浪潮之下——区块链、物联网与虚拟现实的融合与发展
【9月更文挑战第35天】在技术不断进步的今天,新兴技术如区块链、物联网和虚拟现实正在改变我们的生活方式。本文将深入探讨这些技术的发展趋势,以及它们如何在不同领域中应用,从而带来创新和便利。我们将通过具体的例子来展示这些技术如何相互融合,共同推动社会向前发展。
|
2天前
|
存储 供应链 物联网
探索未来:区块链、物联网与虚拟现实技术的融合与创新
【10月更文挑战第15天】本文深入探讨了新兴技术如区块链、物联网(IoT)和虚拟现实(VR)的发展趋势及其在现代社会的应用。通过分析这些技术的独特属性和它们如何相互补充,我们揭示了一个由高度互联、智能化和沉浸式体验定义的未来图景。文章不仅讨论了这些技术当前的挑战,还展望了它们在未来可能带来的转变,旨在为读者提供对这些令人兴奋的技术趋势的全面理解。
|
2天前
|
安全 物联网 区块链
未来已来:探索区块链技术、物联网与虚拟现实的融合趋势
【10月更文挑战第15天】 在数字化浪潮中,区块链、物联网(IoT)和虚拟现实(VR)技术正引领着一场革命。本文将深入探讨这三种技术的发展趋势和相互融合的潜力,以及它们如何共同塑造我们的未来。我们将从基本概念入手,逐步揭示这些技术如何影响经济、社会和日常生活,同时提供具体应用场景以展示其变革力量。
|
4天前
|
传感器 监控 物联网
新技术趋势与应用在科技日新月异的今天,新兴技术如物联网、虚拟现实等正以前所未有的速度改变着我们的生活。本文将深入探讨这些技术的发展趋势和应用场景,揭示它们如何塑造未来。
本文聚焦于物联网和虚拟现实等新兴技术的发展动态及其广泛应用。通过分析当前技术进展、实际应用案例以及未来发展的可能性,本文揭示了这些技术如何深刻影响各行各业,并对未来的趋势进行了展望。

相关产品

  • 物联网平台