Skip to content

🔄 Robust Python parser for converting Renewgy Excel files to standardized CSV format with data validation, date filtering, and batch processing capabilities

License

Notifications You must be signed in to change notification settings

BricePetit/RenewgyParser

Repository files navigation

Renewgy Excel to CSV Parser

Python License Status Docker macOS Linux Windows

Un parser ultra-robuste et intelligent pour convertir les fichiers Excel de Renewgy en format CSV standardisé. Solution enterprise avec détection automatique avancée, gestion complÚte des EAN bi-horaires et interface moderne conçue pour l'efficacité, la simplicité d'utilisation et l'intégration transparente dans des workflows de traitement de données.

✹ CaractĂ©ristiques principales

  • 🧠 Intelligence automatique : DĂ©tection dynamique des colonnes, structure et format des fichiers Excel
  • ⚡ Gestion EAN bi-horaires : Support automatique des tarifs peak/off-peak avec gĂ©nĂ©ration de fichiers sĂ©parĂ©s
  • 🎯 SĂ©lection du type de puissance : Choix entre consommation active, inductive ou capacitive
  • 📝 Noms de fichiers intelligents : GĂ©nĂ©ration automatique avec suffixes (_active, _inductive, _capacitive, _peak, _offpeak)
  • 🔄 Workflow universel simplifiĂ© : Dossiers d'entrĂ©e et de sortie fixes (excel_files/ → csv_files/)
  • 🌐 CompatibilitĂ© multiplateforme : Fonctionne sur macOS, Linux et Windows
  • 🚀 Launchers intelligents : Automatisation complĂšte de l'installation et du dĂ©ploiement
  • đŸ’» Interface web moderne : Design ergonomique avec feedback en temps rĂ©el
  • 📩 Traitement par lots intelligent : Personnalisation individuelle par fichier (nom, date, feuille, type de puissance)
  • 🔧 Double mode d'utilisation : Interface web conviviale ou CLI pour l'automatisation
  • ⚙ Configuration zĂ©ro : Workflow entiĂšrement automatisĂ© avec dĂ©tection intelligente
  • đŸ›Ąïž Robustesse enterprise : Validation rigoureuse, gestion d'erreurs et logging professionnel
  • 🐳 PrĂȘt pour la production : Support Docker avec launcher automatique

🔧 FonctionnalitĂ©s dĂ©taillĂ©es

🎯 SĂ©lection intelligente du type de puissance

  • Types supportĂ©s : Active, Inductive (rĂ©active), Capacitive (rĂ©active)
  • DĂ©tection automatique : Reconnaissance des colonnes de puissance dans les fichiers Excel
  • Noms de fichiers automatiques : Suffixes _active, _inductive, _capacitive pour Ă©viter l'Ă©crasement
  • Interface utilisateur : SĂ©lection dynamique avec mise Ă  jour automatique du nom de fichier

⚡ Gestion avancĂ©e des EAN bi-horaires

  • DĂ©tection automatique : Reconnaissance des EAN avec tarification peak/off-peak
  • Configuration flexible : RĂšgles horaires personnalisables via ean_config.json
  • GĂ©nĂ©ration de fichiers sĂ©parĂ©s : Automatiquement _peak.csv et _offpeak.csv
  • RĂšgles horaires par dĂ©faut :
    • Peak : 07h00-22h00 (lundi-vendredi uniquement)
    • Off-peak : 22h00-07h00 (lundi-vendredi) + tout le weekend

🧠 DĂ©tection automatique intelligente

  • Structure dynamique : DĂ©tection automatique des en-tĂȘtes et dĂ©but des donnĂ©es
  • Colonnes flexibles : Reconnaissance automatique des colonnes timestamp et valeurs
  • Validation robuste : VĂ©rification de l'intĂ©gritĂ© des donnĂ©es et de la structure
  • Formats multiples : Support de diverses structures de fichiers Excel Renewgy

