阿里云物联网平台MQTT通道的动态注册(Python)-阿里云开发者社区

开发者社区> 云服务技术课堂> 正文
登录阅读全文

阿里云物联网平台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

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

分享:

云服务技术课堂,各类技术课程、最佳实践输出,来好好听课吧!

官方博客
最新文章
相关文章