[Store] Tempo EDF

Lecture des compteurs EDF avec téléinformation

Re: [Store] Tempo EDF

Messagepar Fab_Rice » 11 Sep 2024 17:56

Bonsoir,
Juste pour info peut être pas en lien avec certains soucis, l'API enedis semble en panne pour le moment, voir ICI si besoin.
Dire que l'on ne sait pas est une preuve d'intelligence
Eedomus+, Zigate V2, volets Somfy & Bubbendorf, radiateurs en Tado° & fil pilote, gestion chaudière bois/fioul, gestion borne IRVE, gestion piscine, PAC & Climatisation Mitsubishi ...
Fab_Rice
 
Messages : 922
Inscription : 27 Déc 2020

Re: [Store] Tempo EDF

Messagepar opa95 » 11 Sep 2024 18:04

Bonsoir Fabrice
Fab_Rice a écrit:Bonsoir,
Juste pour info peut être pas en lien avec certains soucis, l'API enedis semble en panne pour le moment, voir ICI si besoin.

Merci, mais l'api edf répond bien, j'utilise l'appel
https://www.api-couleur-tempo.fr/api/jo ... o?dateJour[]=2024-09-10&dateJour[]=2024-09-11&dateJour[]=2024-09-12
:)
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 870
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: [Store] Tempo EDF

Messagepar Fab_Rice » 11 Sep 2024 18:11

:thumbup:
Dire que l'on ne sait pas est une preuve d'intelligence
Eedomus+, Zigate V2, volets Somfy & Bubbendorf, radiateurs en Tado° & fil pilote, gestion chaudière bois/fioul, gestion borne IRVE, gestion piscine, PAC & Climatisation Mitsubishi ...
Fab_Rice
 
Messages : 922
Inscription : 27 Déc 2020

Re: [Store] Tempo EDF

Messagepar patrichkof » 12 Sep 2024 05:22

Hello OPA, toujours pas avec le dernier script:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<tempo>
<aujourdhui>ND</aujourdhui>
<date_aujourdhui>ND</date_aujourdhui>
<demain>ND</demain>
<date_demain>ND</date_demain>
<now></now>
<date_now></date_now>
<decompte_bleu></decompte_bleu>
<decompte_blanc></decompte_blanc>
<decompte_rouge></decompte_rouge>
<reste_bleu></reste_bleu>
<reste_blanc></reste_blanc>
<reste_rouge></reste_rouge>
<type>tempo</type>
<hphc>HP</hphc>
<tarifs_aujourdhui>/</tarifs_aujourdhui>
<tarifs_demain>/</tarifs_demain>
<tarif_now></tarif_now>
<bleu_hc></bleu_hc>
<bleu_hp></bleu_hp>
<blanc_hc></blanc_hc>
<blanc_hp></blanc_hp>
<rouge_hc></rouge_hc>
<rouge_hp></rouge_hp>
</tempo>
<debug>
<date_fichier></date_fichier>
<timestamp></timestamp>
<date_lecture>Jeudi 12/09 06:07:03</date_lecture>
<url>https://www.api-couleur-tempo.fr/api/joursTempo?</url>
<url_></url_>
<result></result>
</debug>
</root>

Le plugin semble identique à toi, avec
URL de la requête
http://localhost/script/?exec=edf_tempo.php
Chemin XPATH
//aujourdhui
Fréquence de la requête
60
et rien pour les 3 VAR
patrichkof
 
Messages : 28
Inscription : 18 Fév 2019

Re: [Store] Tempo EDF

Messagepar opa95 » 12 Sep 2024 08:41

Bonjour patrichkof
patrichkof a écrit:Hello OPA, toujours pas avec le dernier script:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<tempo>
<aujourdhui>ND</aujourdhui>
....
</tempo>
<debug>
<date_fichier></date_fichier>
<timestamp></timestamp>
<date_lecture>Jeudi 12/09 06:07:03</date_lecture>
<url>https://www.api-couleur-tempo.fr/api/joursTempo?</url>
<url_></url_>
<result></result>
</debug>
</root>

Le plugin semble identique à toi, avec
URL de la requête
http://localhost/script/?exec=edf_tempo.php
Chemin XPATH
//aujourdhui
Fréquence de la requête
60
et rien pour les 3 VAR

Chez moi ça marche toujours.
Je viens de modifier le script pour pouvoir afficher d'autres informations.
essaye la nouvelle mouture.
Depuis la fenêtre tu peux afficher d'autres informations avec &debug=1 et la lecture avec &timer=10.
Tu peux aussi forcer le reset de la mémoire &reset=1
Code : Tout sélectionner
http://localhost/script/?exec=edf_tempo.php&eedomus_controller_module_id=xxxxxxxx&debug=1&reset=1
et ensuite
exec=edf_tempo.php&eedomus_controller_module_id=xxxxxxxx&debug=1&reset=0&timer=10

Est-ce que "localhost" fonctionne? : essaie avec l'adresse de secours "http;//192.168.x.y/script/?..."
Voici ce que j'obtiens :
Code : Tout sélectionner
<?xml version="1.0" encoding="UTF-8"?>
<root>
<tempo>
   <aujourdhui>BLEU</aujourdhui>
   <date_aujourdhui>12/09</date_aujourdhui>
   <demain>BLEU</demain>
   <date_demain>13/09</date_demain>
   <now>BLEU</now>
   <date_now>12/09</date_now>
   <decompte_bleu>12</decompte_bleu>
   <decompte_blanc>0</decompte_blanc>
   <decompte_rouge>0</decompte_rouge>
   <reste_bleu>288</reste_bleu>
   <reste_blanc>43</reste_blanc>
   <reste_rouge>22</reste_rouge>
   <type>tempo</type>
   <hphc>HP</hphc>
   <tarifs_aujourdhui>0.1609/0.1296</tarifs_aujourdhui>
   <tarifs_demain>0.1609/0.1296</tarifs_demain>
   <tarif_now>0.1609</tarif_now>
   <bleu_hc>0.1296</bleu_hc>
   <bleu_hp>0.1609</bleu_hp>
   <blanc_hc>0.1486</blanc_hc>
   <blanc_hp>0.1894</blanc_hp>
   <rouge_hc>0.1568</rouge_hc>
   <rouge_hp>0.7562</rouge_hp>
