Note de ce sujet :
  • Moyenne : 5 (4 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Plus d'accès aux données de la passerelle Enphase Envoy
Téléchargement de la V17.22, la communication avec la passerelle, en D8.3.5528, s'effectue correctement et le routeur est actif.
Merci à tous.

3 KW avec 8 panneaux en monophasé, routeur actif depuis Juin 2024.
Répondre

bonjour.
La nouvelle version ne fonctionne pas chez moi.

Session Id Not Received from Enphase
Token Not Received from Enphase

et JSON loading failed

Vous parlez de la MAJ d'enphase D8.3.5528 alors que quand je vais sur l'appli en phase j'ai la dernière version V26.6.1. Peut etre que vous ne parlez pas de l'application mais de s meter envoy ?
Répondre

(Il y a 3 heures)Fuster13 a écrit : bonjour.
La nouvelle version ne fonctionne pas chez moi.

Session Id Not Received from Enphase
Token Not Received from Enphase

et JSON loading failed

Vous parlez de la MAJ d'enphase D8.3.5528 alors que quand je vais sur l'appli en phase j'ai la dernière version V26.6.1. Peut etre que vous ne parlez pas de l'application mais de s meter envoy ?

Oui l'ENVOY
Répondre

Petit retour sur la version 17.22 avec système en triphasé.

Tous semble OK, valeur et pilotage du SSR. Smile Je vais surveiller cela de près !

Merci a vous tous
Répondre

Bonjour @all,
idem,
La nouvelle version ne fonctionne pas chez moi.

Session Id Not Received from Enphase
Token Not Received from Enphase

et JSON loading failed

suis en triphasé

pour info, j'ai repris un vieux portable avec W10, et installé ce fameux pilote Silicon lab , pour réinstaller votre dernière version sur l'ESP32 qui fonctionnait avant notre galère Enphase ( le même pilote qui ne veux s'installer sur mon W11 Pro !
Merci encore aux développeurs .
6 kWc - Enphase iq8hc
Enphase envoy metered
Répondre

Bonjour,
je viens de faire la MAj en 17-22

Session Id Ok Received from Enphase
Token Ok Received from Enphase


mais j'ai le message "Envoy refused request"
Ma passerelle est en 8.3.5528

En tout cas, merci à tous pour votre mobilisation !!!!!
Répondre

Bonjour à tous,

Je remercie tous ceux qui ont pu contribuer à cette dernière version.
J'ai mis à jour mon routeur en version 17.22 avec une passerelle en D8.3.5528.
Je verrai demain pour le routage mais voici une copie d'écran de ma page données brutes, on voit que j'ai un message d'erreur de connexion qui apparait 5 min après le boot : Connection failed to Envoy-S server!
J'ai testé deux fois avec le même résultat.

Encore Merci à tous et à André !!!


Pièces jointes Miniature(s)
   
Config : 1 routeur V15.12 avec sonde température. donnée Emphase
PV : 4.5 (9 panneaux 500w dualSun + micro-onduleurs IQ8P)
Répondre

(Il y a 46 minutes)Placo84 a écrit : Bonjour à tous,

Je remercie tous ceux qui ont pu contribuer à cette dernière version.
J'ai mis à jour mon routeur en version 17.22 avec une passerelle en D8.3.5528.
Je verrai demain pour le routage mais voici une copie d'écran de ma page données brutes, on voit que j'ai un message d'erreur de connexion qui apparait 5 min après le boot : Connection failed to Envoy-S server!
J'ai testé deux fois avec le même résultat.

Encore Merci à tous et à André !!!


J'ai la même situation avec ce msg au bout de 5 minutes, puis régulièrement ensuite sans que ce soit toujours le même timing. C'est un msg résiduel qui ne semble pas traduire un fonctionnement anormal. En effet, comme on le voit sur ton screenshot la connection envoy est ok et les données sont actualisées normalement (à comparer avec l'appli Envoy pour comparer). 

Petit bug à corriger.
--------------------------------------------------------------
ESP32 (v117,20 et IP fixe) + sonde température + SSR -- Cumulus/Chauffe-Eau
Source données serveur Enphase 7.

Répondre

Bonjour,

  Ok le résultat est fonctionnel, bravo à ceux qui ont bossé de près (ou de loin) sur le sujet

  **********
  dans la nouvelle version Enphase 17.22 :

  Une première passe pour le bonne cohérence et améliorer la fluidité lors de future révision de code :

Il n'y a plus de traitement pour Firmware V5 => si quelqu'un tourne encore en V5 qu'il se manifeste !
Code :
//***********************************
//* Source EnPhase Envoy V5 ou V7   *
//***********************************

  Les commentaires qui viennent du code que j'avais publier mais qui n'ont pas été considérer sont a supprimer : 
Code :
// exploite la puissance de ArduinoJson :
et
  // ============================================================
  // CORRECTION 1 : Initialisation explicite du filtre Envoy V7
  // ============================================================
  n'a pas de sens puisque qu'il n'y a pas une seule ligne qui utilise ArduinoJSON et ses filtres associés

Code :
  // établi ou rétabli la connexion qu'on garde ouverte entre les appels

n'a pas de sens puisque "client" est détruit et recréer a chaque appel avec la ligne "NetworkClientSecure client;"

Code :
      TelnetPrintln("Envoy refused request");
      StockMessage("Envoy refused request");

La ligne TelnetPrintln est inutile ici, l'appel de StockMessage fait déja le job (suite a l'appel de PrintScrool)
Sans utilisation de ArduinoJson (avec les fonctions de parsing inclus a la fin du module), pas d'intérêt de lire les 8 sections  (nGlobalIndex < 8)(nGlobalIndex < 2) suffit
pour ne traiter que la [0] et la [1] avec 
if (nGlobalIndex == 0) {
et 
} else if (nGlobalIndex == 1) {
Ok le bouclage s'arrête avec la variable bJsonLoadingFinished

Code :
    // Saute L'entete d'ouverture de la trame JSON.
    jsonPayload = client.readStringUntil('[');
Le commentaire n'est pas bon, c'est "saute du retour code http (attendu 200) au premier crochet ouvrant" ...
c'est un piège, si l'entête contient un crochet ouvrant (un cookie ou autre info retournés dans la section header), ça décale toute la logique, il faudrait finir de lire l'entête et seulement après, chercher le crochet ouvrant dans le corps du message (qui devrait être le 1er octet...)

il faut passer la séquence \r\n\r\n pour arriver au début du body [a traiter]

=> Reste a confirmer que la situation monophasé et toujours sur la phase L1 sinon c'est échec d'obtention des données correct

dans le passage
Code :
        if (!bMonoPhase) {
          PactProd = ValJson("activePower", jsonPayload);
          Tension_M = ValJson("voltage", jsonPayload);
          Intensite_M = ValJson("current", jsonPayload);
        }
c'est quasiment sur qu'on va lire le tension cumulé des 3 phases (soit ~700V) et pareil c'est le cumul des intensité par phase, pas grave ces infos ne sont pas utile (mais elles s'affiche sur le page données brutes)
la fonction ValJson utilisée et telle que définit mérite quelques corrections (ne semble pas impacté le fonctionnement sur les trames obtenu par passerelle) :
Le nom rechercher pourrait être la fin d'une autre variable car on ne cherche pas nom encadré entre guillemet
elle impose une virgule dans la suite du Json
Ouf : Avec la trame de la passerelle, on n'a jamais des nom qui se termine pareil (exemple de bug on demande la valeur de toto et il y a une variable xyztoto placé avant, c'est planté) et on ne va jamais récupérer la dernière variable avant l'accolade final

une version plus sécure (conforme composition d'une trame JSON base json.org) pour extraire les infos incluant le dernier item d'une chaine JSON
Code :
// recherche nom encadré par double quote, avance jusqu'au double dot, puis optionnellement 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 ValJson(const String &nom,, String Json) {  // évite une duplication de chaine
  int p = Json.indexOf("\"" + nom + "\""); // le nom encadré avant et après évite d'extraire une correspondance en fin de nom
  if (p == -1) return 0.0f;  // pas trouvé le nom recherché, retourne 0.0f
  Json = Json.substring(p);  // commence la chaine juste après le guillemet fermant
  p = Json.indexOf(":");  // avance au :
  if (p == -1) return 0.0f; // si pas de ":" on retourne 0.0f
  Json = Json.substring(p + 1); avance après le ":"
  Json.trim();  // supprime l'éventuel espace qui suivrait le ":"
  if (Json.charAt(0) == '\"') Json = Json.substring(1); // supprime l'éventuel 1er double quote qui encadre la donnée
  return Json.toFloat();  // lit et retourne le float (ou 0.0f si les premiers caracteres ne représente pas un numérique), la lecture du float s'arrêtera sur tout caractères autre qui +-[0..9]E
}
Merci André Smile ,
Routeur V17.19 (since V2.01) / Source UxI / 5 actions

Si les réponses que je propose bénévolement sur ce forum ne vous plaisent pas, ignorez-les simplement sans me jeter la pierre ! (Ou ne posez pas de question)
Répondre



Atteindre :


Utilisateur(s) parcourant ce sujet :
Alain_C38, Matth32, Oniric, Patrick, patrickvalence, 6 visiteur(s)

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