[PLUGIN Officiel] DomoGeek - Pas de remontée des infos EDF Tempo

Salut à tous , je ne sais pas si certains ont réussi à modifier domogeek ou alors à récupérer les jour tempo ou epj mais j’ai un début de solution que je vais tester.
Voila ce que donne ce lien https://particulier.edf.fr/bin/edf_rc/servlets/ejptemponew?Date_a_remonter=2020-12-13&TypeAlerte=TEMPO

{"JourJ1":{"Tempo":"TEMPO_BLEU"},"JourJ":{"Tempo":"TEMPO_BLEU"}}

il est possible maintenant d’exploiter ses données
je tente un petit script mais je sèche comment récupérer l’info

car j’arrive à récupérer dans un fichier le contenu json qui se met dans html/core/ajax avec

#!/bin/bash
DATEJOUR=$(date +%Y-%m-%d)
adresse= "https://particulier.edf.fr/bin/edf_rc/servlets/ejptemponew?Date_a_remonter="
finadresse="&TypeAlerte=TEMPO"
adresse=${adresse}${DATEJOUR}${finadresse}
wget -O site.txt $adresse

par contre si on teste le fichier on a une info le popup m’affiche ça mais le fichier site.txt avec le json est bien généré

Résultat de la commande : --2020-12-14 14:01:57-- https://particulier.edf.fr/bin/edf_rc/servlets/ejptemponew?Date_a_remonter=2020-12-14&TypeAlerte=TEMPO Resolving particulier.edf.fr (particulier.edf.fr)... 23.54.137.85 Connecting to particulier.edf.fr (particulier.edf.fr)|23.54.137.85|:443... connected. HTTP request sent, awaiting response... 200 OK Syntax error in Set-Cookie: akacd_particulier_edf_fr=3785407317~rv=46~id=4b1564c570a16d78e1c323dadf658b3d; path=/;; Secure; SameSite=None at position 86. Length: 65 [application/json] Saving to: 'site.txt' 0K 100% 26.5M=0s 2020-12-14 14:01:58 (26.5 MB/s) - 'site.txt' saved [65/65]

mais quand dans un bloc code je fais