</tempo>
<debug>
   <date_fichier>2024-09-12 09:23:47</date_fichier>
   <timestamp>1726125827</timestamp>
   <date_lecture>Jeudi 12/09 09:23:47</date_lecture>
   <url>https://www.api-couleur-tempo.fr/api/joursTempo?dateJour[]=2024-09-11&dateJour[]=2024-09-12&dateJour[]=2024-09-13</url>
   <url_>https://selectra.info/energie/fournisseurs/edf/tempo</url_>
   <source>poll</source>
   <timer>10</timer>
   <result>1</result>
   <source>edf_tempo_ejp-220331-23.php</source>
   <response_api>   {[0] {dateJour => 2024-09-11,codeJour => 1,periode => 2024-2025,}, {[1] {dateJour => 2024-09-12,codeJour => 1,periode => 2024-2025,}, {[2] {dateJour => 2024-09-13,codeJour => 1,periode => 2024-2025,}, }, </response_api>
   <response>   <!DOCTYPE html>
<html lang="fr" dir="ltr" prefix="og: https://ogp.me/ns#">
<head>
<link rel="preconn.....
   </response>
   <test_todayDate>12/09</test_todayDate>
   <test_todayDayWeek>Jeudi</test_todayDayWeek>
   <test_todayYear>ND</test_todayYear>
   <test_todayColor>BLEU</test_todayColor>
   <test_hphc>HP</test_hphc>
   <test_tomorrowDate>13/09</test_tomorrowDate>
   <test_tomorrowDayWeek>Vendredi</test_tomorrowDayWeek>
   <test_tomorrowYear>ND</test_tomorrowYear>
   <test_tomorrowColor>BLEU</test_tomorrowColor>
   <test_yesterdayColor>BLEU</test_yesterdayColor>
   <test_yesterdayRate>ND</test_yesterdayRate>
   <test_yesterdayDate>11/09</test_yesterdayDate>
   <test_nowDate>12/09</test_nowDate>
   <test_nowColor>BLEU</test_nowColor>
   <test_tarifnow>ND</test_tarifnow>
   <test_decRed>0</test_decRed>
   <test_totRed>22</test_totRed>
   <test_remRed>22</test_remRed>
   <test_decWhite>0</test_decWhite>
   <test_totWhite>43</test_totWhite>
   <test_remWhite>43</test_remWhite>
   <test_decBlue>12</test_decBlue>
   <test_totBlue>300</test_totBlue>
   <test_remBlue>288</test_remBlue>
   <test_fileDate>2024-09-12 09:23:47</test_fileDate>
   <test_fileTimestamp>1726125827</test_fileTimestamp>
   <test_BLEU>Array</test_BLEU>
   <test_BLANC>Array</test_BLANC>
   <test_ROUGE>Array</test_ROUGE>
   <debugLen>149</debugLen>
   <debugStr>
<td>0.1296 â‚¬</td>
<td>0.1609 â‚¬</td>
<td>0.1486 â‚¬</td>
<td>0.1894 â‚¬</td>
<td>0.1568 â‚¬</td>
<td>0.7562 â‚¬</td>
   </debugStr>
   <url_0>https://www.api-couleur-tempo.fr/api/joursTempo?dateJour[]=2024-09-11&dateJour[]=2024-09-12&dateJour[]=2024-09-13</url_0>
   <url_1>https://selectra.info/energie/fournisseurs/edf/tempo#selectran</url_1>
   <url_2>https://www.fournisseurs-electricite.com/edf/tarifs/tempo#selectran</url_2>
   <url_3>https://prix-elec.com/tarifs/fournisseurs/edf/tempo#selectran</url_3>
   <url_4>https://www.kelwatt.fr/guide/tempo#selectra</url_4>
   <url_5>https://observatoires.net#selectra</url_5>
   <url_6>https://observatoires.net/tempo#selectra</url_6>
</debug>
</root>


et voici le script ajusté :)

Code : Tout sélectionner
<?php
/*****************************************************************************
**
** Script Tempo/EJP pour eedomus
**
** Script qui permet de récupérer au format XML les données Tempo ou EJP :
**   - Couleur Tempo du jour/EJP (//aujourdhui),
**  - Couleur Tempo du lendemain/EJP (//demain),
**  - Nombre de jours Bleus Tempo restants (//decompte_bleu),
**  - Nombre de jours Blancs Tempo restants (//decompte_blanc),
**  - Nombre de jours Rouge Tempo restants (//decompte_rouge),
**  - Nombre de jours Rouge EJP restants (//decompte),
**  - Tarif du jour
** Les données sont stockées en mémoire et le polling sur les sites est réglé
** par la valeur de 'timer' (3600 secondes par défaut).
** Un polling automatique est fait au passage à minuit, 6h, 12h et 22h,
** pour que ce polling automatique se fasse bien, on peut régler la fréquence des plugins à une valeur faible (1 ou 2 minutes) : dans ce cas, les pollings
réels seront synchronisés à peu près sur les passages à l'heure (0:01h,1:01h... pour timer=3600) ou par exemple à (0:01h, 6h:01, 12h:01,18:01h,22:01h pour timer=21600 [6*3600] ); si timer>=36000, les lectures seront (0:01h, 6h:01, 12h:01,22:01h)
** Le nombre d'appels sera donc compris entre 4 et 25 par jour, quel que soit le nombre de devices créés. Le reste du temps les appels se conteteront de renvoyer le contenu de la mémoire.
** en mode test, on peut forcer la lecture avec la commande &reset=1 ou &simul=x, avec x<0 ou >timer
****************************************************************************
**  - URL de la Requête 
**: http://localhost/script/?exec=edf_tempo.php
**  - ou http://localhost/script/?exec=edf_tempo.php&contrat=[VAR1]&site=[VAR2]&timer=[VAR3]
** avec
**   VAR1 : vide (-> tempo) ou tempo ou ejp (ou contenu dans le nom du script)
**   VAR2 : vide ou numéro du site secondaire, 0 par défaut -> test de tous les sites
**   VAR3 : vide ou période de polling (secondes) 3600 par défaut
** - Fréquence de la Requête : 60 minutes ou 1 si on veut mettre à jour l'affichage plus souvent pour le passage à 0h, 6h, 12h, 22h, de toute façon le polling vers les sites est réglé par 'timer' (3600 par défaut)
** L'URL est de la forme (Tempo) : edf_tempo.php ou edf_ejp.php&contrat=tempo ou utiliser VAR1
** L'URL est de la forme (EJP)   : edf_ejp.php   ou edf_tempo.php&contrat=ejp ou utiliser VAR1
** si l'URL porte un autre nom, le champ &contrat est obligatoire (ou VAR1)
** commandes ajouter à la fin de la ligne de commande:
** type contrat : &contrat=1 (tempo par défaut ou récupéré dans le nom)
** mode debug : &debug=1 (0 par défaut)
** site  : &site=n (0 par défaut -> tous les sites, sinon n° du site)
** timer (Validité du fichier en secondes) :&timer=xxxxx (3600 par défaut)
** reset : effacement mémoire : &reset=n (0 par défaut, 1 sinon)
** simul décalage temporel (secondes) : &simul=yyyyy (0 par défaut)
****************************************************************************
Resultats : /tempo/champ ou //champ
?xml version="1.0" encoding="UTF-8"?>
<root>
<tempo>
   <aujourdhui>BLEU</aujourdhui> // de 6h à 6h (demain)
   <date_aujourdhui>JOUR</date_aujourdhui> // de 6h à 6h (demain)
   <demain>BLEU</demain> // de 6h (demain) à 6h (aprèsdemain)
   <date_demain>11/09</date_demain> // de 6h (demain) à 6h (aprèsdemain)
   <now>BLEU</now> // couleur actuelle (dépend de l'heure, avant 6h -> hier)
   <date_now>JOUR</date_now> // date actuelle (dépend de l'heure, avant 6h -> hier)
   <decompte_bleu>10</decompte_bleu> //nombre de jours écoulés
   <decompte_blanc>0</decompte_blanc> //nombre de jours écoulés
   <decompte_rouge>0</decompte_rouge> //nombre de jours écoulés
   <reste_bleu>290</reste_bleu> //nombre de jours restants
   <reste_blanc>43</reste_blanc> //nombre de jours restants
   <reste_rouge>22</reste_rouge> //nombre de jours restants
   <type>tempo</type>
   <hphc>HP</hphc> // période actuelle (dépend de l'heure, avant 6h -> hier)
   <tarifs_aujourdhui>0.1609/0.1296</tarifs_aujourdhui> // de 6h à 6h (demain)
   <tarifs_demain>0.1609/0.1296</tarifs_demain> // de 6h (demain) à 6h (aprèsdemain)
   <tarif_now>0.1609</tarif_now>// tarif actuel (dépend de l'heure, avant 6h -> hier)
   <bleu_hc>0.1296</bleu_hc> // tarif
   <bleu_hp>0.1609</bleu_hp> // tarif
   <blanc_hc>0.1486</blanc_hc> // tarif
   <blanc_hp>0.1894</blanc_hp> // tarif
   <rouge_hc>0.1568</rouge_hc> // tarif
   <rouge_hp>0.7562</rouge_hp> // tarif
</tempo>
<debug>
   <date_fichier>2024-09-10 11:34:28</date_fichier>
   <timestamp>1725960868</timestamp> //fichier
   <date_lecture>Mardi 10/09 11:34:28</date_lecture>
   <url>https://www.api-couleur-tempo.fr/api/joursTempo?dateJour[]=2024-09-09&amp;dateJour[]=2024-09-10&amp;dateJour[]=2024-09-11</url> //api edf
   <url_>https://selectra.info/energie/fournisseurs/edf/tempo</url_> // url secondaire
  <result>1</result> //1->OK
</debug>
</root>
********************************************************************************
urls compatibles :
tempo
https://www.api-couleur-tempo.fr/api/joursTempo?',
https://selectra.info/energie/fournisseurs/edf/tempo#selectran',
https://www.fournisseurs-electricite.com/edf/tarifs/tempo#selectran',
https://prix-elec.com/tarifs/fournisseurs/edf/tempo#selectran'
ejp (pas testé le 2024/09/10)
https://electricite.net/edf/tarifs/ejp // **dates fausses le 2/04
https://prix-elec.com/tarifs/fournisseurs/edf/ejp-demain
https://selectra.info/energie/fournisseurs/edf/ejp
https://selectra.info/energie/fournisseurs/edf/ejp/demain
https://observatoires.net/calendrier
https://selectra.info/energie/fournisseurs/edf/ejp/jours
https://www.fournisseurs-electricite.com/edf/tarifs/ejp/jour-demain
https://www.fournisseurs-electricite.com/edf/tarifs/ejp
https://www.kelwatt.fr/fournisseurs/edf/ejp/demain
https://www.kelwatt.fr/guide/ejp

******************************************************************************
**
** Evolution des versions :
**
** 2017-07-26 (DjMomo)    :V1.0 - Version initiale
** 2019-10-24 (Merguez07) :V2.0 - utilisation du proxy Eedomus
** 2019-10-26 (Merguez07) :V2.1 - Passage du cache de 24h à 1h
** 2020-11-11 (Merguez07) :V3.0 - utilisation des données du site de selectra
** 2021-10-04 (Merguez07) :V3.1 - correction du script suite à evolution du site Electra
** 2022-01-07 (Merguez07) :V3.2 - correction du script suite à evolution du site Electra
** 2022-03-24 (Merguez07) :V3.3 - correction du script suite à evolution du site Electra
** 2022-03-27 (Merguez07) :V3.4 - bug dans le store
** 2022-04-01 (opa95)     :V3.5 - corrections mineures, compatible autres sites et EJP
** 2022-04-01 (opa95)     :V3.6 - utilisation du site edf tempo et EJP
** 2024-09-10 (opa95)     :V3.7 - Utilisation api edf et sites selectra...
*******************************************************************************/
function sdk_jour($time_now,$nbJours = 0,$jourStr = 2) {
  //creation date à partir du temps unix décale de $nbJours
  //sortie jourFrançais jj/mm
  global $days;
  $time_now += 86400*$nbJours;
  $jour_semaine = date('w',$time_now);
  $start = 0;
  foreach ($days as $key => $day) {
    if ($start == $jour_semaine) {
      $jour_semaine = $key;
      break;
    }
    $start ++;
  }
  switch ($jourStr) {
    case 2 : $ret= date('Y-m-d',$time_now);
    return $ret;
    case 1 : return $jour_semaine.' '.date('d/m',$time_now);
    default :
      $ret= date('d/m',$time_now);
      return $ret;
}
//  if ($jourStr ==1 ) return $jour_semaine.' '.date('d/m',$time_now);
//  else return date('d/m',$time_now);
//  return;
}

function sdk_multiextract($string,$startStr,$stopStr='',&$start,$startIn = false,$stopIn = false) { // Extraire une chaine de caracteres suivant plusieurs separateurs
  // startStr : string ou array recherche de startStr ou de startStr[0], puis de startStr[1]à partir de là, puis ...
  // stopStr  : string ou array recherche de stopStr ou de stopStr[0], puis de stopStr[1]à partir de là, puis ...
  // renvoi de la portion de $string entre le dernier startStr et le dernier stopStr
  // Si outer les balises sont incluses, sinon elles ne sont pas incluses
  // start est remis a jour
  // eviter les caractères non standards
  // si startStr (ou stopStr) de la forme
  // array(array('a','b'),array('d','e')) recherche de (a puis b) ou bien (d puis e), si séquence 1 absente
  // array('ab', 'ef') recherche de 'ab' puis 'ef'
  // 'abc' recherche de 'abc'
  $found = true;
  if (!is_array($startStr)) {
    $startStr = array($startStr);
  }
  foreach ($startStr as $codes){
    if (!is_array($codes)) {
      $codes = $startStr;//$codes = array($codes);
    }
    $beg = $start;
    $startPos = '';
    foreach ($codes as $code) {
      $startLen = strlen($code);
      if ( ($startLen != 0) && (($pos = strpos(substr($string,$beg),$code)) !== false) ) {
        if ($startPos == '') $startPos = $beg + $pos;
        $beg = $beg + $pos + $startLen;
      }
      else {
        $beg = $start;
        if ($startPos == '') $startPos = $beg;
        $found = false;
        break;
      }
    }
    if ($found) break;
  }
  $start = $beg;
  $found = true;
  if (!is_array($stopStr)) {
    $stopStr = array($stopStr);
  }
  foreach ($stopStr as $codes){
    if (!is_array($codes)) {
      $codes = $stopStr;//$codes = array($codes);
    }
    $end = $start;
    $stopPos = '';
    foreach ($codes as $code) {
      $stopLen = strlen($code);
      if ( ($stopLen != 0) && (($pos = strpos(substr($string,$end+1),$code)) !== false) ) {
        $end = $end + 1 + $pos;
        if ($stopPos == '') $stopPos = $end;
      }
      else {
        $end = $start;
        if ($stopPos == '') $stopPos = $end;
        $found = false;
        break;
      }
    }
    if ($found) break;
  }
  if ($startIn) $beg = $startPos;
  if ($stopIn)  $end += $stopLen;
  else $end = $stopPos;
  $launch  = substr($string,$beg,$end-$beg);
  return $launch;
}

function sdk_extract($string,$startStr,$stopStr='',$start = 0,$startIn = false,$stopIn = false) { // Ectraire une chaine de caracteres suivant plusieurs separateurs
// appel de sdk_multiextract, start inchangé
  $launch = sdk_multiextract($string,$startStr,$stopStr,$start,$startIn,$stopIn );
  return  $launch;
}

function sdk_multiexplode ($delimiters,$string) {   // Separer une chaine de caracteres suivant plusieurs separateurs
// remplacement delimiters[1] par delimiters[0]
// renvoi du tableau rédultat de explode
  $ready  = str_replace($delimiters, $delimiters[0], $string);
  $launch = explode($delimiters[0], $ready);
  return  $launch;
}

function sdk_format ($string,$field = 'color') {  // met en forme selon la semantique du plugin du store
  // formatage de date -> format[dayWeek] dayWeek et format[dateJM] jj/mm ou renvoi ND ND
  // formatage de couleur tempo -> BLEU, BLANC, ROUGE ND
  // formatage de couleur ejp -> NON_EJP, EST_EJP, ND
  global $contrat;// tempo ou ejp
  global $upc_contrat;// TEMPO ou EJP
  global $days;// jour de la semaine
  $string   =   str_replace($upc_contrat,'',trim(strtoupper($string))); 
  if ($field == 'date') {
    if (strlen($string) < 6) $string = 'ND '.$string;
    list($format['dayWeek'],$format['dateJM']) = explode(' ',trim($string));
    if ($format['dayWeek'] != 'ND') $format['dayWeek'] = $format['dayWeek'][0].strtolower(substr($format['dayWeek'],1));
    if (!array_key_exists($format['dayWeek'],$days) ) $format['dayWeek'] = 'ND';
  }
  else {
    $format   = "ND";
    $string   =   strtoupper(str_replace(' ','',$string));
    if ($contrat == 'ejp') {
      if ( ($string == "PASD'") || (strpos($string,'JAMAIS') !== false) ) $format="NON_EJP";
      if ($string == "JOUR")  $format="EST_EJP";
    }
    else {
      $string = strtoupper($string);
      $color  =   array("1"=>"BLEU","2"=>"BLANC","3"=>"ROUGE","0"=>"ND");
      if (is_numeric($string)) {
          $string = $string%4;
          if ($string>0) return $color[$string];
      }
      foreach ($color as $col) {
        if (strpos($string,$col) !== false) {
          $format = $col;
          break;
        }
      }
    }
  }
  return  $format;
}


define('MEM','OLD');
define('DEFTYPE','selectran');// format url annexe
define('DEFTIME','3600');//3600 secondes
define('NBB','300');
define('NBW','43');
define('NBR','22');
define('TSTART',6);//début start
define('TSTOP',22);//fin HP
$months = array('janvier' => 'January', 'février' => 'February','mars' => 'March','avril' => 'April','mai' => 'May',
                'juin' => 'June','juillet' => 'July','août' => 'August','septembre' => 'September','octobre' => 'October',
                'novembre' => 'November','décembre' => 'December');
$days   = array('Dimanche' => 'Sunday','Lundi' => 'Monday','Mardi' => 'Tuesday','Mercredi' => 'Wednesday','Jeudi' => 'Tuesday',
                'Vendredi' => 'Friday','Samedi' => 'Saturday');
                //initialisation des variables
//$start = strlen('exec=edf_');
$source = (array_key_exists('exec',$_GET))? strtolower($_GET['exec']):"";
if (strpos('Z'.$source,'tempo')) $contrat = 'tempo';
elseif (strpos('Z'.$source,'ejp'))$contrat = 'ejp';
else $contrat = "";
$contrats = array('tempo','ejp');
$urls     = array('tempo' => array (
  'https://www.api-couleur-tempo.fr/api/joursTempo?',
  'https://selectra.info/energie/fournisseurs/edf/tempo#selectran',
  'https://www.fournisseurs-electricite.com/edf/tarifs/tempo#selectran',
  'https://prix-elec.com/tarifs/fournisseurs/edf/tempo#selectran',
  'https://www.kelwatt.fr/guide/tempo#selectra',
  'https://observatoires.net#selectra',
  'https://observatoires.net/tempo#selectra',
  ),
        'ejp'   => array (
    1 => 'https://selectra.info/energie/fournisseurs/edf/ejp#selectra',
    'https://observatoires.net#selectra',
    'https://observatoires.net/ejp#selectra',
    'https://prix-elec.com/tarifs/fournisseurs/edf/ejp-demain#selectra',
    'https://www.fournisseurs-electricite.com/edf/tarifs/ejp/jour-demain#selectra',
    'https://www.kelwatt.fr/fournisseurs/edf/ejp#selectra',
    'https://electricite.net/edf/tarifs/ejp#selectra',
    'https://agence-energie.com/edf/tarifs/ejp#selectra'
  )
      );
$types = array('selectra','selectran','keskeces');               

$contrat_  = strtolower(getArg('contrat',false,""));
$contrat = (($contrat_!="") && (in_array($contrat_,$contrats)))?  $contrat_:$contrat;
$debug  = getArg('debug',false);
if ( (!$debug) || (!in_array($debug,array(0,1))) ) $debug = 0;
$num_site   = abs(getArg('site',false));
if ( (!$num_site) || (($num_site > count($urls[$contrat]) )) ) $num_site = 1;
if ($num_site == 0 ) $scan = 1; else $scan = 0;
$timer = getArg('timer',false,DEFTIME);//Validité du fichier
$upc_contrat = strtoupper($contrat);
$poll = 0;
$reset = getArg('reset',false,0);
if ($reset) {
  deleteVariable(MEM.$contrat);
  $poll = 1;
}
$simul = getArg('simul',false,0);//Décalage temps secondes

$time_now    = time()+$simul;
$annee_now   = date('Y',$time_now);//aaaa
$heure_now   = date('H',$time_now);//hh
$date_now    = sdk_jour($time_now,0,1);// jj/mm
$date_demain = sdk_jour($time_now,1,1);//jour jj/mm
$date_hier   = sdk_jour($time_now,-1,0);//jour jj/mm
$nowDate     = sdk_jour($time_now,0,0);//jour semaine
$dateDemain  = sdk_jour($time_now,1,0);//jour semaine
list($nowDayWeek,$bof)    = explode(' ',$date_now);
list($tomorrowDayWeek,$bof) = explode(' ',$date_demain);
$infos_ = array (
  'todayDate' => 'ND', 'todayDayWeek' => 'ND',
  'todayYear' => 'ND', 'todayColor' => 'ND', 'hphc' =>'HP',
  'tomorrowDate' => 'ND', 'tomorrowDayWeek' => 'ND', 'tomorrowYear' => 'ND', 'tomorrowColor' => 'ND',
  'yesterdayColor' =>'ND', 'yesterdayRate' => 'ND', 'yesterdayDate' => 'ND',
  'nowDate' => 'ND','nowColor'=>'ND', 'tarifnow' => 'ND',
  'decRed' => NBR, 'totRed' => NBR, 'remRed' => 'ND',
  'decWhite' => NBW, 'totWhite' => NBW, 'remWhite' => 'ND',
  'decBlue' => NBB, 'totBlue' => NBB, 'remBlue' => 'ND',
  'fileDate' => 'ND', 'fileTimestamp' => 'ND',
  'BLEU' => array('HC'=>'0.1296','HP'=>'0.1609'),
  'BLANC' => array('HC'=>'0.1486','HP'=>'0.1894'),
  'ROUGE' => array('HC'=>'0.1568','HP'=>'0.7562'),
) ;

$mem = MEM.$contrat;
if (loadVariable($mem)!="") $infos_ = loadVariable(MEM.$contrat);
  else $poll = 1;
$infos_['hphc'] = (($heure_now<TSTART) || ($heure_now>=TSTOP))?'HC':'HP';
if (!$poll && array_key_exists('fileTimestamp',$infos_)){// forçage lecture
  $file_hour = date("H",$infos_['fileTimestamp']);
  if ($time_now<$infos_['fileTimestamp']) {$poll=1;}// simulation (recul)
  elseif (($time_now-$infos_['fileTimestamp'])>$timer) {$poll=1;}// temps expiré
  elseif (($file_hour<TSTART) && ($heure_now>=TSTART)) {$poll=1;}// passage à 6h
  elseif (($file_hour<TSTOP) && ($heure_now>=TSTOP)) {$poll=1;} // passage à 22h
  elseif (($file_hour>$heure_now)) {$poll=1;}// passage à minuit
  elseif (($file_hour<12) && ($heure_now>=12)) {$poll=1;} // passage à 12h
}

$heure_lecture = date('H:i:s',$time_now);
$src = $mem;
if ($poll)
{
  $src="poll";
  $urls['tempo'][0] .= 'dateJour[]='.sdk_jour($time_now,-1).'&dateJour[]='.sdk_jour($time_now).'&dateJour[]='.sdk_jour($time_now,1);
  $infos_['todayDate']       = $nowDate; // dd/mm
  $infos_['todayDayWeek']    = $nowDayWeek; // Jour ou ND
  $infos_['tomorrowDate']    = $dateDemain; // dd/mm
  $infos_['tomorrowDayWeek'] = $tomorrowDayWeek; // Jour ou ND
  $infos_['yesterdayDate']   = $date_hier;
  if ('todayDayWeek' == 'Samedi') $infos_['tomorrowColor'] = 'BLEU';
  elseif ('todayDayWeek' == 'Dimanche') $infos_['todayColor'] = 'BLEU';
  $response0 = httpQuery($urls['tempo'][0],'GET');
  $response0 = sdk_json_decode($response0);
  $api_edf = count($response0)>1;
  $infos_['yesterdayColor'] = sdk_format($response0[0]['codeJour']);
  $bof = sdk_format($response0[1]['codeJour']);
  if ($bof!='ND') $infos_['todayColor']  = $bof;
  $bof = sdk_format($response0[2]['codeJour']);
  if ($bof!='ND') $infos_['tomorrowColor']  = $bof;
  for ($i=$num_site;$i<=count($urls[$contrat]);$i++){
    if (!$i) $i++;
    list($url,$type) = explode('#',$urls[$contrat][$num_site]);
    if ( (!$type) || (!in_array($type,$types)) ) $type = DEFTYPE;
    $response = trim(httpQuery($url,'GET'));
    if (strpos($response,'html') === false) $result = 0;
      else {$result = 1;break;}
    if ($num_site) break;
  }

  if ($result) {
    $erreur = 0;
    switch ($type) {
      case 'selectra' :
          //lecture block
          $sep2  = array(array('<!-- END'),array('<div id="block-'));
          $sep   = array('<div id="block-'.$contrat,'<div');
          $start = 0;
          $block = trim(strtolower(sdk_extract($response,$sep,$sep2,$start,false,false)));//pas de MaJ $start
          $err_num = 1;
          if (strlen($block) == 0) {$erreur = $err_num;break;}
          //extraction infos Aujourd'hui
          $sep2  ='</';
          // date
          $sep   = array('aujourd',$contrat);// jour dd/mm
          $bof   = trim(sdk_multiextract($block,$sep,$sep2,$start));//MaJ $start
          $bof   = sdk_format($bof,'date');
          $infos_['todayDate']    = $bof['dateJM']; // dd/mm
          $infos_['todayDayWeek'] = $bof['dayWeek']; // Jour ou ND
          //couleur
          $sep    = array('_icon','<span>');// couleur
          $infos_['todayColor'] = trim(sdk_multiextract($block,$sep,$sep2,$start));
          $infos_['todayColor'] = sdk_format($infos_['todayColor']);//COUL ou ND
          //extraction infos demain
          $start = 0;// debut block
          // date
          $sep = array('demain',$contrat);// jour dd:mm
          $bof = trim(sdk_multiextract($block,$sep,$sep2,$start));//MaJ $start
          $bof = sdk_format($bof,'date');
          $infos_['tomorrowDate']    = $bof['dateJM']; // dd/mm
          $infos_['tomorrowDayWeek'] = $bof['dayWeek']; // Jour ou ND
          // couleur
          $sep = array('_icon','<span>');// couleur
          $infos_['tomorrowColor'] = trim(sdk_multiextract($block,$sep,$sep2,$start));//MaJ $start
          $infos_['tomorrowColor'] = sdk_format($infos_['tomorrowColor']);
          // bilan
          $sep = array('title','>'); //{ejp}nbjoursecoules/nbtotjours {tempo} nbjoursrestants
          $bof = trim(sdk_multiextract($block,$sep,$sep2,$start));
          if ($contrat == 'ejp') {
            list($bof,$bof1) = explode('/',$bof);
            $bof1 = trim($bof1);
            if (is_numeric($bof1))  $infos_['totRed'] = $bof1;
            $bof  = trim($bof);
            if (is_numeric($bof)) {
              $infos_['decRed'] = $infos_['totRed'] - $bof;}
          }
          //complements
          $bof = str_replace('/','-',$infos_['todayDate'].'-'.$annee_now);//date europeenne
          $bof = strtotime($bof);
          if ($bof > $time_now) $infos_['todayYear'] = $annee_now -1;
          else $infos_['todayYear'] = $annee_now;
          $infos_['tomorrowYear'] = $infos_['todayYear'];
          if ($infos_['tomorrowDate'] == '01/01') $infos_['tomorrowYear']++;
        break;
      case 'selectran' :
        $sep2  = array(array('<!-- END'),array('<div class='));
        $sep   = array('"intro">','hui, ');
        $start = 0;
        $block = trim(strtolower(sdk_extract($response,$sep,$sep2,$start,false,false)));//pas de MaJ $start
        $err_num = 1;
        if (strlen($block) == 0) {$erreur = $err_num;break;}
        if ($api_edf){
          $sep   = array('il reste');// jour dd/mm
          $sep2  =array('</p>');
          $block = trim(sdk_multiextract($block,$sep,$sep2,$start));//MaJ $start
          $start=0;
          $sep2   =array('</');
        }else{
          //lecture block
          //extraction infos Aujourd'hui
          // date
          $sep  = array('hui, ');// jour dd/mm
          $sep2 = array(',');// jour dd/mm
          $bof  = trim(sdk_multiextract($block,$sep,$sep2,$start));//MaJ $start
          $jour = explode(" ",$bof);
          $jour[1] = $months[$jour[1]];
          $date = strtotime($jour[0]." ".$jour[1]." ".$jour[2]);
          //couleur
          $sep  = array('est');// couleur
          $sep2 ='</';
          $bof  = trim(sdk_multiextract($block,$sep,$sep2,$start));
          $infos_['todayColor'] = sdk_format($bof);//COUL ou ND
          //extraction infos demain
          // date
          // couleur
          $sep    = array('sera');// couleur
          $bof = trim(sdk_multiextract($block,$sep,$sep2,$start));//MaJ $start
          $infos_['tomorrowColor'] = sdk_format($bof);
        }
        // bilan
        $sep    = array('<strong>'); //{ejp}nbjoursecoules/nbtotjours {tempo} nbjoursrestants
        for ($i =0;$i<3;$i++) {
          $bof = trim(sdk_multiextract($block,$sep,$sep2,$start));
            $nb = (int)$bof;
            if (strpos($bof,'bleu')>1) $infos_['remBlue'] = $nb;
            elseif (strpos($bof,'rouge')>1) $infos_['remRed'] = $nb;
            elseif (strpos($bof,'blanc')>1) $infos_['remWhite'] = $nb;
          }
        $infos_['decRed'] = $infos_['totRed'] - $infos_['remRed'];
        $infos_['decWhite'] = $infos_['totWhite'] - $infos_['remWhite'];
        $infos_['decBlue'] = $infos_['totBlue'] - $infos_['remBlue'];
        $sep2  = array(array('<!-- END'),array('</tr'));
        $sep   = array('<th>Abonnement','<strong>','<strong>','</td>');
        $start = 0;
        $block = trim(strtolower(sdk_extract($response,$sep,$sep2,$start,false,false)));//pas de MaJ $start
        $sep2  = array('&nbsp;');
        $sep   = array('<td>');
        $bof   = trim(strtolower(sdk_multiextract($block,$sep,$sep2,$start)))+0;//MaJ $start
        if ($bof>0) $infos_['BLEU']['HC'] = $bof;
        $bof   = trim(strtolower(sdk_multiextract($block,$sep,$sep2,$start)))+0;//MaJ $start
        if ($bof>0) $infos_['BLEU']['HP'] = $bof;
        $bof   = trim(strtolower(sdk_multiextract($block,$sep,$sep2,$start)))+0;//MaJ $start
        if ($bof>0) $infos_['BLANC']['HC'] = $bof;
        $bof   = trim(strtolower(sdk_multiextract($block,$sep,$sep2,$start)))+0;//MaJ $start
        if ($bof>0) $infos_['BLANC']['HP'] = $bof;
        $bof   = trim(strtolower(sdk_multiextract($block,$sep,$sep2,$start)))+0;//MaJ $start
        if ($bof>0) $infos_['ROUGE']['HC'] = $bof;
        $bof   = trim(strtolower(sdk_multiextract($block,$sep,$sep2,$start)))+0;//MaJ $start
        if ($bof>0) $infos_['ROUGE']['HP'] = $bof;
        break;
      }
  }
  if ($heure_now<TSTART) {
    if ($infos_['nowDate'] != $infos_['yesterdayDate']){
      $infos_['nowDate'] = $infos_['yesterdayDate'];
      $infos_['nowColor'] = $infos_['yesterdayColor'];
  //    $infos_['tarifNow'] = $infos_['yesterdayRate'];
    }
  }elseif ($infos_['nowDate'] != $infos_['todayDate']){
    $infos_['nowDate'] = $infos_['todayDate'];
    $infos_['nowColor'] = $infos_['todayColor'];
  //  $infos_['tarifNow'] = $infos_['tarifToday'];
  }

  if ( ($infos_['todayColor'] == 'ND') || ($infos_['tomorrowColor'] == 'ND') ) {
    $result = 0;
  }

  $infos_['fileTimestamp'] = $time_now;;
  $infos_['fileDate'] = date('Y-m-d H:i:s',$infos_['fileTimestamp']);
  //var_dump($infos_);
  saveVariable($mem,$infos_);
}
// Génération du XML
  sdk_header('text/xml');
$xml  = '<?xml version="1.0" encoding="UTF-8"?>'."\n";
$xml .= "<root>\n";
$xml .= '<'.$contrat.'>'."\n";
$xml .= '   <aujourdhui>'.$infos_['todayColor']."</aujourdhui>\n";
$xml .= '   <date_aujourdhui>'.$infos_['todayDate']."</date_aujourdhui>\n";
$xml .= '   <demain>'.$infos_['tomorrowColor']."</demain>\n";
$xml .= '   <date_demain>'.$infos_['tomorrowDate']."</date_demain>\n";
$xml .= '   <now>'.$infos_['nowColor']."</now>\n";
$xml .= '   <date_now>'.$infos_['nowDate']."</date_now>\n";
if ($contrat == 'ejp') {
  $xml .= '   <decompte>'.$infos_['decRed']."</decompte>\n";
}
else {
  $xml .= "   <decompte_bleu>".$infos_['decBlue']."</decompte_bleu>\n";
  $xml .= "   <decompte_blanc>" .$infos_['decWhite']."</decompte_blanc>\n";
  $xml .= '   <decompte_rouge>' .$infos_['decRed']."</decompte_rouge>\n";
  $xml .= "   <reste_bleu>"  .$infos_['remBlue']."</reste_bleu>\n";
  $xml .= "   <reste_blanc>" .$infos_['remWhite']."</reste_blanc>\n";
  $xml .= '   <reste_rouge>' .$infos_['remRed']."</reste_rouge>\n";
  $xml .= '   <type>'.$contrat."</type>\n";
  $xml .= '   <hphc>'.$infos_['hphc']."</hphc>\n";
  $xml .= '   <tarifs_aujourdhui>'.$infos_[$infos_['todayColor']]['HP'].'/'.$infos_[$infos_['todayColor']]['HC']."</tarifs_aujourdhui>\n";
  $xml .= '   <tarifs_demain>'.$infos_[$infos_['tomorrowColor']]['HP'].'/'.$infos_[$infos_['todayColor']]['HC']."</tarifs_demain>\n";
  $xml .= '   <tarif_now>'.$infos_[$infos_['nowColor']][$infos_['hphc']]."</tarif_now>\n";
  $xml .= '   <bleu_hc>'.$infos_['BLEU']['HC']."</bleu_hc>\n";
  $xml .= '   <bleu_hp>'.$infos_['BLEU']['HP']."</bleu_hp>\n";
  $xml .= '   <blanc_hc>'.$infos_['BLANC']['HC']."</blanc_hc>\n";
  $xml .= '   <blanc_hp>'.$infos_['BLANC']['HP']."</blanc_hp>\n";
  $xml .= '   <rouge_hc>'.$infos_['ROUGE']['HC']."</rouge_hc>\n";
  $xml .= '   <rouge_hp>'.$infos_['ROUGE']['HP']."</rouge_hp>\n";
}
$xml .='</'.$contrat.'>'."\n";
$xml .= "<debug>\n";
$xml .= '   <date_fichier>'.$infos_['fileDate']."</date_fichier>\n";
$xml .= '   <timestamp>'.$infos_['fileTimestamp']."</timestamp>\n";
$xml .= '   <date_lecture>'.$date_now." ".$heure_lecture."</date_lecture>\n";
$xml .= '   <url>'.htmlentities($urls['tempo'][0])."</url>\n";
$xml .= '   <url_>'.htmlentities($url)."</url_>\n";
$xml .= '   <source>'.$src."</source>\n";
$xml .= '   <timer>'.$timer."</timer>\n";
$xml .= '   <result>'.$result."</result>\n";
if ($debug) {
    $xml .= '   <source>'       .$source                    ."</source>\n";
    $xml .= "   <response_api>   ";
    foreach ($response0 as $key => $item){
        $xml .= '{['.$key.'] {';
        foreach ($item as $key2 => $item2){
            $xml .= $key2.' => '.$item2.',';
        }
        $xml .= '}, ';
    }
    $xml .= '}, ';
    $xml .= "</response_api>\n";
    $xml .= "   <response>   "  .substr($response,0,100)    .".....\n   </response>\n";
  foreach ($infos_ as $key => $info){
    $xml .= '   <test_'.$key.'>'       .$info               ."</test_".$key.">\n";
  }
  $xml .= "   <debugLen>"     .strlen($block)               ."</debugLen>\n";
  $xml .= "   <debugStr>\n"   .$block                       ."\n   </debugStr>\n";
  foreach ($urls[$contrat] as $key => $url)  {
    $xml .= '   <url_'.$key.'>'.$url                        ."</url_".$key.">\n";
  }     
}
$xml .= "</debug>\n";
$xml .= "</root>\n";
echo $xml;
?>

eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 870
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: [Store] Tempo EDF

Messagepar opa95 » 12 Sep 2024 09:17

Bonjour
Désolé la remarque sur l'adresse est déplacée, si elle n'était pas bonne, il n'y aurais rien d'affiché.
Dis moi ce que ça donne.
Si ça ne fonctionne pas, il faudra introduire des affichages intermédiaires et peut-être continuer en mp pour ne pas saturer le forum.
Pour les affichages intermédiaires, tu peux afficher des valeurs en éditant le code
echo "1\n";
(1 puis 2 puis 3...) aux points stratégiques
ou des valeurs de variables :
echo "Poll : $poll\n";
ou de tableaux
var_dump($infos_);
Tu peux vérifier les infos d'entrée
en ligne 321 :
echo "Poll : $poll Timer : $timer\n"; ( Poll doit être à 1 après un reset ou avec un timer faible)
puis entre 362 et 363 (anciens numéros)
echo "Poll : $poll\n"; (Poll doit être à 1 après un reset ou avec un timer faible)
Ensuite, il faut vérifier qu'il est bien entré dans la boucle
ajouter après la ligne 365 (anciens numéros)
echo "Src : $src\n"; résultat Poll
et enfin entre 374 et 375 (anciens numéros)
echo "Response0 : $response0\n";
Bon travail :)
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 870
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: [Store] Tempo EDF

