Page 2 sur 15

Re: Script Véolia

Publié : 19 févr. 2017, 08:50
par itcitc77
et bien moi cela ne fonctionne pas le lien que tu donnes concerne véolia méditerranée, je suis dans le 77 et je n'ai pas le meme site
Les identifiants sont adresser mail/mot de passe .
et le lien
https://www.service-client.veoliaeau.fr ... historique

Re: Script Véolia

Publié : 19 févr. 2017, 11:10
par domcars0
Salut itcitc77,
Effectivement, si chaque région Veolia a son propre site, le script fournit ne fonctionnera que sur Veolia méditerranée. Sans un web service standardisé que pourrait aisement fournir cet opérateur, pas facile de faire un code unique.
Il faut savoir que la méthode utilisée dans mon script (parser une page html) n'est pas fiable à 100%. Le jour ou Veolia Mediterrannée changera le code de son site web, le script ne fonctionnera probablement plus.Il est impossible de faire mieux tant que l'opérateur n'offre pas un webservice normalisé.
Veolia sera probablement contraint un jour, dans le cadre de l'OpenData, d'offrir un tel service, mais pour l'instant il faut se contenter d'une interface web à la Papa pour accéder à ses informations ;o)
Désolé.

Re: Script Véolia

Publié : 19 févr. 2017, 18:50
par ericd
Etant sous Synology où dois-je mettre tes fichiers d’après toi ?

@+
Ericd

Re: Script Véolia

Publié : 19 févr. 2017, 18:56
par ericd
Ne serait-il pas plus simple de faire un fichier .ini ou tu configures les variables au lieu de modifier le fichier water.php ?

Re: Script Véolia

Publié : 19 févr. 2017, 20:32
par ericd
ericd a écrit :Etant sous Synology où dois-je mettre tes fichiers d’après toi ?

@+
Ericd

J'ai trouvé ce chemin sous le syno :

Code : Tout sélectionner

 /volume1/@appstore/domoticz/var/scripts 
@+

Ericd

Re: Script Véolia

Publié : 19 févr. 2017, 22:26
par ericd
En exécutant le script, voici ce que j'ai :

Code : Tout sélectionner

PHP Parse error:  syntax error, unexpected '?' in /volume1/@appstore/domoticz/var/scripts/veolia/simple_html_dom.php on line 1300

A la ligne 1300 j'ai :

Code : Tout sélectionner

