[Résolu] Panneaux solaire avec Enphase

Discussion sur la box eedomus

Re: [Résolu] Panneaux solaire avec Enphase

Messagepar tenji » 27 Août 2024 08:40

Bonjour,
tout remarche à nouveau chez moi (pour 1 an apparemment).

J'ai utilisé le script de Qwench du 20.10.23 à 12h45, et la mise en place de la variable VAR3 (à mettre sur tous les canaux)

et le lien sur le site d'emphase pour obtenir le token (Julian40 » 15 Juil 2024 10:33 )

Merci pour tout
tenji
 
Messages : 3
Inscription : 01 Mai 2016

Re: [Résolu] Panneaux solaire avec Enphase

Messagepar Vicnau32 » 07 Sep 2024 07:39

Bonjour à tous, j'ai 10 panneaux avec des onduleurs enphase et Merguez07 m'avait fait un script à l'époque pour en faire la surveillance. il fonctionnait très bien. Cependant depuis l'apparition de la demande de token celui ci ne fonctionne plus. est ce que quelqu'un peut y jeter un œil pour essayer d'intégrer l'identification avec le token. Merci.
Les 3 variables sont prises mais on peut se servir de [VAR3] pour renseigner le token sachant qu'on peut facilement modifier la valeur de référence dans le script pour l'alarme qui est déjà renseigné dans [VAR3].
Ci dessous le script :

Code : Tout sélectionner
<?php
/*************************************************************************************
**
**  [VAR1] : Mot de passe
**  [VAR2] : IP de l'Envoy
**  [VAR3] : Nombre de Watt d'ecart pour detecter une panne d'un panneau
**   URL de la requete : http://localhost/script/?exec=envoy_steph.php&password=[VAR1]&IP=[VAR2]&panneau=1&alerte=[VAR3]
**   XPath : doit contenir la donnee de sortie (ex : concat(//panneau_1/serial,'<br>',//panneau_1/pmax,'<br>',//panneau_1/pinst))
**
***************************************************************************************
**
**   Evolution des versions :
**   2019-02-27 Vicnau32 & Merguez07 : V1.0
**
**************************************************************************************/

   

    $password   =   getArg('password'   , true      , NULL);    // mot de passe pour accder a l'envoy
    $IP_Envoy   =   getArg('IP'         , true      , NULL);    // numero Ip de l'envoy
    $panneau    =   getArg('panneau'    , true      , NULL);    // numero du panneau
    $alerte     =   getArg('alerte'     , false     , 10  );    // nombre de Watt pour detecter un ecart de fonctionnement d'un panneau (10W par défaut)
    //$periph_id= getArg('eedomus_controller_module_id');       // numero PI du peripherique qui vient de lancer le script


// On recupere le path
    //$url =  "http://localhost/api/get?action=periph.caract&show_config=1&periph_id=".$periph_id;
    //$arrValue = sdk_json_decode(utf8_encode(httpQuery($url,'GET')));
    //$path=utf8_decode($arrValue["body"]["XPATH"]);
   
// On recupere les donnees de puissance
    $url            =   "http://". $IP_Envoy."/production.json";
    $jsonProduction =   httpQuery($url);
    $Tproduction    =   sdk_json_decode($jsonProduction);
//  sdk_dd($Tproduction);
/*  array(3) {["production"]=>  array(2) {  [0]=>  array(5) {   ["type"]            => string(9) "inverters"
                                                                ["activeCount"]     => int(10)
                                                                ["readingTime"]     => int(1551383434)          28/02/2019 20:50:34
                                                                ["wNow"]            => int(0)
                                                                ["whLifetime"]      => int(364914) }            364,914 kWh
                                            [1]=>  array(19){   ["type"]            => string(3) "eim"
                                                                ["activeCount"]     => int(1)
                                                                ["measurementType"] => string(10) "production"
                                                                ["readingTime"]     => int(1551384009)          28/02/2019 21:00:09
                                                                ["wNow"]            => float(0)
                                                                ["whLifetime"]      => float(364541.605)        364,541 kWh
                                                                ["varhLeadLifetime"]=> float(0)
                                                                ["varhLagLifetime"] => float(157216.197)
                                                                ["vahLifetime"]     => float(482726.928)
                                                                ["rmsCurrent"]      => float(0.655)
                                                                ["rmsVoltage"]      => float(233.543)
                                                                ["reactPwr"]        => float(152.899)
                                                                ["apprntPwr"]       => float(153.075)
                                                                ["pwrFactor"]       => float(0)
                                                                ["whToday"]         => float(13879.605)         13,879 kWh
                                                                ["whLastSevenDays"] => float(102244.605)        102,244 kWh
                                                                ["vahToday"]        => float(15816.928)
                                                                ["varhLeadToday"]   => float(0)
                                                                ["varhLagToday"]    => float(3208.197)}}
              ["consumption"]=> array(2) {  [0]=> array(19) {   ["type"]            => string(3) "eim"
                                                                ["activeCount"]     => int(1)
                                                                ["measurementType"] => string(17) "total-consumption"
                                                                ["readingTime"]     => int(1551384009)          28/02/2019 21:00:09
                                                                ["wNow"]            => float(644.195)           644 W
                                                                ["whLifetime"]      => float(1168472.01)        1 168,472 kWh
                                                                ["varhLeadLifetime"]=> float(269979.074)
                                                                ["varhLagLifetime"] => float(304606.913)
                                                                ["vahLifetime"]     => float(1173147.506)
                                                                ["rmsCurrent"]      => float(3.909)
                                                                ["rmsVoltage"]      => float(233.618)
                                                                ["reactPwr"]        => float(-469.042)
                                                                ["apprntPwr"]       => float(913.192)
                                                                ["pwrFactor"]       => float(0.71)
                                                                ["whToday"]         => float(17844.01)          17,844 kWh
                                                                ["whLastSevenDays"] => float(161375.01)         161,375 kwh
                                                                ["vahToday"]        => float(16227.506)
                                                                ["varhLeadToday"]   => float(5686.074)
                                                                ["varhLagToday"]    => float(3686.913)}
                                            [1]=> array(19) {   ["type"]            => string(3) "eim"
                                                                ["activeCount"]     => int(1)
                                                                ["measurementType"] => string(15) "net-consumption"
                                                                ["readingTime"]     => int(1551384009)          28/02/2019 21:00:09
                                                                ["wNow"]            => float(644.195)           644W
                                                                ["whLifetime"]      => float(906614.639)        906,614 kWh
                                                                ["varhLeadLifetime"]=> float(269979.074)
                                                                ["varhLagLifetime"] => float(147390.716)
                                                                ["vahLifetime"]     => float(1173147.506)
                                                                ["rmsCurrent"]      => float(3.254)
                                                                ["rmsVoltage"]      => float(233.693)
                                                                ["reactPwr"]        => float(-316.143)
                                                                ["apprntPwr"]       => float(759.695)
                                                                ["pwrFactor"]       => float(0.85)
                                                                ["whToday"]         => int(0)
                                                                ["whLastSevenDays"] => int(0)
                                                                ["vahToday"]        => int(0)
                                                                ["varhLeadToday"]   => int(0)
                                                                ["varhLagToday"]    => int(0)}}
              ["storage"]=> array(1) {      [0]=> array(6) {    ["type"]            => string(3) "acb"
                                                                ["activeCount"]     => int(0)
                                                                ["readingTime"]     => int(0)
                                                                ["wNow"]            => int(0)
                                                                ["whNow"]           => int(0)
                                                                ["state"]           => string(4) "idle"}}}*/

       
    $Prod_7Days = $Tproduction['production'][1]['whLastSevenDays'];
    $Prod_Day   = $Tproduction['production'][1]['whToday'];
    $Cons_7Days = $Tproduction['consumption'][0]['whLastSevenDays'];
    $Cons_Day   = $Tproduction['consumption'][0]['whToday'];

// On recupere les data
    if ($panneau == 1) {                                                                                // on ne fait une requete qu'a partir du panneau 1

        $url            =   "http://envoy:". $password."@". $IP_Envoy."/api/v1/production/inverters";   // lien de la requete
        $jsonResponse   =   httpQuery($url);                                                            // on charge le json retourne par la requete
        $Tjson          =   sdk_json_decode($jsonResponse,true);



        //$json="[{'serialNumber':'121831049816','lastReportDate':'1550847778','devType':'1','lastReportWatts':'151','maxReportWatts':'247'},
        //        {'serialNumber':'121831048748','lastReportDate':'1550847784','devType':'1','lastReportWatts':'153','maxReportWatts':'248'},
        //        {'serialNumber':'121831049275','lastReportDate':'1550847776','devType':'1','lastReportWatts':'152','maxReportWatts':'247'},
        //        {'serialNumber':'121831048448','lastReportDate':'1550847780','devType':'1','lastReportWatts':'151','maxReportWatts':'246'},
        //        {'serialNumber':'121831049314','lastReportDate':'1550847787','devType':'1','lastReportWatts':'151','maxReportWatts':'246'},
        //        {'serialNumber':'121831047737','lastReportDate':'1550847787','devType':'1','lastReportWatts':'153','maxReportWatts':'252'},
        //        {'serialNumber':'121831049456','lastReportDate':'1550847776','devType':'1','lastReportWatts':'150','maxReportWatts':'244'},
        //        {'serialNumber':'121831049439','lastReportDate':'1550847784','devType':'1','lastReportWatts':'150','maxReportWatts':'244'},
        //        {'serialNumber':'121831049239','lastReportDate':'1550847779','devType':'1','lastReportWatts':'150','maxReportWatts':'246'},
        //        {'serialNumber':'121834022543','lastReportDate':'1550847784','devType':'1','lastReportWatts':'152','maxReportWatts':'248'}]";


        $xml    =   '<root>'    ."\n";                                                  // on commence a  contruire notre xml (je rajoute "\n" pour avoir un retour a la ligne)
        $i      =   1;                                                                  // numero du premier panneau   
       
        foreach ($Tjson as $data_id => $data) {                                         // pour chaque array

            $xml .= '<panneau_'.($i).'>'                                                             ."\n";  // <panneau_1>
            $xml .= '  <serial>'  ."Num Serie :"    .$data['serialNumber']      .        '</serial>' ."\n";  //   <serial>Num Serie :121831049816</serial>
            $xml .= '  <pmax>'    ."Prod.Max.:"     .$data['maxReportWatts']    .' W'.   '</pmax>'   ."\n";  //   <pmax>Prod.Max.:247W</pmax>
            $xml .= '  <pinst>'   ."Prod.Inst.:"    .$data['lastReportWatts']   .' W'.   '</pinst>'  ."\n";  //   <pinst>Prod.Inst.:151W</pmax>
            $xml .= '</panneau_'.($i).'>'                                                            ."\n";  // </panneau_1>
           
            $pinst  =   $pinst  +   $data['lastReportWatts'];                                               // on construit la variable qui va nous servir a faire la moyenne
            $i++;                                                                                           // $i=$i+1
        }
        //sdk_dd($i);
        $pmoyinst   =   $pinst/($i-1);                                                                      // on calcul la puissance moyenne
       
        $xml .= '<pmoyenne>'       .$pmoyinst   .' W'.     '</pmoyenne>'        ."\n";                      // <pmoyenne>151W</pmoyenne>
        $xml .= '<seuil_alarme>'   .$alerte     .' W'.     '</seuil_alarme>'    ."\n";                      // <seuil_alarme>10W</seuil_alarme>
       
        $i      =   1;                                                                                      // numero du premier panneau
        $alarme =   "" ; //"RAS";                                                                           // par defaut alarme=RAS
       
        foreach ($Tjson as $data_id => $data) {
            $ecart  =   abs($data['lastReportWatts']-$pmoyinst);
            if ($ecart  >   $alerte){
                $alarme = ($alarme!="") ? $alarme.",".$i : $i;                                              // si écart > alerte on stocke le(s) panneau(x) en défaut dans $i
            }
            $i++;
        }
       
        switch(strlen($alarme))
        {
            case 0:
                $alarme     = "RAS";
                break;
            case 1:
                $alarme     = "le panneau "     .$alarme. " est en alarme";
                break;
            case 2:
                $alarme     = "le panneau "     .$alarme. " est en alarme";
                break;
            default:
                $alarme     = "les panneaux "   .$alarme. " sont en alarme";
                break;
        }
       
        $xml .= '<alarme>'      .$alarme        .'</alarme>'    ."\n";
        $xml .= '<prod_7days>'  .$Prod_7Days    .'</prod_7days>'."\n";
        $xml .= '<prod_day>'    .$Prod_Day      .'</prod_day>'  ."\n";
        $xml .= '<cons_7days>'  .$Cons_7Days    .'</cons_7days>'."\n";
        $xml .= '<cons_day>'    .$Cons_Day      .'</cons_day>'  ."\n";
        $xml .= '</root>'                                       ."\n";
       
        saveVariable('envoy_steph', $xml);
       
    } else
    {
         $xml = loadvariable('envoy_steph');

    }
 
    echo $xml;
    die;





//****fonction pour le debogage
function sdk_dd($value){
    echo '<pre>';
    var_dump($value);
    echo '</pre>';
    die();
}

?>
Pièces jointes
enphase.png
enphase.png (17.6 Kio) Consulté 185 fois
EEDOMUS +, RFXCOM, TELEINFO, FGR222, PRISES AN180-6, FGS223, FGBS001 SONDES, TELECOMMANDE DUEWI ZME_RC2, SYNOLOGY DS220+, CAMERAS IP, THERMOSTAT NETATMO, PRISES 433 MHZ, GOOGLE HOME, ECO-DEVICE, PANNEAUX PHOTOVOLTAIQUES + MICRO ONDULEURS ENPHASE
Vicnau32
 
Messages : 98
Inscription : 17 Juil 2016
Localisation : 32

Re: [Résolu] Panneaux solaire avec Enphase

Messagepar Harley133 » 07 Sep 2024 16:38

[quote="qwench"]Bonjour
Je reprend le fil de discussion avant la remise en route du chauffage...
Merci aux intervenants d'avoir avancé sur le sujet.
J'ai modifié le script pour simplifier la gestion du token. Et plus besoin de la session id du cookie, le token suffit.
J'ai ajouté le token dans une variable eedomus pour éviter d'éditer le script à chaque fois.
On peut aussi le mettre directement dans le script si on veut (décommenter la ligne) en tête de script.

Donc
- Editez le script eedomus enphase et copier celui ci-dessous à la place. Sauvegardez.
- Dans la config du périphérique eedomus, ajouter dans VAR3: token=eyJra... (c'est le token obtenu sur le site enphase)
- Ajouter VAR3 dans l'url de la requête: http://localhost/script/?exec=envoy_metered.php&[VAR1]&[VAR2]&[VAR3]
- Faites un test et vous devriez avoir des valeurs dans le json.

Bonjour,
J'ai suivi scrupuleusement le protocole conseillé mais au test seule la valeur 0 remonte. Idem dans les widgets.
Pourtant via le lien https://192.168.X.XX/production.json le rapport complet remonter bien.
Merci de vos conseils :)
Harley133
 
Messages : 1
Inscription : 06 Mai 2023

Précédent

Retour vers Box eedomus

Qui est en ligne ?

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