文件最后提交记录最后更新时间
2 年前
2 年前
2 年前
2 年前
README

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
    }
  ]
}