| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 |
1、功能介绍
华为云提供了IoTDA服务端SDK,您可以直接集成服务端SDK来调用IoTDA的相关API,从而实现对IoTDA的快速操作。 该示例展示了如何通过python版SDK来实现对设备影子进行配置,查询,批量配置设备影子操作。
设备影子:物联网平台支持创建设备的“影子”。设备影子是一个JSON文件,用于存储设备的在线状态、设备最近一次上报的设备属性值、应用服务器期望下发的配置。 每个设备有且只有一个设备影子,设备可以获取和设置设备影子以此来同步设备属性值,这个同步可以是影子同步给设备,也可以是设备同步给影子。 详情请参考设备影子
您将学到什么?
如何通过python版SDK来实现对配置设备影子,以及查询设备影子的功能。
2、前置条件
- 1、已经开通华为云账号,并获得到您账号对应的Access Key(AK)和 Secret Access Key(SK)。请在华为云控制台“我的凭证 > 访问密钥”页面上创建和查看您的AK/SK。具体请参见 访问密钥 。
- 2、已具备开发环境 ,支持Python3及其以上版本。
- 3、获取您对应区域的项目ID,请在控制台“我的凭证 > API凭证”页面上查看项目ID。您可以参考获取项目ID
- 4、已经开通IoTDA服务,获取当前实例的实例ID,请参考查看实例详情 。
- 5、已经在平台注册一个设备,建议设备处于在线状态,可以观察到平台与设备交互过程。
3、SDK获取和安装
执行如下命令安装华为云Python SDK核心库以及相关服务库
# 安装核心库
pip install huaweicloudsdkcore
# 安装IoTDA服务库
pip install huaweicloudsdkiotda
4、接口参数说明
关于接口参数的详细说明可参见:
5、关键代码片段
5.1、配置设备影子期望值
@staticmethod
def __update_shadow(iotda_client, device_id, body):
"""
更新设备影子
@param iotda_client iotda client
@param device_id 需要配置影子的设备ID
@param body 需要配置设备影子的结构体
"""
request = UpdateDeviceShadowDesiredDataRequest()
request.device_id = device_id
request.body = body
request.instance_id = DeviceShadow.__INSTANCE_ID
response = iotda_client.update_device_shadow_desired_data(request)
print("创建设备影子的结果为:", response)
5.2、查询设备影子详情
@staticmethod
def __query_shadow_detail(iotda_client, device_id):
"""
查询设备影子详情
@param iotda_client iotda client
@param device_id 设备ID
"""
request = ShowDeviceShadowRequest()
request.instance_id = DeviceShadow.__INSTANCE_ID
request.device_id = device_id
message_response = iotda_client.show_device_shadow(request)
print("查询设备影子的结果为:", message_response)
5.3、创建批量任务
@staticmethod
def __create_task(iotda_client, create_batch_task):
"""
创建批量任务
@param iotda_client iotda client
@param createBatchTask 创建批量任务结构体
@return 创建完成后获取的任务
"""
request = CreateBatchTaskRequest()
request.instance_id = DeviceShadow.__INSTANCE_ID
request.body = create_batch_task
batch_task = iotda_client.create_batch_task(request)
print("创建批量任务的结果为:", batch_task)
return batch_task
5.4、查询批量任务详情
@staticmethod
def __query_task(iotda_client, task_id):
"""
查询批量任务详情
@param iotda_client iotda client
@param taskId 任务ID
@return 返回任务整体情况
"""
request = ShowBatchTaskRequest()
request.instance_id = DeviceShadow.__INSTANCE_ID
request.task_id = task_id
show_batch_task_response = iotda_client.show_batch_task(request)
print("查询任务详情的结果为:", show_batch_task_response)
return show_batch_task_response.batchtask
6、运行结果
如果您替换main方法的参数,并按照main方法的顺序执行,程序将演示如果配置设备影子,查询设备影子,批量配置设备影子。 以下为main方法中每一个步骤的运行结果。
6.1 查询设备影子详情(配置设备影子前)
{
"device_id": "64111bcd06ca5933b28a058b_7758dsfdsfsd",
"shadow": [
{
"service_id": "BasicData",
"desired": {
"properties": {},
"event_time": "20230829T083942Z"
},
"reported": {
"properties": {
"luminance": "2"
},
"event_time": "20230904T021317Z"
},
"version": 22
}
]
}
6.2 配置设备影子
{
"device_id": "64111bcd06ca5933b28a058b_7758dsfdsfsd",
"shadow": [
{
"service_id": "BasicData",
"desired": {
"properties": {
"luminance": 99
},
"event_time": "20230904T095758Z"
},
"reported": {
"properties": {
"luminance": "2"
},
"event_time": "20230904T021317Z"
},
"version": 23
}
]
}
6.3 查询设备影子(配置设备影子后)
{
"device_id": "64111bcd06ca5933b28a058b_7758dsfdsfsd",
"shadow": [
{
"service_id": "BasicData",
"desired": {
"properties": {
"luminance": 99
},
"event_time": "20230904T095758Z"
},
"reported": {
"properties": {
"luminance": "2"
},
"event_time": "20230904T021317Z"
},
"version": 23
}
]
}
6.4 创建批量任务
{
"task_id": "64f5bf901a98d00c657d2886",
"task_name": "batchShadows_1",
"task_type": "updateDeviceShadows",
"targets": [
"64111bcd06ca5933b28a058b_7758dsfdsfsd"
],
"targets_filter": {},
"document": {
"shadow": [
{
"service_id": "BasicData",
"desired": {
"luminance": 100
}
}
]
},
"task_policy": {},
"status": "Initializing",
"task_progress": {
"total": 0,
"processing": 0,
"success": 0,
"fail": 0,
"waitting": 0,
"fail_wait_retry": 0,
"stopped": 0,
"removed": 0
},
"create_time": "20230904T112920Z"
}
6.5 查询批量任务详情
{
"batchtask": {
"task_id": "64f5bf901a98d00c657d2886",
"task_name": "batchShadows_1",
"task_type": "updateDeviceShadows",
"targets": [
"64111bcd06ca5933b28a058b_7758dsfdsfsd"
],
"targets_filter": {},
"document": {
"shadow": [
{
"service_id": "BasicData",
"desired": {
"luminance": 100
}
}
]
},
"task_policy": {},
"status": "Processing",
"status_desc": "",
"task_progress": {
"total": 1,
"processing": 1,
"success": 0,
"fail": 0,
"waitting": 0,
"fail_wait_retry": 0,
"stopped": 0,
"removed": 0
},
"create_time": "20230904T112920Z"
},
"task_details": [
{
"target": "64111bcd06ca5933b28a058b_7758dsfdsfsd",
"status": "Processing",
"error": {}
}
],
"page": {
"count": 1,
"marker": "64f5bf901a98d00c657d2888"
}
}
6.6 查询设备影子详情(批量任务后)
{
"device_id": "64111bcd06ca5933b28a058b_7758dsfdsfsd",
"shadow": [
{
"service_id": "BasicData",
"desired": {
"properties": {
"luminance": 100
},
"event_time": "20230904T112930Z"
},
"reported": {
"properties": {
"luminance": "2"
},
"event_time": "20230904T021317Z"
},
"version": 24
}
]
}
6.7 删除设备影子期望值
{
"device_id": "64111bcd06ca5933b28a058b_7758dsfdsfsd",
"shadow": [
{
"service_id": "BasicData",
"desired": {
"properties": {},
"event_time": "20230904T112931Z"
},
"reported": {
"properties": {
"luminance": "2"
},
"event_time": "20230904T021317Z"
},
"version": 25
}
]
}
6.8 查询设备影子详情完成(删除设备影子后)
{
"device_id": "64111bcd06ca5933b28a058b_7758dsfdsfsd",
"shadow": [
{
"service_id": "BasicData",
"desired": {
"properties": {},
"event_time": "20230904T112931Z"
},
"reported": {
"properties": {
"luminance": "2"
},
"event_time": "20230904T021317Z"
},
"version": 25
}
]
}