📊 Traitement et conversion

  • Conversion Excel vers CSV : Traitement automatique avec validation complĂšte
  • Filtrage par date personnalisable : Traitement des donnĂ©es Ă  partir d'une date spĂ©cifique
  • SĂ©lection de feuille : Configuration de l'index de feuille Excel Ă  traiter
  • Mapping EAN configurable : Support des fichiers de configuration externes sĂ©curisĂ©s
  • Logging multi-niveaux : Verbose, normal, quiet selon vos besoins

🎹 Interface utilisateur avancĂ©e

  • Interface responsive : Fonctionne sur desktop, tablette et mobile
  • Mode single et batch : Traitement d'un fichier ou par lots
  • Personnalisation en temps rĂ©el : Options par fichier avec prĂ©visualisation
  • Feedback instantanĂ© : Messages d'Ă©tat et indicateurs de progression
  • Gestion d'erreurs intelligente : Rapports dĂ©taillĂ©s avec solutions suggĂ©rĂ©es

📋 PrĂ©requis

  • Python 3.10+ (recommandĂ© : 3.11 ou plus rĂ©cent)
  • DĂ©pendances Python : pandas, openpyxl, flask (installĂ©es automatiquement)
  • Fichier de configuration EAN obligatoire (voir Configuration)

Dépendances Python

pandas>=1.5.0
openpyxl>=3.0.0
flask>=2.0.0

🚀 Installation Ultra-SimplifiĂ©e

Launchers Automatiques (Recommandé)

Les launchers gĂšrent automatiquement l'installation complĂšte et le lancement sur macOS, Linux et Windows :

  1. Clonez le projet :

    git clone https://github.com/BricePetit/RenewgyParser.git
    cd RenewgyParser
  2. Créez votre fichier de configuration EAN (voir Configuration)

  3. Lancez directement selon votre plateforme :

macOS / Linux :

# Interface web avec Docker (recommandé).
./launcher_docker.sh

# Interface web locale avec environnement virtuel Python.
./launcher_python.sh

Windows :

REM Interface web avec Docker (recommandé).
launcher_docker.bat

REM Interface web locale avec environnement virtuel Python.
launcher_python.bat

Les launchers s'occupent automatiquement de :

  • VĂ©rification et installation des dĂ©pendances
  • Configuration d'environnement (virtuel Python ou Docker)
  • CrĂ©ation des dossiers requis
  • Validation de la configuration
  • DĂ©marrage de l'interface web

Installation Manuelle

Pour un contrÎle manuel ou l'intégration dans des workflows existants :

Option A : Installation locale

pip install -r requirements.txt
python renewgy_parser_gui.py

Option B : Docker manuel

# Construction de l'image.
docker build -t renewgy-parser .

# Lancement.
docker-compose up renewgy-web-interface

📖 Utilisation

Important : Un fichier de configuration EAN est obligatoire pour toutes les opérations.

🌐 Interface Web (RecommandĂ©)

Architecture simplifiée avec dossiers prédéfinis :

  • Dossier d'entrĂ©e : excel_files/
  • Dossier de sortie : csv_files/
  • Workflow : DĂ©posez vos fichiers Excel → Traitez via l'interface → RĂ©cupĂ©rez les CSV

Lancement avec Launchers

macOS / Linux :

# Docker (recommandé) - Configuration automatique complÚte.
./launcher_docker.sh

# Python local - Environnement virtuel automatique.
./launcher_python.sh

Windows :

REM Docker (recommandé) - Configuration automatique complÚte.
launcher_docker.bat

REM Python local - Environnement virtuel automatique.
launcher_python.bat

Interface accessible sur http://localhost:5001

Lancement Manuel

Local :

python renewgy_parser_gui.py

Docker :

# Avec Docker Compose (Simple).
docker-compose up renewgy-web-interface

# Avec Docker directement.
docker run -it --rm -p 5001:5000 \
  -v "$(pwd)/excel_files:/renewgy/excel_files" \
  -v "$(pwd)/csv_files:/renewgy/csv_files" \
  -v "$(pwd)/ean_config.json:/renewgy/ean_config.json" \
  renewgy-parser

Fonctionnalités de l'interface web

Mode Single (Fichier unique) :

  • SĂ©lection de fichier : Choix parmi les fichiers disponibles dans excel_files/
  • Type de puissance : SĂ©lection entre Active, Inductive ou Capacitive
  • Nom de sortie intelligent : GĂ©nĂ©ration automatique avec suffixe selon le type (_active, _inductive, _capacitive)
  • EAN bi-horaires : GĂ©nĂ©ration automatique de deux fichiers _peak.csv et _offpeak.csv
  • Filtrage par date : Traitement Ă  partir d'une date spĂ©cifique
  • Configuration de feuille : SĂ©lection de l'index de feuille Excel
  • Options avancĂ©es : AccĂšs complet aux paramĂštres de configuration

Mode Batch (Traitement par lots) :

  • Traitement multiple : Affichage et traitement de tous les fichiers Excel
  • Personnalisation individuelle :
    • Type de puissance : Choix par fichier avec mise Ă  jour du nom
    • Nom de sortie : GĂ©nĂ©ration automatique avec suffixes intelligents
    • Date de dĂ©but : Filtrage personnalisĂ© par fichier
    • Index de feuille : Configuration spĂ©cifique par fichier
  • Gestion EAN bi-horaires : Traitement automatique avec fichiers sĂ©parĂ©s
  • Traitement simultanĂ© : Processus unifiĂ© pour tous les fichiers sĂ©lectionnĂ©s

Fonctionnalités communes :

  • Monitoring en temps rĂ©el : Suivi dĂ©taillĂ© du traitement
  • Interface responsive : Compatible desktop, tablette et mobile
  • Feedback instantanĂ© : Messages d'Ă©tat et indicateurs de progression
  • Gestion d'erreurs : Rapports dĂ©taillĂ©s avec solutions suggĂ©rĂ©es

đŸ’» Interface en Ligne de Commande

Pour l'intégration dans des scripts ou l'automatisation avancée. Toutes les nouvelles fonctionnalités sont disponibles via CLI.

Traitement d'un fichier unique

# Traitement basique avec type de puissance active (défaut).
python renewgy_parser.py --input input.xlsx --output output.csv --config ean_config.json

# Sélection du type de puissance (active, inductive, capacitive).
python renewgy_parser.py --input input.xlsx --output output.csv --config ean_config.json --power-type inductive

# Le nom de fichier sera automatiquement suffixé : output_inductive.csv
# Pour les EAN bi-horaires : output_inductive_peak.csv et output_inductive_offpeak.csv

# Avec filtrage par date.
python renewgy_parser.py --input input.xlsx --output output.csv --config ean_config.json --start-date 2023-01-01 --power-type capacitive

# Avec logging verbose.
python renewgy_parser.py --input input.xlsx --output output.csv --config ean_config.json --verbose --power-type active

Traitement par lots

# Traitement de tous les fichiers Excel avec type de puissance par défaut.
python renewgy_parser.py --batch-input ./excel_files --batch-output ./csv_files --config ean_config.json

# Avec type de puissance spécifique pour tous les fichiers.
python renewgy_parser.py --batch-input ./excel_files --batch-output ./csv_files --config ean_config.json --power-type inductive

# Avec filtrage par date.
python renewgy_parser.py --batch-input ./excel_files --batch-output ./csv_files --config ean_config.json --start-date 2023-06-01 --power-type capacitive

# Avec pattern personnalisé.
python renewgy_parser.py --batch-input ./excel_files --batch-output ./csv_files --config ean_config.json --pattern "*specific*" --power-type active

Configuration et options avancées

# Type de puissance avec fichier de configuration EAN personnalisé.
python renewgy_parser.py --input input.xlsx --output output.csv --config mon_config.json --power-type inductive

# Spécification de l'index de la feuille Excel avec type de puissance.
python renewgy_parser.py --input input.xlsx --output output.csv --config ean_config.json --sheet-index 0 --power-type capacitive

# Combinaison de plusieurs options avec nouvelles fonctionnalités.
python renewgy_parser.py --input input.xlsx --output output.csv --config ean_config.json --sheet-index 1 --start-date 2023-01-01 --power-type active --verbose

Exemples de gestion automatique des noms de fichiers

# Fichier standard avec puissance active.
# Input: data.xlsx → Output: data_active.csv
python renewgy_parser.py --input data.xlsx --output data.csv --config ean_config.json --power-type active

# EAN bi-horaire avec puissance inductive.
# Input: ean_bihoraire.xlsx → Output: ean_bihoraire_inductive_peak.csv + ean_bihoraire_inductive_offpeak.csv
python renewgy_parser.py --input ean_bihoraire.xlsx --output ean_bihoraire.csv --config ean_config.json --power-type inductive

# Traitement par lots avec suffixes automatiques.
# Tous les fichiers auront le suffixe _capacitive, et les EAN bi-horaires auront _peak/_offpeak en plus
python renewgy_parser.py --batch-input ./excel_files --batch-output ./csv_files --config ean_config.json --power-type capacitive

Arguments disponibles

python renewgy_parser.py --help
Argument Description Obligatoire Valeurs possibles
--input Fichier Excel d'entrée Oui (mode fichier unique) Chemin vers fichier .xlsx
--output Fichier CSV de sortie Oui (mode fichier unique) Chemin vers fichier .csv
--batch-input Dossier d'entrée pour le traitement par lots Oui (mode batch) Chemin vers dossier
--batch-output Dossier de sortie pour le traitement par lots Oui (mode batch) Chemin vers dossier
--config Fichier de configuration EAN Toujours obligatoire Chemin vers fichier .json
--power-type Type de puissance à traiter Non active, inductive, capacitive (défaut: active)
--sheet-index Index de la feuille Excel Non Entier (défaut: 2)
--pattern Pattern de fichiers pour le mode batch Non Pattern glob (ex: *specific*)
--start-date Date de début au format YYYY-MM-DD Non Date ISO (ex: 2023-01-01)
--verbose Affichage détaillé Non Flag (pas de valeur)
--quiet Affichage minimal Non Flag (pas de valeur)

Nouvelles fonctionnalités :

  • --power-type : DĂ©finit le type de puissance et gĂ©nĂšre automatiquement le suffixe appropriĂ©
  • Gestion EAN bi-horaires : DĂ©tection automatique, gĂ©nĂ©ration de fichiers _peak et _offpeak
  • Noms intelligents : Suffixe automatique selon le type de puissance pour Ă©viter l'Ă©crasement

⚙ Configuration

Fichier de configuration EAN (Obligatoire)

Important : Un fichier de configuration EAN est obligatoire pour utiliser ce parser. Aucun mapping par défaut n'est inclus pour des raisons de sécurité.

Étape obligatoire : CrĂ©ez un fichier ean_config.json dans le rĂ©pertoire racine :

{
  "example_ean_standard": {
    "source_id": "123456",
    "variable_id": "789012",
    "description": "Example standard EAN mapping"
  },
  "example_ean_bihoraire_peak": {
    "source_id": "987654",
    "variable_id": "321098", 
    "description": "Example bi-hourly EAN mapping (peak hours)"
  },
  "example_ean_bihoraire_offpeak": {
    "source_id": "987654",
    "variable_id": "321099",
    "description": "Example bi-hourly EAN mapping (off-peak hours)"
  }
}

Nouvelles fonctionnalités de configuration :

  • is_bihoraire : DĂ©finit si l'EAN utilise la tarification bi-horaire (peak/off-peak)
  • peak_hours : Configuration des heures de pointe par jour de la semaine (optionnel)
  • GĂ©nĂ©ration automatique : Si is_bihoraire: true, gĂ©nĂšre automatiquement deux fichiers CSV
  • Heures par dĂ©faut : Si peak_hours n'est pas spĂ©cifiĂ©, utilise les rĂšgles standard belges