Messagepar patrichkof » 12 Sep 2024 09:23

j'ai pris ton dernier script et fait le debug, et tout re-fonctionne!
un grand merci à toi OPA, je suis près à attaquer l'hivers
patrichkof
 
Messages : 28
Inscription : 18 Fév 2019

Re: [Store] Tempo EDF

Messagepar opa95 » 12 Sep 2024 10:27

Bonjour patrichkof
patrichkof a écrit:j'ai pris ton dernier script et fait le debug, et tout re-fonctionne!
un grand merci à toi OPA, je suis près à attaquer l'hivers

Tant mieux si ça fonctionne.
Est-ce que c'est bon quand tu laisse les valeurs d'origine (sans modifier timer, debug, ou reset)? :)
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 870
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: [Store] Tempo EDF

Messagepar SKL » 12 Sep 2024 21:09

Hello,

Je suis ce fil avec attention, pour clarifier, une mise à jour du plugin est-elle prévue ?

J'essai de remplacer le code par celui fourni par OPA (merci pour vos efforts !!) mais je n'obtient pas de fonctionnement. peut être m'y prends-je d'une façon erronée...
serait-il possible de détailler les manips pour des non initiés aux codes et à l'édition de scripts ?

Je procède de la façon suivante : j'ouvre le script, je colle, et donc remplace le code initial par le code donné, sauvegarder, exécuter : j'obtiens alors
"ND ND ND ND tempo HC / / Jeudi 12/09 22:09:58 https://www.api-couleur-tempo.fr/api/joursTempo? OLDtempo 3600"


