如果在同一时间戳里有多个数据点的数据,如何编写正确的请求 body(消息体)?
在程序收集到的机器数据中,在同一时刻可能会从多个“机器/设备”收集数据。比如:从设备 1 中收集数据点 datapoint1;从设备 2 里收集数据点 datapoint2;从设备 3 里收集数据点 datapoint3 的值。
如果是上述情况,那么很可能从这三个数据点收集上来的数据,时间戳(Timestamp)都是一样的。比如都是:2024-02-29T14:15:00.000Z。针对这种情况,我们在像平台传送数据时(通过北端 IoT Time Series 接口;或者从南端 MC MQTT)必须要按照一定的格式准备请求(消息)体。
如下请求体是无效的。因为每个数据块都有一个时间戳,而且这些时间戳都是一样的。
{
"timeseries": [
{
"timestamp": "2024-02-29T14:15:00.000Z",
"values": [
{
"dataPointId": "datapoint1",
"value": 100,
"qualityCode": "0"
}
]
},
{
"timestamp": "2024-02-29T14:15:00.000Z",
"values": [
{
"dataPointId": "datapoint2",
"value": 200,
"qualityCode": "0"
}
]
},
{
"timestamp": "2024-02-29T14:15:00.000Z",
"values": [
{
"dataPointId": "datapoint3",
"value": 300,
"qualityCode": "0"
}
]
}
]
}
上针对上面这个请求体格式:
如下请求(消息)体是有效的。
{
"timeseries": [
{
"timestamp": "2024-02-29T14:15:00.000Z",
"values": [
{
"dataPointId": "datapoint1",
"value": 100,
"qualityCode": "0"
},
{
"dataPointId": "datapoint2",
"value": 200,
"qualityCode": "0"
},
{
"dataPointId": "datapoint3",
"value": 300,
"qualityCode": "0"
}
]
}
]
}
不管是从北端 API,还是从南端上传 IoT Time Series 数据,其格式都遵循 IoT Time Series 服务的介绍:https://documentation.mindsphere.io/MindSphere/apis/iot-iottimeseries/api-iottimeseries-api.html。
即:包含相同时间戳的数据对象“需要放在同一个 JSON 数组中”。