RÚgles horaires par défaut pour les EAN bi-horaires :

  • Peak : 07h00-22h00 (lundi-vendredi uniquement)
  • Off-peak : 22h00-07h00 (lundi-vendredi) + tout le weekend (samedi et dimanche complets)

Sécurité : Ne jamais committer ce fichier dans votre repository. Il est automatiquement ignoré par .gitignore.

Aide : Un fichier exemple ean_config.example.json est fourni pour vous aider à créer votre configuration.

ParamĂštres de configuration

Le parser utilise une configuration par dĂ©faut qui peut ĂȘtre ajustĂ©e :

  • sheet_index : Index de la feuille Excel (dĂ©faut: 2)
  • header_row : Ligne contenant l'en-tĂȘte EAN (dĂ©faut: 0)
  • header_col : Colonne contenant l'en-tĂȘte EAN (dĂ©faut: 1)
  • data_start_row : PremiĂšre ligne des donnĂ©es (dĂ©faut: 5)
  • timestamp_col : Colonne des timestamps (dĂ©faut: 0)
  • value_col : Colonne des valeurs (dĂ©faut: 2)
  • min_rows : Nombre de lignes minimales pour parser (dĂ©faut: 6)
  • min_cols : Nombre de colonnes minimales pour parser (dĂ©faut: 3)
  • start_date : Date de dĂ©part (Optionnel: 2025-01-01)

📊 Format de sortie CSV

Nomenclature des fichiers de sortie

Le parser génÚre automatiquement des noms de fichiers intelligents selon le contexte :

EAN standard (tarif unique)

  • Puissance active : fichier_active.csv
  • Puissance inductive : fichier_inductive.csv
  • Puissance capacitive : fichier_capacitive.csv

EAN bi-horaires (tarification peak/off-peak)

  • Puissance active : fichier_active_peak.csv + fichier_active_offpeak.csv
  • Puissance inductive : fichier_inductive_peak.csv + fichier_inductive_offpeak.csv
  • Puissance capacitive : fichier_capacitive_peak.csv + fichier_capacitive_offpeak.csv

Structure des fichiers CSV

Le fichier CSV généré contient les colonnes suivantes :

Colonne Description
date Timestamp de la mesure
value Valeur mesurée (selon le type de puissance sélectionné)
meternumber Numéro EAN du compteur
source_id Identifiant source du mapping
source_serialnumber Numéro de série (vide par défaut)
source_ean EAN source (vide par défaut)
source_name Nom source (vide par défaut)
mapping_config Configuration mapping (vide par défaut)
variable_id Identifiant variable du mapping

Exemples de données

EAN standard (puissance active) :

date,value,meternumber,source_id,source_serialnumber,source_ean,source_name,mapping_config,variable_id
2023-01-01 00:00:00,1.25,541448965000143475,123456,,,,,789012
2023-01-01 00:15:00,1.30,541448965000143475,123456,,,,,789012

EAN bi-horaire (puissance inductive, fichier peak) :

date,value,meternumber,source_id,source_serialnumber,source_ean,source_name,mapping_config,variable_id
2023-01-01 07:00:00,0.85,987654321000000123,987654,,,,,321098
2023-01-01 07:15:00,0.92,987654321000000123,987654,,,,,321098

📁 Structure du projet

