#include <ArduinoJson.h>
const char *trame = R"====([
{ "createdAt": 1699042766,
"reportType": "total-consumption",
"cumulative": {
"currW": 193.271,
"actPower": 193.271,
"apprntPwr": 3473.023,
"reactPwr": -1046.916,
"whDlvdCum": 41564788.467,
"whRcvdCum": 0.000,
"varhLagCum": 19666341.239,
"varhLeadCum": 16548631.100,
"vahCum": 66266595.332,
"rmsVoltage": 693.656,
"rmsCurrent": 5.007,
"pwrFactor": 0.06,
"freqHz": 50.00
}
},
{ "createdAt": 1699042766,
"reportType": "net-consumption",
"cumulative": {
"currW": 195.899,
"actPower": 195.899,
"apprntPwr": 740.596,
"reactPwr": -639.659,
"whDlvdCum": 32066802.815,
"whRcvdCum": 20572866.248,
"varhLagCum": 10431545.589,
"varhLeadCum": 16548630.265,
"vahCum": 66266595.332,
"rmsVoltage": 693.698,
"rmsCurrent": 3.201,
"pwrFactor": 0.25,
"freqHz": 50.00
}
}
])====";
//https://arduinojson.org/v7/assistant/#/step1
int32_t PactConso_M = 0;
float PactReseau = 0.0F;
float PvaReseau = 0.0F;
int32_t whDlvdCum = 0;
float Tension_M = 0.0F;
float Intensite_M = 0.0F;
void setup() {
Serial.begin(115200);
Serial.println(trame);
JsonDocument doc;
DeserializationError error = deserializeJson(doc, trame);
if (error) {
Serial.print(F("deserializeJson() failed: "));
Serial.println(error.f_str());
}
for (JsonObject item : doc.as<JsonArray>()) {
const char* reportType = item["reportType"];
Serial.print("*****");
Serial.println(reportType);
if (!strcmp(reportType,"total-consumption")) {
JsonObject cumulative = item["cumulative"];
Serial.print("total-consumption.cumulative.actPower = ");
Serial.println(String(cumulative["actPower"]));
PactConso_M = int32_t(cumulative["actPower"]);
} else if (!strcmp(reportType,"net-consumption")) {
JsonObject cumulative = item["cumulative"];
Serial.print("net-consumption.cumulative.actPower = ");
Serial.println(String(cumulative["actPower"]));
PactReseau = cumulative["actPower"];
Serial.print("net-consumption.cumulative.apprntPwr = ");
Serial.println(String(cumulative["apprntPwr"]));
PvaReseau = cumulative["apprntPwr"];
Serial.print("net-consumption.cumulative.whDlvdCum = ");
Serial.println(String(long(cumulative["whDlvdCum"])));
whDlvdCum = int32_t(cumulative["whDlvdCum"]);
Serial.print("net-consumption.cumulative.rmsVoltage = ");
Serial.println(String(cumulative["rmsVoltage"]));
Tension_M = cumulative["rmsVoltage"];
Serial.print("net-consumption.cumulative.rmsCurrent = ");
Serial.println(String(cumulative["rmsCurrent"]));
Intensite_M = cumulative["rmsCurrent"];
}
}
}
void loop()
{
//timeToString(timestamp, sizeof(timestamp));
//Serial.printf("%s: New preset loaded: %u\n", timestamp, 1);
delay(1000);
}
void toJsonObject(char * outputBuffer, size_t bufSize) {
uint8_t fgPalette = 185;
StaticJsonDocument<200> doc;
JsonObject object = doc.to<JsonObject>();
object["fgPalette"] = fgPalette;
serializeJson(doc, outputBuffer, bufSize);
}
void timeToString(char* string, size_t size)
{
unsigned long nowMillis = millis();
unsigned long seconds = nowMillis / 1000;
int days = seconds / 86400;
seconds %= 86400;
byte hours = seconds / 3600;
seconds %= 3600;
byte minutes = seconds / 60;
seconds %= 60;
snprintf(string, size, "%02d:%02d:%02d:%02d", days, hours, minutes, seconds);
}