Veolia-idf SEDIF - suivi consommation eau potable

Pour récupérér la consommation de l’eau en IDF avec SEDIF, l’intégration « veolia-custom-component » ne fait pas l’affaire avec https://espace-client.vedif.eau.veolia.fr .

EDIT: :warning: Suite à une évolution de Chromium (>110 ou 111), il faut utiliser MetersToHA qui est une évolution de veolia-idf. La configuration est quasiment la même que veolia-idf.

veolia-idf intègre désormais mes modifications rendant le script de base compatible avec HA mais nécessite l’installation « en dehors » de Home Assistant.
Mon dépôt/fork github.com/mdeweerd/veolia-idf ajoute un script AppDaemon et une réorganisation pour faciliter l’installation avec HACS (voir documentation pour installer veolia-idf avec AppDaemon et HACS).

En résumé:

  • Utiliser une des méthodes d’installation de veolia-idf;
  • Lire la documentation (HomeAssistant.md et/ou README.md (toute l’information utile du README.md n’a pas été repris dans le premier doc);
  • Utiliser « config.json.exemple.home-assistant » comme point de départ pour la config.
  • Créer un Jeton de longue durée sur https://my.home-assistant.io/redirect/profile et le définir comme « ha_token ».
  • Possibilité de lancer veolia-idf sous windows grace à Docker.
  • Le script créera « sensor.veolia_N°CONTRAT_meter_total » et « sensor.veolia_N°CONTRAT_meter_period_total » comme entités sous Home Assistant.
  • Vous pourez utiliser les nouveaux « sensor »'s à souhait.

Le fonctionnement de ce script est en résumé le suivant:

  • Emulation d’une session web auprès de Veolia, en utilisant « Selenium » qui nécessite firefox ou chromium;
  • Extraction des données du CSV téléchargé par ce mécanisme;
  • Envoi des données à l’API de l’instance Home Assistant.

Vous pourrez contribuer, par exemple en améliorant la documentation.

Je rappelle que c’est our le SEDIF en IDF, soit le portail https://www.vedif.eau.veolia.fr .
Vous pouvez trouver votre portail en fonction de la ville en visitant https://www.eau.veolia.fr/ > CONNECTEZ-VOUS .

(Sur ce forum vous trouveriez le travail de Pulpy pour www.service.eau.veolia.fr.

3 « J'aime »

J’ai réussi à l’exécuter dans le « Terminal+SSH » AddOn de mon HAOS.

Etapes (dans le terminal):

  1. Récuperer la branche ‹ improvements › mentionné plus haut (en attendant l’intégration);
  2. Positions le terminal dans ce répertoire (ou il y a le requirements.txt
  3. Installer les paquest (à ajouter à la configuration du AddOn à terme ou à AppDaemon);
apk add py-urllib3 py3-colorama xvfb py3-pip xorg-server-xephyr \
        chromium-chromedriver chromium
# For selenium/PyVirtualDisplay
apk add py3-openssl py3-pysocks py3-wsproto py3-sniffio py3-async_generator \
        py3-sortedcontainers py3-attrs py3-outcome py3-trio
python3 -m pip install -r requirements.txt
  1. Ajouter le chemin de ‹ chromium › à la configuration config.json (à créer sous ce répertoire ou à ailleurs avec l’option -c du script):
{
    "veolia_login": "MONLOGIN",
    "veolia_password": "MONPASSE",
    "veolia_contract": "MONCONTRAT",
    "ha_server": "https://MONINSTANCEHA",
    "ha_token": "MONTOKEN",
    "type": "ha",
    "chromium": "/usr/bin/chromium-browser",
    "timeout": "30"
}
  1. Executer ./veolia-idf-domoticz.py -r. A noter que l’option débogue ne fonctionnera pas car il faut avoir un affichage natif (X) pour cela. Pour déboguer: à faire sous un autre système tel que Ubuntu (déboguer = essentiellement mettre au point le config.json que lon peut réutiliser sur HAOS à conditions d’ajotuer ‹ chromium ›)

Dans mon cas, cela a fonctionné (récupéartion des données + MAJ des ‹ sensor ›). ‹ Pyscript › ne semble pas autoriser l’installation des paquets système, mais AppDaemon semble le faire. Ce sera la prochaine étape.

Ce qui montre qu’on peut tout à fait faire du selenium sur HAOS.

1 « J'aime »

Avec AppDaemon il y a « plus » d’étapes, mais bien faisable.

Mais avant, je rappelle que ce script peut être installer hors de Home Assistant. C’est juste que je n’ai pas d’autres machines qui sont tout le temps allumés ou je peux l’installer.

  1. Ajouter le AddON/Module complémentaire « Home Assistant Community Add-on: AppDaemon » selon votre système - sur votre instance HAOS VOTREINSTANCE/hassio/addon/a0d7b954_appdaemon/info , puis « Install »
  2. Pour HAOS (et peut-être d’autres), configurer AppDaemon au moins avec ces paquets (configuration au format yaml pour HAOS):
init_commands: []
python_packages:
  - selenium
  - PyVirtualDisplay
system_packages:
  - py-urllib3
  - py3-colorama
  - xvfb
  - py3-pip
  - xorg-server-xephyr
  - chromium-chromedriver
  - chromium
  - py3-openssl
  - py3-pysocks
  - py3-wsproto
  - py3-sniffio
  - py3-async_generator
  - py3-sortedcontainers
  - py3-attrs
  - py3-outcome
  - py3-trio
  • Activer le Watchdog du AddOn, Démarrer le AddOn

Ajout veolia-idf à AppDaemon

Avec HACS

Suppose que HACS est déjà actif.

  1. Activer AppDaemon
  1. Ajouter GitHub - mdeweerd/veolia-idf: Charge l'historique de votre consommation Veolia Ile de France comme source de type AppDaemon:

Note : après l’ajout le popup reset affiché, mais on trouve le nouveau module à la fin de la liste:

  1. Ensuite « télécharger » ce dépôt avec HACS - chercher veolia_idf parmis les « AppDaemons » et cliquez Télécharger ou Download:

Les scripts sont ainsi disponibles pour AppDaemon.

Manuel

Copiez les fichier veolia-idf-domitics.py et veolia_idf.py vers /config/appdaemon/apps (directement ou dans le répertoire veolia_idf).

Configuration

Reste encore la configuration. Pour le moment il faut un fichier ‹ config.json › comme indiqué plus haut.

Et il faut ajouter une configuration à /config/appdaemon/apps/apps.yaml:

veolia_idf:
  module: veolia_idf
  class: VeoliaIDF
  # optional
  log_folder: /config
  # optional (Default: "config.json" in directory of `veolia-idf-domoticz.py`)
  config_file: /config/veolia-idf/config.json
  # optional (Default: "<REALMODULESCRIPTPATH>/veolia-idf-domoticz.py")
  script: /config/veolia-idf/veolia-idf-domoticz.py

Le minimum étant plutôt ceci:

veolia_idf:
  module: veolia_idf
  class: VeoliaIDF
  config_file: /config/config.json

supposant que le fichier « config.json » se trouver directement dans le répertoire '/config". A adapter selon votre situation et votre gout (perso j’ai appellé le fichier ‹ veolia.json ›).

Pour info, il y a une interface web spécifique à AppDaemon : http://votreinstance:5050 qui donne entre outre accès à qqs traces et l’historique des appels de scripts.

Lancer l’appel à Veolia

L’appel est lancé en déclenchant l’événement « call_veolia ». Cela peut être fait dans une automatisation (ce qui permet de le lancer selon un planning par exemple), ou de façon interactive dans les outils de développement:

Une trace est systématiquement créé comme « veolia.log », soit à l’emplacement du script, soit dans le répertoire donné par log_folder: . Cela peut déjà aider à identifier les causes, ou tout simplement le bon déroulement du script.

Comme par exemple:

2022-06-01 18:31:55,541 : -- :  Parsing csv file
2022-06-01 18:31:55,813 : OK : update value for 2022-05-31
2022-06-01 18:31:56,014 : OK : Close Browser
2022-06-01 18:31:56,018 : OK : Close Display
2022-06-01 18:31:56,019 : -- : Remove downloaded file historique_jours_litres.csv Finished on success

C’est à vous

N’hésitez pas à contribuer avec de la documentation dans le dépôt. On verra bien ou cela mène. Pour le moment la doc du dépôt ne reflète pas du tout la compatibilité avec HA.

Pour réaliser la tache de récupération régulièrement, j’ai ajouté un automatisme à ma configuration comme ceci:

alias: Veolia
description: ''
trigger:
  - platform: time_pattern
    minutes: '7'
condition: []
action:
  - event: call_veolia
    event_data: {}
mode: single

Cela récupère la consommation toutes les heures.
Je modifiérai cela en une fois par jour une fois que j’ai une meilleure vision sur l’heure à laquelle les données sont mises à jour.

Cela tourne depuis qqs jours désormais.

Il semblerait que peu après minuit il y a plusieurs évolutions de données et pour le reste de la journée c’est stable.

La mise à jour était régulier ç partir du 1er juin, avant on voit des évolutions suite à des essais « manuelles » . Le 3 juin on voit aussi 2 évolutions, encore une fois à cause d’un déclenchement manuel après le déclenchement automatique.

Faire une mise à jour vers 1h30 du matin semble donc approprié sachant qu’on n’obiendra pas plus de détails.

Veolia-idf peut remonter des valeur tout à fait inexactes.
Il vaut mieux récuperer les valeur une fois vers 1h du matin:

Les 5400L en 1 jour tel que donné dans une remontée de 11h ne correspondent pas à la réailité:

Les différents messages ci-dessous ont été restructurés comme une dccumentation sur github

Hello

j ai déployé le script via hacf et j ai une erreur dans les logs d’execution

2022-06-10 09:35:11,286 : ~~ : Setup Firefox profile 
2022-06-10 09:35:11,435 : OK : Start virtual display (chromium) 
2022-06-10 09:35:12,589 : OK : Start the browser 
2022-06-10 09:35:16,436 : OK : Connexion au site Veolia Eau Ile de France 
2022-06-10 09:35:17,142 : OK : Waiting for Password 
2022-06-10 09:35:17,236 : OK : Waiting for Email 
2022-06-10 09:35:17,671 : OK : Type Email 
2022-06-10 09:35:17,945 : OK : Type Password 
2022-06-10 09:35:18,051 : OK : Waiting for submit button 
2022-06-10 09:35:18,256 : OK : Click on submit button 
2022-06-10 09:35:25,254 : OK : Wait for MENU contrats or historique 
2022-06-10 09:35:25,830 : OK : Click on menu : CONTRATS 
2022-06-10 09:35:27,561 : OK : Select contract : XXXXXXX
2022-06-10 09:35:27,782 : OK : Click on contract 
2022-06-10 09:35:29,258 : OK : Wait for history menu 
2022-06-10 09:35:32,469 : WW : Click on history menu Encountered errorMessage: element click intercepted: Element <a class="cICL_Tab" data-aura-rendered-by="210:304;a" href="javascript:void(0);" data-aura-class="cICL_Tab">...</a> is not clickable at point (716, 542). Other element would receive the click: <path d="M50 7.692c-25.577 0-45.962 18.846-45.962 42.116 0 7.307 2.116 14.23 5.577 20.384.577.962.77 2.116.385 3.27L4.038 89.808c-.576 1.538.962 2.884 2.5 2.5l16.54-6.346c.96-.385 2.114-.193 3.268.384 6.923 3.846 15.192 6.154 24.04 6.154 25.19-.192 45.768-18.846 45.768-42.308-.192-23.654-20.77-42.5-46.154-42.5zm-23.077 50c-4.23 0-7.692-3.46-7.692-7.692s3.462-7.692 7.693-7.692 7.692 3.46 7.692 7.692-3.46 7.692-7.692 7.692zm23.077 0c-4.23 0-7.692-3.46-7.692-7.692s3.46-7.692 7.692-7.692 7.692 3.46 7.692 7.692-3.46 7.692-7.692 7.692zm23.077 0c-4.23 0-7.692-3.46-7.692-7.692s3.46-7.692 7.692-7.692S80.77 45.768 80.77 50s-3.462 7.692-7.693 7.692z"></path>
  (Session info: headless chrome=102.0.5005.61)// -> Retrying once
2022-06-10 09:35:34,498 : OK : Connexion au site Veolia Eau Ile de France 
2022-06-10 09:36:34,888 : EE : Waiting for Password Message: failed, page timeout (timeout=60)
2022-06-10 09:36:34,970 : OK : Close Browser 
2022-06-10 09:36:34,972 : OK : Close Display 
2022-06-10 09:36:34,973 : OK :  
2022-06-10 09:36:34,973 : EE :  Ended with error : // re-run the program with '--debug' option

il semble que le bouton history ne réponde pas comme attendu, une idée ?

J’ai également eu un problème avec History et l’ajout du délai de 2s avait aidé pour moi : veolia-idf/apps/veolia_idf/veolia-idf-domoticz.py at ha-app · mdeweerd/veolia-idf · GitHub .

Je suppose que la mise en page varie encore au-delà des 2 secondes et qu’il faut soit attendre plus longtemps, soit recalculer la valeur pour ‹ el › après les 2 secondes.
De mon côté le script ne bloque pas sur ce point.

@Paul_Gueguen

J’ai apporté des modifications au script qui peuvent améliorer le comportement.
De mon côté j’ai résolu qqs problématiques avec l’option ‹ –debug › sous Windows avec un serveur X et Docker.

Cela et d’autres modifications peuvent donc avoir un effet positif pour le problème rencontré.

Hello

Je viens de tester c est ok maintenant.

Merci beaucoup

Merci pour le retour, cela fait plaisir de le savoir.

Bonjour le_top.

Je suis vraiment intéressé par votre dépôt Veoli IDF mais je voulais savoir si l’installation de celui-ci était censé marcher sur un HAOS base Raspberry PI.
Je l’ai tenté et je rencontre quelque soucis du genre:
Error: failed to import python required module : No module named ‹ colorama ›

Merci d’avance

Si vous avez HAOS, le plus simple est faire cela avec AppDaemon, c’est ce que j’ai mis en place.

Les instructions sont ici: veolia-idf/.github at ha-app · mdeweerd/veolia-idf · GitHub .

Ce n’est pas conçu pour être lancé dans l’interface du shell ni avec pyscript pour plusieurs raisons.

J’espère que c’est plus clair comme cela!

En effet c’était bien une mauvaise configuration de APPDeamon

Merci beaucoup.

Ca marche

Pour info, je viens de mettre à jour ce composant afin de ne pas utiliser les consommations estimés.

Ce jour, l’estimation de veolia pour mon compteur était inférieure à la dernière mesure réelle ce qui donnait une consommation négative.

Bonjour le_top,

J’ai un souci lorsque je lance le call_veolia j’ai une erreur dans le log veolia.log:
8080/api/ - (code = 401) content=b’401: Unauthorized’

une erreur 401 qui empêche la connexion vers le routeur.
voici la ligne du log homeassistant.log:
https://homeassistant********.duckdns.org:8080/api/ - (code = 401)
content=b’401: Unauthorized’)

et une notif dans HA apparaît :
Capture d’écran du 2022-12-07 18-53-45

Une idée d’ou pourrait venir le souci?
Merci

@mulroux95

Je suppose que le token pour accéder à l’API de home assistant nest pas ou mal défini.
Le fait qu’il y a un « login attempt failed » démontre que le script a bien tenté de se connecter.

Je fais donc référence à l’exemple complet:

ou encore, la documentation:

Dans la trace, « OK : Check Home Assistant connectivity » est l’indicateur avant que le script ne vérifie si la connexion à l’API est possible. Je supose que l’erreur arrive là.

Par ailleurs, je viens d’essayer avec une configuration JSON comme ceci ou j’ai utilise l’url interne et non l’url externe (étant sous appdaemon) ce qui fonctionne aussi bien que l’url externe dans cet essai.
Toutefois, je crois que quand j’avais mis la solution en place, l’URL interne ne fonctionnait pas:

{
    "veolia_login": "XXXX",
    "veolia_password": "XXXX",
    "veolia_contract": "XXX",
    "ha_server": "http://homeassistant.local:8123",
    "ha_token": "eyJ0eXA.......",
    "type": "ha",
    "chromium": "/usr/bin/chromium-browser",
    "timeout": "30"
}

Je viens d’y ajouter une information comment obtenir ce token, en bas de son profil Home Assistant.

Salut,
Je ne pense pas au token car pour moi cela a l’air ok. Par contre lorsque je met l’ip local de HA dans le config.json j’ai une erreur SSL visiblement:

et lorisque je met l’adresse https://homeassistant.local:8123 dans le config.json j’ai un autre message "No connection adapters were found for ‹ homeassistant.local:8123/api/ ›
2022-12-08 06:22:20,256 : OK : Close Browser ":


Merci pour votre soutien et assistance.