Sign in
AION RE-cast × GRIDQCA OPS
Operations Home
Plant Registry
| ID | Name | Tech | MW | State | Pooling Station | GPS | PPA | SLDC | Actions |
|---|
⚡ Forecast
| Block | Time | P50 MW | P10 | P90 | Source | Quality |
|---|
Schedule Builder
| Block | Time | PS Sched MW | PS AvCap | %AvCap |
|---|
SLDC Submission
Scheduled exports run automatically at 09:15 / 17:15 / 05:15 IST; files land in
/var/spool/sldc/ on the backend. This UI is for on-demand retrieval.
⚡ Meter Data Entry
| Block | Time | Actual MW | Availability % |
|---|
Actuals (15-min consolidated)
scada_15min_cagg TimescaleDB continuous aggregate| Block Start | Avg MW | Max MW | Availability % | Samples |
|---|
📉 Deviation & DSM Charges
| Block | Time | Sched MW | Actual MW | Δ MW | % AvCap | Band | ₹ DSM |
|---|
🎯 Forecast Accuracy
| Date | MAPE % | RMSE MW | RMSE % Cap | R² | Skill | PICP % | Samples |
|---|
⚡ Ramp Events
| Time | Direction | Δ MW | % Cap | Lead min | Severity |
|---|
🌤️ NWP Ensemble Status
| Source | Status | Last Fetch | Freshness | Plants Using | Notes |
|---|---|---|---|---|---|
| Open-Meteo (ECMWF IFS + ICON + GFS) | Active | — | — | all | FREE tier or €29/mo commercial |
| NASA POWER (MERRA-2 Kt) | Active | — | — | training only | FREE, 1-2 day lag |
| NOAA METAR (aviation obs) | Active | — | — | all | FREE, 30-min cadence |
| ECMWF Open Data (direct) | Standby | — | — | fallback | FREE, used if Open-Meteo stale > 6 hr |
| MOSDAC INSAT-3DR | Pending registration | — | — | 0 | FREE w/ registration • 4 km India GHI |
| Solcast (DNV) — premium | Optional | — | — | 0 | Paid, recommended for >25 MW plants |
- Primary: Open-Meteo live (flag:
GOOD) - L1: Cached Open-Meteo < 6 hr old (flag:
NWP_STALE) - L2: ECMWF Open Data direct (flag:
NWP_SOURCE_SWITCH— MOS bias recalibrated) - L3: Climatology from historical SCADA (flag:
CLIMATOLOGY_ONLY— red alert fires)
Every forecast row carries exactly one data_quality_flag for DSM-dispute provenance.
🛰️ Solar & Wind Asset Detection
This module runs YOLOv8-seg + SAM2 on Sentinel-2 / Planet / WorldView / drone imagery to detect
solar panels and wind turbines. Results land in solar_assets and wind_assets
PostGIS tables.
For Phase-1 pilot, detection runs on demand via
POST /api/v1/solar-assets/detection-job (admin role).
Aggregate capacity feeds the BtM correction layer in the forecast engine
(FRD §14.8), improving portfolio MAPE by 1–2% in high-rooftop-density zones.
| District | Count | Total kWp |
|---|
💰 Data Vendors & Cost Efficiency
| Layer | Vendor | Cost | Why |
|---|---|---|---|
| NWP primary | Open-Meteo | FREE / €29/mo | ECMWF IFS 9 km + ICON + GFS + AIFS in one API; no key; <10ms |
| NWP backup | ECMWF Open Data | FREE | Direct source, independent fallback, CC-BY 4.0 commercial OK |
| Satellite irradiance | MOSDAC INSAT-3DR | FREE w/ reg | ISRO, 4 km India, 30-min cadence, mandated by FRD §4.2 |
| Historical Kt | NASA POWER | FREE | MERRA-2 clearness index for training; 1-2 day lag |
| Aviation obs | NOAA METAR | FREE | 30-min visibility + cloud at 15+ Indian airports |
| Premium solar | Solcast (DNV) | Quote | 25-50% better than NWP; enable only if DSM > subscription |
| Premium wind | Meteomatics | Quote | EURO1k 1 km downscaling for complex terrain |
| Fallback simple | Visual Crossing | $35/mo | Cheapest metered API; weak on radiation, good for temp/wind |
| ❌ Not used | OpenWeatherMap | n/a | Low-res GFS derivation; tight rate limits; no cost advantage |
A. Pilot (5 plants, free only): ₹0/month • DA solar MAPE ~12–15% by month 3
B. Prod 50 plants (Open-Meteo commercial): ~₹2,700/month • MAPE 9–11% by month 6
C. Premium 100 plants incl. 20 big solar: ~₹2 lakh/month • DSM savings ~₹8–15 lakh/month
📋 SLA & Fallback Logic
| SLA | Commitment | Measurement |
|---|---|---|
| Platform uptime | 99.5% monthly | Excl. Sun 02-04 maintenance |
| DA R0 delivery | By 09:30 IST (D-1) | Per plant, per day |
| Intraday revision | < 5 min latency | API server timestamp |
| SLDC XLSX | < 3 min generation | From R0/R1/R2 trigger |
| API p95 latency | < 800 ms | Monthly aggregate |
| NWP freshness | < 6 hr staleness | Logged per forecast |
| SCADA freshness | < 30 min | For intraday runs |
| P1 incident | Respond < 30 min, resolve < 2 hr | From alert to status-page update |
| P2 incident | Respond < 4 hr | — |
| Trigger | Threshold | Action |
|---|---|---|
| Plant 7d MAPE | > 15% | Alert ops + priority retrain |
| Portfolio 7d MAPE | > 12% | Alert SLDC account manager |
| Ramp miss rate | > 40% in 7d | Sensitivity reduced + SCADA 2.5-min |
| P90 PICP drift | < 80% or > 95% in 30d | Isotonic recalibration |
| New plant bootstrap | > 25% MAPE in 30d | Physics params re-ingested |
🔌 API Reference
/api/v1 • JWT Bearer auth • OpenAPI 3.1/api/docs🔗 Swagger UI — interactive API explorer
🔗 ReDoc — cleaner reference documentation
🔗 openapi.json — raw spec (import to Postman)
| Method | Path | Purpose |
|---|---|---|
| POST | /auth/login | Get access + refresh tokens |
| GET | /plants | List plants (scoped by role) |
| POST | /plants | Register new plant |
| GET | /forecast/{plant_id} | 96-block P10/P50/P90 |
| POST | /forecast/run | Queue forecast run via Celery |
| GET | /forecast/state/{state_code} | Portfolio aggregate |
| POST | /scada/{plant_id} | Plant EMS pushes actuals |
| GET | /actuals/{plant_id} | Read 15-min consolidated |
| GET | /schedule/pooling-station/{ps_name} | PS aggregation |
| GET | /sldc/xlsx/{plant_id} | Download SLDC XLSX |
| GET | /accuracy/{plant_id} | Rolling MAPE/RMSE/R²/PICP |
| GET | /ramp-alerts/{plant_id} | Detected ramp events |
| GET | /solar-assets | GeoJSON of detected assets |
📘 FRD Compliance Matrix
| FRD § | Requirement | Status | Evidence |
|---|---|---|---|
| §3.1 | Plant taxonomy (solar/wind/hybrid/BtM) | ✅ | backend/app/db/models.py |
| §3.2 | R0/R1/R2 horizons | ✅ | beat schedule |
| §4.1 | Multi-NWP ensemble (GFS+ECMWF+ICON) | ✅ | ingestion/open_meteo.py |
| §4.2 | INSAT-3DR satellite irradiance | 🔵 | ingestion/mosdac.py (pending SFTP approval) |
| §4.3 | SCADA ingestion (REST + Modbus) | ✅ | api/scada.py + TimescaleDB |
| §5.1 | 3-tier model ensemble | ✅ | forecasting/ensemble.py |
| §5.2 | Solar physics (Perez POA + tracking) | ✅ | forecasting/solar_physics.py (pvlib) |
| §5.3 | Wind physics (log profile + power curve) | ✅ | forecasting/wind_physics.py |
| §5.4 | Intraday satellite nowcast | 🟡 | Phase 4 — needs MOSDAC live |
| §6 | Training & validation (walk-forward CV) | ✅ | retrain tasks + services/accuracy.py |
| §7 | Cloud-native architecture | ✅ | Docker Compose + OKE manifests |
| §8 | Output formats (JSON + XLSX + WS) | ✅ | api/ + exports/sldc_xlsx.py |
| §9.1 | CERC 2015+2019+2023 Amendments | ✅ | services/dsm.py + dsm_regulations.yml |
| §9.2 | DSM penalty bands (all states) | ✅ | MPERC 3rd Amd 2025 replicated |
| §9.4 | QCA integration | ✅ | schedule.py + sldc.py |
| §10 | Phased accuracy roadmap | ✅ | FEATURE_* flags in config.py |
| §11.2 | JWT + RBAC + TOTP MFA | ✅ | core/security.py |
| §11.3 | Audit log, 12mo hot / 7yr cold | ✅ | AuditLog ORM + OCI lifecycle |
| §14 | Solar asset geodatabase | 🟡 | Schema ready; CV pipeline needs GPU node |
| §15 | SLA + fallback state machine | ✅ | forecasting/fallback.py |
| §16 | OpenAPI REST reference | ✅ | /api/docs |
| §17 | Wind turbine geodatabase | 🟡 | Schema ready; detection needs GPU |
Legend: ✅ Fully implemented • 🟡 Partial / phase-gated • 🔵 Configured, needs vendor onboarding
🔀 De-pooling
| Plant | Name | Cap MW | Cap % | Alloc Δ MWh | ₹ DSM | PPA ₹/kWh |
|---|
💰 Commercial Settlement
📋 Audit Log
| Time | User | Role | IP | Module | Action | Resource | Hash |
|---|
📂 Smart Import
| Format | Description | Required columns / fields |
|---|---|---|
| plants_csv · plants_xlsx | Plant registry | Plant_ID · Name · MW · State · Lat · Lon |
| forecast_csv · forecast_xlsx | 96-block forecast (1 plant) | Block · Time · P50_MW (optional: P10, P90, Plant_ID) |
| bulk_forecast_xlsx | Multi-sheet XLSX (1 plant per sheet) | Sheet name = Plant_ID. Needs target date override. |
| scada_csv · scada_xlsx | 15-min meter actuals | Block · Time · Actual_MW (optional: Availability, Plant_ID) |
| solcast_json | Solcast forecast API response | Required override: Plant_ID + target date |
| open_meteo_json | Open-Meteo API response | Stored in NwpCache for forecast runs |
⚙️ Configuration
🏦 Bank Guarantee Tracker
| Plant | Bank | BG (₹) | Utilized (₹) | Available (₹) | Util % | Expiry |
|---|
📆 Holiday / Maintenance Calendar
| Kind | Start | End | Note | Actions |
|---|
⏰ Export Schedule
| Name | Cron | Enabled | Description | Save |
|---|
🔁 Backtest
| Block Start | Forecast MW | Actual MW | Error MW |
|---|
Plant Detail
| Time | Δ MW | % Cap | Severity |
|---|
| Kind | Start | End | Note |
|---|