#include "data.h" #include "ArduinoJson.h" #include "mqtt.h" #define ENTRY_COUNT 1500 struct Entry { const char *name = ""; time_t timestamp = 0; double value = NAN; }; Entry data[ENTRY_COUNT]; Entry *dataRead = data; Entry *dataWrite = data; size_t dataCount = 0; bool dataAdd(const char *name, const time_t timestamp, const double value) { if (dataCount >= ENTRY_COUNT) { return false; } dataWrite->name = name; dataWrite->timestamp = timestamp; dataWrite->value = value; dataWrite = (dataWrite - data + 1) % ENTRY_COUNT + data; dataCount++; return true; } void dataLoop() { if (dataCount == 0) { return; } JsonDocument json; json["timestamp"] = dataRead->timestamp; json["putDouble"] = dataRead->value; if (mqttPublishData(dataRead->name, json)) { dataRead = (dataRead - data + 1) % ENTRY_COUNT + data; dataCount--; } }