时间序列数据
某些设备参数支持获取时间序列数据。可以通过检查其 properties 数组中是否包含 "time_series" 或 "simple_ts" 来识别这些参数。当某个设备参数具有这些属性时,表示该参数为时间序列参数,可通过专用方法访问历史数据。
如何识别时间序列参数
要检查某个参数是否支持时间序列数据,请查看其 properties 数组:
try {
const response = await userInstance.getUserNodes();
const node = response.nodes[0];
const nodeConfig = node.nodeConfig || await node.getNodeConfig();
// 检查设备参数是否支持时间序列
nodeConfig.devices.forEach((device) => {
device.params?.forEach((param) => {
if (param.properties && (
param.properties.includes("time_series") ||
param.properties.includes("simple_ts")
)) {
console.log(`Device parameter ${param.name} supports time series data`);
// 此参数可使用 getRawTSData、getSimpleTSData 或 getTSData
}
});
});
} catch (error) {
console.error("Error checking time series parameters:", error);
}
获取时间序列数据
时间序列参数支持三种获取历史数据的方法:
getRawTSData- 以分页形式获取未聚合的原始时间序列数据。getSimpleTSData- 以基础分页方式获取简单时间序列数据。getTSData- 获取具备高级聚合选项的时间序列数据。
例程:使用 getRawTSData
getRawTSData 方法以分页格式返回原始时间序列数据。该方法在内部使用带原始聚合的 getTSData。
try {
const response = await userInstance.getUserNodes();
const node = response.nodes[0];
const nodeConfig = node.nodeConfig || await node.getNodeConfig();
// 找到一个支持时间序列的设 备参数
const device = nodeConfig.devices[0];
const timeSeriesParam = device.params.find(
param => param.properties && (
param.properties.includes("time_series") ||
param.properties.includes("simple_ts")
)
);
if (timeSeriesParam) {
const request = {
startTime: Date.now() - 7 * 24 * 60 * 60 * 1000, // 7 天前
endTime: Date.now(),
resultCount: 100,
descOrder: false,
timezone: "America/Los_Angeles"
};
let tsResponse = await timeSeriesParam.getRawTSData(request);
console.log("Time series data:", tsResponse.tsData);
// 处理分页
while (tsResponse.hasNext) {
tsResponse = await tsResponse.fetchNext();
console.log("Next page of data:", tsResponse.tsData);
}
}
} catch (error) {
console.error("Error fetching raw time series data:", error);
}