$DATEJOUR=date("Y-m-d");
$site = "https://particulier.edf.fr/bin/edf_rc/servlets/ejptemponew?Date_a_remonter=";
$finadresse = "&TypeAlerte=TEMPO";
$adresse = "$site$DATEJOUR$finadresse";
$scenario->setdata("adresse_site",$adresse);
$json = file_get_contents($adresse);
/*$scenario->setdata("json_site",$json);

là je n’ai rien dans ma variable json_site et le scénario mouline assez longtemps ( presque 1mn)
quelqu’un a une idée ?

Je précise aussi que celà fonctionne avec EPJ , dans l’adresse remplacer TEMPO par EPJ ce qui vous donnera

{"JourJ1":{"EjpNord":"NON_EJP","EjpOuest":"NON_EJP","EjpPaca":"NON_EJP","EjpSud":"NON_EJP"},"JourJ":{"EjpNord":"NON_EJP","EjpOuest":"NON_EJP","EjpPaca":"NON_EJP","EjpSud":"NON_EJP"}}```

Bon en attendant j’ai une solution de secours pour ceux que ça intéresse.
faire 1 scripts avec 2 commandes (aujourd’hui et demain) actualisation tous les jours à 3h et 21h ( 00 3,21 * * *)
type de script html info autre
Requete

#block-tempo > div.main.row.row--center.list-card.list-card--stretch > div:nth-child(1) > div > div.card--ejp__status > p

et url EDF Tempo : couleur du jour et lendemain, avis et tarifs 2022
et pour la commande demain même url etc mais en requête

#block-tempo > div.main.row.row--center.list-card.list-card--stretch > div:nth-child(2) > div > div.card--ejp__status > p
ce qui donne
![script tempo|590x183](upload://wAPicpuNDS1LWR2UXVGFvQxZrDQ.png)

Bon y’a encore mieux chui un boulet , j’avais le plugin eco2watt qui lui remonte bien le Tempo et EPJ , y’a juste un truc à modifier dans le fichier html/plugins/ecowatt/core/template/dashboard/ecowatt_tempo
dans la partie script remplacer

<script>
                if("#today#" == "BLEU"){
			$('.eqLogic[data-eqLogic_id=#id#] .today').css('color','#3498db');
		}else if("#today#" == "BLANC"){
			$('.eqLogic[data-eqLogic_id=#id#] .today').css('color','#ecf0f1');
		}else if("#today#" == "ROUGE"){
			$('.eqLogic[data-eqLogic_id=#id#] .today').css('color','#e74c3c');
		}
		if("#tomorrow#" == "BLEU"){
			$('.eqLogic[data-eqLogic_id=#id#] .tomorrow').css('color','#3498db');
		}else if("#tomorrow#" == "BLANC"){
			$('.eqLogic[data-eqLogic_id=#id#] .tomorrow').css('color','#ecf0f1');
		}else if("#tomorrow#" == "ROUGE"){
			$('.eqLogic[data-eqLogic_id=#id#] .tomorrow').css('color','#e74c3c');
		}
		$('.eqLogic[data-eqLogic_uid=#uid#] .refresh').on('click', function () {
    	jeedom.cmd.execute({id: '#refresh_id#'});
  		});
</script>

par

<script>
		if("#today#" == "TEMPO_BLEU"){
			$('.eqLogic[data-eqLogic_id=#id#] .today').css('color','#3498db');
		}else if("#today#" == "TEMPO_BLANC"){
			$('.eqLogic[data-eqLogic_id=#id#] .today').css('color','#ecf0f1');
		}else if("#today#" == "TEMPO_ROUGE"){
			$('.eqLogic[data-eqLogic_id=#id#] .today').css('color','#e74c3c');
		}
		if("#tomorrow#" == "TEMPO_BLEU"){
			$('.eqLogic[data-eqLogic_id=#id#] .tomorrow').css('color','#3498db');
		}else if("#tomorrow#" == "TEMPO_BLANC"){
			$('.eqLogic[data-eqLogic_id=#id#] .tomorrow').css('color','#ecf0f1');
		}else if("#tomorrow#" == "TEMPO_ROUGE"){
			$('.eqLogic[data-eqLogic_id=#id#] .tomorrow').css('color','#e74c3c');
		}
		$('.eqLogic[data-eqLogic_uid=#uid#] .refresh').on('click', function () {
    	jeedom.cmd.execute({id: '#refresh_id#'});
  		});
	</script>

la partie tempo devrait refonctionner avec les couleurs.
je n’utilise pas l’epj mais je pense que c’est ok pour cette partie

Swatmorpheus

t’es sûr que ca marche chez toi?
car j’ai fait la modif comme tu l’as indiqué et ca donne rien de mieux?
merci

Swatmorpheus
en fait j’ai trouvé pour que ta modif fonctionne il faut aussi modifier le fichier ecowatt.class.php

Update sur la récupération des informations EJP et Tempo depuis les servlets de EDF.
En utilisant la fonction file_get_contents, effectivement le site mouline (il doit y avoir un équipement réseau côté EDF qui bloque l’accès au service si le client n’est pas connu).

Par contre en utilisant curl_init tout fonctionne sans aucun pb.

Je suis en EJP, il faudra donc adapter le bout de script pour ceux qui sont en TEMPO, mon bloc de code donne ça :

$dateFormat = date('Y-m-d');
$url = "https://particulier.edf.fr/bin/edf_rc/servlets/ejptemponew?Date_a_remonter=$dateFormat&TypeAlerte=EJP";

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);

$ejp = json_decode($data, true);

$scenario->setData("Aujourdhui_EJP", $ejp['JourJ']['EjpSud']);
$scenario->setData("Demain_EJP", $ejp['JourJ1']['EjpSud']);