besoin d'aide pour réaliser un script photovoltaique

Capteurs et actionneurs HTTP

besoin d'aide pour réaliser un script photovoltaique

Messagepar misterden » 23 Oct 2019 23:29

Bonjour,

j'utilise un serveur WES ( https://www.cartelectronic.fr/serveur-w ... r-wes.html ) ( dans mon tableau électrique ) pour mesurer ma consommation d’électricité selon 3 pinces ampèremétriques ( 1 l'arrivé principale dans le tableau, 1 le chauffe eau, un la pompe à chaleur ) et une pince utilisé pour mesure la production photovoltaïque qui arrive dans le tableau ( pince N°4).

Et un module ( TIC sur le compteur enedis ) communiquant avec le serveur WES .

Nous avons besoin de la mesure TIC ; de la pince 1 ( consommation générale du tableau) et la pince 4 ( arrivée photovoltaique).

J'utilise une requête HTML qui lance un script sur le serveur WES afin de récupérer les valeurs nécessaires ( http://login:password@ip_du_wes/fichier du script.cgx)

de la je récupère l'ensemble des différentes valeurs sous cette forme:

procon fonctionne.JPG
retour script serveur wes
procon fonctionne.JPG (63.39 Kio) Consulté 5360 fois


L'idée serait la suivante :

Lancer ce script régulièrement ( dans le créneau horaire ou il fait jour déja afin de limiter les requêtes et le faire par exemple toutes les 5 ou 10 minutes entre 8h et 19h) et selon le résultat obtenu avec les niveau de production et de consommation :

– Soit si le ratio est prod > à conso ou pas (par exemple ) : lancer des scénarios ( comme allumer le chauffe eau ; mettre la filtration piscine ou l’arrêter etc…).

– Soit à partir d’un seuil de production supérieur à x Ampère la consommation : déclenché un appareil

Il faudrait donc que je lance une requête via l'eedomus pour générer le script sur le serveur WES ( celui-ci est comptable avec l'eedomus) et que en retour l'eedomus m'indique si je suis :
- En consommation sur le réseau EDF principalement ( prod photovoltaïque trop faible ou absente )
ou
- En autoconsommation quasi total ( je ne consomme que ce que je produit, rien n'est ou presque n'est pris chez EDF)
ou
- Je suis en production supérieur à ma consommation (donc revendu a EDF ) et la je pourrais lancer d'autre appareil ( filtration piscine , chauffe eau etc...)

Si quelqu'un peut m'aider a créer ce script ?

Par avance merci
misterden
 
Messages : 733
Inscription : 02 Nov 2014

Re: besoin d'aide pour réaliser un script photovoltaique

Messagepar merguez07 » 24 Oct 2019 09:16

je suis dispo si besoin (a contacter en MP)
tuto 1 -->Programmation des scripts Eedomus
tuto 2 -->SmartDevice
tuto 3 -->Le déclenchement de règles
scripts -->Météo du jour | GH Thermostat | TotalWatt | Detecfire | smartbattery
Skype Eedomus -->lien vers le skype Eedomus
merguez07
 
Messages : 2346
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: besoin d'aide pour réaliser un script photovoltaique

Messagepar Kitor » 24 Oct 2019 13:20

Je vais faire la même chose (une fois les PV installés) par contre, en php sur mon syno (plus facile pour moi).
Si tu a un syno ou un PI, sa peux le faire.

Voir ici ---> http://kitor.synology.me/wordpress/principale/photovoltaique/photovoltaique/

PS : Mon API météo ne fonctionne plus, je dois le refaire avec une autre mais c'est juste informatif dans mon TB.
Kitor
 
Messages : 933
Inscription : 18 Nov 2014

Re: besoin d'aide pour réaliser un script photovoltaique

Messagepar misterden » 25 Oct 2019 22:45

Kitor a écrit:Je vais faire la même chose (une fois les PV installés) par contre, en php sur mon syno (plus facile pour moi).
Si tu a un syno ou un PI, sa peux le faire.

Voir ici ---> http://kitor.synology.me/wordpress/principale/photovoltaique/photovoltaique/

PS : Mon API météo ne fonctionne plus, je dois le refaire avec une autre mais c'est juste informatif dans mon TB.


Salut, j'ai un PI également, avec jeedom dessus mais je l'utilise plus trop jeedom étant vraiment trop complexe et chronophage... mais je vais devoir m'y remettre car mon onduleur est un FRONIUS et il y a un plug in pour celui-ci chez jeedom.

Sinon pour l'instant je ne compte pas mettre la météo dans les scénarii des panneaux solaires ça ferait trop de paramètres a gérer et ça serait vraiment un case tête ( il faut savoir qu'en gros ce type de logiciel /systèmes existent pour gérer tout ça ce sont FHE , COMWATT mais les systèmes coûtent plusieurs milliers d'euros ... et pas sur que l'investissement soit rentable au final vu le prix).
J'ai peur aussi de surcharger l'eedomus avec trop de règles et paramètres à gérer.

Pour l'instant mon idée et plus de fonctionner :
- En cascade : d'abord lancement de la pompe /filtration piscine pour X minutes/heures ; puis chauffe eau pour X minutes / heures puis de x autres appareils programmable ( lave vaisselle/linge) ou gérable via l'eedomus.
- Selon si la production est suffisante ou pas ou selon X surplus solaire ( prod > conso tiré du réseau EDF )... indirectement c'est corrélé à la météo ( en plus le panneaux sont tributaires de l’ensoleillement ou du moins de la course du soleil et de l'azimut qui est différent selon les saisons donc un autre paramètre qui serait a gérer si on cherche l'optimum).
A défaut repasser l'ensemble sur les créneaux Heures creuses ( qui sont programmées via le script MYELEC)
misterden
 
Messages : 733
Inscription : 02 Nov 2014

Re: besoin d'aide pour réaliser un script photovoltaique

Messagepar misterden » 01 Mai 2024 10:48

Bonjour,

Suite au plantage de mon SERVEURWES ( carte SD HS ) et la mise à jour vers la nouvelle version du firmware de l'appareil, je n'ai plus certaines informations qui remontaient avant dans le fichier utilisé pour le script avec l'eedomus.

Avant le fichier de données généré avec le WES à chaque requête comportait une donnée indiquait " IR1; IR2 ; ..." il s'agissait de la puissance mesurée par le serveur WES.