RenewgyParser/
├── csv_files/                     # Dossier de sortie (fixe).
│   └── .gitignore                 # Fichiers à ignorer par Git.
├── excel_files/                   # Dossier d'entrĂ©e (fixe).
│   └── .gitignore                 # Fichiers à ignorer par Git.
├── templates/
│   └── index.html                 # Template web interface.
├── .gitignore                     # Fichiers à ignorer par Git.
├── docker-compose.yml             # Services Docker.
├── Dockerfile                     # Configuration Docker.
├── ean_config.example.json        # Exemple de configuration EAN.
├── ean_config.json                # Configuration EAN (Ă  crĂ©er).
├── launcher_docker.bat            # Launcher Docker (Windows).
├── launcher_docker.sh             # Launcher Docker (macOS/Linux).
├── launcher_python.bat            # Launcher Python (Windows).
├── launcher_python.sh             # Launcher Python (macOS/Linux).
├── LICENSE                        # Licence du projet.
├── README.md                      # Cette documentation.
├── renewgy_parser.py              # Parser CLI principal.
├── renewgy_parser_gui.py          # Interface web Flask.
└── requirements.txt               # DĂ©pendances Python.

📝 Exemples d'utilisation

Exemple 1 : Traitement simple avec puissance active

python renewgy_parser.py --input data.xlsx --output output.csv --config ean_config.json --power-type active
# Résultat : output_active.csv (ou output_active_peak.csv + output_active_offpeak.csv si EAN bi-horaire)

Exemple 2 : Traitement avec puissance inductive et filtrage par date

python renewgy_parser.py --input data.xlsx --output output.csv --config ean_config.json --power-type inductive --start-date 2023-01-01
# Résultat : output_inductive.csv avec données à partir du 1er janvier 2023

Exemple 3 : Traitement par lots avec puissance capacitive

python renewgy_parser.py --batch-input ./excel_files --batch-output ./csv_files --config ./ean_config.json --power-type capacitive --start-date 2023-06-01 --verbose
# Résultat : Tous les fichiers Excel traités avec suffixe _capacitive

Exemple 4 : EAN bi-horaire avec puissance inductive

python renewgy_parser.py --input ean_bihoraire.xlsx --output ean_bihoraire.csv --config ean_config.json --power-type inductive
# Résultat automatique : 
# - ean_bihoraire_inductive_peak.csv (données heures pleines)
# - ean_bihoraire_inductive_offpeak.csv (données heures creuses)

Exemple 5 : Interface web avec Docker

# Lancement automatique avec configuration complĂšte
./launcher_docker.sh

# Ou manuellement
docker run --rm -v $(pwd)/excel_files:/renewgy/excel_files -v $(pwd)/csv_files:/renewgy/csv_files -v $(pwd)/ean_config.json:/renewgy/ean_config.json -p 5001:5000 renewgy-parser
# Interface accessible sur http://localhost:5001

Exemple 6 : Traitement automatisé en production

# Script de traitement quotidien avec toutes les nouvelles fonctionnalités
python renewgy_parser.py \
  --batch-input /data/excel_files \
  --batch-output /data/csv_files \
  --config /config/ean_config.json \
  --power-type active \
  --start-date $(date -d "yesterday" +%Y-%m-%d) \
  --verbose
# Traite automatiquement tous les nouveaux fichiers avec les données d'hier

🔧 DĂ©pannage

