开发者社区> IoT-sanzyf> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

阿里云物联网平台MQTT通道的动态注册(Python)

简介: 目前阿里云物联网平台MQTT通道的动态注册,仅提供了Java的示例代码。本文基于开源的Paho MQTT库,使用Python进行接入。
+关注继续查看

一、概述

阿里云物联网平台设备的动态注册分为一型一密预注册一型一密免预注册,具体说明与限制请参考官方文档:https://help.aliyun.com/document_detail/132111.html


二、前提条件

控制台前置操作

产品详情页开启“动态注册”

image.png

预注册:表示需要提前在物联网平台控制台上添加好设备。

image.png

免预注册:无需在控制台提前添加设备。


安装开源paho mqtt库

pip install paho-mqtt


下载根证书

目前,动态注册只支持使用TLS建立连接,不支持TCP直连。因此需要下载根证书。

https://aliyun-iot.oss-cn-hangzhou.aliyuncs.com/cert_pub/root.crt


三、代码示例

预注册(上海公共实例)

import hmac
from hashlib import sha1
import paho.mqtt.client as mqtt

def on_message(client, userdata, msg):
    print(str(msg.payload))
    
def on_connect(client, userdata, flags, rc):
    #物联网平台返回的结果码,0表示动态注册成功,其他错误码参考文档排查:https://help.aliyun.com/document_detail/132111.html
    print('rc:'+str(rc))
    
client = mqtt.Client(client_id='12345|securemode=2,authType=register,random=123,signmethod=hmacsha1|')

productKey = '***'
productSecret = '***'
deviceName = 'register_device'
content = 'deviceName' + deviceName + 'productKey' + productKey + 'random' + '123'

username = deviceName + '&' + productKey
password = hmac.new(productSecret.encode(),content.encode(),sha1).hexdigest()

client.username_pw_set(username=username, password=password)
client.on_connect = on_connect
client.on_message = on_message

#设置TLS连接证书路径
client.tls_set('root.crt')

client.connect(host="${productKey}.iot-as-mqtt.cn-shanghai.aliyuncs.com", port=1883)
client.loop_start()
while True:
    1;


运行结果image.png


免预注册(上海公共实例)

import hmac
from hashlib import sha1
import paho.mqtt.client as mqtt

def on_message(client, userdata, msg):
    print(str(msg.payload))

def on_connect(client, userdata, flags, rc):
    # 物联网平台返回的结果码,0表示动态注册成功,其他错误码参考文档排查:https://help.aliyun.com/document_detail/132111.html
    print('rc:' + str(rc))

client = mqtt.Client(client_id='12345|securemode=-2,authType=regnwl,random=123,signmethod=hmacsha1|')

productKey = '***'
productSecret = '***'
deviceName = 'regnwl_device'
content = 'deviceName' + deviceName + 'productKey' + productKey + 'random' + '123'

username = deviceName + '&' + productKey
password = hmac.new(productSecret.encode(),content.encode(),sha1).hexdigest()

client.username_pw_set(username=username, password=password)
client.on_connect = on_connect
client.on_message = on_message

#设置TLS连接证书路径
client.tls_set('root.crt')

client.connect(host="${productKey}.iot-as-mqtt.cn-shanghai.aliyuncs.com", port=1883)
client.loop_start()
while True:
    1;


运行结果

image.png

image.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Can I use MyBatis to generate Dynamic SQL without executing it?
Although MyBatis was designed to execute the query after it builds it, you can make use of it's configuration and a little bit of "inside knowledge" to get to what you need.
671 0
阿里云物联网平台使用mqtt.fx实现设备端功能测试
可参考官方文档实现,本文主要解决文档未提到的一部分问题
0 0
HH
阿里云物联网平台基于MQTT.fx完成OTA升级
物联网平台提供OTA升级与管理服务。下面介绍OTA升级消息的Topic和Alink数据格式,包括设备上报OTA模块版本、物联网平台推送升级包信息、设备上报升级进度和设备请求获取最新升级包信息。
0 0
阿里云物联网平台 “物模型属性” 的分析&&易错点&&上报属性时Payload如何正确组装?
您是否在纠结设备上报了数据,平台到底有没有收到? 您是否很疑惑物模型属性怎么老是不刷新? 您是否不理解物模型属性下发总是不生效? 您是否不知道上报属性时Payload到底该怎么填? 您是否很纳闷物模型属性一会又携带有时间戳,一会又没有? 您是否怀疑能不能自定义物模型属性的时间戳?又如何取到自定义时间戳? 您是否...
0 0
HH
阿里云物联网平台之MQTT.fx连接不上的问题
MQTT.fx是一款基于Eclipse Paho,使用Java语言编写的MQTT客户端工具,支持通过Topic订阅和发布消息。
0 0
应用实战精解系列(三):RVB2601对接阿里云物联网平台
应用实战精解系列(三):RVB2601对接阿里云物联网平台
0 0
应用实战精解系列(三):RVB2601对接阿里云物联网平台
想体验设备连接上云吗?想免费试用RVB2601开发板吗?本期内容带你详细了解。
0 0
阿里云微服务引擎 MSE 2022年5月份产品动态
MSE 注册配置中心专业版首购享 9 折优惠,MSE 云原生网关预付费全规格享 9 折优惠。
0 0
阿里云物联网平台之极速体验
主要讲述首次体验阿里云物联网平台,配置产品、设备以及设备消息推送及后端Java代码消息消费处理等
0 0
阿里云物联网平台设备秘钥认证概述
设备接入物联网平台之前,需通过身份认证。目前,物联网平台支持使用设备密钥、ID²和X.509证书进行设备身份认证。目前用户使用较多的是设备秘钥认证,物联平台目前提供四种设备秘钥认证方案:一机一密、一型一密预注册、一型一密免预注册和子设备动态注册。本文主要通过Code方式分别给出这几种方案的实现。
0 0
+关注
文章
问答
来源圈子
更多
文章排行榜
最热
最新
相关电子书
更多
阿里云物联网平台(五)
立即下载
阿里云物联网平台(六)
立即下载
阿里云物联网平台属性,事件,服务详解
立即下载