Locations & Substations
Solar sites, weather grid coverage, and grid substations (OpenStreetMap / operator CSV). Every substation keeps its source and confidence; coordinates are never invented.
OpenStreetMap· Overpass API · ODbL344 substations· REAL_BENGALURUOpen-Meteo· weather at substation coords
Formulas used
Reliability scoreFALLBACK_DEFAULT
reliability = 0.6 − 0.1 × (missing voltage_kv ? 1 : 0) − 0.1 × (missing operator ? 1 : 0) − 0.1 × (missing district ? 1 : 0) # clamped to [0.3, 0.6]
Haversine distance (nearest substation)OFFICIAL_SOURCE
d = 2R · arcsin(√(sin²(Δlat/2)
+ cos(lat₁)·cos(lat₂)·sin²(Δlon/2)))
R = 6371 kmSubstation context (SubstationContext)REAL_BENGALURU
context = {
substation_id, name, lat, lon, # always present
operator, voltage_kv, # may be null
capacity_mva, district, # 100% null in OSM
source_label: REAL_BENGALURU,
reliability_score: 0.3–0.6,
capacity_status: NOT_AVAILABLE
}Agent workflow (substation-driven)Deterministic Python
SubstationContext → WeatherAgent(lat, lon) → SolarIrradianceAgent(GHI → DNI/DHI) → CloudRiskAgent(P(cloud drop)) → GenerationTimelineAgent(MW per hour) → DSMAgent(deviation risk) → OrchestratorAgent(trace assembly)
Provenance: REAL_BENGALURU — 344 substations from OpenStreetMap Overpass (ODbL 1.0). capacity_mva is never present in OSM for power=substation and is shown as NOT_AVAILABLE — no fabrication.
Checking backend…