Time Series Data
Query historical data from device parameters that support time series storage.
信息
For parameters outside node config, see Custom Parameter Time Series.
What This Module Does ?
Query historical values for device parameters that store time series—energy, temperature, sensor readings—with date ranges, pagination, and optional aggregation.
Use this for charts, trend analysis, and reporting. Parameters need "time_series" or "simple_ts" in their properties array.
Not in node config? Use Custom Parameter Time Series.
Expected outcome: Timestamp/value data points (and optional pagination) for the requested range.
Common Workflows
Fetch last 24 hours
const { nodes } = await userInstance.getUserNodes();
const nodeConfig = nodes[0].nodeConfig ?? (await nodes[0].getNodeConfig());
const param = nodeConfig.devices[0].params.find(
(p) => p.properties?.includes("time_series")
);
const response = await param.getRawTSData({
startTime: Date.now() - 24 * 60 * 60 * 1000,
endTime: Date.now(),
resultCount: 100,
});
response.tsData.forEach((point) => {
console.log(new Date(point.timestamp), point.value);
});
Find time-series parameters
device.params.forEach((param) => {
if (param.properties?.includes("time_series") || param.properties?.includes("simple_ts")) {
console.log(`${param.name} supports time series`);
}
});
Raw data with pagination
let tsResponse = await param.getRawTSData({
startTime: startTimestamp,
endTime: endTimestamp,
resultCount: 100,
timezone: "America/Los_Angeles",
});
while (tsResponse.hasNext) {
tsResponse = await tsResponse.fetchNext();
}
Aggregated data
const tsResponse = await param.getTSData({
startTime: startTimestamp,
endTime: endTimestamp,
numIntervals: 24,
aggregate: "avg",
aggregationInterval: "hour",
});
Simple query
const tsResponse = await param.getSimpleTSData({
startTime: startTimestamp,
endTime: endTimestamp,
resultCount: 50,
});
Error Handling
try {
if (!param.properties?.includes("time_series")) return;
await param.getRawTSData(request);
} catch (error) {
console.error("Time series query failed:", error);
}
Advanced Concepts
Choosing a query method
Best Practices
- Check
propertiesbefore querying - Paginate large ranges
- Set
timezonefor accurate boundaries - Prefer
getSimpleTSData()unless you need aggregation
Related Resource
- API Reference: