Pour moi c’est une erreur un peu différente :
[2020-07-07 21:49:16][DEBUG] : heure de relève: 21
[2020-07-07 21:49:16][DEBUG] : ### GET CSRF TOKEN ON https://www.stephanoise-eaux.fr/mon-compte-en-ligne/je-me-connecte ###
[2020-07-07 21:49:17][DEBUG] : cURL response : %3C%21doctype+html%3E%0A%3Chtml+lang%3D%22fr%22%3E%0A%3Chead%3E%3Cscript+type%3D%22text%2Fjavascript%22%3E%28window.
[2020-07-07 21:49:18][DEBUG] : cURL errno : 0
[2020-07-07 21:49:18][DEBUG] : downloadToken :
[2020-07-07 21:49:18][DEBUG] : url csv : https://www.stephanoise-eaux.fr/mon-compte-en-ligne/exporter-consommation/day//2020/07
[2020-07-07 21:49:18][DEBUG] : ### GET DATAFILE CSV ###
[2020-07-07 21:49:18][DEBUG] : ### Create File /tmp/veolia_releve_5f04d1beced3a.xls
[2020-07-07 21:49:18][DEBUG] : ### Curl call https://www.stephanoise-eaux.fr/mon-compte-en-ligne/exporter-consommation/day//2020/07
[2020-07-07 21:49:19][DEBUG] : response : 1
[2020-07-07 21:49:19][DEBUG] : error :
[2020-07-07 21:49:19][DEBUG] : response length : 1
[2020-07-07 21:49:19][DEBUG] : cURL errno : 0
[2020-07-07 21:49:19][DEBUG] : alert:
[2020-07-07 21:49:19][DEBUG] : ### TRAITE CONSO XLS 4 ###
[2020-07-07 21:49:19][ERROR] : Erreur sur la fonction cron du plugin : Access to undeclared static property: PHPExcel_Worksheet::$_invalidCharacters
Bonjour,
Je reviens sur ce post, ma tete telerelevé etait HS depuis des mois mais depuis le remplacement, cela remonte bien dans mon espace client chez veolia mais comme vous rien dans jeedom.
Un solution depuis ou un autre plugin ?
Merci.
Bonjour,
Des news concernant ce bug ? j’ai essayé de change mon mot de passe, supprimé completement le plugin et recree un compteur c’est toujours pareil, aucune remonté des infos alors que sur mon compte c’est ok.
doyenc
Novembre 12, 2020, 8:16
36
Bonsoir à tous,
Ayant testé le plugin et celui-ci étant KO, je viens de développer un script Python qui récupére le dernier relevé depuis le site de Veolia :
import requests
from lxml import html
import xlrd
import datetime
import json
# Identifiants
veolia_username = "xxxxx"
veolia_password = "xxxxx"
# Page de login
url = "https://www.service.eau.veolia.fr"
url_page_login = url + "/connexion-espace-client.html"
url_action_login = url + "/home/connexion-espace-client/bloc-connexion-area/connexion-espace-client.loginAction.do"
url_page_histo = url + "/home/espace-client/votre-consommation.html?vueConso=historique"
url_fichier_histo = url + "/home/espace-client/votre-consommation.exportConsommationData.do?vueConso=historique"
# Nouvelle session
session = requests.Session()
# Récupération du token du form de login (hidden indispensable pour la connexion)
home = session.get(url_page_login)
tree = html.fromstring(home.content)
token = (tree.xpath('//input[@name="token"]')[0]).get('value')
# Connexion
data = {
'token': token,
'veolia_username': veolia_username,
'veolia_password': veolia_password
}
page = session.post(url_action_login, data=data)
# Page historique (il faut passer par la page obligatoirement)
page = session.get(url_page_histo)
# Récupération du xls
xls = session.get(url_fichier_histo)
# Sauvegarde du fichier temportaire
open('temp.xls', 'wb').write(xls.content)
# Ouverture du fichier temporaire
wb = xlrd.open_workbook("temp.xls")
sheet = wb.sheet_by_index(0)
# Données du dernier relevé
date = datetime.datetime.strptime('1900-01-01', '%Y-%m-%d') + datetime.timedelta(sheet.cell_value(sheet.nrows - 1, 0) - 2)
date = date.strftime("%d/%m/%Y")
index = sheet.cell_value(sheet.nrows - 1, 1)
conso = sheet.cell_value(sheet.nrows - 1, 2)
releve = sheet.cell_value(sheet.nrows - 1, 3)
# Retour
print(json.dumps({'date': date, 'index': index, 'conso': conso, 'releve': releve}))
Si vous testez, pensez à installer les dépendances via
pip install requests lxml xlrd
Ainsi qu’à mettre vos identifiants. Exemple de retour :
{"date": "11/11/2020", "index": "258421", "conso": "195", "releve": "M"}
Quelqu’un peut me dire comment exploiter le retour dans Jeedom ?
odemg
Novembre 13, 2020, 7:13
37
Bonjour,
Pour ceux qui utilise Veolia IDF vous avez le script python suivant qui fonctionne
Bonjour,
Merci pour ce code, je ne sais pas si c’est propre mais au moins ca fonctionne !
Il a fallut néanmoins que je change dans le script python la ligne 61 en renplacant input-4 par input-3 (changement chez veolia)
idEmail = browser.find_element_by_id('input-4')
Ensuite pour la mise en place, j’utilise un RPI et Jeedom (ce n’est clairement pas propre non plus) :
Sur RPI4
J’ai un script.sh
/home/pi/conso_veolia/get_veolia_idf_consommation.py
/home/pi/conso_veolia/get_veolia_idf_conso…
Cordialement,
doyenc
Novembre 13, 2020, 4:48
38
Bon, après quelques modifications, j’ai maintenant ma consommation Veolia fonctionnelle dans Jeedom grâce au plugin « script ».
Voici le script actualisé :
# -*- coding: latin-1 -*-
import requests
from lxml import html
import xlrd
import datetime
import json
import sys
# Identifiants
veolia_username = "xxxxx"
veolia_password = "xxxxx"
# Page de login
url = "https://www.service.eau.veolia.fr"
url_page_login = url + "/connexion-espace-client.html"
url_action_login = url + "/home/connexion-espace-client/bloc-connexion-area/connexion-espace-client.loginAction.do"
url_page_histo = url + "/home/espace-client/votre-consommation.html?vueConso=historique"
url_fichier_histo = url + "/home/espace-client/votre-consommation.exportConsommationData.do?vueConso=historique"
# Nouvelle session
session = requests.Session()
# Récuperation du token du form de login (hidden indispensable pour la connexion)
home = session.get(url_page_login)
tree = html.fromstring(home.content)
token = (tree.xpath('//input[@name="token"]')[0]).get('value')
# Connexion
data = {
'token': token,
'veolia_username': veolia_username,
'veolia_password': veolia_password
}
page = session.post(url_action_login, data=data)
# Page historique (il faut passer par la page obligatoirement)
page = session.get(url_page_histo)
# Recuperation du xls
xls = session.get(url_fichier_histo)
# Sauvegarde du fichier temportaire
open('temp.xls', 'wb').write(xls.content)
# Ouverture du fichier temporaire
wb = xlrd.open_workbook("temp.xls")
sheet = wb.sheet_by_index(0)
# Donnees du dernier releve
date = datetime.datetime.strptime('1900-01-01', '%Y-%m-%d') + datetime.timedelta(sheet.cell_value(sheet.nrows - 1, 0) - 2)
date = date.strftime("%d/%m/%Y")
index = sheet.cell_value(sheet.nrows - 1, 1)
conso = sheet.cell_value(sheet.nrows - 1, 2)
releve = sheet.cell_value(sheet.nrows - 1, 3)
# Retour Jeedom
if sys.argv[1] == 'index':
print(index)
elif sys.argv[1] == 'conso':
print(conso)
elif sys.argv[1] == 'date':
print(date)
else:
print -1
Le paramétrage effectué sous Jeedom :
et le rendu sur mon Dashboard :
Chez moi la télé-relève est le soir (vers 20h?) donc j’ai entre 1 et deux jours de décalage. Refresh positionné à 21h.
Amusez-vous bien !
Et vive le Python
1 « J'aime »
odemg
Novembre 13, 2020, 7:43
39
Bonjour,
tu est chez veolia d’une autre région que IDF non?
doyenc
Novembre 14, 2020, 2:37
40
Oui en province, mais je pense que tu peux adapter le script avec tes liens
brace
Novembre 19, 2020, 9:06
41
Excellent ça fonctionne pour moi. Merci beaucoup !
1 « J'aime »
secourt
Décembre 17, 2020, 10:39
42
Bonjour,
Je viens d’installer ton script, un grand merci au passage
Mais en créant les commandes j’ai l’erreur suivante :
Erreur sur python /var/www/html/plugins/script/data/veolia.py date 2>&1 valeur retournée : 1. Détails : Traceback (most recent call last): File « /var/www/html/plugins/script/data/veolia.py », line 5, in import xlrd ImportError: No module named xlrd
J’ai du louper un truc !!
Merci d’avance
doyenc
Décembre 19, 2020, 8:28
43
Salut.
Tu as oublié d’installer les dépendances. Connecte toi en ssh sur ton Jeedom et lance :
pip install requests lxml xlrd
Ça devrait le faire ensuite.
Salut,
Merci de ton retour.
J’ai déjà fait pip install requests lxml xlrd, puis comme ça ne fonctionnait pas j’ai fait pip install xlrd et pip3 install xlrd
Quand je refais les commandes ça me dit already satisfied donc ok apparemment !
Mais ça ne fonctionne toujours pas et je suis pas trop bon en commandes ssh …
secourt
Décembre 23, 2020, 10:25
45
Salut,
Au cas ou ça pourrait en aider quelques un comme moi, j’ai refait l’install avec la commande suivante et ça fonctionne .
sudo pip install requests lxml xlrd
Bonjour à tous,
Bon encore un petit soucis, en sauvegardant le scenario en manuel il récupère bien les infos.
Quand je l’exécute en auto j’ai le message suivant et aucune valeurs récupérées:
Erreur pour [Jardin][Véolia][Date relevé] : Erreur sur python /var/www/html/plugins/script/data/veolia.py date 2>&1 valeur retournée : 1. Détails : Traceback (most recent call last): File « /var/www/html/plugins/script/data/veolia.py », line 44, in open(‹ temp.xls ›, ‹ wb ›).write(xls.content) IOError: [Errno 13] Permission denied: 'temp.xls’
ça doit etre un truc tout bête mais je ne connais pas assez, merci d’avance pour votre aide.
Aegis
Janvier 3, 2021, 9:26
47
Hello, je viens de finit un plugin pour les compteurs Téléo, j’ai aussi intégré le script de @doyenc .
Étant en IdF ne n’ai pas pu testé cette partie, si cela vous dit, les infos sont là : Plugin-teleo (pour compteur Veolia)
Ce plugin n’est pas sur la market pour le téléchargement ?
Aegis
Janvier 3, 2021, 11:03
49
Pas pour le moment, il est d’abord en bêta test
Bonjour,
Merci de ton retour, je viens de l’installer, je te fais un retour rapidement.
Cordialement.
Pour pouvoir le testé , peux tu me confirmer la procédure ci dessous.
J’ai télécharger le répertoire comprenant les différents fichiers
J’ai copié les fichiers dans html/plugins/Teleo
Mais je pense que cela ne suffit pas
Flobul
Janvier 3, 2021, 12:54
52
teleo pas Teleo
Sur la page Gestion des plugins, clique sur le +
Puis indique le type de source (au préalable avoir coché GitHub dans les réglages système) :
Puis entrer les infos donnée par Aegis.