基于开源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版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
1月前
|
消息中间件 存储 Apache
恭喜 Apache RocketMQ、Apache Seata 荣获 2024 开源创新榜单“年度开源项目”
近日,以“新纪天工、开物焕彩——致敬开源的力量”为活动主题的“重大科技成就发布会(首场)”在国家科技传播中心成功举办,并隆重揭晓了 2024 开源创新榜单,旨在致敬中国开源力量,传播推广开源科技成就,营造中国开源创新生态。2024 年开源创新榜单由中国科协科学技术传播中心、中国计算机学会、中国通信学会、中国科学院软件研究所共同主办,中国开发者社区承办,以王怀民院士为首组建评审委员会,进行研讨评审,面向中国开源行业领域,遴选具有创新性、贡献度和影响力的开源项目、社区、应用场景与开源事件。在评审出的 10 个年度开源项目中,Apache RocketMQ、Apache Seata 成功入选。
|
2月前
|
消息中间件 运维 安全
C5GAME 游戏饰品交易平台借助 RocketMQ Serverless 保障千万级玩家流畅体验
游戏行业蓬勃发展,作为国内领先的 STEAM 游戏饰品交易的服务平台,看 C5GAME 如何利用 RocketMQ Serverless 技术,为千万级玩家提供流畅的游戏体验,同时降低成本并提升运维效率。
184 13
C5GAME 游戏饰品交易平台借助 RocketMQ Serverless 保障千万级玩家流畅体验
|
3月前
|
存储 算法 安全
FreeMQTT:一款Python语言实现的开源MQTT Server
FreeMQTT 是一款用 Python 语言并基于 Tornado 开发的开源 MQTT 服务器,支持 MQTT3.1.1 和 MQTT5.0 协议,提供多租户安全隔离、高效 Topic 匹配算法及实时上下线通知等功能,适用于 IoT 场景。快速启动仅需克隆仓库、安装依赖并运行服务。
|
3月前
|
消息中间件 运维 Serverless
商业版vs开源版:一图看懂云消息队列 RocketMQ 版核心优势
自建开源 RocketMQ 集群,为保证业务稳定性,往往需要按照业务请求的峰值去配置集群资源。云消息队列 RocketMQ 版 Serverless 实例通过资源快速伸缩,实现资源使用量与实际业务负载贴近,并按实际使用量计费,有效降低企业的运维压力和使用成本。
230 15
|
3月前
|
消息中间件 弹性计算 运维
一图看懂云消息队列 RabbitMQ 版对比开源优势
一张图带您快速了解云消息队列 RabbitMQ 版对比开源版本的显著优势。
|
4月前
|
消息中间件 存储 Serverless
【实践】快速学会使用阿里云消息队列RabbitMQ版
云消息队列 RabbitMQ 版是一款基于高可用分布式存储架构实现的 AMQP 0-9-1协议的消息产品。云消息队列 RabbitMQ 版兼容开源 RabbitMQ 客户端,解决开源各种稳定性痛点(例如消息堆积、脑裂等问题),同时具备高并发、分布式、灵活扩缩容等云消息服务优势。
166 2
|
5月前
|
消息中间件 弹性计算 运维
阿里云云消息队列RabbitMQ实践解决方案评测报告
阿里云云消息队列RabbitMQ实践解决方案评测报告
100 9
|
5月前
|
XML 网络协议 物联网
基于surging的木舟IOT平台如何添加网络组件
【8月更文挑战第30天】在基于 Surging 的木舟 IOT 平台中添加网络组件需经历八个步骤:首先理解 Surging 及平台架构;其次明确组件需求,选择合适技术库;接着创建项目并配置;然后设计实现网络功能;再将组件集成至平台;接着进行详尽测试;最后根据反馈持续优化与维护。具体实施时应参照最新文档调整。
98 10
|
7月前
|
消息中间件 Java 测试技术
消息队列 MQ使用问题之数据流出规则是否支持平台的云RabbitMQ
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
7月前
|
消息中间件 新零售 弹性计算
云消息队列 RabbitMQ 版入门训练营,解锁对比开源优势与零基础实战
欢迎加入「云消息队列 RabbitMQ 版入门训练营」。
192 22