Csv 在时间序列图的Thingsboard上显示逗号分隔的数据

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

我从一个设备上获取逗号叉标的温度数据,其中最后一个条目是最后一个,第一个是1小时前的数据。提供的数据是过去一小时内每分钟的温度

我得到的json数据如下:

温度19.2,23.4,18.3。。。。。。23.0,18.2

如何在时间序列图的黑板上以适当的时间显示它

谢谢

您可以使用将JSON转换为所需的格式

假设您能够通过或使用以下有效负载向平台发送设备数据:

{ 
    "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()
以友好方式获得它。所以从上一次遥测开始,对于之前的所有遥测,我计算了相应的时间戳