28-03-2025, 04:17 PM
Bonjour,
Pour homewizard, j'ai du faire ceci :
float P_act = ValJsonSG("active_power_w", SmartG_Data);
if (P_act > 0) {
PuissanceS_M_inst = P_act;
PuissanceI_M_inst = 0;
} else {
PuissanceS_M_inst = 0;
PuissanceI_M_inst = P_act * -1.0;
}
et ceci pour la lecture correcte du symbole - pour la puissance :
float ValJsonSG(String nom, String Json) {
int p = Json.indexOf(nom);
if (p == -1) return 0; // Retourne 0 si la clé est absente
Json = Json.substring(p);
p = Json.indexOf(":");
if (p == -1) return 0; // Si ":" n'est pas trouvé, on retourne 0
Json = Json.substring(p + 1); // On prend tout après le ":"
Json.trim(); // Supprime les espaces inutiles
int fin = Json.indexOf(",");
if (fin == -1) fin = Json.indexOf("}"); // Pour gérer la dernière valeur
if (fin > 0) {
Json = Json.substring(0, fin); // Garde uniquement la valeur
}
Json.trim(); // Nettoie encore une fois
Serial.print("Valeur extraite pour ");
Serial.print(nom);
Serial.print(" : '");
Serial.print(Json);
Serial.println("'");
return Json.toFloat(); // Convertit proprement en float
}
Alors tout était fonctionnel.
Je reste bien entendu dispo pour vous partager mon pc si nécessaire :-)
Frantz
Pour homewizard, j'ai du faire ceci :
float P_act = ValJsonSG("active_power_w", SmartG_Data);
if (P_act > 0) {
PuissanceS_M_inst = P_act;
PuissanceI_M_inst = 0;
} else {
PuissanceS_M_inst = 0;
PuissanceI_M_inst = P_act * -1.0;
}
et ceci pour la lecture correcte du symbole - pour la puissance :
float ValJsonSG(String nom, String Json) {
int p = Json.indexOf(nom);
if (p == -1) return 0; // Retourne 0 si la clé est absente
Json = Json.substring(p);
p = Json.indexOf(":");
if (p == -1) return 0; // Si ":" n'est pas trouvé, on retourne 0
Json = Json.substring(p + 1); // On prend tout après le ":"
Json.trim(); // Supprime les espaces inutiles
int fin = Json.indexOf(",");
if (fin == -1) fin = Json.indexOf("}"); // Pour gérer la dernière valeur
if (fin > 0) {
Json = Json.substring(0, fin); // Garde uniquement la valeur
}
Json.trim(); // Nettoie encore une fois
Serial.print("Valeur extraite pour ");
Serial.print(nom);
Serial.print(" : '");
Serial.print(Json);
Serial.println("'");
return Json.toFloat(); // Convertit proprement en float
}
Alors tout était fonctionnel.
Je reste bien entendu dispo pour vous partager mon pc si nécessaire :-)
Frantz