阿里云物聯網接口:QueryDevicePropertyData
?說明:調用該接口查詢指定設備或數字孿生節點,在指定時間段內,單個屬性的數據
比如提取上傳到物聯網的溫度數據
api文檔:QueryDevicePropertyData_物聯網平臺_API文檔-阿里云OpenAPI開發者門戶QueryDevicePropertyData調用該接口查詢指定設備或數字孿生節點,在指定時間段內,單個屬性的數據。是物聯網平臺的API文檔,是阿里云OpenAPI開發者門戶提供的OpenAPI開發手冊,包括云產品的OpenAPI、出入參、錯誤碼、變更歷史。https://next.api.aliyun.com/document/Iot/2018-01-20/QueryDevicePropertyData
阿里云物聯網平臺云端SDK下載:
物聯網平臺SDK下載地址和示例_物聯網平臺(IoT)-阿里云幫助中心物聯網平臺云端SDK支持Java、Python、PHP、Node.js、.NET、Go和Swift語言,用于調用云端API,以實現物聯網平臺的云端能力,如產品管理、設備管理、Topic管理、數據流轉規則管理、消息通信等。本文介紹云端SDK的下載地址及使用示例。https://help.aliyun.com/zh/iot/developer-reference/download-iot-platform-sdks-2
搞了好久才搞出來:
-
1、java實現:
-
QueryDeviceTempData.java
package com.example.iot;import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.iot.model.v20180120.QueryDevicePropertyDataRequest;
import com.aliyuncs.iot.model.v20180120.QueryDevicePropertyDataResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;public class QueryDeviceTempData {public static void main(String[] args) {// 阿里云訪問密鑰String accessKeyId = "**";String accessKeySecret = "**";String regionId = "cn-shanghai";// 設備信息String productKey = "**";String deviceName = "**";// 初始化客戶端IClientProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);IAcsClient client = new DefaultAcsClient(profile);// 創建請求QueryDevicePropertyDataRequest request = new QueryDevicePropertyDataRequest();request.setProductKey(productKey);request.setDeviceName(deviceName);request.setIdentifier("indate"); // 溫度屬性標識符request.setStartTime(System.currentTimeMillis() - 3600 * 1000); // 查詢過去一小時的數據request.setEndTime(System.currentTimeMillis());request.setAsc(1); // 按時間升序排列request.setPageSize(10); // 每頁返回的數據條數try {// 發送請求并獲取響應QueryDevicePropertyDataResponse response = client.getAcsResponse(request);System.out.println("Response: " + response);// 解析響應if (response != null && response.getData() != null) {for (QueryDevicePropertyDataResponse.Data.PropertyInfo propertyInfo : response.getData().getList()) {System.out.println("Time: " + propertyInfo.getTime() + ", Value: " + propertyInfo.getValue());}}} catch (ClientException e) {e.printStackTrace();}}
}
-
pom.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>QueryDevicePropertyData</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>21</maven.compiler.source><maven.compiler.target>21</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- 阿里云核心庫 --><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.3</version></dependency><!-- 阿里云物聯網平臺SDK --><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-iot</artifactId><version>7.4.0</version></dependency></dependencies></project>
- java項目結構
-
- java輸出:
Response: com.aliyuncs.iot.model.v20180120.QueryDevicePropertyDataResponse@38d8f54a
Time: 1740729954244, Value: 18.0
Time: 1740730254422, Value: 18.0
Time: 1740730554592, Value: 18.0
Time: 1740730854785, Value: 18.0
Time: 1740731154962, Value: 17.0
?
2、python實現
輸出json格式,想要哪些字段自行解析
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkiot.request.v20180120.QueryDevicePropertyDataRequest import QueryDevicePropertyDataRequest# 設置你的AccessKey ID和AccessKey Secret
access_key_id = '**'
access_key_secret = '**'
region_id = 'cn-shanghai' # 根據你的實際情況選擇region# 創建AcsClient實例
client = AcsClient(access_key_id, access_key_secret, region_id)# 創建QueryDevicePropertyDataRequest實例
request = QueryDevicePropertyDataRequest()
request.set_accept_format('json')# 設置請求參數
request.set_ProductKey('**') # 產品Key
request.set_DeviceName('**') # 設備名稱
request.set_Identifier('temp') # 屬性標識符
request.set_StartTime(1740346648574) # 開始時間,Unix時間戳,單位毫秒
request.set_EndTime(1740357451888) # 結束時間,Unix時間戳,單位毫秒
request.set_PageSize(10) # 每頁記錄數
request.set_Asc(0) # 0表示降序,1表示升序try:# 發送請求并獲取響應response = client.do_action_with_exception(request)print(response.decode('utf-8'))
except ClientException as e:print(e.get_error_code())print(e.get_error_msg())
except ServerException as e:print(e.get_error_code())print(e.get_error_msg())
python程序輸出:{"RequestId":"036BBE41-52E9-5C5F-9312-D561C0D82282","Data":{"NextValid":false,"NextTime":1740355512752,"List":{"PropertyInfo":[{"Value":"-2.0","Time":1740357315548},{"Value":"-2.0","Time":1740357015021},{"Value":"-2.0","Time":1740356714858},{"Value":"-5.0","Time":1740356414687},{"Value":"-5.0","Time":1740356113089},{"Value":"-5.0","Time":1740355812915},{"Value":"-5.0","Time":1740355512754}]}},"Code":"","Success":true}