[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é 1848 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 : 101
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 : 2
Inscription : 06 Mai 2023

Re: [Résolu] Panneaux solaire avec Enphase

Messagepar Harley133 » 12 Oct 2024 15:28

Bonjour
J'ai tout fait bien avec copie du script, ajout VAR3...
Le lien json me donne bien les valeurs
Mais via Eedomus, en testant le script j'ai toujours des valeurs à 0...
Incompréhensible et agaçant.
Que me recommandez vous de vérifier?
Merci

<ENPHASE>
<cached>0</cached>
<ETAT> ok </ETAT>
<NB_ONDULEURS></NB_ONDULEURS>
<P_ONDULEURS_CALCULEE>0</P_ONDULEURS_CALCULEE>
<P_ONDULEURS>0</P_ONDULEURS>
<PRODUCTION_J>0</PRODUCTION_J>
<PRODUCTION_7J>0</PRODUCTION_7J>
<P_CONSOMMATION>0</P_CONSOMMATION>
<CONSOMMATION_J>0</CONSOMMATION_J>
<CONSOMMATION_7J>0</CONSOMMATION_7J>
<P_IMPORT_RESEAU>0</P_IMPORT_RESEAU>
<NB_BATTERIES></NB_BATTERIES>
<P_CHARGE_BATTERIES>0</P_CHARGE_BATTERIES>
<ENERGIE_STOCKEE>0</ENERGIE_STOCKEE>
<ETAT_BATTERIES></ETAT_BATTERIES>
<POURCENT_CHARGE></POURCENT_CHARGE>
</ENPHASE>
Harley133
 
Messages : 2
Inscription : 06 Mai 2023

Re: [Résolu] Panneaux solaire avec Enphase

Messagepar qwench » 04 Déc 2024 09:26

Bonjour

Tu as bien récupéré le token ici:
https://entrez.enphaseenergy.com/entrez_tokens
Utilise le nom de ton installation pour le login
qwench
 
Messages : 18
Inscription : 04 Mars 2021

Re: [Résolu] Panneaux solaire avec Enphase

Messagepar ermax1 » 14 Jan 2025 10:53

qwench a écrit: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.

Code : Tout sélectionner
<?
//*************************************************************************
// Widget envoy Créé le 22/08/2021
// merguez07 Version 1.4 du 21/06/2022 : correction d'un bug dans le json
// merguez07 Version 1.5 du 16/09/2022 : correction d'un bug dans le json
// damien, qwench... 1.6 du 20/10/2023 : gestion du token
// ISO 8859-1
//*************************************************************************
function sdk_unit($value)
{
  global $unit;
  return round($value / $unit, 2);
}

$type = getArg('type', false);

//Token défini dans le code
//$token   = 'eyJ...';

//Lecture du token depuis une variable eedomus
$token   = getArg('token');

if ($type == "widget") {
  $api_master   = getArg('api_master');
  $periph_list  = getPeriphList();
  foreach ($periph_list as $key => $value) {
    if ($value["parent_device_id"] == $api_master) {
      $api_child[] = $value["device_id"];
    }
  }

  foreach ($api_child as $api) {
    $a = getValue($api);
    if (strpos($a["full_name"], "% de charge")              !== false)         $pourcent_batteries  = $a["value"] . "%";
    if (strpos($a["full_name"], "Etat des batteries")       !== false)         $State_batteries     = $a["value"];
    if (strpos($a["full_name"], "Energie stockée")          !== false)         $W_Charge_batteries  = round($a["value"]) . "Wh";
    if (strpos($a["full_name"], "P échangée")               !== false)         $P_Charge_batteries  = round(abs($a["value"])) . "W";
    if (strpos($a["full_name"], "Nb de batteries")          !== false)         $Nb_batteries        = $a["value"];
    if (strpos($a["full_name"], "P import/export")          !== false)         $P_import_mes        = $a["value"];
    if (strpos($a["full_name"], "P réelle de production")   !== false)         $P_onduleurs_mes     = round($a["value"]) . "W";
    if (strpos($a["full_name"], "Production journalière")   !== false)         $W_prod_j_mes        = round($a["value"]) . "Wh";
    if (strpos($a["full_name"], "Consommation journalière") !== false)         $W_conso_j_mes       = round($a["value"]) . "Wh";
    if (strpos($a["full_name"], "P consommée")              !== false)         $P_conso_mes         = round($a["value"]) . "W";
    if (strpos($a["full_name"], "Consommation journalière") !== false)         $W_consoJ            = "Wj=" . round($a["value"]) . "Wh";
    if (strpos($a["full_name"], "Consommation sur 7 jours") !== false)         $W_conso7J           = "W7j=" . round($a["value"]) . "Wh";
  }

  if ($P_import_mes < 0) {
    $reseau_txt = "Export";
  } else {
    $reseau_txt = "Import";
  }

  $P_import_mes       = round(abs($P_import_mes)) . "W";

  // Widget envoy
?>
  <div class="widget">
    <img src="https://i.ibb.co/bF1v1JL/image-2021-08-22-T15-43-07-583-Z.png" alt="">

    <?php //réseau
    ?>
    <span class="widget-text reseau-puissance"><?= $P_import_mes; ?></span>
    <span class="widget-text reseau-state"><?= $reseau_txt; ?></span>
    <span class="widget-text reseau-wj"><?= $W_consoJ; ?></span>
    <span class="widget-text reseau-w7j"><?= $W_conso7J; ?></span>

    <?php //maison
    ?>
    <span class="widget-text consommation-puissance"><?= $P_conso_mes; ?></span>
    <span class="widget-text consommation-energieJ"> <?= $W_conso_j_mes; ?></span>

    <?php //batterie
    ?>
    <span class="widget-text batterie-puissance"> <?= $P_Charge_batteries; ?></span>
    <span class="widget-text batterie-energie"> <?= $W_Charge_batteries; ?></span>
    <span class="widget-text batterie-pourcent"> <?= $pourcent_batteries; ?></span>
    <span class="widget-text batterie-nb"> <?= $Nb_batteries;       ?></span>


    <?php //panneaux solaire
    ?>
    <span class="widget-text panneaux-solaire-puissance"><?= $P_onduleurs_mes; ?></span>
    <span class="widget-text panneaux-solaire-energieJ"><?= $W_prod_j_mes; ?></span>

    <?php //flèches
    ?>
    <?php if ($reseau_txt == 'Import') : ?>
      <span class="widget-arrow clignote"></span>
    <?php else : ?>
      <span class="widget-arrow inverse clignote"></span>
    <?php endif; ?>

    <?php if ($state_batterie == 'Charge') : ?>
      <span class="widget-arrow batterie clignote"></span>
    <?php else : ?>
      <span class="widget-arrow batterie inverse clignote"></span>
    <?php endif; ?>
    <span class="widget-arrow panneaux"></span>
    <span class="widget-arrow maison"></span>

  </div>
  <style media="screen">
    :root {
      --width-element: 1;
    }

    .widget {
      display: inline-block;
      width: calc(100% * var(--width-element));
      height: auto;
      position: relative;
      font-family: Arial, sans-serif;
      text-align: center;
    }

    .widget>img {
      width: 100%;
      height: auto;
      border: none;

    }

    .widget-text {
      position: absolute;
      font-size: calc(2.7vw * var(--width-element));
      font-weight: bold;
      color: black;
      width: 14%;
    }

    .reseau-puissance {
      top: 56%;
      left: 4%;
    }

    .reseau-state {
      top: 42%;
      left: 4%;
    }

    .reseau-wj {
      top: 46%;
      left: 21%;
    }

    .reseau-w7j {
      top: 51%;
      left: 22%;
    }

    .consommation-puissance {
      top: 56%;
      left: 83%;
      color: #4285F4;
    }

    .consommation-energieJ {
      top: 42%;
      left: 83%;
      color: #4285F4;
    }

    .batterie-puissance {
      top: 93%;
      left: 43%;
      color: #4B8523;
    }

    .batterie-energie {
      top: 79%;
      left: 43%;
      color: #4B8523;
    }

    .batterie-pourcent {
      top: 86%;
      left: 49%;
      color: #4B8523;
    }

    .batterie-nb {
      top: 86%;
      left: 36%;
      color: #4B8523;
    }

    .panneaux-solaire-puissance {
      top: 18%;
      left: 43%;
      color: #D49806;
    }

    .panneaux-solaire-energieJ {
      top: 3%;
      left: 43%;
      color: #D49806;
    }

    .widget-arrow {
      position: absolute;
      top: 48.7%;
      left: 35%;

      display: inline-block;
      width: calc(3.4vw * var(--width-element));
      height: calc(3.4vw * var(--width-element));
      background-image: url('https://i.ibb.co/Z6XwJWW/image-2021-08-22-T07-07-16-112-Z.png');
      background-size: cover;
      background-repeat: none;
    }

    .widget-arrow.inverse {
      transform: rotate(180deg);
    }

    .widget-arrow.batterie {
      top: 60%;
      left: 47.6%;
      background-image: url('https://i.ibb.co/CPCgs9q/arrow-batterie.png');
      transform: rotate(90deg);
    }

    .widget-arrow.panneaux {
      top: 35%;
      left: 47.6%;
      background-image: url('https://i.ibb.co/ssGk3Rh/arrow-panneau.png');
      transform: rotate(90deg);
    }

    .widget-arrow.maison {
      top: 48.7%;
      left: 62%;
      background-image: url('https://i.ibb.co/yyWvW7j/arrow-house.png');

    }

    .clignote {
      color: green;
      animation: clignote 2s linear infinite;
    }

    @keyframes clignote {
      50% {
        opacity: 0;
      }
    }
  </style>
<?

  die;
}

$cache_duration = 1; // minutes
$time_last_xml  = loadVariable('time_last_xml');
if ((time() - $time_last_xml) / 60 < $cache_duration) {
  sdk_header('text/xml');
  $cached_xml = loadVariable('cached_xml');
  echo $cached_xml;
  die();
}


$address_envoy = getArg('adress');
//https required
$url     = 'https://' . $address_envoy . '/production.json';
//$oauth_token = NULL required
$request = httpQuery($url, $action = 'GET', $post = NULL, $oauth_token = NULL, $headers = array("Authorization: Bearer $token"), $use_cookies = false, $ignore_errors = true);

if (strpos($request, 'Connection refused')) {
  echo 'Connection refused';
  $xml .= "<ETAT> Envoy injoignable</ETAT>\n";
  sdk_header('text/xml');
  echo $xml;
  return;
}

$xml .= "<ETAT> ok </ETAT>\n";
/*$request="{\"production\":
  [
    {\"type\":\"inverters\",
     \"activeCount\":41,
     \"wNow\":1346
    },
    {\"type\":\"eim\",
     \"wNow\":1425.817,
     \"whToday\":3150.953,
     \"whLastSevenDays\":216872.953
    }
  ],
  \"consumption\":
    [
     {\"type\":\"eim\",
      \"wNow\":1159.042,
      \"whToday\":3186.23,
      \"whLastSevenDays\":167332.23
    },
    {\"type\":\"eim\",
     \"wNow\":11266.775
   }
 ],
 \"storage\":
  [
   {\"type\":\"acb\",
    \"activeCount\":16,
    \"wNow\":1537,
    \"whNow\":5791,
    \"state\":\"charging\",
    \"percentFull\":29
  }
]
}";*/
$Trequest = sdk_json_decode($request);



$nb_onduleurs       = $Trequest['production'][0]['activeCount'];
$P_onduleurs_calc   = $Trequest['production'][0]['wNow'];
$P_onduleurs_mes    = $Trequest['production'][1]['wNow'];
$W_prod_j_mes       = $Trequest['production'][1]['whToday'];
$W_prod_7j_mes      = $Trequest['production'][1]['whLastSevenDays'];
$P_conso_mes        = $Trequest['consumption'][0]['wNow'];
$W_conso_j_mes      = $Trequest['consumption'][0]['whToday'];
$W_conso_7j_mes     = $Trequest['consumption'][0]['whLastSevenDays'];
$P_import_mes       = $Trequest['consumption'][1]['wNow'];
$Nb_batteries       = $Trequest['storage'][0]['activeCount'];
$P_Charge_batteries = $Trequest['storage'][0]['wNow'];
$W_Charge_batteries = $Trequest['storage'][0]['whNow'];
$State_batteries    = $Trequest['storage'][0]['state'];
$pourcent_batteries = $Trequest['storage'][0]['percentFull'];

$unit = 1;

$xml .= "<NB_ONDULEURS>" . $nb_onduleurs . "</NB_ONDULEURS>\n";
$xml .= "<P_ONDULEURS_CALCULEE>" . sdk_unit($P_onduleurs_calc)    . "</P_ONDULEURS_CALCULEE>   \n";
$xml .= "<P_ONDULEURS>"         . sdk_unit($P_onduleurs_mes)     . "</P_ONDULEURS>            \n";
$xml .= "<PRODUCTION_J>"        . sdk_unit($W_prod_j_mes)        . "</PRODUCTION_J>           \n";
$xml .= "<PRODUCTION_7J>"       . sdk_unit($W_prod_7j_mes)       . "</PRODUCTION_7J>          \n";
$xml .= "<P_CONSOMMATION>"      . sdk_unit($P_conso_mes)         . "</P_CONSOMMATION>         \n";
$xml .= "<CONSOMMATION_J>"      . sdk_unit($W_conso_j_mes)       . "</CONSOMMATION_J>         \n";
$xml .= "<CONSOMMATION_7J>"     . sdk_unit($W_conso_7j_mes)      . "</CONSOMMATION_7J>        \n";
$xml .= "<P_IMPORT_RESEAU>"     . sdk_unit($P_import_mes)        . "</P_IMPORT_RESEAU>        \n";
$xml .= "<NB_BATTERIES>"        . $Nb_batteries                  . "</NB_BATTERIES>           \n";
$xml .= "<P_CHARGE_BATTERIES>"  . sdk_unit($P_Charge_batteries)  . "</P_CHARGE_BATTERIES>     \n";
$xml .= "<ENERGIE_STOCKEE>"     . sdk_unit($W_Charge_batteries)  . "</ENERGIE_STOCKEE>        \n";
$xml .= "<ETAT_BATTERIES>"      . $State_batteries               . "</ETAT_BATTERIES>         \n";
$xml .= "<POURCENT_CHARGE>"     . $pourcent_batteries            . "</POURCENT_CHARGE>        \n";





$cached_xml = "<ENPHASE>\n";
$cached_xml .= "<cached>0</cached>\n";
$cached_xml .= $xml;
$cached_xml .= '</ENPHASE>';
sdk_header('text/xml');
echo $cached_xml;

if ($xml != '') // non vide
{
  $cached_xml = str_replace('<cached>0</cached>', '<cached>1</cached>', $cached_xml);
  saveVariable('cached_xml', $cached_xml);
  saveVariable('time_last_xml', time());
}

die;

?>


Un très grand merci à toi puis à seblanglois78 car mon installation refonctionne de nouveau.
Aucun souci pour récupérer le token valable 1 an.
Pour les modifications du script, j'ai un peu galéré mais en fait c'est très simple. Mon problème est que j'avais l'appli pour Envoy-S et donc le script ne fonctionnait pas. J'ai donc téléchargé l'appli de Merguez mais la version Envoy Metered et en suivant les indications de qwench, tout fonctionne !

@qwench, juste une question, je n'arrive pas à afficher des valeurs en Kwh, c'est uniquement des watts. Dans le script (j'y connais rien), je semble comprendre que l'on peut mettre l'un ou l'autre car je vois parfois un calcul avec /1000 mais comment fait on pour afficher en Kwh ?

Sinon c'est parfait, merci beaucoup !
ermax1
 
Messages : 6
Inscription : 26 Avr 2020

Précédent

Retour vers Box eedomus

Qui est en ligne ?

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

cron