Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Désactivation du routage ou mode découpe du secteur
#11
Vous n'avez pas la sonde de courant monte a l'envers ? Le soir sans soleil vous devez avoir des valeurs àgauche côté soutiree.
Répondre

#12
(16-10-2025, 09:38 AM)F1ATB a écrit : Vous n'avez pas la sonde de courant monte a l'envers ? Le soir sans soleil vous devez avoir des valeurs àgauche côté soutiree.

voici la capture de maintenant avec un peu de soleil.
j'ai l impression qu' il se coupe.

La sonde est de home wizard il est prend les mesures en directe sur le compteur.


Pièces jointes Miniature(s)
       
Répondre

#13
Je pense que le problème vient du code pour la source de mesure home wizard qui mange le signe moins.
En regardant le code je vois qu'il y a eu un changement la dessus en 15.0.
gereddy vous pouvez essayer la version 14.25, je pense qu'avec cette version le signe moins ne sera pas mangé.
Merci de confirmer ici si cela fonctionne avec la version 14.25.
Répondre

#14
je vais tester et je reviens
Merci
Répondre

#15
@andre je pense que le soucis vient du fait qu'on utilise la fonction ValJsonSG à la fois pour Smart Gateway et Home Wizard.
Dans le cas de Smart Gateway, on doit vouloir supprimer un caractère qui n'est pas présent dans le cas de Home Wizard.
La solution la plus simple afin de ne rien casser serait à mon avis d'avoir deux fonctions distinctes (ou ajouter un paramètre à la fonction existante pour différencier les deux cas), une ValJsonSG utilisée pour Smart Gateway et une ValJsonHW utilisée pour Home Wizard.
Voici une suggestion d’implémentation :
// Inchangée par rapport à l'existante
float ValJsonSG(String nom, String Json) {
int p = Json.indexOf(nom);
Json = Json.substring(p);
p = Json.indexOf(":");
Json = Json.substring(p + 1);
Json.trim();
p = Json.indexOf(",");
float val = 0;
if (p > 0) {
Json = Json.substring(0, p);
Json = Json.substring(1, Json.length() - 1);
val = Json.toFloat();
}
return val;
}

et :
float ValJsonHW(String nom, String Json) {
int p = Json.indexOf(nom);
Json = Json.substring(p);
p = Json.indexOf(":");
Json = Json.substring(p + 1);
Json.trim();
p = Json.indexOf(",");
float val = 0;
if (p > 0) {
Json = Json.substring(0, p);
val = Json.toFloat();
}
return val;
}

Dans le cas de Home Wizard j'ai supprimé la ligne "Json = Json.substring(1, Json.length() - 1);" qui selon moi est la cause du problème de gereddy.
Cette ligne n'est pas présente en 14.25 donc si le test en 14.25 est positif, cela confirmera que c’était bien le problème.

@andre j'ai trouvé ce post qui explique la nécessité de cette ligne dans le cas de SmartGateways ; https://f1atb.fr/forum_f1atb/thread-1584...l#pid12851
Manifestement elle n'est pas nécessaire et même problématique dans le cas de Home Wizard d’où l’intérêt de différencier les deux cas.
Répondre

#16
Voila j'ai changé de version 14.25 maintenant.
Je crois que cela fonctionne.

Merci

Je confirme, cela fonctionne avec cette version.

Encore merci


Pièces jointes Miniature(s)
   
Répondre

#17
Oui, la mesure de puissance fonctionne bien, on voit de l'injection maintenant.
Cela confirme que le problème vient bien de la fonction ValJsonSG.
En attendant qu'André fasse un correctif, vous pouvez continuer à utiliser cette version.
Répondre

#18
(16-10-2025, 10:31 AM)Mike a écrit : Oui, la mesure de puissance fonctionne bien, on voit de l'injection maintenant.
Cela confirme que le problème vient bien de la fonction ValJsonSG.
En attendant qu'André fasse un correctif, vous pouvez continuer à utiliser cette version.

Oui, bien sur.
Merci à l 'équipe.
Répondre

#19
@André J'ai continué un peu mes recherches et la différence entre le JSON de  SmartGateways et Home Wizard est que SmartGateways utilise le type string pour les valeurs de puissance (ie avec des guillemets autour de la valeur) alors que Home Wizard utilise le type number (ie pas de guillemets autour de la valeur).
Une correction plus simple que de dupliquer la méthode serait de rajouter un test sur la présence des guillemets et le cas échéant les supprimer.
Voici une implémentation de ValJsonSG avec cette correction :

Code :
float ValJsonSG(String nom, String Json) {
  int p = Json.indexOf(nom);
  Json = Json.substring(p);
  p = Json.indexOf(":");
  Json = Json.substring(p + 1);
  Json.trim();
  p = Json.indexOf(",");
  float val = 0;
  if (p > 0) {
    Json = Json.substring(0, p);
    if (Json.indexOf("\"") != -1) { // Test pour différencier SG et HW
      Json = Json.substring(1, Json.length() - 1);
    }
    val = Json.toFloat();
  }
  return val;
}
Répondre

#20
(17-10-2025, 09:00 AM)Mike a écrit : @André J'ai continué un peu mes recherches et la différence entre le JSON de  SmartGateways et Home Wizard est que SmartGateways utilise le type string pour les valeurs de puissance (ie avec des guillemets autour de la valeur) alors que Home Wizard utilise le type number (ie pas de guillemets autour de la valeur).
Une correction plus simple que de dupliquer la méthode serait de rajouter un test sur la présence des guillemets et le cas échéant les supprimer.
Voici une implémentation de ValJsonSG avec cette correction :

Code :
float ValJsonSG(String nom, String Json) {
  int p = Json.indexOf(nom);
  Json = Json.substring(p);
  p = Json.indexOf(":");
  Json = Json.substring(p + 1);
  Json.trim();
  p = Json.indexOf(",");
  float val = 0;
  if (p > 0) {
    Json = Json.substring(0, p);
    if (Json.indexOf("\"") != -1) { // Test pour différencier SG et HW
      Json = Json.substring(1, Json.length() - 1);
    }
    val = Json.toFloat();
  }
  return val;
}
Bonjour,
Si il faut faire des tests après modif, pas de souci, je suis là.
Merci
Répondre



Atteindre :


Utilisateur(s) parcourant ce sujet :
2 visiteur(s)

Moteur MyBB, © 2002-2025 Melroy van den Berg.