Maintenant il ne fourni plus cette donnée, il faut la calculer avec 2 données qui sont mesurées ( la tension avec l'intensité ) par les sondes.
la tension étant " V "
L'intensité étant la donnée " I1; I2 ... selon le numéro de la sonde )
Je ne sais pas comment indiquer cela dans le script / modifier le script pour que les $PW1; $PW2 etc.. incluent un calcul I1 x V pour le $PW1

Merci pour votre aide

Code : Tout sélectionner
<?

//******************************************************************************
// dialogue actionneur --> Script
//******************************************************************************
    $IP_wes     =   getArg('ip'       , true , NULL  );     
    $login      =   getArg('login'    , true , NULL  );   
    $seuils     =   getArg('seuils'   , false,"0,800,800,2000");   
//******************************************************************************

//******************************************************************************
//  requête vers serveur wes
//******************************************************************************
    $url     = "http://$login@$IP_wes/data.cgx";
    $xml_wes = httpQuery($url);
   
//******************************************************************************   
//  parsing des données   
//******************************************************************************
   
    $Enedis_Papparente     = xpath($xml_wes,"/data/tic1/PAP"      ); //superieur ou egal a zero
    $Enedis_tarif_en_cours = xpath($xml_wes,"/data/tic1/PTEC"     );
    $Enedis_index_HC       = xpath($xml_wes,"/data/tic1/HCHC"     );
    $Enedis_index_HP       = xpath($xml_wes,"/data/tic1/HCHP"     );
   
    $I1                    = xpath($xml_wes,"/data/pince/I1"      ); // Courant de transit réseau Enedis
    $I4                    = xpath($xml_wes,"/data/pince/I4"      ); // Courant produit par les panneaux photo-voltaïque
    $IINST                 = xpath($xml_wes,"/data/tic1/IINST"    );

    $Pw1                   = xpath($xml_wes,"/data/pince/IR1"     );
    $Pw1                   = substr( $Pw1 , 0, strpos($Pw1 , "W")-1);
    $Pw2                   = xpath($xml_wes,"/data/pince/IR2"     );
    $Pw2                   = substr( $Pw2 , 0, strpos($Pw2 , "W")-1);
    $Pw3                   = xpath($xml_wes,"/data/pince/IR3"     );
    $Pw3                   = substr( $Pw3 , 0, strpos($Pw3 , "W")-1);
    $Pw4                   = xpath($xml_wes,"/data/pince/IR4"     );
    $Pw4                   = substr( $Pw4 , 0, strpos($Pw4 , "W")-1);

    $injection             = xpath($xml_wes,"/data/pince/MODINJECT1" ); // Si = 1 courant de transit vers réseau enedis
   
    $tension               = xpath($xml_wes,"/data/pince/V"       );
   
    $date                  = xpath($xml_wes,"/data/info/date"     );
    $heure                 = xpath($xml_wes,"/data/info/time"     );
   
    $Tseuil = explode(',', $seuils);



//******************************************************************************
//  elaboration de la valeur
//******************************************************************************

    $Pw_PV            = $Pw4;  //
    $Pw_Enedis        = ($injection=="1")? -$Pw1:$Pw1;  // positif si on importe du courant Enedis
    $Pw_Conso_maison  = $Pw_Enedis + $Pw_PV;
   
    $Pw_S1 = $Tseuil[0];  // Puissance de 0 W
    $Pw_S2 = $Tseuil[1];  // Puissance d'environ 800 W
    $Pw_S3 = $Tseuil[2];  // Puissance d'environ 800 W
    $Pw_S4 = $Tseuil[3];  // Puissance d'environ 2000 W
   
    $Pw_Delta_prod_cons = $Pw_Enedis - $Pw_PV ;  // Si >>0 on importe beaucoup de l'Enedis
                                                 // Si >0  on importe peu de l'Enedis
                                                 // Si = 0 on importe autant qu'on produit
                                                 // Si <0  on importe moins qu'on ne produit
                                                 // si <<0 on importe bien moins qu'on ne produit
   
    //**mode consommateur
    if ($Pw_PV>0){
        if ($Pw_Delta_prod_cons>$Pw_S4){
            $Etat = "Fort consommateur";
        }
        if (($Pw_Delta_prod_cons>$Pw_S3)&&($Pw_Delta_prod_cons<=$Pw_S4)){
            $Etat = "Faible consommateur";
        }     
    } else {
        $Etat = "Consommateur total";
    }
   
    //**mode producteur 
    if ($Pw_Enedis>0){
        if ((-$Pw_Delta_prod_cons>$Pw_S1)&&((-$Pw_Delta_prod_cons)<=$Pw_S2)){
            $Etat = "Faible production";
        }
        if (-$Pw_Delta_prod_cons>$Pw_S2){
            $Etat = "Forte production";
        }   
    } else {
        $Etat = "Production totale";
    }
   
   
//******************************************************************************
//  elaboration du XML
//******************************************************************************   
   
    $xml = '<?xml version="1.0" encoding="UTF-8"?>'                                     ."\n";
    $xml .= '<Serveur_WES>'                                                             ."\n";
        $xml .= '  <date>'          .$date                          .'</date>'          ."\n";
        $xml .= '  <heure>'         .$heure                         .'</heure>'         ."\n";
        $xml .= '  <seuil1>'        .$Pw_S1                        .'</seuil1>'         ."\n";
        $xml .= '  <seuil2>'        .$Pw_S2                        .'</seuil2>'         ."\n";
        $xml .= '  <seuil3>'        .$Pw_S3                        .'</seuil3>'         ."\n";
        $xml .= '  <seuil4>'        .$Pw_S4                        .'</seuil4>'         ."\n";
        $xml .= '  <tension>'       .$tension                       .'</tension>'       ."\n"; 
        $xml .= '  <I1>'            .$I1                            .'</I1>'            ."\n";   
        $xml .= '  <I4>'            .$I4                            .'</I4>'            ."\n";   
        $xml .= '  <HP>'            .$Enedis_index_HP               .'</HP>'            ."\n";   
        $xml .= '  <HC>'            .$Enedis_index_HC               .'</HC>'            ."\n"; 
        $xml .= '  <tarif>'         .$Enedis_tarif_en_cours         .'</tarif>'         ."\n";   
        $xml .= '  <PA_tic>'        .$Enedis_Papparente             .'</PA_tic>'        ."\n";
        $xml .= '  <PW_Enedis>'     .$Pw_Enedis                     .'</PW_Enedis>'     ."\n"; 
        $xml .= '  <PW_PV>'         .$Pw_PV                         .'</PW_PV>'         ."\n";
        $xml .= '  <Deltaprod>'     .$Pw_Delta_prod_cons            .'</Deltaprod>'     ."\n";
        $xml .= '  <Conso_maison>'  .$Pw_Conso_maison               .'</Conso_maison>'  ."\n";
        $xml .= '  <etat>'          .$Etat                          .'</etat>'          ."\n"; 
    $xml .= '</Serveur_WES>'                                                            ."\n";

    echo $xml;         



?>
misterden
 
Messages : 733
Inscription : 02 Nov 2014


Retour vers Requêtes HTTP

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 3 invité(s)