Merci beaucoup ;)
SKL
 
Messages : 169
Inscription : 03 Nov 2016

Re: [Store] Tempo EDF

Messagepar opa95 » 12 Sep 2024 21:40

Bonsoir SKL
SKL a écrit:Hello,

Je suis ce fil avec attention, pour clarifier, une mise à jour du plugin est-elle prévue ?

J'essai de remplacer le code par celui fourni par OPA (merci pour vos efforts !!) mais je n'obtient pas de fonctionnement. peut être m'y prends-je d'une façon erronée...
serait-il possible de détailler les manips pour des non initiés aux codes et à l'édition de scripts ?

Je procède de la façon suivante : j'ouvre le script, je colle, et donc remplace le code initial par le code donné, sauvegarder, exécuter : j'obtiens alors
"ND ND ND ND tempo HC / / Jeudi 12/09 22:09:58 https://www.api-couleur-tempo.fr/api/joursTempo? OLDtempo 3600"


Merci beaucoup ;)

La version actuelle est encore provisoire, j'espère la finaliser pendant le week-end et voir pour faire le remplacement sur le Store.
En attendant, une fois que tu sauvegardé le script, il ne faut pas faire le choix exécuter (je n'ai jamais compris à quoi ça servait).
Tu reviens dans la fenêtre du plugin et tu appuie sur "tester" pour ouvrir le fenêtre correspondant et appuie sur tester.
Soit tu obtiens quelque chose de raisonnable, soit tu peux tester en rajoutant dans la ligne de commande : &reset=1 pour remettre la mémoire à zéro et tu réessaies.
Si ça ne marche pas, tu fais une copie du contenu de la fenêtre et tu me l'envoies. :)
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 870
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: [Store] Tempo EDF

Messagepar patrichkof » 13 Sep 2024 05:42

Bonjour à tous,
J’ai exactement suivi les instructions de OPA pour que ça fonctionne,et après j’ai bien laissé les valeurs d’origine.
Quand je vais dans l’historique, les valeurs remontent toutes les heures avec par exemple un changement de décompte à minuit pour le nombre de jours bleus: ce qui est normal
Encore merci opa
patrichkof
 
Messages : 28
Inscription : 18 Fév 2019

Re: [Store] Tempo EDF

Messagepar SKL » 13 Sep 2024 15:58

Super !

j'ai bien une valeur correcte en résultat lors du test, mais pas en fonctionnement normal.

Ne perds pas de temps à corriger mon cas, je peux attendre la version du store, on est pas encore aux jours rouges ;)

