Skip to content

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

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages