#include <ArduinoJson.h>
String temp = "";
String humi = "";
String file = "";
uint8_t tempMinute[60];
uint8_t humiMinute[60];
uint8_t lengthDataMinute = 120;
uint8_t minuteMax = 60;
DynamicJsonDocument doc(15000);
JsonObject date;
bool breaktime(unsigned long &topicTime, uint16_t setTime = 1000)
{
if (topicTime > millis())
return false;
topicTime = millis() + setTime;
return true;
}
void initializeArray(uint8_t *source, int length) {
for (int i = 0; i < length; i++) {
source[i] = 0xFF;
}
}
JsonObject createDoc(DynamicJsonDocument& doc, String date) {
JsonObject hourDoc = doc.createNestedObject(date);
size_t hourMax = 24;
for (size_t i = 0; i < hourMax; i++) {
JsonArray minuteDoc = hourDoc.createNestedArray(String(i));
String tempFixed = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";
String humiFixed = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";
minuteDoc.add(tempFixed);
minuteDoc.add(humiFixed);
minuteDoc.add(tempFixed);
minuteDoc.add(humiFixed);
}
return hourDoc;
}
void setup() {
Serial.begin(115200);
Serial.println("Hello, ESP32!");
//create doc
/////////////////////////////////////////////////////////////
// JsonObject root = doc.to<JsonObject>();
// JsonObject root = doc.to<JsonArray>();
date = createDoc(doc, "20240226" );
// JsonObject date = doc.createNestedObject("20240226");
// for (int i = 0 ; i < hourMax; i++)
// {
// JsonArray data = date.createNestedArray(String(i));
// data.add(tempFixed);
// data.add(humiFixed);
// }
file = "";
if (serializeJson(doc, file) == 0) {
Serial.println(F("Failed to write to file"));
}
Serial.println(file);
Serial.println(file.length());
//////////////////////////////////////////////////////////////
//
doc.clear();
// doc.remove("20240226");
// date.remove("");
/////////////////////////////////////////////////////////
// for (int i = 0 ; i < hourMax; i++)
// {
// }
/////////////////////////////////////////////////////////
initializeArray(tempMinute, 60);
initializeArray(humiMinute, 60);
// serializeJsonPretty(doc, Serial);
}
bool status_log = 0;
uint8_t minute_t = 30;
void updateLogData()
{
temp = "";
humi = "";
byte fahrenheit = random(20, 25) * 1.8 + 32;
tempMinute[minute_t] = fahrenheit;
for (int j = 0; j < minuteMax; j++) {
char temp_m[3];
sprintf(temp_m, "%x", tempMinute[j]);
temp += temp_m;
}
byte humidity = random(50, 60);
humiMinute[minute_t] = humidity;
for (int j = 0; j < minuteMax; j++) {
char humi_m[3];
sprintf(humi_m, "%02x", humiMinute[j]);
humi += humi_m;
}
Serial.print("temp: ");
Serial.println(temp.length());
Serial.print("humi: ");
Serial.println(humi.length());
}
void saveLog(uint8_t &hour)
{
if (!status_log)
{
date = createDoc(doc, "20240227" );
status_log = 1;
}
//edit and update
JsonArray data = date.createNestedArray(String(hour));
data.add(temp);
data.add(humi);
data.add(temp);
data.add(humi);
// hour++;
if (hour >= 24)
{
hour = 0;
}
file = "";
if (serializeJson(doc, file) == 0) {
Serial.println(F("Failed to write to file"));
}
Serial.println(file);
Serial.println(file.length());
// date.clear();
}
uint8_t b = 0;
// uint8_t c = 0;
void loop() {
updateLogData();
saveLog(b);
minute_t++;
delay(3000);
}