With one publish statement (event & message), you can send multiple data pairs within the message.
Here is a post you can review for a useful tool:
https://community.particle.io/t/json-parser-and-generator-in-device-os/56147
Here is an example:
char msg128[128];
double averageTempF;
double averageHumidity;
char usbPoweredSzInfo[16] = "no data...";
void formatVariableDataPairs() {
JSONBufferWriter writer(msg128, sizeof(msg128) - 1);
writer.beginObject();
writer.name("tempF").value(averageTempF);
writer.name("rh").value(averageHumidity);
writer.name("mains power").value(usbPoweredSzInfo);
writer.endObject();
writer.buffer()[std::min(writer.bufferSize(), writer.dataSize())] = 0;
}
loop() {
//fillVarsWithData
formatVariableDataPairs();
if (Particle.connected()) { //will block if NOT connected
Particle.publish("stats", msg128);
delay(1000);
}
delay(10000); // demo only
}