ProblĂšmes courants

  1. Erreur "Config file not found"

    • VĂ©rifiez que ean_config.json existe et est accessible
    • Utilisez un chemin absolu si nĂ©cessaire
  2. Erreur "No valid Excel files found"

    • VĂ©rifiez que vos fichiers ont l'extension .xlsx ou .XLSX
    • Placez vos fichiers dans le dossier excel_files/
    • Utilisez --pattern pour spĂ©cifier un pattern personnalisĂ©
  3. Erreur "EAN not found in config"

    • Ajoutez le mapping EAN manquant dans votre fichier de configuration
    • VĂ©rifiez l'orthographe exacte de l'EAN
    • Pour les EAN bi-horaires, ajoutez "is_bihoraire": true dans la configuration
  4. Erreur "Power type column not found"

    • VĂ©rifiez que le type de puissance sĂ©lectionnĂ© existe dans votre fichier Excel
    • Les colonnes acceptĂ©es : Active Energy, Inductive Energy, Capacitive Energy
    • Utilisez --verbose pour voir les colonnes dĂ©tectĂ©es
  5. ProblĂšme avec les EAN bi-horaires

    • VĂ©rifiez la configuration "is_bihoraire": true dans ean_config.json
    • Les rĂšgles horaires par dĂ©faut sont appliquĂ©es si peak_hours n'est pas spĂ©cifiĂ©
    • Deux fichiers sont gĂ©nĂ©rĂ©s automatiquement : _peak.csv et _offpeak.csv
  6. Interface web ne démarre pas

    • VĂ©rifiez que le port 5001 n'est pas utilisĂ©
    • Utilisez les launchers automatiques selon votre plateforme :
      • macOS/Linux : ./launcher_python.sh ou ./launcher_docker.sh
      • Windows : launcher_python.bat ou launcher_docker.bat
  7. Erreur "Port already in use" avec Docker

    • Le port 5001 est configurĂ© par dĂ©faut (au lieu de 5000 pour Ă©viter les conflits avec AirPlay sur macOS)
    • Si le port 5001 est occupĂ©, modifiez le port dans docker-compose.yml
    • Puis accĂ©dez Ă  http://localhost:5002
  8. ProblĂšme d'environnement virtuel

    • Le launcher Python gĂšre automatiquement l'environnement virtuel
    • En cas de problĂšme, supprimez le dossier renewgy_parser_venv/ et relancez :
      • macOS/Linux : ./launcher_python.sh
      • Windows : launcher_python.bat
  9. Fichiers de sortie non générés

    • VĂ©rifiez les permissions d'Ă©criture dans le dossier csv_files/
    • Pour les EAN bi-horaires, vĂ©rifiez que les donnĂ©es contiennent bien des heures de pointe et creuses
    • Utilisez --verbose pour voir le dĂ©tail du traitement
  10. Détection automatique échoue

    • La dĂ©tection se base sur des mots-clĂ©s standard dans les en-tĂȘtes
    • Si votre fichier Excel a une structure non-standard, contactez le support
    • Utilisez --verbose pour voir les colonnes et structures dĂ©tectĂ©es

Logs et débogage

macOS / Linux :

# Affichage détaillé avec les launchers.
./launcher_python.sh   # Les logs sont automatiquement affichés.
./launcher_docker.sh   # Les logs Docker sont affichés.

# Affichage détaillé en mode CLI.
python src/renewgy_parser.py --verbose --input file.xlsx --output file.csv --config ean_config.json

# Logs Docker manuels.
docker-compose logs renewgy-web-interface

Windows :

REM Affichage détaillé avec les launchers.
launcher_python.bat   REM Les logs sont automatiquement affichés.
launcher_docker.bat   REM Les logs Docker sont affichés.

REM Affichage détaillé en mode CLI.
python src/renewgy_parser.py --verbose --input file.xlsx --output file.csv --config ean_config.json

REM Logs Docker manuels.
docker-compose logs renewgy-web-interface

⚠ Gestion des erreurs

Le parser gĂšre plusieurs types d'erreurs :

  • Fichiers manquants : VĂ©rification de l'existence des fichiers d'entrĂ©e
  • Structure Excel invalide : Validation de la structure attendue
  • EAN non trouvĂ© : VĂ©rification de l'existence dans le mapping
  • DonnĂ©es invalides : Validation des types de donnĂ©es
  • Erreurs de format de date : Validation des dates d'entrĂ©e

📋 Logging

Le parser utilise un systĂšme de logging configurable :

  • INFO : Messages d'information (dĂ©faut)
  • DEBUG : Messages dĂ©taillĂ©s (avec --verbose)
  • ERROR : Erreurs uniquement (avec --quiet)
  • WARNING : Avertissements

Format des logs :

2025-07-08 10:30:45 - renewgy_parser - INFO - Processing file: data.xlsx
2025-07-08 10:30:46 - renewgy_parser - INFO - Extracted EAN: 541448965000143475
2025-07-08 10:30:47 - renewgy_parser - INFO - Extracted 1000 data points

📅 Filtrage par date

Une fonctionnalité clé du parser est la possibilité de filtrer les données par date de début :