Merci beaucoup pour le DEV !!
SKL
 
Messages : 169
Inscription : 03 Nov 2016

Re: [Store] Tempo EDF

Messagepar opa95 » 13 Sep 2024 16:12

Bonjour SKL
SKL a écrit:Super !

j'ai bien une valeur correcte en résultat lors du test, mais pas en fonctionnement normal.

Ne perds pas de temps à corriger mon cas, je peux attendre la version du store, on est pas encore aux jours rouges ;)

Merci beaucoup pour le DEV !!

Bizarre, :? as-tu essayé avec une commande
Code : Tout sélectionner
&reset=1
dans le test, et ensuite
Code : Tout sélectionner
&reset=0&timer=1
?
Ca m'aiderait de savoir :)
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 870
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: [Store] Tempo EDF

Messagepar SKL » 13 Sep 2024 17:00

J'ai essayé avec &reset=1

et mea culpa, ça fonctionne il suffisant d'attendre que le polling fasse son oeuvre ;)

merci merci ;)
SKL
 
Messages : 169
Inscription : 03 Nov 2016

Re: [Store] Tempo EDF

Messagepar opa95 » 13 Sep 2024 17:05

Je préfère
SKL a écrit:J'ai essayé avec &reset=1

et mea culpa, ça fonctionne il suffisant d'attendre que le polling fasse son oeuvre ;)

