- 最新动态
- 功能总览
- 服务公告
- 计费说明
- 产品介绍
- 快速入门
- 用户指南
- 最佳实践
- 开发指南
-
API参考
- 应用侧API参考
- 设备侧MQTT/MQTTS接口参考
- 设备侧HTTPS接口参考
- 设备侧LwM2M接口参考
- 安全隧道WebSocket接口参考
- 模组AT指令参考
- 修订记录
- SDK参考
- 场景代码示例
-
常见问题
- 热门问题
-
方案咨询
- 连接IoT平台的业务场景有哪些?
- 设备管理服务和设备接入服务合一后的差异点是什么?
- IAM子用户或子项目是否可以开通物联网平台服务?
- 物联网平台支持在华为云的哪些区域开通?
- 华为是否提供模组/硬件终端/应用软件等?
- IAM用户访问API提示没有权限?(是否区分版本?)
- 创建规则或者设置资源文件存储时候提示赋予Security Administrator权限
- 物联网平台设置默认资源空间的规则是什么?
- 设备接入服务如何获取设备数据?
- 物联网平台的资源空间和设备可以无限创建吗?
- 物联网平台支持批量注册设备吗?
- 物联网平台对应用侧和设备侧在开发或使用时有限制吗?
- 物联网平台支持的DTLS加密算法有哪些?
- 物联网平台支持二进制大小端模式切换吗?
- 什么是NB-IoT?
- 物联网平台支持的硬件架构和使用的相关组件有哪些?
- 如何获取平台接入地址?
- 设备集成相关问题
- 设备侧SDK相关问题
- 设备发放相关问题
- LWM2M/CoAP接入相关问题
- MQTT接入相关问题
- 泛协议接入相关问题
- 物模型相关问题
- 消息通信相关问题
- 订阅推送相关问题
- 编解码插件相关问题
- OTA升级相关问题
- 应用集成相关问题
- 实例管理相关问题
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
Python Demo使用说明
概述
本文以Python语言为例,介绍通过MQTTS/MQTT协议接入平台,基于平台接口实现“属性上报”、“订阅接收命令”等功能。
前提条件
准备工作
- 安装python
- 访问python官网,选择合适系统的版本下载并安装。(本文以windows系统为例,安装python3.8.2)。
- 下载完成后,运行exe文件进行安装。
- 勾选“Add python 3.8 to PAYTH”(如无勾选,需手动配置环境变量),单击“Customize installation”,按照界面提示安装。
- 检查python是否安装成功。
Win键 + r -->输入 cmd-->回车,进入命令行窗口,输入python –V,回车后显示python版本即表示安装成功。
- 访问python官网,选择合适系统的版本下载并安装。(本文以windows系统为例,安装python3.8.2)。
- 安装Pycharm。(如已安装,请跳过此步骤)
- 访问Pycharm官网,选择合适的版本单击“Download”下载。
注:推荐使用专业版。
- 运行exe文件,按照界面提示安装。
- 访问Pycharm官网,选择合适的版本单击“Download”下载。
导入代码样例
- 下载QuickStart(Python)样例。
- 运行PyCharm,单击Open,选择步骤1中下载的样例。
- 完成代码导入。
代码目录简述:
- IoT_device_demo:使用MQTT协议的demo文件;
message_sample.py:设备发送消息和接收平台消息的demo;
command_sample.py:响应平台下发命令的demo;
properties_sample.py:属性上报等的demo;
- IoT_device/client:对paho-mqtt进行了封装;
IoT_client_config.py:配置客户端信息,如设备id、密钥等;
IoT_client.py:提供mqtt协议相关功能,如连接、订阅、发布和响应等;
- IoT_device/Utils:工具方法,如获取时间戳、密钥加密等;
- IoT_device/resources:存放证书;
DigiCertGlobalRootCA.crt.pem:设备校验平台身份的证书,用于设备侧接入物联网平台登录鉴权使用,可以在资源获取中下载证书文件。
- IoT_device/request:对设备相关属性进行封装,如命令、消息和属性等。
- IoT_device_demo:使用MQTT协议的demo文件;
- (可选)安装paho-mqtt库,paho-mqtt是python使用mqtt协议的第三方库(如已安装,可跳过)。可参考如下两种安装方式:
建立连接
设备或网关在接入物联网平台时首先需要和平台建立连接,从而将设备或网关与平台进行关联。开发者通过传入设备信息,将设备或网关连接到物联网平台。
- IoTClientConfig类主要提供配置客户端相关信息的功能,在建立连接之前,先修改以下参数。
1 2 3 4
# 客户端配置 client_cfg = IoTClientConfig(server_ip='iot-mqtts.cn-north-4.myhuaweicloud.com', device_id='5e85a55f60b7b804c51ce15c_py123', secret='******', is_ssl=True) # 创建设备 iot_client = IotClient(client_cfg)
- 调用 connect 方法进行连接。
iot_client.connect()
如果连接成功会打印:
-----------------Connection successful !!!
注:如果连接失败,在retreat_reconnection函数中已实现退避重连,代码样例如下:
# 退避重连 def retreat_reconnection(self): print("---- 退避重连") global retryTimes minBackoff = 1 maxBackoff = 30 defaultBackoff = 1 low_bound = (int)(defaultBackoff * 0.8) high_bound = (int)(defaultBackoff * 1.2) random_backoff = random.randint(0, high_bound - low_bound) backoff_with_jitter = math.pow(2.0, retryTimes) * (random_backoff + low_bound) wait_time_until_next_retry = min(minBackoff + backoff_with_jitter, maxBackoff) print("the next retry time is ", wait_time_until_next_retry, " seconds") retryTimes += 1 time.sleep(wait_time_until_next_retry) self.connect()
订阅Topic
订阅某Topic的设备才能接收broker发布的关于该Topic的消息,关于平台预置Topic可参考Topic定义。
在message_sample.py文件中提供了订阅Topic、取消订阅Topic和设备消息上报等功能。
订阅命令下发Topic方式如下:
1 |
iot_client.subscribe(r'$oc/devices/' + str(self.__device_id) + r'/sys/commands/#') |
如果订阅成功会打印(Topic为自定义的Topic,如上Topic_1):
------You have subscribed: topic
响应命令下发
在command_sample.py文件中提供了响应平台下发命令的功能。详细接口信息请参考命令下发接口。
1 2 3 4 5 |
# 响应平台下发的命令 def command_callback(request_id, command): # result_code:设置为0命令下发成功,为1下发命令失败 iot_client.respond_command(request_id, result_code=0) iot_client.set_command_callback(command_callback) |
属性上报
属性上报是指设备主动向平台上报自己的属性。更多接口信息请参考设备属性上报。
在properties_sample.py文件中实现了设备属性上报、响应平台设置与查询设备属性的功能。
如下代码实现了设备每隔10秒向平台上报属性的功能,service_property为设备属性对象,具体可在services_propertis.py文件查看。
1 2 3 4 5 6 7 |
# 定时上报属性 while True: # 按照产品模型设置属性 service_property = ServicesProperties() service_property.add_service_property(service_id="Battery", property='batteryLevel', value=1) iot_client.report_properties(service_properties=service_property.service_property, qos=1) time.sleep(10) |
设备上报属性成功后可在设备详情页面查看到上报的属性。

如果在“设备详情”页面没有最新上报数据,请确认设备上报的服务/属性和产品模型中的服务/属性一致。
消息上报
消息上报是指设备向平台上报消息。message_sample.py文件中提供了消息上报的功能。
1 2 |
# 设备向平台发送消息,系统默认topic iot_client.publish_message('raw message: Hello Huawei cloud IoT') |
消息上报成功后会打印:
Publish success---mid = 1