// extrait de routeur F1ATB v17.24
// check décodage trame JSON sans usage de ArduinoJSON
// simulation obtention des data (pas de Networkclient, donc pas de probleme de timeout ...)
// trame prod triphasé Enedis triphasé firmware 8.3.5528 : 8 sections contentant chacune 3 channels
const char *trame0 = R"====([
{
"eid": 704643328,
"timestamp": 1781948531,
"actEnergyDlvd": 6025965.339,
"actEnergyRcvd": 125.419,
"apparentEnergy": 0.055,
"reactEnergyLagg": 848199.436,
"reactEnergyLead": 2151942.432,
"instantaneousDemand": 1872.131,
"activePower": 1872.131,
"apparentPower": 2003.743,
"reactivePower": -687.456,
"pwrFactor": 2.803,
"voltage": 695.341,
"current": 8.615,
"freq": 50.062,
"channels": [
{
"eid": 1778385169,
"timestamp": 1781948531,
"actEnergyDlvd": 1721646.056,
"actEnergyRcvd": 28.192,
"apparentEnergy": 0.015,
"reactEnergyLagg": 240673.176,
"reactEnergyLead": 618299.36,
"instantaneousDemand": 535.097,
"activePower": 535.044,
"apparentPower": 570.304,
"reactivePower": -197.323,
"pwrFactor": 0.935,
"voltage": 227.671,
"current": 2.504,
"freq": 50.062
},
{
"eid": 1778385170,
"timestamp": 1781948531,
"actEnergyDlvd": 2579879.574,
"actEnergyRcvd": 74.034,
"apparentEnergy": 0.024,
"reactEnergyLagg": 366226.124,
"reactEnergyLead": 913898.524,
"instantaneousDemand": 799.039,
"activePower": 805.062,
"apparentPower": 857.869,
"reactivePower": -292.418,
"pwrFactor": 0.932,
"voltage": 238.097,
"current": 3.602,
"freq": 50.062
},
{
"eid": 1778385171,
"timestamp": 1781948531,
"actEnergyDlvd": 1724439.708,
"actEnergyRcvd": 23.192,
"apparentEnergy": 0.015,
"reactEnergyLagg": 241300.136,
"reactEnergyLead": 619744.547,
"instantaneousDemand": 537.994,
"activePower": 534.794,
"apparentPower": 573.868,
"reactivePower": -195.749,
"pwrFactor": 0.935,
"voltage": 229.605,
"current": 2.499,
"freq": 50.062
}
]
},
{
"eid": 704643584,
"timestamp": 1781948531,
"actEnergyDlvd": 11726036.074,
"actEnergyRcvd": 3846539.366,
"apparentEnergy": 0.09,
"reactEnergyLagg": 967966.277,
"reactEnergyLead": 5369340.873,
"instantaneousDemand": 322.399,
"activePower": 322.399,
"apparentPower": 3248.041,
"reactivePower": 197.277,
"pwrFactor": -0.674,
"voltage": 695.501,
"current": 14.067,
"freq": 50.0,
"channels": [
{
"eid": 1778385425,
"timestamp": 1781948531,
"actEnergyDlvd": 6515648.064,
"actEnergyRcvd": 916516.64,
"apparentEnergy": 0.025,
"reactEnergyLagg": 10022.66,
"reactEnergyLead": 3446372.738,
"instantaneousDemand": -646.28,
"activePower": -656.35,
"apparentPower": 908.806,
"reactivePower": -178.063,
"pwrFactor": -0.709,
"voltage": 227.634,
"current": 3.997,
"freq": 50.0
},
{
"eid": 1778385426,
"timestamp": 1781948531,
"actEnergyDlvd": 1557249.003,
"actEnergyRcvd": 1862242.495,
"apparentEnergy": 0.019,
"reactEnergyLagg": 559839.113,
"reactEnergyLead": 1190771.536,
"instantaneousDemand": -651.387,
"activePower": -647.718,
"apparentPower": 685.385,
"reactivePower": 203.98,
"pwrFactor": -0.946,
"voltage": 238.053,
"current": 2.878,
"freq": 50.0
},
{
"eid": 1778385427,
"timestamp": 1781948531,
"actEnergyDlvd": 3653139.007,
"actEnergyRcvd": 1067780.23,
"apparentEnergy": 0.045,
"reactEnergyLagg": 398104.503,
"reactEnergyLead": 732196.597,
"instantaneousDemand": 1620.068,
"activePower": 1593.873,
"apparentPower": 1627.496,
"reactivePower": 159.571,
"pwrFactor": 0.982,
"voltage": 229.838,
"current": 7.076,
"freq": 50.0
}
]
},
{
"eid": 704643840,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0,
"channels": [
{
"eid": 1778385681,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 1778385682,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 1778385683,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
}
]
},
{
"eid": 704644352,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0,
"channels": [
{
"eid": 1778386193,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 1778386194,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 1778386195,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
}
]
},
{
"eid": 704644608,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0,
"channels": [
{
"eid": 1778386449,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 1778386450,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 1778386451,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
}
]
},
{
"eid": 704644864,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0,
"channels": [
{
"eid": 1778386705,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 1778386706,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 1778386707,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
}
]
},
{
"eid": 704645120,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0,
"channels": [
{
"eid": 1778386961,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 1778386962,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 1778386963,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
}
]
},
{
"eid": 1023410688,
"timestamp": 1781948522,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0,
"channels": [
{
"eid": 2097152513,
"timestamp": 1781948522.0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 2097152514,
"timestamp": 1781948522.0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 2097152515,
"timestamp": 1781948522.0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
}
]
}
])====";
// trame prod triphasé Enedis triphasé firmware 8.3.5169 : 3 sections contentant chacune 3 channels
const char *trame1 = R"====([
{
"eid": 704643328,
"timestamp": 1772400386,
"actEnergyDlvd": 15028625.701,
"actEnergyRcvd": 286145.349,
"apparentEnergy": 18833493.61,
"reactEnergyLagg": 4172736.074,
"reactEnergyLead": 6.842,
"instantaneousDemand": -10.965,
"activePower": -10.965,
"apparentPower": 136.686,
"reactivePower": 77.095,
"pwrFactor": -0.081,
"voltage": 694.542,
"current": 0.591,
"freq": 50.062,
"channels": [
{
"eid": 1778385169,
"timestamp": 1772400386,
"actEnergyDlvd": 3745154.097,
"actEnergyRcvd": 98383.449,
"apparentEnergy": 4968458.739,
"reactEnergyLagg": 1054572.904,
"reactEnergyLead": 1.619,
"instantaneousDemand": -5.803,
"activePower": -5.803,
"apparentPower": 44.525,
"reactivePower": 31.264,
"pwrFactor": -0.125,
"voltage": 232.566,
"current": 0.191,
"freq": 50.062
},
{
"eid": 1778385170,
"timestamp": 1772400386,
"actEnergyDlvd": 5651180.953,
"actEnergyRcvd": 87378.538,
"apparentEnergy": 5896011.281,
"reactEnergyLagg": 1545491.651,
"reactEnergyLead": 4.324,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": -0.0,
"reactivePower": 0.0,
"pwrFactor": -1.0,
"voltage": 231.092,
"current": -0.0,
"freq": 50.062
},
{
"eid": 1778385171,
"timestamp": 1772400386,
"actEnergyDlvd": 5632290.651,
"actEnergyRcvd": 100383.362,
"apparentEnergy": 7969023.59,
"reactEnergyLagg": 1572671.519,
"reactEnergyLead": 0.899,
"instantaneousDemand": -5.162,
"activePower": -5.162,
"apparentPower": 92.161,
"reactivePower": 45.831,
"pwrFactor": -0.059,
"voltage": 230.884,
"current": 0.399,
"freq": 50.062
}
]
},
{
"eid": 704643584,
"timestamp": 1772400386,
"actEnergyDlvd": 8047699.485,
"actEnergyRcvd": 10141700.218,
"apparentEnergy": 24342276.309,
"reactEnergyLagg": 770282.067,
"reactEnergyLead": 8714803.897,
"instantaneousDemand": 153.719,
"activePower": 153.719,
"apparentPower": 393.229,
"reactivePower": -318.339,
"pwrFactor": 0.387,
"voltage": 694.632,
"current": 1.702,
"freq": 50.0,
"channels": [
{
"eid": 1778385425,
"timestamp": 1772400386,
"actEnergyDlvd": 1836889.498,
"actEnergyRcvd": 2623339.047,
"apparentEnergy": 5850025.089,
"reactEnergyLagg": 675741.393,
"reactEnergyLead": 2328686.813,
"instantaneousDemand": 12.436,
"activePower": 12.436,
"apparentPower": 85.075,
"reactivePower": -85.075,
"pwrFactor": 0.133,
"voltage": 232.764,
"current": 0.366,
"freq": 50.0
},
{
"eid": 1778385426,
"timestamp": 1772400386,
"actEnergyDlvd": 2175763.566,
"actEnergyRcvd": 4370848.462,
"apparentEnergy": 9572280.596,
"reactEnergyLagg": 76876.009,
"reactEnergyLead": 3218531.658,
"instantaneousDemand": 35.635,
"activePower": 35.635,
"apparentPower": 161.296,
"reactivePower": -129.414,
"pwrFactor": 0.233,
"voltage": 231.194,
"current": 0.698,
"freq": 50.0
},
{
"eid": 1778385427,
"timestamp": 1772400386,
"actEnergyDlvd": 4035046.421,
"actEnergyRcvd": 3147512.709,
"apparentEnergy": 8919970.624,
"reactEnergyLagg": 17664.665,
"reactEnergyLead": 3167585.426,
"instantaneousDemand": 105.648,
"activePower": 105.648,
"apparentPower": 146.857,
"reactivePower": -103.849,
"pwrFactor": 0.704,
"voltage": 230.674,
"current": 0.637,
"freq": 50.0
}
]
},
{
"eid": 1023410688,
"timestamp": 1772400356,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0,
"channels": [
{
"eid": 2097152513,
"timestamp": 1772400356,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 2097152258,
"timestamp": 1772400356,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 2097152515,
"timestamp": 1772400356,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
}
]
}
])====";
// trame prod monophasé, Enedis monophasé firmware 8.3.5528 : 8 sections contentant chacune 3 channels
const char *trame2 = R"====([
{
"eid": 704643328,
"timestamp": 1781461987,
"actEnergyDlvd": 17580759.38,
"actEnergyRcvd": 32567.388,
"apparentEnergy": 0.002,
"reactEnergyLagg": 2225419.796,
"reactEnergyLead": 6312766.949,
"instantaneousDemand": 79.779,
"activePower": 79.779,
"apparentPower": 87.404,
"reactivePower": 7.252,
"pwrFactor": 0.916,
"voltage": 240.681,
"current": 0.457,
"freq": 50.062,
"channels": [
{
"eid": 1778385169,
"timestamp": 1781461987,
"actEnergyDlvd": 17580759.285,
"actEnergyRcvd": 1336.94,
"apparentEnergy": 0.002,
"reactEnergyLagg": 2222229.637,
"reactEnergyLead": 6312759.248,
"instantaneousDemand": 79.779,
"activePower": 77.781,
"apparentPower": 88.478,
"reactivePower": 4.6,
"pwrFactor": 0.916,
"voltage": 231.396,
"current": 0.381,
"freq": 50.062
},
{
"eid": 1778385170,
"timestamp": 1781461987,
"actEnergyDlvd": 0.08,
"actEnergyRcvd": 4101.68,
"apparentEnergy": 0.0,
"reactEnergyLagg": 1596.96,
"reactEnergyLead": 7.701,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.211,
"reactivePower": -0.0,
"pwrFactor": 0.0,
"voltage": 4.358,
"current": 0.047,
"freq": 50.062
},
{
"eid": 1778385171,
"timestamp": 1781461987,
"actEnergyDlvd": 0.013,
"actEnergyRcvd": 27128.767,
"apparentEnergy": 0.0,
"reactEnergyLagg": 1593.197,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": -0.053,
"apparentPower": 0.16,
"reactivePower": -0.0,
"pwrFactor": 0.0,
"voltage": 4.949,
"current": 0.032,
"freq": 50.062
}
]
},
{
"eid": 704643584,
"timestamp": 1781461987,
"actEnergyDlvd": 17820676.77,
"actEnergyRcvd": 6731072.913,
"apparentEnergy": 0.032,
"reactEnergyLagg": 5676682.686,
"reactEnergyLead": 8444834.925,
"instantaneousDemand": 1154.149,
"activePower": 1154.149,
"apparentPower": 1185.178,
"reactivePower": 7.351,
"pwrFactor": -0.024,
"voltage": 245.58,
"current": 5.309,
"freq": 50.062,
"channels": [
{
"eid": 1778385425,
"timestamp": 1781461987,
"actEnergyDlvd": 17820676.562,
"actEnergyRcvd": 6596640.271,
"apparentEnergy": 0.032,
"reactEnergyLagg": 5673406.111,
"reactEnergyLead": 8444816.722,
"instantaneousDemand": 1154.149,
"activePower": 1148.639,
"apparentPower": 1178.872,
"reactivePower": 6.146,
"pwrFactor": 0.975,
"voltage": 231.255,
"current": 5.099,
"freq": 50.062
},
{
"eid": 1778385426,
"timestamp": 1781461987,
"actEnergyDlvd": 0.075,
"actEnergyRcvd": 57802.244,
"apparentEnergy": 0.0,
"reactEnergyLagg": 1636.481,
"reactEnergyLead": 5.257,
"instantaneousDemand": -0.0,
"activePower": -0.0,
"apparentPower": 0.0,
"reactivePower": -0.0,
"pwrFactor": -1.0,
"voltage": 5.844,
"current": 0.0,
"freq": 50.062
},
{
"eid": 1778385427,
"timestamp": 1781461987,
"actEnergyDlvd": 0.131,
"actEnergyRcvd": 76630.397,
"apparentEnergy": 0.0,
"reactEnergyLagg": 1640.093,
"reactEnergyLead": 12.945,
"instantaneousDemand": 0.0,
"activePower": -0.896,
"apparentPower": 1.587,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 8.497,
"current": 0.185,
"freq": 50.062
}
]
},
{
"eid": 704643840,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0,
"channels": [
{
"eid": 1778385681,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 1778385682,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 1778385683,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
}
]
},
{
"eid": 704644352,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0,
"channels": [
{
"eid": 1778386193,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 1778386194,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 1778386195,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
}
]
},
{
"eid": 704644608,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0,
"channels": [
{
"eid": 1778386449,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 1778386450,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 1778386451,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
}
]
},
{
"eid": 704644864,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0,
"channels": [
{
"eid": 1778386705,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 1778386706,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 1778386707,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
}
]
},
{
"eid": 704645120,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0,
"channels": [
{
"eid": 1778386961,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 1778386962,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 1778386963,
"timestamp": 0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
}
]
},
{
"eid": 1023410688,
"timestamp": 1781461972,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0,
"channels": [
{
"eid": 2097152513,
"timestamp": 1781461972.0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 2097152514,
"timestamp": 1781461972.0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
},
{
"eid": 2097152515,
"timestamp": 1781461972.0,
"actEnergyDlvd": 0.0,
"actEnergyRcvd": 0.0,
"apparentEnergy": 0.0,
"reactEnergyLagg": 0.0,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.0,
"reactivePower": 0.0,
"pwrFactor": 0.0,
"voltage": 0.0,
"current": 0.0,
"freq": 0.0
}
]
}
])====";
// trame prod monophasé Enedis triphasé : abrégé a 2 sections contentant chacune 3 channels
const char *trame3 = R"====([
{
"eid": 704643328,
"timestamp": 1781461987,
"actEnergyDlvd": 17580759.38,
"actEnergyRcvd": 32567.388,
"apparentEnergy": 0.002,
"reactEnergyLagg": 2225419.796,
"reactEnergyLead": 6312766.949,
"instantaneousDemand": 79.779,
"activePower": 79.779,
"apparentPower": 87.404,
"reactivePower": 7.252,
"pwrFactor": 0.916,
"voltage": 240.681,
"current": 0.457,
"freq": 50.062,
"channels": [
{
"eid": 1778385169,
"timestamp": 1781461987,
"actEnergyDlvd": 17580759.285,
"actEnergyRcvd": 1336.94,
"apparentEnergy": 0.002,
"reactEnergyLagg": 2222229.637,
"reactEnergyLead": 6312759.248,
"instantaneousDemand": 79.779,
"activePower": 77.781,
"apparentPower": 88.478,
"reactivePower": 4.6,
"pwrFactor": 0.916,
"voltage": 231.396,
"current": 0.381,
"freq": 50.062
},
{
"eid": 1778385170,
"timestamp": 1781461987,
"actEnergyDlvd": 0.08,
"actEnergyRcvd": 4101.68,
"apparentEnergy": 0.0,
"reactEnergyLagg": 1596.96,
"reactEnergyLead": 7.701,
"instantaneousDemand": 0.0,
"activePower": 0.0,
"apparentPower": 0.211,
"reactivePower": -0.0,
"pwrFactor": 0.0,
"voltage": 4.358,
"current": 0.047,
"freq": 50.062
},
{
"eid": 1778385171,
"timestamp": 1781461987,
"actEnergyDlvd": 0.013,
"actEnergyRcvd": 27128.767,
"apparentEnergy": 0.0,
"reactEnergyLagg": 1593.197,
"reactEnergyLead": 0.0,
"instantaneousDemand": 0.0,
"activePower": -0.053,
"apparentPower": 0.16,
"reactivePower": -0.0,
"pwrFactor": 0.0,
"voltage": 4.949,
"current": 0.032,
"freq": 50.062
}
]
},
{
"eid": 704643584,
"timestamp": 1772400386,
"actEnergyDlvd": 8047699.485,
"actEnergyRcvd": 10141700.218,
"apparentEnergy": 24342276.309,
"reactEnergyLagg": 770282.067,
"reactEnergyLead": 8714803.897,
"instantaneousDemand": 153.719,
"activePower": 153.719,
"apparentPower": 393.229,
"reactivePower": -318.339,
"pwrFactor": 0.387,
"voltage": 694.632,
"current": 1.702,
"freq": 50.0,
"channels": [
{
"eid": 1778385425,
"timestamp": 1772400386,
"actEnergyDlvd": 1836889.498,
"actEnergyRcvd": 2623339.047,
"apparentEnergy": 5850025.089,
"reactEnergyLagg": 675741.393,
"reactEnergyLead": 2328686.813,
"instantaneousDemand": 12.436,
"activePower": 12.436,
"apparentPower": 85.075,
"reactivePower": -85.075,
"pwrFactor": 0.133,
"voltage": 232.764,
"current": 0.366,
"freq": 50.0
},
{
"eid": 1778385426,
"timestamp": 1772400386,
"actEnergyDlvd": 2175763.566,
"actEnergyRcvd": 4370848.462,
"apparentEnergy": 9572280.596,
"reactEnergyLagg": 76876.009,
"reactEnergyLead": 3218531.658,
"instantaneousDemand": 35.635,
"activePower": 35.635,
"apparentPower": 161.296,
"reactivePower": -129.414,
"pwrFactor": 0.233,
"voltage": 231.194,
"current": 0.698,
"freq": 50.0
},
{
"eid": 1778385427,
"timestamp": 1772400386,
"actEnergyDlvd": 4035046.421,
"actEnergyRcvd": 3147512.709,
"apparentEnergy": 8919970.624,
"reactEnergyLagg": 17664.665,
"reactEnergyLead": 3167585.426,
"instantaneousDemand": 105.648,
"activePower": 105.648,
"apparentPower": 146.857,
"reactivePower": -103.849,
"pwrFactor": 0.704,
"voltage": 230.674,
"current": 0.637,
"freq": 50.0
}
]
}
])====";
// Variables globales du routeur :
float Tension_M = 0.0f;
float Tension_M1 = 0.0f;
float Tension_M2 = 0.0f;
float Tension_M3 = 0.0f;
float Intensite_M = 0.0f;
float Intensite_M1 = 0.0f;
float Intensite_M2 = 0.0f;
float Intensite_M3 = 0.0f;
float PactProd = 0.0f;
float PactConso_M = 0.0f;
float Frequence = 50.0f;
int PuissanceS_M_inst = 0;
int PuissanceI_M_inst = 0;
int PVAS_M_inst = 0;
int PVAI_M_inst = 0;
bool Pva_valide = false;
float PowerFactor_M = 0.0f;
int LastwhDlvdCum = 0;
int LastwhRcvdCum = 0;
int Energie_M_Soutiree = 0;
int Energie_M_Injectee = 0;
bool EnergieActiveValide = false;
bool PuissanceRecue = false;
int cptLEDyellow = 0;
int memoDejaObtenu = 0; // pour la simulation, on mémorise l'endroit dans le JSON complet ou on est arrivé
// **************
// en simulation ligne commenté + usage de memoDajObtenu pour positionnnement dans la chaine
bool JSONReadingEnphase(NetworkClientSecure* pClient, String* pString, char cUntilChar, unsigned long nTimeout) {
//if ((pClient == 0) || (pString == 0))
// return true;
//pClient->setTimeout(nTimeout);
unsigned long nT0 = millis();
// *pString = pClient->readStringUntil(cUntilChar);
pString = trame.substring(memoDejaObtenu, trame.indexOf(cUntilChar, memoDejaObtenu));
return ((millis() - nT0) > nTimeout);
}
void LectureEnphase() {
#define TIMEOUT_JSON_READING 100
#define TIMEOUT_WAITING_ANSWER 500
#define TIMEOUT_CONNECT 3000
// init variable
static unsigned long g_nLastGoodReading = millis();
bool bJsonLoadingFinished = false;
bool bTimeout;
float PactReseau = 0.0f;
float PvaReseau = 0.0f;
long whDlvdCum = 0L; // on perd les decimals après la virgule avec un type long
long whRcvdCum = 0L;
String jsonPayload;
String host = IP2String(RMSextIP);
// String baseRequest;
// baseRequest = "/ivp/meters/readings HTTP/1.0\r\nHost: " + host + "\r\nAccept: application/json\r\nConnection: keep-alive\r\n";
static uint32_t lastTokenUpdate = millis(); // premier passage, le token a été obtenu via setup_enphase
// constexpr uint32_t TOKEN_REFRESH_MS = 30UL * 24UL * 60UL * 60UL * 1000UL;
// if (TokenEnphase.length() > 50 && EnphaseUser != "") {
// Connexion pour firmware V7 en https
NetworkClientSecure client;
// if ((millis() - lastTokenUpdate) > TOKEN_REFRESH_MS) { // Tout les 30 jours on recherche un nouveau Token
// lastTokenUpdate = millis(); // overflow compatible!
// Setup_Enphase();
// }
// if (!client.connected()) { // établi la connexion
// client.setInsecure(); // skip verification
// client.setTimeout(TIMEOUT_CONNECT);
// if (!client.connect(host.c_str(), 443)) {
// StockMessage("Connection failed to Envoy-S server! : https://" + String(host));
// return; // on sort, pas de comm avec le server enphase
// }
//StockMessage("Connected to Envoy-S server HTTPS!");
// }
// client.println("GET " + baseRequest + "Authorization: Bearer " + TokenEnphase + "\r\n\r\n");
// bTimeout = JSONReadingEnphase(&client, &jsonPayload, '\n', TIMEOUT_WAITING_ANSWER);
// jsonPayload.trim();
//TelnetPrintln("HTTP: " + statusLine);
// if (bTimeout || (jsonPayload.indexOf("200") < 0)) {
// StockMessage("Envoy refused request >" + jsonPayload + "\n" + String(esp_get_free_internal_heap_size()) + " * " + String(esp_get_minimum_free_heap_size()));
// client.stop();
// return;
// }
// TelnetPrintln("Mémoire RAM libre actuellement: " + String(esp_get_free_internal_heap_size()) + " byte");
// TelnetPrintln("Mémoire RAM libre minimum: " + String(esp_get_minimum_free_heap_size()) + " byte");
int nGlobalIndex = 0;
int nPhaseIndex = 0;
bool bMonoPhase = true;
//TelnetPrintln("Waiting JSON data ...");
// Saute L'entete d'ouverture de la trame JSON.
// bTimeout = JSONReadingEnphase(&client, &jsonPayload, '[', TIMEOUT_JSON_READING);
// if (bTimeout) {
// StockMessage("JSON Reading Timeout 1 >" + jsonPayload + "\n" + String(esp_get_free_internal_heap_size()) + " * " + String(esp_get_minimum_free_heap_size()));
// return;
// }
for (nGlobalIndex = 0; (nGlobalIndex < 2) && !bJsonLoadingFinished && !bTimeout; nGlobalIndex++) {
// Read Global Topic
bTimeout = JSONReadingEnphase(&client, &jsonPayload, '[', TIMEOUT_JSON_READING);
if (bTimeout) {
StockMessage("JSON Reading Timeout 2 / nGlobalIndex=" + String(nGlobalIndex) + " nPhaseIndex=" + String(nPhaseIndex) >" + jsonPayload + "\n" + String(esp_get_free_internal_heap_size()) + " * " + String(esp_get_minimum_free_heap_size()));
return;
}
delay(1);
if (nGlobalIndex == 0) {
//StockMessage(jsonPayload);
float tension = ValJson("voltage", jsonPayload);
//long eid = LongJson("eid", jsonPayload);
//StockMessage("Tension Global0 ="+String(tension));
if (tension > 280.0f)
bMonoPhase = false;
//StockMessage("bMonoPhase ="+String(bMonoPhase));
if (!bMonoPhase) {
PactProd = ValJson("activePower", jsonPayload);
Tension_M = ValJson("voltage", jsonPayload);
Intensite_M = ValJson("current", jsonPayload);
}
} else if (nGlobalIndex == 1) {
if (!bMonoPhase) {
PactReseau = ValJson("activePower", jsonPayload);
PactConso_M = PactReseau + PactProd; // dans l'hypothese qu'il n'y a pas de l'énergie fournit par une batterie !
PvaReseau = ValJson("apparentPower", jsonPayload);
whDlvdCum = ValJson("actEnergyDlvd", jsonPayload);
whRcvdCum = ValJson("actEnergyRcvd", jsonPayload);
Frequence = ValJson("freq", jsonPayload);
}
}
for (nPhaseIndex = 0; (nPhaseIndex < 3) && !bJsonLoadingFinished && !bTimeout; nPhaseIndex++) {
// Read Phase
bTimeout = JSONReadingEnphase(&client, &jsonPayload, '}', TIMEOUT_JSON_READING);
if (bTimeout) {
StockMessage("JSON Reading Timeout 3 / nGlobalIndex=" + String(nGlobalIndex) + " nPhaseIndex=" + String(nPhaseIndex) >" + jsonPayload + "\n" + String(esp_get_free_internal_heap_size()) + " * " + String(esp_get_minimum_free_heap_size()));
return;
}
jsonPayload += "}";
delay(1);
if ((nGlobalIndex == 0) && (nPhaseIndex == 0)) {
if (bMonoPhase) {
PactProd = ValJson("activePower", jsonPayload);
}
} else if ((nGlobalIndex == 1) && (nPhaseIndex == 0)) {
Tension_M1 = ValJson("voltage", jsonPayload);
Intensite_M1 = ValJson("current", jsonPayload);
if (bMonoPhase) {
//StockMessage(jsonPayload);
PactReseau = ValJson("activePower", jsonPayload);
PactConso_M = PactReseau + PactProd; // dans l'hypothese qu'il n'y a pas de l'énergie fournit par une batterie !
PvaReseau = ValJson("apparentPower", jsonPayload);
whDlvdCum = ValJson("actEnergyDlvd", jsonPayload);
whRcvdCum = ValJson("actEnergyRcvd", jsonPayload);
Frequence = ValJson("freq", jsonPayload);
Tension_M = Tension_M1;
Intensite_M = Intensite_M1;
//StockMessage("activePower="+String(PactReseau));
}
} else if ((nGlobalIndex == 1) && (nPhaseIndex == 1)) {
Tension_M2 = ValJson("voltage", jsonPayload);
Intensite_M2 = ValJson("current", jsonPayload);
} else if ((nGlobalIndex == 1) && (nPhaseIndex == 2)) {
Tension_M3 = ValJson("voltage", jsonPayload);
Intensite_M3 = ValJson("current", jsonPayload);
bJsonLoadingFinished = true;
g_nLastGoodReading = millis();
}
}
}
}
if (!bJsonLoadingFinished) {
//Protection contre les mauvaises lectures qui perdureraient plus de 10s !!!
if ((millis() - g_nLastGoodReading) > 10000) {
PactProd = 0.0f;
PactConso_M = 0;
PactReseau = 0.0f;
PactConso_M = 0.0f;
Tension_M = 0.0f;
Intensite_M = 0.0f;
Frequence = 0.0f;
Tension_M1 = 0.0f;
Tension_M2 = 0.0f;
Tension_M3 = 0.0f;
Intensite_M1 = 0.0f;
Intensite_M2 = 0.0f;
Intensite_M3 = 0.0f;
}
//TelnetPrintln("JSON Loading failed");
StockMessage("JSON Loading failed >" + jsonPayload + "\n" + String(esp_get_free_internal_heap_size()) + " * " + String(esp_get_minimum_free_heap_size()));
return;
}
PactReseau = PfloatMax(PactReseau);
if (PactReseau < 0) {
PuissanceS_M_inst = 0;
PuissanceI_M_inst = int(-PactReseau);
} else {
PuissanceI_M_inst = 0;
PuissanceS_M_inst = int(PactReseau);
}
PvaReseau = PfloatMax(PvaReseau);
if (PactReseau < 0) {
PVAS_M_inst = 0;
PVAI_M_inst = int(PvaReseau);
} else {
PVAI_M_inst = 0;
PVAS_M_inst = int(PvaReseau);
}
Pva_valide = true;
// filtre_puissance();
float PowerFactor = 0.0f;
if ((PVA_M_moy) != 0) {
PowerFactor = floor(100.0f * fabsf(Puissance_M_moy) / PVA_M_moy) / 100.0f;
PowerFactor = min(PowerFactor, 1.0f);
}
PowerFactor_M = PowerFactor;
if (whDlvdCum != 0) {
if (LastwhDlvdCum == 0)
LastwhDlvdCum = whDlvdCum;
long DeltaWhSoutire = whDlvdCum - LastwhDlvdCum;
LastwhDlvdCum = whDlvdCum;
if (DeltaWhSoutire > 0) {
Energie_M_Soutiree += DeltaWhSoutire;
}
}
if (whRcvdCum != 0) {
if (LastwhRcvdCum == 0)
LastwhRcvdCum = whRcvdCum;
long DeltaWhInjecte = whRcvdCum - LastwhRcvdCum;
LastwhRcvdCum = whRcvdCum;
if (DeltaWhInjecte > 0) {
Energie_M_Injectee += DeltaWhInjecte;
}
}
EnergieActiveValide = true;
if (PactReseau != 0 || PvaReseau != 0) PuissanceRecue = true; // Reset du Watchdog à chaque trame reçue de la passerelle Envoy-S metered
if (cptLEDyellow > 30) cptLEDyellow = 4;
}
String PrefiltreJson(String F1, String F2, String Json) {
int p = Json.indexOf(F1);
Json = Json.substring(p);
p = Json.indexOf(F2);
Json = Json.substring(p);
return Json;
}
// recherche F1 puis F2, retourne la chaine a partir de F2 inclus / sans copie de chaine en mémoire
String PrefiltreJson2(const String &F1, const String &F2, const String &Json) { // used shellyProEm
int p = Json.indexOf(F1);
if (p == -1) return ""; // F1 non trouvé
p = Json.indexOf(F2, p);
if (p == -1) return ""; // F2 non trouvé après F1
return Json.substring(p);
}
String SubJson(String F1, String F2, String Json) {
int p = Json.indexOf(F1);
Json = Json.substring(p);
p = Json.indexOf(F2);
Json = Json.substring(0, p + 1);
return Json;
}
//retourne la chaine contenu entre F1 inclus et F2 exclus / sans copie de chaine en mémoire
String SubJson2(const String &F1, const String &F2, const String &Json) { // used shellyProEm
int p1 = Json.indexOf(F1);
if (p1 == -1) return ""; // F1 non trouvé
int p2 = Json.indexOf(F2, p1 + F1.length());
if (p2 == -1) return ""; // F2 non trouvé
return Json.substring(p1, p2);
}
float ValJson(String nom, String Json) {
int p = Json.indexOf(nom + "\":");
Json = Json.substring(p);
p = Json.indexOf(":");
Json = Json.substring(p + 1);
int q = Json.indexOf(",");
p = Json.indexOf("}");
if (p > 0)
p = min(p, q);
else
p = q;
float val = 0;
if (p > 0) {
Json = Json.substring(0, p);
val = Json.toFloat();
}
return val;
}
// recherche nom encadré par double quote, avance jusqu'au double dot, puis optionnelement une double quote qui encadrerai la data
// retourne le float dispo a cet endroit (ou 0.0f si la chaine ne représente pas un début de nombre)
float ValJson2(const String &nom, const String &Json, bool altSansDoubleQuote = false) {
String lookup = "\"" + nom + "\""; // le nom encadré avant et après évite d'extraire une correspondance en fin de nom
int p = Json.indexOf(lookup);
if (p == -1) { // pas trouvé le nom encadré par double cote
if (altSansDoubleQuote) {
lookup = nom;
p = Json.indexOf(nom); // on essai sans encadrement par double quote, On accepte le risque de prendre une partie de nom ?
}
if (p == -1) return 0.0f; // nom n'est pas dans le Json (ni encadré ni sans encadrement)
}
p = Json.indexOf(':', p + lookup.length()); // Sauter le nom trouvé et chercher le ':' suivant
if (p == -1) return 0.0f; // pas trouvé le ':'
p++;
while (p < Json.length() && Json[p] <= ' ') p++; // On saute tous les caractères de contrôle (ASCII <= 32)
if (p < Json.length() && Json[p] == '\"') p++; // Si on tombe sur un guillemet ouvrant, on le saute
return Json.substring(p).toFloat(); // le fonction .toFloat accepte que la chaine commence par espace, tab, \r \n ...
}
long myLongJson(String nom, String Json) { // Alternative a LongJson au dessus pour extraire chez RTE nb jour Tempo https://particulier.RTE.fr/services/rest/referentiel/getNbTempoDays?TypeAlerte=TEMPO
int p = Json.indexOf(nom + "\":");
Json = Json.substring(p);
p = Json.indexOf(":");
Json = Json.substring(p + 1);
int q = Json.indexOf(","); //<==== Recherche d'une virgule et non d'un point
if (q == -1) q = Json.length(); // /<==== Ajout de ces 2 lignes pour que la ligne p = min(p, q); ci dessous donne le bon résultat
p = Json.indexOf("}");
if (p > 0)
p = min(p, q);
else
p = q;
long val = 0;
if (p > 0) {
Json = Json.substring(0, p);
val = Json.toInt();
}
return val;
}
long myLongJson2(const String& nom, const String& Json) {
String lookup = "\"" + nom + "\""; // le nom encadré avant et après évite d'extraire une correspondance en fin de nom
int p = Json.indexOf(lookup); // pas trouvé le nom encadré par double quote
if (p == -1) return 0;
p = Json.indexOf(":", p + lookup.length()); // pas trouvé le : séparateur
if (p == -1) return 0;
return Json.substring(p + 1).toInt(); // ok incluant un caractere de controle avant les numériques
}
String StringJson(String nom, String Json) {
int p = Json.indexOf(nom + "\":");
Json = Json.substring(p);
p = Json.indexOf(":");
Json = Json.substring(p + 1);
p = Json.indexOf("\"");
Json = Json.substring(p + 1);
p = Json.indexOf("\"");
Json = Json.substring(0, p);
return Json;
}
// cherche les index début et fin de la réponse pour retourner l'extrait sans copie de String
String StringJson2(const String &nom, const String &Json) {
String lookup = "\"" + nom + "\""; // le nom encadré avant et après évite d'extraire une correspondance en fin de nom
int p = Json.indexOf(lookup);
if (p != -1) p = Json.indexOf(":", p + lookup.length()); // pas trouvé le nom encadré par double quote
if (p != -1) p = Json.indexOf("\"", p + 1); // pas de :
int q = (p != -1) ? Json.indexOf("\"", p + 1) : -1; // pas trouvé le resultat commençant par double quote
if (p == -1 || q == -1) return ""; // pas trouvé le resultat encadré par double quote
return Json.substring(p + 1, q);
}
String trame = trame3; // ici on met la trame a tariter pour les tests :
// impression des variables globales
void printGolbVar() {
Serial.Println("Tension_M : " + String(Tension_M));
Serial.Println("Tension_M1 : " + String(Tension_M1));
Serial.Println("Tension_M2 : " + String(Tension_M2));
Serial.Println("Tension_M3 : " + String(Tension_M3));
Serial.Println("Intensite_M : " + String(Intensite_M));
Serial.Println("Intensite_M1 : " + String(Intensite_M1));
Serial.Println("Intensite_M2 : " + String(Intensite_M2));
Serial.Println("Intensite_M3 : " + String(Intensite_M3));
Serial.Println("PactProd : " + String(PactProd));
Serial.Println("PactConso_M : " + String(PactConso_M));
Serial.Println("Frequence : " + String(Frequence));
Serial.Println("PuissanceS_M_inst : " + String(PuissanceS_M_inst));
Serial.Println("PuissanceI_M_inst : " + String(PuissanceI_M_inst));
Serial.Println("PVAS_M_inst : " + String(PVAS_M_inst));
Serial.Println("PVAI_M_inst : " + String(PVAI_M_inst));
Serial.Println("Pva_valide : " + String(Pva_valide));
Serial.Println("PowerFactor_M : " + String(PowerFactor_M));
Serial.Println("LastwhDlvdCum : " + String(LastwhDlvdCum));
Serial.Println("LastwhRcvdCum : " + String(LastwhRcvdCum));
Serial.Println("Energie_M_Soutiree : " + String(Energie_M_Soutiree));
Serial.Println("Energie_M_Injectee : " + String(Energie_M_Injectee));
Serial.Println("EnergieActiveValide : " + String(EnergieActiveValide));
Serial.Println("PuissanceRecue : " + String(PuissanceRecue));
Serial.Println("cptLEDyellow : " + String(cptLEDyellow));
Serial.Println("memoDejaObtenu = 0; // pour la simulation, on mémorise l'endroit dans le JSON complet ou on est arrivé
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
LectureEnphase();
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
}