基于开源MQTT自主接入阿里云IoT平台(总)

简介:

本文由 GXIC 作者 wongxmig 完成,欢迎关注 IoT 开发者社区

1.基于MQTT自主接入IoT

阿里云IoT物联网平台支持MQTT协议自主接入。

1.1 连接域名

根据产品是在区域regionId不同而不同。

${productKey}.iot-as-mqtt.${regionId}.aliyuncs.com:1883

1.2 MQTT的Connect报文

设备端与阿里云IoT平台建立MQTT通道的CONNECT报文有三个关键参数:__客户端标识符 (ClientId) ,用户名(User Name),密码(Password)。__这三个参数由__设备三元组(productKey,deviceName,deviceSecret)__按照阿里云IoT签名规则生成。

参数
生成方式
描述
mqttClientId
clientId+"|securemode=3,signmethod=hmacsha1,timestamp=132323232|"
clientId:表示客户端ID,64字符内。 timestamp:表示当前时间毫秒值。 mqttClientId:格式中||内为扩展参数。 signmethod:表示签名算法类型。 securemode:表示目前安全模式,可选值有2 (TLS加密)和3(普通)
mqttUsername
deviceName+"&"+productKey
mqttPassword
sign_hmac(deviceSecret,content)
sign_hmac为mqttClientId中的signmethod
content为 "clientId${clientId}deviceName${deviceName}productKey${productKey}timestamp${timestamp}"

2. 三元组接入示例

2.1 设备三元组信息

设备三元组
productKey = a14Xib5kdYd
deviceName = light1983432
deviceSecret = oLyaKqVxtRvjH284LdhqVgVUx1UPy6zq

建立MQTT连接时参数
clientId = SN1928339
timestamp = 1539421321846
signmethod = hmacsha1 

2.2 参数生成结果

mqttClientId = SN1928339|securemode=3,signmethod=hmacsha1,timestamp=1539421321846|
mqttUsername = light1983432&a14Xib5kdYd
mqttPassword = b2488041f64f425016b467ee1c94959ebd592ad1

生成password的content
content=clientIdSN1928339deviceNamelight1983432productKeya14Xib5kdYdtimestamp1539421321846

2.3 建立连接

mqttClientId__作为MQTT客户端标识符 (ClientId) __
mqttUsername__作为MQTT用户名(User Name)__
mqttPassword__作为MQTT密码(Password)__

在线算法
https://1024tools.com/hmac
官方文档参考
https://help.aliyun.com/document_detail/63656.html

3. CONNACK响应码

image.png | left | 747x399

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
消息中间件 运维 安全
C5GAME 游戏饰品交易平台借助 RocketMQ Serverless 保障千万级玩家流畅体验
游戏行业蓬勃发展,作为国内领先的 STEAM 游戏饰品交易的服务平台,看 C5GAME 如何利用 RocketMQ Serverless 技术,为千万级玩家提供流畅的游戏体验,同时降低成本并提升运维效率。
1344 151
C5GAME 游戏饰品交易平台借助 RocketMQ Serverless 保障千万级玩家流畅体验
|
消息中间件 存储 Serverless
【实践】快速学会使用阿里云消息队列RabbitMQ版
云消息队列 RabbitMQ 版是一款基于高可用分布式存储架构实现的 AMQP 0-9-1协议的消息产品。云消息队列 RabbitMQ 版兼容开源 RabbitMQ 客户端,解决开源各种稳定性痛点(例如消息堆积、脑裂等问题),同时具备高并发、分布式、灵活扩缩容等云消息服务优势。
571 2
|
XML 网络协议 物联网
基于surging的木舟IOT平台如何添加网络组件
【8月更文挑战第30天】在基于 Surging 的木舟 IOT 平台中添加网络组件需经历八个步骤:首先理解 Surging 及平台架构;其次明确组件需求,选择合适技术库;接着创建项目并配置;然后设计实现网络功能;再将组件集成至平台;接着进行详尽测试;最后根据反馈持续优化与维护。具体实施时应参照最新文档调整。
363 11
|
物联网
(手把手)在华为云、阿里云搭建自己的物联网MQTT消息服务器,免费IOT平台
本文介绍如何在阿里云搭建自己的物联网MQTT消息服务器,并使用 “MQTT客户端调试工具”模拟MQTT设备,接入平台进行消息收发。
4095 42
|
消息中间件 安全 API
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(1)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
954 1
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(1)
|
物联网
如何在腾讯云等平台搭建自己的物联网MQTT服务器Broker
物联网技术及MQTT协议被广泛应用于各种场景。本文介绍物联网MQTT服务助手下载,如何搭建自己的物联网平台,并使用 “MQTT客户端调试工具”模拟MQTT设备,接入平台进行消息收发。
1029 37
EMQ
|
物联网 Linux C语言
在 Windows 平台搭建 MQTT 服务
NanoMQ 有着强大的跨平台和可兼容能力,不仅可以用于以 Linux 为基础的各类平台,也为 Windows 平台提供了 MQTT 服务的新选择。
EMQ
900 265
在 Windows 平台搭建 MQTT 服务
|
消息中间件 Java 测试技术
消息队列 MQ使用问题之数据流出规则是否支持平台的云RabbitMQ
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
物联网 数据挖掘 BI
基于阿里云物联网平台(IoT)的智能家居系统开发与部署
随着物联网技术的发展,智能家居成为提升生活品质的重要方向。阿里云物联网平台提供设备接入、数据管理及应用开发能力,支持亿级设备接入、高效数据管理和灵活应用开发,确保系统安全。本文通过实战案例展示如何基于该平台构建智能家居系统,涵盖设备接入、远程控制、场景联动与数据分析等功能,助力企业快速部署智能家居解决方案。
|
消息中间件 弹性计算 运维
阿里云云消息队列RabbitMQ实践解决方案评测报告
阿里云云消息队列RabbitMQ实践解决方案评测报告
372 9