merci merci ;)

Sinon, il ne faut pas mettre de & :) reset=1 dans les fenêtres des plugins, seulement pour faire un test :)
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 870
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: [Store] Tempo EDF

Messagepar SKL » 13 Sep 2024 17:06

oui je l'ai bien ajouté uniquement dans le test !
SKL
 
Messages : 169
Inscription : 03 Nov 2016

Re: [Store] Tempo EDF

Messagepar boulihipp1 » 14 Sep 2024 14:55

merci en tout cas pour le dev. j ai peur de toucher au script j avoue , j attend e voir si vous mettez a jour le pluggin . je me sens pas de tout bidouiller a la main.
boulihipp1
 
Messages : 97
Inscription : 12 Jan 2016

Re: [Store] Tempo EDF

Messagepar opa95 » 14 Sep 2024 16:25

Bonjour tous
boulihipp1 a écrit:merci en tout cas pour le dev. j ai peur de toucher au script j avoue , j attend e voir si vous mettez a jour le pluggin . je me sens pas de tout bidouiller a la main.

Ca y est, j'ai trouvé la solution pour avoir aussi l'historique depuis le début de la saison (y compris aujourd'hui et demain : accéder directement au site RTE. Le transfert de la saison 2023-2024 ne prend que 2.7k : résultat 301jours bleus, 43 blancs et 22 rouges.
Il n'y a plus besoin d'interroger les sites annexes et de décoder un fichier html.
Je vais tester les heures exactes de mise à jour (il n'y en a qu'une par jour et elle est déjà passée ce matin vers 9h).
Du coup, le script devrait être très simple à écrire appel de RTE (éventuellement de l'api edf en cas de problème de serveur et de temps en temps un serveur annexe pour mettre à jour les tarifs). Ce sera bon en fin de semaine, pour faire des tests.
Pour ceux que ça intéresse,
https://www.services-rte.com/cms/open_d ... =2024-2025
Un petit peu de nettoyage derrière (seules la moitié des données sont valides, les autres sont en double) :)
PS dans le dernier script que j'avais envoyé, il faudrait remplacer (aux environs de la ligne 381)
Code : Tout sélectionner
if ($bof!='ND') $infos_['tomorrowColor']  = $bof;

par
Code : Tout sélectionner
$infos_['tomorrowColor']  = $bof;

sinon l'état 'indéterminé' pour la couleur de demain n'apparaît pas ou attendre la toute dernière version
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 870
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: [Store] Tempo EDF

Messagepar opa95 » 15 Sep 2024 08:42

Bonjour
L'api de RTE permet effectivement d'avoir des informations plus tôt que l'api edf et les autres sites.
La couleur demain a été mise à jour à 6h ce matin (avant 6h30), celle de l'api edf à 9h et Selectra je ne sais pas (c'était à jour à 9h15).
Je vais donc terminer le plugin qui a tourné cette nuit, basé principalement sur le site RTE.
Le fonctionnement sera a priori
- minuit : mise à jour des informations du jour (date, couleur, nombre de jours) sans appel aux sites externes
- 6h mise à jour de la couleur et du tarif courant à 6h, puis appel de RTE pour les informations du lendemain
- 12h confirmation avec l'Api edf, si RTE a échoué
- 15h récupération éventuelle des tarifs sur les sites electra et autres (éventuellement, on pourrait se contenter d'une par semaine) ou ne pas utiliser les sites et modifier les tarifs manuellement avec [VAR3] environ 2 fois par an.
- 22h mise à jour des tarifs actuels sans appel externe
- Les appels horaires toutes les heures ou les 2 heures, ne font appel aux sites externes que si les infos ne sont pas à jour. Seulement à partir de 6h pour RTE (ce n'est pas la peine de faire appel à edf, si l'info RTE n'est pas à jour, ce n'est nécessaire que si le site RTE ne répond pas). Pour les tarifs, la mise à jour journalière n'est pas indispensable, elle peut attendre quelques jours.
- Le timing peut être réglé par la fréquence des appels (60 ou 120 minutes) ou/et par le timer interne en mettant une fréquence plus rapide (1,2 ou 5) : dans ce cas, l'appel externe sera réglé par le script.
Le défaut d'une fréquence de 60 ou 120, c'est que l'on contrôle moins bien l'heure exacte de lecture : il faut réinitialiser en modifiant la fréquence ou/et en resauvant le plugin pour que les lectures se fassent vers l'heure + quelques minutes et non à l'heure - quelques minutes (retard d'un peu moins d'une heure) : en fait ce n'est important que pour la mise à jour du tarif actuel ou pour certains utilisateurs.
L'autre solution consiste à utiliser des règles ou bien une horloge de déclenchement externe.
Patience, le script complet arrive : La version avec mise à jour manuelle des tarifs est plus légère que la version avec mise à jour automatique qui nécessite le décodage d'un fichier HTML, à moins que quelqu'un connaisse une api qui fait déjà le boulot. :)
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 870
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: [Store] Tempo EDF

Messagepar opa95 » 16 Sep 2024 09:55

Bonjour
Pareil ce matin couleurs : site rte mis à jour à 6h? (entre 5h35 et 6h35), api edf 9h? (entre 8h55 et 9h55).
nombre de jours restants : mise à jour à minuit (c'est évident car la couleur du jour est connue).
Je vais affiner.
Il est possible que ça change en période critique (actuellement, c'est facile c'est toujours bleu. :)
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 870
Inscription : 04 Fév 2019
Localisation : Val d'Oise

PrécédentSuivant

Retour vers Téléinformation

Qui est en ligne ?

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