您可使用阿里云提供的Python SDK,來調用數據服務的API,從而更便捷地獲取指定數據。本文以調用預置指標API為例,介紹Java SDK調用API的方法及示例。
前提條件
如果需要調用預置指標API,需確保已創建產品和設備,并完成數據備份。具體操作,請參見預置指標API。
如果需要調用產品數據API或自定義服務API,需確保已創建對應API。具體操作,請參見產品數據API和自定義服務API。
更多信息,請參見管理與使用。
安裝SDK
安裝Python開發環境。
訪問Python官網,下載Python安裝包,并完成安裝。目前,Python SDK支持Python的2.7.x和3.x版本。
安裝Python的包管理工具pip。(如果您已安裝pip,請忽略此步驟。)
訪問 pip 官網,下載pip安裝包,并完成安裝。
以管理員權限執行以下命令,安裝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
將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 1
、condition 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__
后,重新發起調用。