Un scraper Docker pour intégrer automatiquement les données ILEO dans Home Assistant.
Ce projet permet de récupérer automatiquement les informations de votre compte ILEO et de les rendre disponibles dans Home Assistant pour afficher l'historique des consommations d'eau.
- Docker et Docker Compose
- Home Assistant installé et accessible
- Un compte ILEO actif
- Cloner le dépôt
git clone https://github.com/pbranly/ILEO-home-assistant-scraper.git
cd ILEO-home-assistant-scraper- Configurer les variables d'environnement
Modifiez le fichier .env à la racine du projet :
# --- Identifiants site web mel-ileo ---
LOGIN=ton_email@example.com
PASSWORD="ton_mot_de_passe"
# --- Configuration MQTT ---
MQTT_HOST=192.168.x.yy
MQTT_PORT=1883
MQTT_TOPIC_BASE=eau/consommation
MQTT_RETAIN=true
# ➕ Identifiants MQTT
MQTT_USERNAME=mon_user
MQTT_PASSWORD=mon_pass
# --- Optionnel : forcer une date de départ
# FORCE_START_DATE=2025-05-01
FORCE_RESET_CACHE=false- Lancer le conteneur premiere installation:
docker compose up --buildpuis:
docker compose up -dfichier docker-compose.yml :
services:
ileo-scraper:
container_name: ileo-scraper
build: .
volumes:
- ./app:/app
env_file:
- .env
environment:
- TZ=Europe/ParisImportant : Il est nécessaire de lancer le scraper toutes les 4 heures pour maintenir les données à jour.
Éditez votre crontab :
crontab -eAjoutez cette ligne pour exécuter le scraper 6 fois par jour (00h, 04h, 08h, 12h, 16h, 20h) :
0 0,4,8,12,16,20 * * * docker compose -f /home/docker/docker_ileo/docker-compose.yml run --rm ileo-scraper python /app/main.py >> /var/log/ileo.log 2>&1Note : Adaptez le chemin
/home/docker/docker_ileo/selon l'emplacement de votre installation.
alias: Importer données eau (30 derniers relevés)
description: |
Met à jour l’index de consommation d’eau pour les 30 dernières mesures reçues.
triggers:
- topic: eau/consommation
trigger: mqtt
actions:
- alias: Enregistrer les index reçus
action: recorder.import_statistics
data:
statistic_id: sensor.index_eau
unit_of_measurement: L
has_mean: false
has_sum: true
source: recorder
stats: >
{% set liste = trigger.payload_json.releves[:30] %} [ {% for item in
liste %}
{
"start": "{{ as_datetime(item.date)
.replace(hour=0, minute=0, second=0, microsecond=0)
.astimezone().isoformat() }}",
"sum": {{ item.index | int }}
}{{ "," if not loop.last else "" }}
{% endfor %} ]
- alias: Mettre à jour le helper dernier_index_eau
target:
entity_id: input_number.dernier_index_eau
data:
value: "{{ trigger.payload_json.releves[-1].index | float }}"
action: input_number.set_value
mode: single
type: vertical-stack
cards:
- type: picture-elements
image: /local/image/compteur_eau.jpg
title: Compteur Eau
elements:
- type: state-label
entity: input_number.dernier_index_eau
style:
left: 52%
top: 35%
color: black
font-size: 190%
- type: vertical-stack
cards:
- type: markdown
content: >
### Consommation d' eau du {{
states('sensor.date_consommation_eau_jour') }}
- type: horizontal-stack
cards:
- type: gauge
entity: sensor.consommation_eau_jour
name: Consommation jour
needle: true
min: 0
max: 1000
unit: L
severity:
green: 0
yellow: 200
red: 500
- type: entities
entities:
- type: custom:template-entity-row
name: Coût estimé
icon: mdi:cash
state: >
{% set litres = states('sensor.consommation_eau_jour') | float(0)
%} {% set euros = (litres / 1000 * 4.4152) %} {{ euros | round(2)
}} €
- type: statistics-graph
title: Consommation Eau - 14 jours glissants
chart_type: bar
period: day
entities:
- sensor.index_eau
stat_types:
- change
days_to_show: 14
hide_legend: false
# Vérifier les logs
docker compose logs ileo-scraper
# Vérifier que Docker est en cours d'exécution
systemctl status docker- Vérifiez l'URL de Home Assistant dans le fichier
.env - Consultez les logs de Home Assistant
# Vérifier les logs cron
grep CRON /var/log/syslog
# Lister les tâches cron actives
crontab -l
# Tester l'exécution manuelle
docker compose -f /chemin/vers/docker-compose.yml run --rm ileo-scraperLes contributions sont les bienvenues !
- Fork le projet
- Créez votre branche (
git checkout -b feature/amelioration) - Committez vos changements (
git commit -m 'Ajout d'une fonctionnalité') - Pushez vers la branche (
git push origin feature/amelioration) - Ouvrez une Pull Request
Ce projet est distribué sous licence libre. Voir le fichier LICENSE pour plus de détails.
Pour toute question ou problème, ouvrez une issue.
Développé pour la communauté Home Assistant