# Traiter uniquement les données à partir du 1er janvier 2023.
python src/renewgy_parser.py --input input.xlsx --output output.csv --config ean_config.json --start-date 2023-01-01

Cette fonctionnalité est particuliÚrement utile pour :

  • Éviter de traiter des donnĂ©es dĂ©jĂ  prĂ©sentes dans votre base de donnĂ©es
  • Synchroniser les nouvelles donnĂ©es depuis la derniĂšre mise Ă  jour
  • Optimiser les performances en ne traitant que les donnĂ©es nĂ©cessaires

đŸ€ Contribution

Les contributions sont les bienvenues ! Voici comment contribuer :

  1. Fork le projet
  2. Créez une branche pour votre fonctionnalité (git checkout -b feature/AmazingFeature)
  3. Commitez vos changements (git commit -m 'Add some AmazingFeature')
  4. Poussez vers la branche (git push origin feature/AmazingFeature)
  5. Ouvrez une Pull Request

📄 Licence

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

🔒 SĂ©curitĂ©

Important : Ne commitez jamais vos fichiers de configuration EAN ou vos données sensibles. Utilisez .gitignore pour exclure :

# Fichiers de configuration sensibles
ean_config.json
config/
*.env

# Données
excel_files/
csv_files/
*.xlsx
*.csv

# Environnement virtuel Python
renewgy_parser_venv/

📞 Support

Pour toute question ou problĂšme :

  1. Consultez cette documentation
  2. Vérifiez les problÚmes courants
  3. Ouvrez une issue sur GitHub

📈 Changelog

v2.0.0 - Édition Intelligence & Robustesse (Juillet 2025)

🚀 Nouvelles fonctionnalitĂ©s majeures :

  • 🎯 SĂ©lection du type de puissance : Choix entre Active, Inductive et Capacitive
  • ⚡ Gestion complĂšte des EAN bi-horaires : Support automatique peak/off-peak avec fichiers sĂ©parĂ©s
  • 🧠 DĂ©tection automatique intelligente : Colonnes, structure et format dĂ©tectĂ©s dynamiquement
  • 📝 Noms de fichiers intelligents : Suffixes automatiques selon le type de puissance et le mode horaire
  • 🔄 Interface web amĂ©liorĂ©e : SĂ©lection dynamique avec feedback en temps rĂ©el

đŸ›Ąïž AmĂ©liorations de robustesse :

  • DĂ©tection dynamique des en-tĂȘtes et dĂ©but des donnĂ©es
  • Validation robuste de la structure des fichiers Excel
  • Gestion d'erreurs avancĂ©e avec messages dĂ©taillĂ©s
  • Logging professionnel avec niveaux configurables

đŸ’» Interface utilisateur :

  • Mode batch amĂ©liorĂ© : Configuration individuelle par fichier
  • Mise Ă  jour automatique des noms lors du changement de type de puissance
  • Feedback instantanĂ© pour toutes les opĂ©rations
  • Interface responsive optimisĂ©e

🔧 Technique :

  • Type hints complets et documentation professionnelle
  • Code modulaire et maintenable
  • Tests CLI et web validĂ©s pour tous les cas d'usage
  • Configuration flexible pour les rĂšgles horaires personnalisĂ©es

v1.0.0 - Version Initiale

  • Parser initial avec support Excel vers CSV
  • Validation des donnĂ©es et gestion d'erreurs
  • Support du filtrage par date
  • Traitement par lots
  • Configuration EAN externe
  • Support Docker
  • Interface web moderne
  • Workflow universel simplifiĂ©
  • Launchers automatiques Python et Docker

Auteur

Brice Petit
Université Libre de Bruxelles (ULB)

Ce projet a été développé dans le cadre d'un projet de recherche PhD à l'Université Libre de Bruxelles (ULB).

About

🔄 Robust Python parser for converting Renewgy Excel files to standardized CSV format with data validation, date filtering, and batch processing capabilities

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •