26-05-2025, 11:35 AM
(26-05-2025, 10:27 AM)Mike a écrit : Bonjour,
Pourriez vous mettre une capture d’écran des données brutes ou en faire un copier/coller afin de voir le format exact.
Je pense que le soucis vient de la fonction ValJsonSG qui est utilisée et plus particulièrement de la ligne suivante :
Json = Json.substring(p + 2);
Si jamais il n'y a pas d'espace dans le json reçu entre le : et la valeur de la puissance alors le premier caractère (chiffre ou signe) de la puissance sera mangé.
Une technique qui marcherait dans tous les cas (avec ou sans espace après les deux points) serait de faire :
Json = Json.substring(p + 1).trim();
Bonjour,
je ne sait pas codé, je me doute que ce n'est pas grand chose
j'ai juste fait une installation rapide!
je sait pas si la photo vas passé !
je me reprend, sur la page donné brut la valeur de puissance est affiché a la bonne valeur en positif et négatif : c'est parfait !
mais le programme perd le premier caractère (chiffre ou signe) de la puissance, la puissance repris de la linge <active_power_w>
donc à la page d'accueil et la régulation sont faussé
je pense que le problème vient d'environ d'ici:
timeout = millis();
// Lecture des données brutes distantes
while (clientESP_RMS.available() && (millis() - timeout < 5000)) {
HomeW_Data += clientESP_RMS.readStringUntil('\r');
}
int p = HomeW_Data.indexOf("{");
HomeW_Data = HomeW_Data.substring(p + 1);
p = HomeW_Data.indexOf("}");
HomeW_Data = HomeW_Data.substring(0, p);
if (PfloatMax(ValJsonSG("active_power_w", HomeW_Data)) > 0) {
extrait :Source_HomeWizard.ino v14.23
bien à vous
Marc