ESLC manages heating across 20 sites with fuel contracts billed on monthly DJU data. I replaced several hours of monthly manual work with a fully automated pipeline: a C# script collects MétéoFrance data every day at 1:30 PM, injects it into MongoDB in under 10 seconds, and DJU are calculated and available in real time across all sites.
ESLC tracks heating across 20 sites via fuel contracts billed on monthly Unified Degree Days (DJU). Before MeteoESLC, this calculation was entirely manual: downloading MétéoFrance reports, copying them into Excel, calculating DJU column by column, emailing the file to each stakeholder, managing concurrent versions (v1, v2, v2_final…). This recurring process took several hours every month — and relied on a single person who knew the spreadsheet.
The real consequence: a delay or error in monthly DJU could distort the fuel billing for all sites. The company's heating budget depended on a fragile Excel spreadsheet, maintained by hand, with no traceability and no centralization.
What is a DJU?
A Unified Degree Day (DJU) measures how cold a day is: max(0, 18 − (TN + TX) / 2). When the daily average drops below 18 °C, buildings need heating — each degree below 18 is one DJU. Fuel suppliers use monthly cumulative DJU split into 3 decades (D1/D2/D3) to validate actual consumption and adjust billing.
The C# script writes in parallel to two completely independent destinations. The ICopitole branch consumes .data files at 1:45 PM for energy management. The web portal branch goes through Chokidar → MongoDB → Next.js for real-time display. A failure on one branch never blocks the other.
ICopitole consumes .data files at exactly 1:45 PM. If a station is in error, the operator has exactly 10 minutes — between the alert email at 1:35 PM and the point of no return at 1:45 PM — to fix and re-run.
Click a step to see details
Before MeteoESLC
After MeteoESLC
Each view addresses a specific operational need: the dashboard for daily monitoring, the daily report for historical lookup, the weekly trend for temperature patterns, and the monthly DJU report for fuel billing.
/Dashboard
Last imported day: KPIs (active stations, avg TN/TX, cumulated DJU), frost alerts, bar chart. Daily starting point.
/dailyDaily report
Any past day, filterable by station. TN/TX bar chart and CSV export compatible with Excel (';' separator, UTF-8 BOM).
/weeklyWeekly trend
TN, Average and TX curves over an ISO week for a given station. Only weeks with data are shown.
/monthlyMonthly DJU report
D1/D2/D3 calculation over a full month. CSV export ready for fuel suppliers and energy contract tracking.
For each ESLC site, the nearest active MétéoFrance station with available daily TN/TX data.
BOURG
CEYZERIAT_SAPC
5,8 km
BOURG-ASOTRANS
CEYZERIAT_SAPC
5,6 km
TENDE
TENDE-OBS
1,3 km
DOLOMIEU
FAVERGES
3,6 km
ST-SORLIN
FAVERGES
5,2 km
BOURGOIN
BOURGOIN
5,4 km
VENISSIEUX
LYON-BRON
5,4 km
AIGUESBLANCHE
LA LECHERE_SAPC
3,4 km
CRUSEILLES
GROISY_SAPC
5,4 km
BARJOLS
VARAGES
5,0 km
PUGET
FREJUS
4,4 km
MONACO
PEILLE
4,4 km
ST-ANDREE
NICE-RIMIEZ
1,3 km
CARROS
CARROS_SAPC
0,2 km
MANDELIEU
CANNES
0,4 km
ST-ETIENNE
SAINT-ETIENNE
6 km
BRIGNOLES
MONTFORT-SUR-ARGENS_SAPC
10,2 km
PASTOR ST-ROMAIN
LYON TETE D'OR
7 km
MARSEILLE MENET
MARSEILLE
3,2 km
THEIZE
LIERGUES_SAPC
4,5 km
MENTON
MENTON
0,7 km
THONON
EVIAN
4,5 km
For each ESLC site, the nearest active MétéoFrance station with available daily TN/TX data.
Confidential application — restricted access
For confidentiality and legal reasons, I cannot share access to this application. It is deployed in production on ESLC's internal network.