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.
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.
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
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
<?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>
<?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&dateJour[]=2024-09-10&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(' ');
$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;
?>
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
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
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 !!
&reset=1
&reset=0&timer=1
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
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.
if ($bof!='ND') $infos_['tomorrowColor'] = $bof;
$infos_['tomorrowColor'] = $bof;
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 9 invité(s)