Plugin Tiers Eco-2-watt

Bonjour,

Le plugin Eco-2-watt semble ne plus fonctionner.
Je suis intéressé pour le mode EJP.
J’ai vu qu’il y avait un correctif pour le mode Tempo mais rien pour EJP.
Je suis version 3.3.33.
L’hiver arrive bientôt …
Salutations

Jean-Paul

Bonjour à tous! :slightly_smiling_face::slightly_smiling_face:
Je suis bien intéressé aussi !
Merci d’avance
Gilles
:slightly_smiling_face::slightly_smiling_face:

Bonjour,

Pour infos : 2 réponses de Loic (sur l’ancien forum).

1- loic a écrit :

Hier, 19:03

Bonjour,
Malheureusement ce plugin n’est plus maintenu du au changement incessant d’EDF sur le site qui sert de source. Desole

2- loic a écrit :

Je comprends mais rien n’est prévu, j’ai maintenu le plugin pendant pas mal de temps mais le site EDF changeant tous les 2 mois ça obligé a réécrire le code de récupération tous les 2 mois… C’est pas gérable

Merci de ta réponse claire (je comprends).
Je vais me mettre en chasse pour régler ce Problème d’info EJP très important pour moi.
Salutations

Jean-Paul

Bonjour @TontonGilou ,

Va voir sur l’ancien forum il y a des infos de dernière minutes(ils répondent sur l’ancien forum).
https://www.jeedom.com/forum/viewtopic.php?f=149&t=10543&hilit=Eco+2+watt&start=160
Salutations

Jean-Paul

J’ai teste la solution proposee sur l’ancien forum. Celle-ci fonctionne tres bien sur ma Ubuntu 18.10 LTS et en faisant un curl j’otiens les messages suivants :

curl   -A "'Version/11.0 Mobile/15A372 Safari/604.1" -v  -s "https://particulier.edf.fr/bin/edf_rc/servlets/ejptemponew?Date_a_remonter=2019-10-31&TypeAlerte=EJP"
*   Trying 104.69.98.201...
* TCP_NODELAY set
* Connected to particulier.edf.fr (104.69.98.201) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: jurisdictionC=FR; jurisdictionST=Paris; jurisdictionL=Paris; businessCategory=Business Entity; serialNumber=552 081 317 R.C.S. Paris; C=FR; ST=Paris; L=PARIS; O=ELECTRICITE DE FRANCE; CN=particulier.edf.fr
*  start date: Feb 19 14:17:27 2019 GMT
*  expire date: Feb 19 14:27:00 2020 GMT
*  subjectAltName: host "particulier.edf.fr" matched cert's "particulier.edf.fr"
*  issuer: C=BM; O=QuoVadis Limited; CN=QuoVadis EV SSL ICA G3
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x5583d0c35580)
> GET /bin/edf_rc/servlets/ejptemponew?Date_a_remonter=2019-10-31&TypeAlerte=EJP HTTP/2
> Host: particulier.edf.fr
> User-Agent: 'Version/11.0 Mobile/15A372 Safari/604.1
> Accept: */*
> 
* Connection state changed (MAX_CONCURRENT_STREAMS updated)!
< HTTP/2 200 
< x-content-type-options: nosniff
< x-frame-options: SAMEORIGIN
< x-xss-protection: 1; mode=block
< content-type: application/json
< cache-control: private
< date: Sat, 02 Nov 2019 22:02:12 GMT
< content-length: 162
< set-cookie: NSX-SSL-SRC-PROD=srv-Y5EZCc0tzTdPVVNNOtJRgQ|Xb384; path=/
< set-cookie: ak_bmsc=512C91D22CD3B2A0B56CAFF6BD9C0EF9021128570B350000E4FCBD5D1802DE32~plMSS6PG87CjoxwGYVa1qiJ8PsDHi6nwN0IeBW+IbeW3IddlpdaOOKJIJZVNxLjtHrRfbB9wpsZwn8AVD04UgyWYkNjDy4nWKKLgV2PsO5kqelhuusZ/ZReVdLRIK+Lm0ffgAyghpqXOHyNT9WAYoqHpyPq/cB5VmRbOhfef2SjyOmnqMrEfilg2Uqve4VunyiNZSCyp/jbQQ4yL2VHUowVfBonP2XdDC78wEQArhnL+PXgJIINoxNqyqM2o4wgMT0; expires=Sun, 03 Nov 2019 00:02:12 GMT; max-age=7200; path=/; domain=.particulier.edf.fr; HttpOnly
< server-timing: cdn-cache; desc=MISS
< server-timing: edge; dur=7
< server-timing: origin; dur=108
< strict-transport-security: max-age=15768000
< 
* Connection #0 to host particulier.edf.fr left intact
{"JourJ1":{"EjpNord":"NON_EJP","EjpOuest":"NON_EJP","EjpPaca":"NON_EJP","EjpSud":"NON_EJP"},"JourJ":{"EjpNord":"ND","EjpOuest":"ND","EjpPaca":"ND","EjpSud":"ND"}}

Sur mon RPI3 ou est installe Jeedom sur une Debian JEssie, deux problemes surviennent :

  • le premier est un probleme de DNS ou l’ip du domaine est inconnue. Je ne voulais pas perdre de temps et j’ai mis a jour le fichier /etc/hosts afin de resoudre rapidement le probleme.
  • le second est que le script bloque et produit les messages suivants :
curl  -A "'Version/11.0 Mobile/15A372 Safari/604.1" -v  -s "https://particulier.edf.fr/bin/edf_rc/servlets/ejptemponew?Date_a_remonter=2019-10-31&TypeAlerte=EJP" 
* Hostname was NOT found in DNS cache
*   Trying 104.69.98.201...
* Connected to particulier.edf.fr (104.69.98.201) port 443 (#0)
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs/
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* Server certificate:
* 	 subject: 1.3.6.1.4.1.311.60.2.1.3=FR; 1.3.6.1.4.1.311.60.2.1.2=Paris; 1.3.6.1.4.1.311.60.2.1.1=Paris; businessCategory=Business Entity; serialNumber=552 081 317 R.C.S. Paris; C=FR; ST=Paris; L=PARIS; O=ELECTRICITE DE FRANCE; CN=particulier.edf.fr
* 	 start date: 2019-02-19 14:17:27 GMT
* 	 expire date: 2020-02-19 14:27:00 GMT
* 	 issuer: C=BM; O=QuoVadis Limited; CN=QuoVadis EV SSL ICA G3
* 	 SSL certificate verify ok.
> GET /bin/edf_rc/servlets/ejptemponew?Date_a_remonter=2019-10-31&TypeAlerte=EJP HTTP/1.1
> User-Agent: 'Version/11.0 Mobile/15A372 Safari/604.1
> Host: particulier.edf.fr
> Accept: */*

