Script Véolia

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
itcitc77
Messages : 73
Inscription : 30 mai 2016, 06:17

Re: Script Véolia

Message 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
Domoticz, CustomPage,
Pi3 RFXCom + Razberry;Z-Stick Gen5
domcars0
Messages : 238
Inscription : 18 févr. 2017, 20:23

Re: Script Véolia

Message 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é.
La liberté a un prix... celui de l'effort.
ericd
Messages : 157
Inscription : 24 janv. 2017, 11:04
Localisation : Toulouse

Re: Script Véolia

Message par ericd »

Etant sous Synology où dois-je mettre tes fichiers d’après toi ?

@+
Ericd
ericd
Messages : 157
Inscription : 24 janv. 2017, 11:04
Localisation : Toulouse

Re: Script Véolia

Message 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 ?
ericd
Messages : 157
Inscription : 24 janv. 2017, 11:04
Localisation : Toulouse

Re: Script Véolia

Message 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
ericd
Messages : 157
Inscription : 24 janv. 2017, 11:04
Localisation : Toulouse

Re: Script Véolia

Message 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
ericd
Messages : 157
Inscription : 24 janv. 2017, 11:04
Localisation : Toulouse

Re: Script Véolia

Message 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
domcars0
Messages : 238
Inscription : 18 févr. 2017, 20:23

Re: Script Véolia

Message 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.
Dernière modification par domcars0 le 20 févr. 2017, 01:22, modifié 3 fois.
La liberté a un prix... celui de l'effort.
domcars0
Messages : 238
Inscription : 18 févr. 2017, 20:23

Re: Script Véolia

Message 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é 9466 fois
En fait il faut même, d'ailleurs, être capable de voir cela (Affichage Tableau) :
VeoliaConso2.png
VeoliaConso2.png (37 Kio) Consulté 9463 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.
La liberté a un prix... celui de l'effort.
ericd
Messages : 157
Inscription : 24 janv. 2017, 11:04
Localisation : Toulouse

Re: Script Véolia

Message 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
Répondre