项目笔记(2):阿里云物联网平台的MQTT链接参数

参考链接和博文

https://help.aliyun.com/document_detail/86706.html    阿里云的说明文档

https://www.cnblogs.com/yangfengwu/p/14615694.html

MQTT连接阿里云物联网三要素的获得

1、登录阿里云物联网平台

2、创建产品和设备

2.1 一机一密

 

2.2 一型一密

创建产品后,在产品界面开启动态注册开关

 

 

3、注册方式

3.1 一机一密

在设备界面获得三要素:

举例如下

"ProductKey": "a1m7er1nJbQ",
"DeviceName": "Mqtt",
"DeviceSecret": "7GUrQwgDUcXWV3EIuLwdEvmRPWcl7VsU"

接下来就是生成MOTT的connect报文的登录三元素

3.1.1 Client ID

一般为了方便clientId都设置为DeviceName

按照文档组成后Client ID:

hmacsha1算法

Mqtt|securemode=3,signmethod=hmacsha1|

或者

hmacmd5算法

Mqtt|securemode=3,signmethod=hmacmd5|

 

3.1.1 username

按照文档组包后username:

Mqtt&a1m7er1nJbQ

 

3.1.2 userpassword

举例子:

上文用到的例子,三元组的值分别为:
ProductKey = a1W5tTrQ113
DeviceName = 866262045260642
DeviceSecret = p1oLkOTT51p22s7hmfNst4gZDHgRMZRU


其中 sign 为 HmacMD5 算法计算出来的哈希值
明文为: clientId866262045260642deviceName866262045260642productKeya1W5tTrQ113
密钥为: p1oLkOTT51p22s7hmfNst4gZDHgRMZRU
计算出来的哈希值为: 3d267f04e7996f2825df13376a66da88
在线加密: http://encode.chahuo.com/

所以密码就是:3d267f04e7996f2825df13376a66da88

 

3.2 一型一密

在第2步开启动态注册后,获取产品的ProductKey和ProductSecret

然后通过HTTP方式获得DeviceSecret,然后在按照第2步计算出三要素注册设备

注意:一型一密动态注册设备后,必须保存DeviceSecret,下次再次上线后还是按照这个DeviceSecret去生成三要素登录

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在使用 Micropython 连接阿里云 MQTT 时,需要计算三元组信息以获取 MQTT 连接参数。三元组包括:设备的 ProductKey、DeviceName 和 DeviceSecret。 下面是计算 MQTT 连接参数的步骤: 1. 首先需要在阿里云 IoT 平台创建一个产品,获取 ProductKey。 2. 在该产品下创建一个设备,获取 DeviceName。 3. 生成 DeviceSecret,可以在设备详情页中进行查看或重新生成。 4. 计算 MQTT 连接参数。 首先需要将 ProductKey、DeviceName 和当前时间(精确到秒)按照以下格式拼接成一个字符串: ``` clientId = "p<productKey>.<deviceName>|timestamp=123456789" ``` 其中,`<productKey>` 为阿里云 IoT 平台中创建的产品的 ProductKey,`<deviceName>` 为该产品下创建的设备的 DeviceName,`123456789` 为当前时间戳。 然后,将 DeviceSecret 和上述字符串进行 HMAC-SHA1 加密,得到一个 20 字节的二进制字符串。 最后,将上述二进制字符串转换为 Base64 编码的字符串,即为设备的 password。 ``` import time import hashlib import hmac import base64 # 三元组信息 productKey = "your_productKey" deviceName = "your_deviceName" deviceSecret = "your_deviceSecret" # 计算时间戳 timestamp = str(int(time.time())) # 组装 clientId clientId = "p{}.{}|timestamp={}".format(productKey, deviceName, timestamp) # 计算 password content = clientId.encode("utf-8") secret = deviceSecret.encode("utf-8") signature = hmac.new(secret, content, hashlib.sha1).digest() password = base64.b64encode(signature).decode("utf-8") print("clientId:", clientId) print("password:", password) ``` 运行上述代码即可得到 clientId 和 password,用于连接阿里云 MQTT

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小薛1988

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值