Note de ce sujet :
  • Moyenne : 3 (4 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Adaptation EJP
#1
Bonjour,

Encore merci pour ce formidable routeur,

je voulais attendre qu un jour ejp arrive pour tester et demain c est un jour rouge.
j ai modifier le code versions 12.06 pour l ejp .
rajout de l option ejp
   
reception des données 
   
affichage dans main les couleurs
   
pas tous a fait fini reste les actions.
je ne sais pas si il y a beaucoup en ejp si il y a des intéressés je mettrais les modifications.


dans Solar_Router_V12_06.ino

ligne 1034           Call_RTE_data();
Modifier             if (TempoRTEon == 1)  Call_RTE_data();
et ajouter                  if (TempoRTEon == 2) Call_EJP_data();                        //59jag

apres ligne 1044         if (LTARF.indexOf("ROUGE") >= 0) Ltarf += 16;
ajouter                  if (LTARF.indexOf("VERT") >= 0) Ltarf += 4;                   //59jag
                         if (LTARF.indexOf("EJP_ROUGE") >= 0) Ltarf += 0;             //59jag



ajouter  un nouveau fichier Ejp.ino  (new Tab)
et copier le codesuivant dedans
Code :
//*******************************************************
// * Recherche Info Ejp pour les sources non Linky      *
// *******************************************************
// sans Api  web scraping sur hellowatt.     59jag

#define EJP_HOST "www.hellowatt.fr"         
WiFiClientSecure client;

String find( char* target,  char fintarget) {
  char result[256];
  if (!client.find(target)) {
    Serial.println(F("pas trouve"));
    return "";
  } else {
    size_t bytesRead = client.readBytesUntil(fintarget, result, sizeof(result) - 1);
    if (bytesRead > 0) {
      result[bytesRead] = '\0';           // Assurer la terminaison de la chaîne
      return String(result);
    }
  }
  return "";
}
void Call_EJP_data() {

  int Hcour = HeureCouranteDeci / 2;  //Par pas de 72secondes pour faire 2 appels si un bug
  int LastH = LastHeureRTE / 2;
  bool couleur_lendemain =  (STGE == "10" || STGE == "14" );              // true si couleur du lendemain connue
  bool couleur_jour      =  (LTARF == "EJP_VERT" ||  LTARF == "EJP_ROUGE"); // true si couleur du jour connu
// traitement du changement de couleur EJP à 7h00, avec ré-initialisation de la couleur du lendemain
if ( (Hcour==350) && (LTARF!="") && (STGE!="") )   // à 7h00 précises, la couleur tempo du lendemain devient la couleur du jour. Celle du lendemain n'est à priori pas encore connue
                                                    // Cela permet de continuer à fonctionner de manière nominale même si le site RTE n'est pas encore renseigné
                                                    // && (LTARF!="") pour ne pas passer dans cette boucle au reset si fait à 7h00 du matin...
                                                    // && (STGE<>"")  pour éviter de passer plusieurs fois( 3 à 4 ) dans cette boucle à cause du Hcour/2
    { 
     if       (STGE == "10") LTARF = "EJP_VERT"; 
     else if  (STGE == "14") LTARF = "EJP_ROUGE";
     STGE="";
     couleur_lendemain=false; // on ne connait plus la couleur du lendemain. Cela forcera la lecture sur le site RTE
     if (LTARF!="") { 
           StockMessage("Ejp depuis 7h00: " + LTARF + ",demain ? ");
      }
    } 
    if ((DATEvalid) && (!(couleur_lendemain && couleur_jour ) ) && ((LastH != Hcour) && (Hcour == 352 || Hcour == 360 || Hcour == 680 || Hcour == 700 || Hcour == 750 || Hcour == 800 || Hcour == 1150) || LastHeureRTE < 0)) {
       if (TempoRTEon == 2) {
        client.setInsecure();
        StockMessage("Recherche couleur sur " + 'EJP_HOST');
        if (!client.connect(EJP_HOST, 443)){
             StockMessage("Échec de la connexion "+ 'EJP_HOST');
             return;
        }
        client.print(F("GET "));
        client.print("/ejp-demain-observatoire-edf/");
        client.println(F(" HTTP/1.1"));
        client.print(F("Host: "));
        client.println(EJP_HOST);
        client.println(F("Cache-Control: no-cache"));
        if (client.println() == 0){
        Serial.println(F("Échec de l'envoi de la requête EJP"));
        return;
        }
        char status[32] = {0};
        client.readBytesUntil('\r', status, sizeof(status));
        if (strcmp(status, "HTTP/1.1 200 OK") != 0){
         Serial.print(F("Réponse inattendue: "));
         Serial.println(status);
         return;
        }
        char endOfHeaders[] = "\r\n\r\n";
        if (!client.find(endOfHeaders)){
          Serial.println(F("response invalide"));
          return;
        }
        String DateToday=find(">Aujourd&#x27;hui</span>",'<');
        String ejpDataToday=find("class=\"is-ejp\">",'<');
        String DateDemain=find(">Demain</span>",'<');
        String ejpDataDemain=find("class=\"is-ejp\">",'<');
       
        if (ejpDataToday.indexOf("Jour non EJP") >= 0) {
             LTARF = "EJP_VERT";
        }
        if (ejpDataToday.indexOf("Jour rouge EJP") >= 0){
             LTARF = "EJP_ROUGE";
        }
        if (ejpDataDemain.indexOf("Jour non EJP") >= 0) {
             STGE = "10";
        }
        if (ejpDataDemain.indexOf("Jour rouge EJP") >= 0){
             STGE = "14";
        }
        StockMessage(" STGE = " + STGE +"  LTARF = " + LTARF );     //pour debug
        StockMessage("Aujourd'hui "+ DateToday + ejpDataToday);
        StockMessage("Demain " + DateDemain + ejpDataDemain);   
        LastHeureRTE = HeureCouranteDeci;
   
    }else {
      if (Source != "Linky" && Source != "Ext") {
        LTARF = "";
        STGE = "0";
      }
    }
  }
}


*********************************************************************************************************************
dans pageHtmlPara.h

             56                <input type='checkbox' name='TempoRTEon' id='TempoRTEon' style='width:25px;' >
 apres ligne 57            </div>


 ajouter                   <div class='ligne'>                                                              
                                <label for='EjpOn'>Affichage couleur Ejp : </label>                            
                                <input type='checkbox' name='EjpOn' id='EjpOn' style='width:25px;' >            
                           </div>  


apres ligne 337            GID("TempoRTEon").checked = Para[24]==1  ? true:false;

ajouter                    GID("EjpOn").checked = Para[24]==2  ? true:false;               //59jag


apres ligne 361            var TempoRTEon = GID("TempoRTEon").checked ? 1:0;             

ajouter                    if(TempoRTEon == 0 ) TempoRTEon = GID("EjpOn").checked ? 2:0;   //59jag
*************************************************************************************************************************
dans pageHtmlMain.h

modifier les lignes 116    var Tarif=["NON_DEFINI","PLEINE","CREUSE","BLEU","BLANC","ROUGE"];
                    117    var couleur=["#ddf","#f00","#0f0","#00bfff","#fff","#f00"];
                    118    var tarif=["","H.<br>pleine","H.<br>creuse","Tempo<br>Bleu","Tempo<br>Blanc","Tempo<br>Rouge"];


comme ceci                 var Tarif=["NON_DEFINI","PLEINE","CREUSE","BLEU","BLANC","ROUGE","VERT","ROUGE"];                                                   //59jag
                           var couleur=["#ddf","#f00","#0f0","#00bfff","#fff","#f00","#0f0","#f00"];                                                           //59jag
                           var tarif=["","H.<br>pleine","H.  <br>creuse","Tempo<br>Bleu","Tempo<br>Blanc","Tempo<br>Rouge","Ejp<br>Vert","Ejp<br>Rouge"];        //59jag


modifier les lignes 120    for (i=0;i<6;i++){
        

comme ceci                 for (i=0;i<8;i++){  

                    132         txtJ = "Tempo<br>J+1";    
apres ligne         133      }


ajouter                      if (tempo>3 ){             //59jag
                               txtJ = "Ejp<br>J+1";     //59jag          
                             }                          //59jag

**************************************************************************************************************************
avec ces modif vous avez deja l affichage des couleur ejp
reste encore action html a finir mes ca bug   Huh
                    
Répondre
#2
(12-11-2024, 11:32 PM)59jag a écrit : Bonjour,

Encore merci pour ce formidable routeur,

je voulais attendre qu un jour ejp arrive pour tester et demain c est un jour rouge.
j ai modifier le code versions 12.06 pour l ejp .
rajout de l option ejp

reception des données 

affichage dans main les couleurs

pas tous a fait fini reste les actions.
je ne sais pas si il y a beaucoup en ejp si il y a des intéressés je mettrais les modifications.

Bonjour je suis en EJP aussi. À voir si les jours Tempo rouges sont pas les mêmes.
Donc maintiens le sujet pour les premiers jours.
Merci.
Répondre
#3
Demain (13/11) est un jour Tempo bleu...
12 x AIKO 440W Full black A-MAH54MB
3 x HOYMILES HMS2000-4T
OpenDTU
Répondre
#4
Et aujourd’hui EJP et rien en effet sur l’affichage.
Donc je suis preneur de ta modification ?.
Répondre
#5
Bonjour, je suis également intéressé pour votre modification EJP. 
Merci d'avance pour votre aide. 
Cordialement
Répondre
#6
Hello

je suis aussi en EJP, 
j'ai installé le router que depuis le début du mois et c'est la première fois aujourd'hui que je vois le soleil
je suis en UxIx2 donc pas d'info du compteur, je pensais plus a installer un module 
     
et récupérer l'information sur une pin mais pour le moment je suis pris par autre chose.
comme je suis nouveau , je souhaiterai savoir en quoi l'information EJP vous intéresse 
cosmétique: sur un voyant ?
ou action particulière ?

merci
V12.06
utilisateur de node-red
7 esp32
dont un qui pilote ma solution hydro solaire( eau sanitaire, chauffage, SPA)

Philippe Marie
Répondre
#7
Photo 
En version 8.?? j'avais géré l'EJP en dur dans le code car je ne sais pas modifier le html.
Dons je suis preneur de ta modif  et je peut être un beta testeur.....
J'ai repéré dans le code les endroits "stratégiques" ou il faudrait modifier le code mais j'en ai surement oublié.
Pour moi, c'est juste informatif puisque je n'autorise le chauffage et ECS que de 1h à 7h du matin et ce tous les jours (EJP ou pas) Le reste du temps c'est régul si prod PV
Si tu le souhaites, on peut se parler au tél.

si André passe par là, les données brutes en EJP. Attention STGE =  U apparemment si EJP le lendemain sinon W
Je vais suivre de prêt pour voir

[Image: 24111302015510250318492357.jpg]
Répondre
#8
(13-11-2024, 02:56 PM)Philippe Marie a écrit : je souhaiterai savoir en quoi l'information EJP vous intéresse 
cosmétique: sur un voyant ?
ou action particulière ?

je veux faire des actions selon la couleur du lendemain ,comme j ai un batterie lifepo4 de 10kwh je veux la charger la nuit pour l utiliser le lendemain lorsque c est rouge.
par contre j ai pas fini les modif surtout dans pageHtmlActions.h
c pas évident de modifier un programme qui n as pas était écrit par soi-même.
Répondre
#9
En définitive, ton code pour afficher EJP me suffirait si tu veux le mettre à dispo. C'est juste pour infos car je gère la recharge du ECS entre 1h et 7h si besoin. Et celà pour tous les jours quelque soit l'état EJP ou pas.
Merci
Répondre
#10
(13-11-2024, 09:10 PM)59jag a écrit :
(13-11-2024, 02:56 PM)Philippe Marie a écrit : je souhaiterai savoir en quoi l'information EJP vous intéresse 
cosmétique: sur un voyant ?
ou action particulière ?

je veux faire des actions selon la couleur du lendemain ,comme j ai un batterie lifepo4 de 10kwh je veux la charger la nuit pour l utiliser le lendemain lorsque c est rouge.
par contre j ai pas fini les modif surtout dans pageHtmlActions.h
c pas évident de modifier un programme qui n as pas était écrit par soi-même.

Ok j'avais peur de passer a coté de quelque chose
V12.06
utilisateur de node-red
7 esp32
dont un qui pilote ma solution hydro solaire( eau sanitaire, chauffage, SPA)

Philippe Marie
Répondre


Atteindre :


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