Skip to content

pbranly/ILEO-home-assistant-scraper

Repository files navigation

ILEO Home Assistant Scraper

GitHub Docker Home Assistant

Un scraper Docker pour intégrer automatiquement les données ILEO dans Home Assistant.

Description

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.

Table des matières

Installation

Prérequis

  • Docker et Docker Compose
  • Home Assistant installé et accessible
  • Un compte ILEO actif

Étapes d'installation

  1. Cloner le dépôt
git clone https://github.com/pbranly/ILEO-home-assistant-scraper.git
cd ILEO-home-assistant-scraper
  1. 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
  1. Lancer le conteneur premiere installation:
docker compose up --build

puis:

docker compose up -d

Configuration

Docker Compose

fichier docker-compose.yml :

services:
  ileo-scraper:
    container_name: ileo-scraper
    build: .
    volumes:
      - ./app:/app
    env_file:
      - .env

    environment:
        - TZ=Europe/Paris

Planification automatique

Important : Il est nécessaire de lancer le scraper toutes les 4 heures pour maintenir les données à jour.

Éditez votre crontab :

crontab -e

Ajoutez 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>&1

Note : Adaptez le chemin /home/docker/docker_ileo/ selon l'emplacement de votre installation.

Utilisation

Exemple d'automatisation

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

Exemple de carte Lovelace

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

Dépannage

Le conteneur ne démarre pas

# Vérifier les logs
docker compose logs ileo-scraper

# Vérifier que Docker est en cours d'exécution
systemctl status docker

Les données ne s'affichent pas dans Home Assistant

  1. Vérifiez l'URL de Home Assistant dans le fichier .env
  2. Consultez les logs de Home Assistant

La tâche cron ne s'exécute pas

# 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-scraper

Contribution

Les contributions sont les bienvenues !

  1. Fork le projet
  2. Créez votre branche (git checkout -b feature/amelioration)
  3. Committez vos changements (git commit -m 'Ajout d'une fonctionnalité')
  4. Pushez vers la branche (git push origin feature/amelioration)
  5. Ouvrez une Pull Request

Licence

Ce projet est distribué sous licence libre. Voir le fichier LICENSE pour plus de détails.

Support

Pour toute question ou problème, ouvrez une issue.


Développé pour la communauté Home Assistant

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published