如何将多个简单时间序列数据点批量放入一条 MQTT 消息?
手动构建 JSON 有效载荷并直接发布。一条消息可以在同一时间戳下携带多个数据点。
有效载荷格式(设备 Temperature Sensor,同一时间戳下的三个数据点):
{
"name": "Temperature Sensor.point",
"dt": "string",
"t": 1730171535,
"d": 30,
"v": {
"point1": 25.5,
"point2": 25.5,
"point3": 25.5
}
}
name:<DeviceName>.<GroupParameterName>t:Unix 时间戳d:TTL(天)(0 = 永不过期)v:包含所有数据点的对象;键和结构由用户定义
发布到云端:
esp_err_t esp_rainmaker_report_simple_ts_data(char *buf, size_t buf_size)
{
char publish_topic[150] = {0};
esp_rmaker_create_mqtt_topic(publish_topic, sizeof(publish_topic),
"simple_tsdata", "esp_simple_ts_ingest");
return esp_rmaker_mqtt_publish(publish_topic, buf, buf_size, RMAKER_MQTT_QOS1, NULL);
}
使用此方法时,参数不需要 PROP_FLAG_SIMPLE_TIME_SERIES——上报完全由应用程序控制。

