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


三、代码示例

预注册(上海公共实例)

importhmacfromhashlibimportsha1importpaho.mqtt.clientasmqttdefon_message(client, userdata, msg):
print(str(msg.payload))
defon_connect(client, userdata, flags, rc):
#物联网平台返回的结果码,0表示动态注册成功,其他错误码参考文档排查:https://help.aliyun.com/document_detail/132111.htmlprint('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+'&'+productKeypassword=hmac.new(productSecret.encode(),content.encode(),sha1).hexdigest()
client.username_pw_set(username=username, password=password)
client.on_connect=on_connectclient.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()
whileTrue:
1;


运行结果image.png


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

importhmacfromhashlibimportsha1importpaho.mqtt.clientasmqttdefon_message(client, userdata, msg):
print(str(msg.payload))
defon_connect(client, userdata, flags, rc):
# 物联网平台返回的结果码,0表示动态注册成功,其他错误码参考文档排查:https://help.aliyun.com/document_detail/132111.htmlprint('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+'&'+productKeypassword=hmac.new(productSecret.encode(),content.encode(),sha1).hexdigest()
client.username_pw_set(username=username, password=password)
client.on_connect=on_connectclient.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()
whileTrue:
1;


运行结果

image.png

image.png

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
1月前
|
消息中间件 存储 Serverless
【实践】快速学会使用阿里云消息队列RabbitMQ版
云消息队列 RabbitMQ 版是一款基于高可用分布式存储架构实现的 AMQP 0-9-1协议的消息产品。云消息队列 RabbitMQ 版兼容开源 RabbitMQ 客户端,解决开源各种稳定性痛点(例如消息堆积、脑裂等问题),同时具备高并发、分布式、灵活扩缩容等云消息服务优势。
92 2
|
3月前
|
消息中间件 存储 缓存
Python之RabbitMQ操作
Python之RabbitMQ操作
|
17天前
|
机器学习/深度学习 自然语言处理 API
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程。通过简单的代码示例,展示如何将文本转换为自然流畅的语音,适用于有声阅读、智能客服等场景。
72 3
|
1月前
|
机器学习/深度学习 物联网 数据处理
C语言用于物联网更合适还是python
选择 C 语言还是 Python 作为物联网(IoT)开发的语言取决于多个因素,包括项目的性质、资源限制、性能需求以及开发团队的技能水平。C 语言性能优越,适合资源受限的嵌入式设备,能直接访问硬件,广泛应用于底层开发,但开发复杂且容易出错。Python 则以其简单的语法和丰富的库支持快速开发和原型制作,适合跨平台应用和数据处理,但性能较低,资源占用较大。根据项目需求,性能和资源要求高时选择 C 语言,需快速开发和易于维护时选择 Python。
|
2月前
|
消息中间件 弹性计算 运维
阿里云云消息队列RabbitMQ实践解决方案评测报告
阿里云云消息队列RabbitMQ实践解决方案评测报告
76 9
|
3月前
|
弹性计算 API 开发工具
揭秘Python与阿里云API的神秘邂逅!流式处理的魔法之旅,一场颠覆想象的技术盛宴!
【8月更文挑战第15天】在数字世界的广阔舞台上,Python与阿里云API的相遇,就像是一场命中注定的邂逅。它们携手共舞,为我们带来了流式处理的魔法之旅。本文将揭开这场神秘邂逅的面纱,带你领略Python与阿里云API之间的奇妙互动。让我们一起踏上这场颠覆想象的技术盛宴,探索流式处理的无限可能!
86 7
|
3月前
|
弹性计算 JSON 开发工具
"一键玩转阿里云ECS!Python大神揭秘:如何自动化创建镜像并跨地域复制,让你的云资源部署秒变高效达人!"
【8月更文挑战第14天】本文介绍如何使用Python与阿里云SDK自动化管理ECS镜像,包括创建镜像及跨地域复制,以优化云资源部署。首先安装`aliyun-python-sdk-ecs`并配置阿里云凭证。接着,通过Python脚本实现镜像创建与复制功能,简化日常运维工作并增强灾难恢复能力。注意权限及费用问题。
90 2
|
3月前
|
关系型数据库 数据库 数据安全/隐私保护
"告别繁琐!Python大神揭秘:如何一键定制阿里云RDS备份策略,让数据安全与效率并肩飞,轻松玩转云端数据库!"
【8月更文挑战第14天】在云计算时代,数据库安全至关重要。阿里云RDS提供自动备份,但标准策略难以适应所有场景。传统手动备份灵活性差、管理成本高且恢复效率低。本文对比手动备份,介绍使用Python自定义阿里云RDS备份策略的方法,实现动态调整备份频率、集中管理和智能决策,提升备份效率与数据安全性。示例代码演示如何创建自动备份任务。通过自动化与智能化备份管理,支持企业数字化转型。
102 2
|
3月前
|
消息中间件 监控 调度
Celery与RabbitMQ的结合【Python】
【8月更文挑战第18天】 Celery与RabbitMQ结合是构建高效Python分布式系统的利器。Celery作为分布式任务队列,支持任务调度与结果管理;RabbitMQ则确保了消息的可靠传递。二者联用不仅提升了系统的异步处理能力,还增强了其扩展性与可靠性。通过简单的安装与配置,即可实现任务的异步执行与调度,同时利用监控工具优化性能并确保安全性。这种组合适用于需要处理大量异步任务的应用场景,极大地简化了分布式系统的设计与实现。
66 0
|
4月前
|
消息中间件 分布式计算 DataWorks
DataWorks产品使用合集之如何使用Python和阿里云SDK读取OSS中的文件
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。

相关产品

  • 物联网平台
  • 下一篇
    无影云桌面