Quid du HTTP2 ?
Est-ce un protocole necessaire ?
CAFile : None ? j’ai pourtant un certificat.

Bref si quequ’un peut m’aider ou tester sur des versions plus recentes de Debian, ce serait cool pour comprendre.

Merci d’avance

1 « J'aime »

Avant toute chose je te conseille de résoudre ton problème de DNS, c’est peut-être de là que vient ton problème, ou alors ça cache peut-être un autre problème au niveau de ta configuration réseau.

Sinon je viens de faire l’essai sur une debian stretch, et l’API EDF me répond peut importe que j’utilise HTTP1.1 ou HTTP2 donc ton problème ne vient pas de là.

Cool merci pour le test.
Tu pourrais juste me renvoyer le resultat de curl --version s’il te plait.
J’aimerais connaitre avec quelles librairies a ete compile ton libcurl ?

Pour le DNS, c’est resolu puisque j’ai modifie le /etc/hosts. Le probleme se trouve plutot dans le protocole je pense.

Le WE prochain j’aurais le temps pour upgrader ma Raspbian.

Encore merci

En éditant ton fichier host, tu ne résous pas le problème, je dirais plutôt que tu le contournes. Je pense qu’il faudrait d’abord que tu trouves pourquoi la résolution DNS ne fonctionne pas sur ta config.
Voici les infos sur ma version de curl et les libs utilisées :

curl 7.52.1 (x86_64-pc-linux-gnu) libcurl/7.52.1 OpenSSL/1.0.2t zlib/1.2.8 libidn2/0.16 libpsl/0.17.0 (+libidn2/0.16) libssh2/1.7.0 nghttp2/1.18.1 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL

En espérant que cela puisse t’aider.

1 « J'aime »

Merci jpp38, pour finir, j’ai abandonné le plugin eco2watt au profit du scénario:

[https://www.jeedom.com/forum/viewtopic.php?f=149&t=10543&hilit=Eco+2+watt&start=120#p726451]
et ça fonctionne très bien.
Juste que le résultat de variable a changé récemment. « BLEU » est devenu « TEMPO_BLEU »
il suffit de s’adapter ensuite.
Amicalement
Gilles

pas étonné de la part d’edf"… ils le font exprès pour que l’on quitte « tempo »…
comme ils ont « oublié volontairement » le linky tempo, tout s’explique !!
mais on a un contrat…

Salut a tous,
pour ma part j’ai resolu le probleme en combinant eco2watt et la solution proposee dans le forum :
Il suffit d’editer la fonction valueFromUrl du fichier

/var/www/html/plugins/ecowatt/core/class/ecowatt.class.php

avec ce qui suit :

public static function valueFromUrl($_url) {

                $InitPage = curl_init();
                curl_setopt($InitPage, CURLOPT_URL, $_url);
                curl_setopt($InitPage, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt($InitPage, CURLOPT_USERAGENT, 'Le site de Jeedom (www.jeedom.com)');
                $dataUrl = curl_exec ($InitPage);
                curl_close($InitPage);
                return json_decode($dataUrl, true);\
        }

Le fichier du nombre de jours restants n’est pas a jour pour EJP.
Esperons qu’il le devienne lors du premier jour EJP !!!

Bonjour,
Pour ceux qui ont des soucis avec EJP (Nombre de jours restants ne se met pas à jour).
Dans le fichier ecowatt.class.php qui se trouve sous plugins/ecowatt/core/class, remplacer à la ligne 196, $this->fillValue(‹ totalDays ›, $region . ‹ ::Total ›, $ejptotaldays, -1); par $this->fillValue(‹ totalDays ›, $region . ‹ ::TotalCurrentPeriod ›, $ejptotaldays, -1);
Remplacement de Total par TotalCurrentPeriod. Attention aux majuscules.
En espérant que çà réglera votre problème.

slt , as tu aussi un pb avec le jour du lendemain ?? car le décompte des jours restants ça c’est ok mais je n’ai pas les jours en cours et lendemain

Bonjour,
je rebondis là dessus meme si c’est vieux…
cela marche un peu aléatoirement sur le site… mais bon! ça le fait.
par contre j’ai aussoi modifié le fichier core/template/dashboard/ecowatt_tempo.html et rajouter « TEMPO_ » devant les BLEU BLANC ou ROUGE pour retrouver les couleurs dans le dashboard.
Cdlt.

Salut @flamout desole je n’avais pas vu ton message. En effet je ne suis pas concerne par Tempo et donc je ne peux pas tester si je modifie cette partie (je me l’a suis joue perso, desole).

Cela fait plus d’un an maintenant que l’API est stable et donc je pense que l’equipe de Jeedom pourrait integrer nos modifications et remettre au gout du jour ce plugin indispensable.

@+

bonjour,
ok,
pour inof depuis cela fonctionne très bien.
mes fichiers ecowatt.class et desktop modifiés sont dispos si vous voulez,
@+

Bonjour,

Je suis preneur stp je n’arrive a rien :confused:

Bonjour ,
j’essaie en MP,
sinon, voici
dans ecowatt.class.php, remplacer la fonction comme dit dans la reponse de micromad,

public static function valueFromUrl($_url) {

            $InitPage = curl_init();
            curl_setopt($InitPage, CURLOPT_URL, $_url);
            curl_setopt($InitPage, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($InitPage, CURLOPT_USERAGENT, 'Le site de Jeedom (www.jeedom.com)');
            $dataUrl = curl_exec ($InitPage);
            curl_close($InitPage);
            return json_decode($dataUrl, true);
    }

et dans le fichier /plugins/ecowatt/core/template/dashboard/ecowatt_tempo.html les ligns 27 a 45 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>

le plugin ne reussit pas a tout les coups au début, je ne sais pas pourquoi. mais depuis au moins 6 mois cela fonctionne chez moi.
cdlt

Bon courage

1 « J'aime »

Bonjour
Je viens d’installer le plugin Eco 2 Watt et je tenais à remercier les contributions de micromad et flamout sans qui je n’aurai jamais réussi à le faire fonctionner.

Merci pour ces modifications et indications.

Il y a quelques semaines, je l’avais installé sur une machine VM, cela fonctionne à merveille.

Je viens de tenter de l’installer sur un Raspberry Pi4, lors de la création d’un équipement, j’obtiens un 500 :Internal Server error.
Je suis en version 4.214.

Sur la machine VM, même version, je ne peux pas plus enregistrer de nouveaux équipements.

Le problème semble venir de la méthode devenue obsolète seteventonly() :

0000|[Sat Mar 05 17:53:57.582958 2022] [php7:error] [pid 1048] [client xxx.xxx.xxx.xxx:yyyyy] PHP Fatal error:  Uncaught Error: Call to undefined method ecowattCmd::setEventOnly() in /var/www/html/plugins/ecowatt/core/class/ecowatt.class.php:146
0001|Stack trace:
0002|#0 /var/www/html/core/class/DB.class.php(232): ecowatt->postSave()
0003|#1 /var/www/html/core/class/eqLogic.class.php(1002): DB::save(Object(ecowatt), false)
0004|#2 /var/www/html/core/ajax/eqLogic.ajax.php(488): eqLogic->save()
0005|#3 {main}
0006|thrown in /var/www/html/plugins/ecowatt/core/class/ecowatt.class.php on line 146, referer: http://xxx.xxx.xxx.xxx/index.php?v=d&m=ecowatt&p=ecowatt&id=8

Bien sûr, la seule suppression de cet appel ne suffit, car il faut relancer une fois reçu le retour de la demande au site EdF. Mais là, je ne sais pas faire :thinking:

Sais-tu ce qu’il y aurait à faire pour rétablir le service de ce plugin, qui me semble le seul à pouvoir donner les informations Tempo ?

Avec mes remerciements.