文档

Python SDK调用示例

更新时间:

您可使用阿里云提供的Python SDK,来调用数据服务的API,从而更便捷地获取指定数据。本文以调用预置指标API为例,介绍Java SDK调用API的方法及示例。

前提条件

  • 如果需要调用预置指标API,需确保已创建产品和设备,并完成数据备份。具体操作,请参见预置指标API

  • 如果需要调用产品数据API或自定义服务API,需确保已创建对应API。具体操作,请参见产品数据API自定义服务API

更多信息,请参见管理与使用

安装SDK

  1. 安装Python开发环境。

    访问Python官网,下载Python安装包,并完成安装。目前,Python SDK支持Python的2.7.x和3.x版本。

  2. 安装Python的包管理工具pip。(如果您已安装pip,请忽略此步骤。)

    访问 pip 官网,下载pip安装包,并完成安装。

  3. 以管理员权限执行以下命令,安装IoT Python SDK。

    以管理员权限执以下命令,安装IoT Python SDK。请参见最新版aliyun-python-sdk-iot信息。

    pip3 install alibabacloud_tea_openapi
    
    # 安装新版本IoT SDK。
    pip3 install alibabacloud_iot20180120
    # 安装指定SDK版本,以3.0.9版本为例。
    pip3 install alibabacloud_iot20180120==3.0.9 
  4. 将IoT Python SDK相关文件引入Python文件。

    from alibabacloud_iot20180120.client import Client
    from alibabacloud_iot20180120.models import ListAnalyticsDataRequest, ListAnalyticsDataRequestCondition
    from alibabacloud_tea_openapi.models import Config

发起调用

以下为调用数据服务下预置指标API中历史至今设备数量相关统计的示例代码。您可参照参数说明,修改对应代码,调用指定的API。

重要

单个阿里云账号调用数据服务API的每秒请求数(QPS)最大限制为100。

from alibabacloud_iot20180120.client import Client
from alibabacloud_iot20180120.models import ListAnalyticsDataRequest, ListAnalyticsDataRequestCondition
from alibabacloud_tea_openapi.models import Config
config = Config(
    access_key_id='LTAI4FyDFmKN************',
    access_key_secret='WF3onkl8cq3cTyVW8n************',
    region_id='cn-shanghai'
)
client = Client(config)
request = ListAnalyticsDataRequest()
#您的API Path
request.api_path = '/iot-cn-npk1v******/system/query/hist_dev_cnt_stat'
#您的API所在的实例ID
request.iot_instance_id = 'iot-cn-npk1v******'
#分页参数:页号
request.page_num = 1
#分页参数:页大小
request.page_size = 100
#您的业务相关的请求参数。Condition的配置说明,请参见下文的相关说明。
conditions = []
condition = ListAnalyticsDataRequestCondition("__instance_id__")
condition.operate = '='
condition.value = 'iot-public'
conditions.append(condition)
condition1 = ListAnalyticsDataRequestCondition("entityId")
condition1.operate = '='
condition1.value = 'all'
conditions.append(condition1)
condition2 = ListAnalyticsDataRequestCondition("statDate")
condition2.operate = '='
condition2.value = '20210221'
conditions.append(condition2)
request.condition = conditions
response = client.list_analytics_data(request)
print(response.body.data)
  • 系统请求参数:

    名称

    类型

    是否必传

    示例值

    描述

    access_key_id

    String

    LTAI4FyDFmKN************

    登录物联网平台控制台,将鼠标移至账号头像上,然后单击AccessKey管理,获取AccessKey ID和AccessKey Secret。

    说明

    登录物联网平台控制台,将鼠标移至账号头像上,然后单击AccessKey管理,获取AccessKey ID和AccessKey Secret。

    access_key_secret

    String

    WF3onkl8cq3cTyVW8n************

    region_id

    String

    cn-shanghai

    地域代码。具体内容,请参见支持的地域

    api_path

    String

    /iot-cn-npk1v******/system/query/hist_dev_cnt_stat

    API路径。在数据服务的API列表下,单击API对应的查看,进入API详情页,可查看API Patch的值。更多信息,请参见管理与使用

    page_num

    Integer

    开启分页时必传

    1

    分页的页码。

    page_size

    Integer

    开启分页时必传

    100

    每页显示结果的条数,最大值为100。

    iot_instance_id

    String

    iot-cn-npk1u******

    API所在的实例ID。

  • 业务相关的请求参数:

    名称

    类型

    是否必传

    说明

    相关代码

    ListAnalyticsDataRequestCondition

    String

    请求参数名称。

    condition = ListAnalyticsDataRequestCondition("__instance_id__")

    operate

    String

    请求参数对应的操作符。可选:

    • =:指定请求参数为特定值。

    • BETWEEN:指定请求参数为特定范围。

    • IN:指定请求参数为多个值。

    • !=:指定请求参数不可为特定值。

    condition.operate = '='

    value

    String

    请求参数的赋值。

    重要

    当操作符为非BETWEEN时,该参数必传。

    condition.value = 'iot-public'

    between_start

    String

    请求参数表示范围时的起始值。

    重要

    请求参数表示范围时的起始值。

    condition.between_start = '0'

    between_end

    String

    当操作符为BETWEEN时,该参数必传。

    重要

    请求参数表示范围时的终止值。

    condition.between_end = '1000'

    一个请求参数对应一个condition。在API详情页,查看API的请求参数,您可配置指定数量的condition关于如何查看API请求参数的信息,请参见管理API

    本文示例代码中,该API有3个请求参数__instance_id__、entityId、statDate分别对应condition condition 1condition 2

运行结果

  • 成功:

    在对应API的详情页,您可查看返回参数的详细说明。具体操作,请参见管理与使用

    以下示例为调用API成功后的结果,即:从2021年2月21日起至调用API时,公共实例下的设备数量相关统计情况。

    {'HasNext': False, 'ResultJson': '[{"statDate":"20210221","actDevCnt":2942,"onlineDevCntCompare":0.00,"livelyDevCntCompare":8.99,"livelyDevCnt":1527,"onlineDevRate":23.08,"crtDevCnt":169025,"livelyDevRate":51.90,"crtDevCntCompare":0.08,"onlineDevCnt":679,"actDevRate":1.74,"actDevCntCompare":4.55}]', 'PageNum': 1, 'PageSize': 100}
  • 失败:

    通过调用失败结果中的错误码,您可了解失败的原因。关于错误码更多信息,请参见错误码

    以下示例为调用API失败后的结果,即:参数__instance_idd__为无效的请求参数,将其更正为__instance_id__后,重新发起调用。

    Python调用失败