
# 应用侧Python SDK使用指南
物联网平台提供Python语言的应用侧SDK供开发者使用。本文介绍应用侧 Python SDK的安装和配置，及使用Python SDK调用[应用侧API](https://support.huaweicloud.com/api-iothub/iot_06_v5_0001.html)的示例。
#### SDK获取和安装
1. 安装Python开发环境。 
   访问[Python官网](https://www.python.org/downloads)，下载并按说明安装Python开发环境。
   ![](https://support.huaweicloud.com/sdkreference-iothub/public_sys-resources/note_3.0-zh-cn.png)
   华为云应用侧 Python SDK 支持 **Python3** 及以上版本。
   
   
2. 安装pip工具 
   访问[pip官网](https://pip.pypa.io/en/stable/installing)，下载并按说明安装pip工具。
   
   
3. 安装Python SDK 
   执行如下命令安装华为云Python SDK核心库以及相关服务库
   ```
   # 安装核心库
   pip install huaweicloudsdkcore
   # 安装IoTDA服务库
   pip install huaweicloudsdkiotda
   ```
   
   
 
#### 代码示例
以调用[查询设备列表](https://support.huaweicloud.com/api-iothub/iot_06_v5_0048.html)接口为例，以下代码示例向您展示使用Python SDK的主要步骤：
1. 创建认证。
2. 创建IoTDAClient实例并初始化。
3. 实例化请求对象。
4. 调用查询设备列表接口。 
   ```
   import os
   from huaweicloudsdkcore.exceptions import exceptions
   from huaweicloudsdkcore.region.region import Region
   from huaweicloudsdkiotda.v5 import *
   from huaweicloudsdkcore.auth.credentials import BasicCredentials
   from huaweicloudsdkcore.auth.credentials import DerivedCredentials
   if __name__ == "__main__":
       # 认证用的ak和sk直接写到代码中有很大的安全风险，建议在配置文件或者环境变量中密文存放，使用时解密，确保安全；
       #本示例以ak和sk保存在环境变量中为例，运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。
       ak = os.environ["HUAWEICLOUD_SDK_AK"]
       sk = os.environ["HUAWEICLOUD_SDK_SK"]
       project_id = "<YOUR PROJECTID>"
       # region_id：如果是上海一，请填写"cn-east-3"；如果是北京四，请填写"cn-north-4"；如果是华南广州，请填写"cn-south-1"
       region_id = "<YOUR REGION ID>"
       # endpoint：请在控制台的"总览"界面的"平台接入地址"中查看"应用侧"的https接入地址
       endpoint = "<YOUR ENDPOINT>"
       # 标准版/企业版：需自行创建Region对象
       REGION = Region(region_id, endpoint)
       # 创建认证
       # 创建BasicCredentials实例并初始化
       credentials = BasicCredentials(ak, sk, project_id)
       
       # 标准版/企业版需要使用衍生算法，基础版请删除配置"with_derived_predicate"
       credentials.with_derived_predicate(DerivedCredentials.get_default_derived_predicate())
       
       # 基础版：请选择IoTDAClient中的Region对象 如： .with_region(IoTDARegion.CN_NORTH_4)
       # 标准版/企业版：需要使用自行创建的Region对象
       # 配置是否忽略SSL证书校验， 默认不忽略： .with_http_config(HttpConfig(ignore_ssl_verification=True)) \
       client = IoTDAClient.new_builder() \
           .with_credentials(credentials) \
           .with_region(REGION) \
           .build()
       try:
           # 实例化请求对象
           request = ListDevicesRequest()
           # 调用查询设备列表接口
           response = client.list_devices(request)
           print(response)
       except exceptions.ClientRequestException as e:
           print(e.status_code)
           print(e.request_id)
           print(e.error_code)
           print(e.error_msg)
   ```
   
   | 参数                     | 说明                                                                                                                                                                                                                                                                                                                                                                                       |
   |:---|:---|
   | ak                     | 您的华为云账号访问密钥ID（Access Key ID）。请在华为云控制台"我的凭证 \> 访问密钥"页面上创建和查看您的 AK/SK。更多信息请查看[访问密钥](https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html)。                                                                                                                                                                                                                                        |
   | sk                     | 您的华为云账号秘密访问密钥（Secret Access Key）。                                                                                                                                                                                                                                                                                                                                                        |
   | project_id             | 项目ID。获取方法请参见 [获取项目ID](https://support.huaweicloud.com/api-iothub/iot_06_v5_1001.html)。                                                                                                                                                                                                                                                                                                   |
   | IoTDARegion.CN_NORTH_4 | 请替换为您要访问的物联网平台的区域，当前物联网平台可以访问的区域，在SDK代码[iotda_region.py](https://github.com/huaweicloud/huaweicloud-sdk-python-v3/tree/master/huaweicloud-sdk-iotda/huaweicloudsdkiotda/v5/region/iotda_region.py)中已经定义。 您可以在控制台上查看当前服务所在区域名称，区域名称、区域和终端节点的对应关系，具体步骤请参考[地区和终端节点](https://support.huaweicloud.com/devg-iothub/iot_02_1004.html#section0)。 |
   | region_id              | 如果是上海一，请填写"cn-east-3"；如果是北京四，请填写"cn-north-4"；如果是华南广州，请填写"cn-south-4"                                                                                                                                                                                                                                                                                                                     |
   | endpoint               | 请在控制台的"总览"界面的"平台接入地址"中查看"应用侧"的https接入地址。                                                                                                                                                                                                                                                                                                                                                 |
      
   
   
 
#### 更多
项目源码及更多详细的使用指导请参考[华为云开发者 Python 软件开发工具包（Python SDK）](https://github.com/huaweicloud/huaweicloud-sdk-python-v3/blob/master/README_CN.md)。
推荐您使用API在线调试工具[API Explorer](https://console.huaweicloud.com/apiexplorer/#/apidoc/IoTDA) ，API Explorer 支持快速调试和检索，调试API的同时，可以根据您的参数实时生成各种开发语言的SDK示例代码，方便您直接根据示例代码使用SDK。
