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 .

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 Link to User profile – My Home Assistant 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.

1 « 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 dans Domoticz 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/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.