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 使用就十分放心的。

相关文章
|
14天前
|
传感器 消息中间件 物联网
常用的物联网协议
常用的物联网协议包括:MQTT(消息队列遥测传输)、CoAP(受限应用协议)、HTTP/HTTPS、LWM2M(轻量级机器对机器)和Zigbee等。这些协议在不同的应用场景中发挥着重要作用,如数据传输、设备管理等。
|
1月前
|
网络协议 物联网 网络性能优化
物联网协议比较 MQTT CoAP RESTful/HTTP XMPP
【10月更文挑战第18天】本文介绍了物联网领域中四种主要的通信协议:MQTT、CoAP、RESTful/HTTP和XMPP,分别从其特点、应用场景及优缺点进行了详细对比,并提供了简单的示例代码。适合开发者根据具体需求选择合适的协议。
53 5
|
10天前
|
消息中间件 监控 物联网
物联网8大协议介绍及对比
根据具体的应用需求,选择合适的协议可以大幅提升系统的性能和可靠性。希望本文能为您在物联网协议的选择和应用中提供有价值的参考。
59 0
|
1月前
|
存储 边缘计算 物联网
阿里云物联网平台:推动万物互联的智能化解决方案
随着物联网技术的快速发展,阿里云物联网平台为企业提供了一体化的解决方案,包括设备接入、数据管理和智能应用等核心功能。平台支持海量设备接入、实时数据采集与存储、边缘计算,并具备大规模设备管理、高安全性和开放生态等优势。广泛应用于智能制造、智慧城市和智能家居等领域,助力企业实现数字化转型。
180 5
|
2月前
|
网络协议 物联网 网络性能优化
物联网江湖风云变幻!MQTT CoAP RESTful/HTTP XMPP四大门派谁主沉浮?
【9月更文挑战第3天】物联网(IoT)的兴起催生了多种通信协议,如MQTT、CoAP、RESTful/HTTP和XMPP,各自适用于不同场景。本文将对比这些协议的特点、优缺点,并提供示例代码。MQTT轻量级且支持QoS,适合大规模部署;CoAP基于UDP,适用于低功耗网络;RESTful/HTTP易于集成但不适合资源受限设备;XMPP支持双向通信,适合复杂交互应用。通过本文,开发者可更好地选择合适的物联网通信协议。
40 2
|
2月前
|
消息中间件 监控 物联网
MQTT协议对接及RabbitMQ的使用记录
通过合理对接MQTT协议并利用RabbitMQ的强大功能,可以构建一个高效、可靠的消息通信系统。无论是物联网设备间的通信还是微服务架构下的服务间消息传递,MQTT和RabbitMQ的组合都提供了一个强有力的解决方案。在实际应用中,应根据具体需求和环境进行适当的配置和优化,以发挥出这两个技术的最大效能。
181 0
|
3月前
|
物联网 C# 智能硬件
智能家居新篇章:WPF与物联网的智慧碰撞——通过MQTT协议连接与控制智能设备,打造现代科技生活的完美体验
【8月更文挑战第31天】物联网(IoT)技术的发展使智能家居设备成为现代家庭的一部分。通过物联网,家用电器和传感器可以互联互通,实现远程控制和状态监测等功能。本文将探讨如何在Windows Presentation Foundation(WPF)应用中集成物联网技术,通过具体示例代码展示其实现过程。文章首先介绍了MQTT协议及其在智能家居中的应用,并详细描述了使用Wi-Fi连接方式的原因。随后,通过安装Paho MQTT客户端库并创建MQTT客户端实例,演示了如何编写一个简单的WPF应用程序来控制智能灯泡。
121 0
|
30天前
|
消息中间件 JSON Java
开发者如何使用轻量消息队列MNS
【10月更文挑战第19天】开发者如何使用轻量消息队列MNS
71 4
|
24天前
|
消息中间件 存储 Kafka
MQ 消息队列核心原理,12 条最全面总结!
本文总结了消息队列的12个核心原理,涵盖消息顺序性、ACK机制、持久化及高可用性等内容。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
|
1月前
|
消息中间件 安全 Java
云消息队列RabbitMQ实践解决方案评测
一文带你详细了解云消息队列RabbitMQ实践的解决方案优与劣
72 7

相关产品

  • 物联网平台
  • 下一篇
    无影云桌面