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

相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
5天前
|
消息中间件 缓存 物联网
MQTT常见问题之MQTT发送消息到阿里云服务器被拒如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
5天前
|
消息中间件 网络协议 物联网
MQTT常见问题之物联网设备端申请动态注册时MQTT服务不可用如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
5天前
|
XML 编解码 JSON
【开源视频联动物联网平台】协议包管理
【开源视频联动物联网平台】协议包管理
43 1
|
5天前
|
消息中间件 边缘计算 物联网
【开源视频联动物联网平台】如何解决物联网协议多样性问题
【开源视频联动物联网平台】如何解决物联网协议多样性问题
64 0
|
5天前
|
负载均衡 网络协议 安全
【开源视频联动物联网平台】SIP协议的特点
【开源视频联动物联网平台】SIP协议的特点
42 1
|
5天前
|
编解码 移动开发 流计算
【开源视频联动物联网平台】流媒体传输协议HLS,FLV的功能和特点
【开源视频联动物联网平台】流媒体传输协议HLS,FLV的功能和特点
45 2
|
5天前
|
监控 安全 物联网
阿里云mqtt简介和使用流程
本文介绍了阿里云MQTT的准备工作、简介和使用流程。首先,用户需要注册阿里云账号并完成实名认证。接着,通过阿里云物联网平台创建产品和设备,获取连接所需的Broker Address、Port、Username和Password。然后,使用MQTT客户端(如MQTTX)配置这些信息进行连接,并激活设备。最后,创建并订阅/发布自定义Topic,实现设备间的通信。阿里云MQTT是一个适用于物联网设备的轻量级通信协议,提供高并发、高可靠性的服务,广泛应用于各种物联网场景。
阿里云mqtt简介和使用流程
|
5天前
|
消息中间件 传感器 网络协议
阿里云MQTT简介和使用流程
以下是内容的摘要: 该文主要介绍了在阿里云上搭建 MQTT 服务器的步骤。首先,需要注册阿里云账号并进行实名认证。然后,购买阿里云 MQTT 实例,选择合适的类型、地域、连接和消息限制。接着,创建产品和设备,命名并上线,获取 MQTT 连接的相关信息,包括 ProductKey、DeviceName 和 DeviceSecret。通过提供的 MQTT.fx 工具,设置 MQTT 客户端连接参数,包括 Broker 地址、端口、用户名和密码。最后,使用 MQTT.fx 测试连接,实现数据的上报和接收,验证 MQTT 服务器的配置是否成功。
|
5天前
|
消息中间件 存储 JavaScript
阿里云IOC物联网异步处理基础概念
该内容介绍了异步处理基础和消息队列的相关概念。首先,同步处理指任务完成后才能执行其他操作,而异步则允许任务并行执行,不阻塞程序。异步能提高系统并发性和响应性,但也增加复杂性和资源消耗。接着,提到了消息队列,包括生产者、消费者、队列、broker和topic等概念,并指出在IoT中,设备作为生产者发送消息到特定topic,消费者从队列获取数据。最后,简要介绍了AMQP协议,它是用于应用程序间消息传递的开放标准,常用于分布式系统和物联网,如RabbitMQ和Apache Qpid。课程将以Apache Qpid为例接收IoT数据。
132 6
阿里云IOC物联网异步处理基础概念
|
5天前
|
网络协议 Java 物联网
阿里云服务器上搭建 MQTT服务
阿里云服务器上搭建 MQTT服务

相关产品

  • 物联网平台