$tag = substr($t<?php

Code avant et apres

Code : Tout sélectionner

			// skip attributes in end tag
			if (($pos = strpos($tag, ' '))!==false)
				$tag = substr($t<?php
/**
 * Website: http://sourceforge.net/projects/simplehtmldom/
 * Additional projects that may be used: http://sourceforge.net/projects/debugobject/
 * Acknowledge: Jose Solorzano (https://sourceforge.net/projects/php-html/)
 * Contributions by:
 *	 Yousuke Kumakura (Attribute filters)
 *	 Vadim Voituk (Negative indexes supports of "find" method)
 *	 Antcs (Constructor with automatically load contents either text or file/url)
 *
 * all affected sections have comments starting with "PaperG"
 *
 * Paperg - Added case insensitive testing of the value of the selector.
 * Paperg - Added tag_start for the starting index of tags - NOTE: This works but not accurately.
 *  This tag_start gets counted AFTER \r\n have been crushed out, and after the remove_noice calls so it will not reflect the REAL position of the tag in the source,
 *  it will almost always be smaller by some amount.
 *  We use this to determine how far into the file the tag in question is.  This "percentage will never be accurate as the $dom->size is the "real" number of bytes the dom was created from.
 *  but for most purposes, it's a really good estimation.
 * Paperg - Added the forceTagsClosed to the dom constructor.  Forcing tags closed is great for malformed html, but it CAN lead to parsing errors.
 * Allow the user to tell us how much they trust the html.
 * Paperg add the text and plaintext to the selectors for the find syntax.  plaintext implies text in the innertext of a node.  text implies that the tag is a text node.
 * This allows for us to find tags based on the text they contain.
 * Create find_ancestor_tag to see if a tag is - at any level - inside of another specific tag.
 * Paperg: added parse_charset so that we know about the character set of the source document.
 *  NOTE:  If the user's system has a routine called get_last_retrieve_url_contents_content_type availalbe, we will assume it's returning the content-type header from the
 *  last transfer or curl_exec, and we will parse that and use it in preference to any other method of charset detection.
 *
 * Found infinite loop in the case of broken html in restore_noise.  Rewrote to protect from that.
 * PaperG (John Schlick) Added get_display_size for "IMG" tags.
 *
 * Licensed under The MIT License
 * Redistributions of files must retain the above copyright notice.
 *
 * @author S.C. Chen <me578022@gmail.com>
 * @author John Schlick
 * @author Rus Carroll
 * @version 1.5 ($Rev: 210 $)
 * @package PlaceLocalInclude
 * @subpackage simple_html_dom
 */

/**
 * All of the Defines for the classes below.
 * @author S.C. Chen <me578022@gmail.com>
 */
define('HDOM_TYPE_ELEMENT', 1);
define('HDOM_TYPE_COMMENT', 2);
Une idée ?

Ericd

Re: Script Véolia

Publié : 19 févr. 2017, 23:21
par ericd
erreur de copie du fichier simple_html_dom.php ....

Après avoir récupéré de nouveau le fichier, plus cette erreur, mais une autre

Code : Tout sélectionner

PHP Fatal error:  Call to a member function find() on a non-object in /volume1/@appstore/domoticz/var/scripts/veolia/water.php on line 94

Code : Tout sélectionner

//Yes! DomDocument()!! 
$string = curl_exec($ch);
curl_close($ch);

// Prepare to parse the Dom
$html=str_get_html($string);

$table = $html->find('table[class=responsive]',0);
$last_tr = $table->find('tr',-1);
$liters = $date = null;

// Open domoticz database
$db = new SQLite3($sqlite);
// Transaction
$db->exec("BEGIN IMMEDIATE TRANSACTION");

94 c'est :

Code : Tout sélectionner

$last_tr = $table->find('tr',-1);
Ça avance un petit peu.... :D

Re: Script Véolia

Publié : 20 févr. 2017, 00:48
par domcars0
ericd a écrit :Etant sous Synology où dois-je mettre tes fichiers d’après toi ?

@+
Ericd
Salut,
Tu peux mettre ces fichiers où tu veux puisqu'ils ne sont pas "lus" par domoticz, simplement éxécutés par un crontab ou par l'utillisateur.

Re: Script Véolia

Publié : 20 févr. 2017, 00:54
par domcars0
ericd a écrit :

Code : Tout sélectionner

PHP Fatal error:  Call to a member function find() on a non-object in /volume1/@appstore/domoticz/var/scripts/veolia/water.php on line 94
94 c'est :

Code : Tout sélectionner

$last_tr = $table->find('tr',-1);
Cela signifie que dans la page web (HTML) envoyée par ton site véolia le script n'a pas trouvé la balise <table class='responsive' ... (voir ligne 93 : $table = $html->find('table[class=responsive]',0); ) où $html est le code de la page dans lequel on demande au parser de trouver la balise <table class='responsive' ) ?
Il faudrait regarder si effectivement cette balise est présente dans la source de la page où tu vois tes consos sur le site Veolia ...
Tu es de quelle région?
Pour que le script fonctionne il faut impérativement avoir la même vue Valeo que celle que j'ai montrée dans mon post hier c.à.d :
VeoliaConso.png
VeoliaConso.png (36.25 Kio) Consulté 9474 fois
En fait il faut même, d'ailleurs, être capable de voir cela (Affichage Tableau) :
VeoliaConso2.png
VeoliaConso2.png (37 Kio) Consulté 9471 fois
Sinon le script ne peut pas fonctionner. C'est ce tableau là que le script doit détecter dans la page web, il l'analyse pour en extraire les infos.
Si on ne voit pas cela, il faut analyser le code HTML de la page web et voir dans quel partie on peut extraire les données de consommations journalière et refaire la partie de script qui détecte et analyse cette partie.

Re: Script Véolia

Publié : 20 févr. 2017, 11:28
par ericd
Bonjour,

Je suis sur Toulouse, donc région occitanie.

Ok, du coup je comprend mieux.... car je ne trouve pas cette page sur mon compte....., j'ai juste l'historique de mes factures et de mes relevés...

Donc ça risque de ne pas être possible, dommage....
@+
Ericd