Csv 在时间序列图的Thingsboard上显示逗号分隔的数据
我从一个设备上获取逗号叉标的温度数据,其中最后一个条目是最后一个,第一个是1小时前的数据。提供的数据是过去一小时内每分钟的温度 我得到的json数据如下: 温度19.2,23.4,18.3。。。。。。23.0,18.2 如何在时间序列图的黑板上以适当的时间显示它 谢谢 您可以使用将JSON转换为所需的格式 假设您能够通过或使用以下有效负载向平台发送设备数据:Csv 在时间序列图的Thingsboard上显示逗号分隔的数据,csv,charts,thingsboard,Csv,Charts,Thingsboard,我从一个设备上获取逗号叉标的温度数据,其中最后一个条目是最后一个,第一个是1小时前的数据。提供的数据是过去一小时内每分钟的温度 我得到的json数据如下: 温度19.2,23.4,18.3。。。。。。23.0,18.2 如何在时间序列图的黑板上以适当的时间显示它 谢谢 您可以使用将JSON转换为所需的格式 假设您能够通过或使用以下有效负载向平台发送设备数据: { "temp": [22, 3, 45] } 然后,您可以使用将有效负载(POST_TELEMETRY
{
"temp": [22, 3, 45]
}
然后,您可以使用将有效负载(POST_TELEMETRY事件的msg
字段)转换为如下格式,该格式可以存储在数据库中并直接从timeseries小部件显示:
[{
"ts": 1618296229874,
"values": {
"temp": 45
}
}, {
"ts": 1618296169874,
"values": {
"temp": 3
}
}, {
"ts": 1618296109874,
"values": {
"temp": 22
}
}]
此外,如果必须区分不同类型的遥测格式,则可能需要上游。生成的完整工作规则链如下所示:
假设您的特定设备在Thingsboard中配置了设备类型的多值恒温器,您可以按如下方式配置交换机节点的功能:
function nextRelation(metadata, msg) {
return ['other'];
}
if(metadata.deviceType === 'MULTIVALUE THERMOSTAT') {
return ['multivalue'];
}
return nextRelation(metadata, msg);
这是脚本转换节点的功能:
var tempArray = msg.temp;
var lastTs = Date.now();
var tsCounter = 0;
var MS_IN_ONE_MINUTE = 60000;
var newMsg = [];
for (var i = tempArray.length - 1; i >= 0; i--) {
let ts = {};
ts.ts = lastTs - tsCounter;
tsCounter += MS_IN_ONE_MINUTE;
let values = {};
values.temp = tempArray[i];
ts.values = values;
newMsg.push(ts);
}
return {msg: newMsg, metadata: metadata, msgType: msgType};
转换函数只是一个起点。您可以根据您的实际需要对其进行改进或使其更加准确。
在本例中,我假设输入有效负载不包含基本小时数,因此我使用Date.now()
以友好方式获得它。所以从上一次遥测开始,对于之前的所有遥测,我计算了相应的时间戳