Dashboard Panels¶
This page documents every panel on the dashboard at
/ui/ — what each one shows, which upstream
EirGrid endpoint it comes from, what transformation is applied between
the raw payload and what you see on the screen, and any caveats worth
knowing about.
Each panel section is organised the same way:
- What it shows — plain-language description.
- Upstream source — EirGrid backend, area, and region combination(s).
- Calculation — aggregation, downsampling, unit conversion, or formula applied between the raw payload and the JSON summary.
- Units & resolution — raw upstream sample interval and (where downsampled) the resampled interval.
- Refresh cadence — how often the pipeline writes a fresh summary and how often the API cache refreshes it for the browser.
- Caveats — null-region quirks, snapshot-only behaviour, derived ALL values, and other things that look weird until you know why.
If you want the source-of-truth pipeline-side documentation organised by upstream backend instead of by panel, see Upstream Data.
Refresh cadence (applies to every panel)¶
The dashboard reads from JSON summaries written by the pipeline; the
API caches each summary in memory and refreshes it every
CACHE_TTL_SECONDS (default 5 minutes) in a daemon thread. The
pipeline itself runs roughly every 12 hours, so the underlying
data is at most twelve hours fresh — see the Data updated … chip in
the dashboard header for the actual age of the data you are looking at.
Frequency, demand, wind, solar, interconnection, CO₂, and SNSP series are persisted as Parquet partitions in S3; new partitions land at each pipeline run. Generation mix is a snapshot — see its panel below for the special handling.
Latest gauges — row 1¶
Demand gauge¶
- What it shows — total power being consumed across the active region (All-island, ROI, or NI) at the latest reading. Switch units between GW and MW with the toggle in the section header; switch region with the All-island / ROI / NI buttons in the page header.
- Upstream source —
dashboardbackend, areademandactual, regionsROIandNI. EirGrid does not publish anALLdemand series; All-island is derived in the export (see below). - Calculation — none for ROI and NI: the raw
Valuefield is served as-is. For All-island, the export merges the ROI and NI series on timestamp and sums them (NIis forward-filled on the rare points where it is missing). - Units & resolution — MW, 15-minute intervals.
- Caveats — the EirGrid
demandActualendpoint returns 403 forregion=ALL, which is why the pipeline reconstructs the All-island series rather than fetching it directly.
Wind gauge¶
- What it shows — current wind generation across the active region, with a forecast curve shown on the 30-day chart below. The gauge displays the actual value.
- Upstream source —
vargenbackend (vargen.smartgriddashboard.com/api/export/.../WIND), regionsROI,NI,ALL. - Calculation —
MW_ACTUALis exposed asactual;MW_FORECASTis exposed asforecast. Both are passed through unchanged. - Units & resolution — MW, 15-minute intervals.
- Caveats —
actuallags the forecast slightly — fresh forecasts are typically present an hour or two ahead of the most recent actual reading. The All-island series is fetched directly from EirGrid (no client-side merge).
Solar gauge¶
- What it shows — current solar generation across the active region. Solar peaks at midday and is zero at night; the gauge max is shared with demand so the contribution stays in scale.
- Upstream source —
vargenbackend, areaSOLAR, regionsROI,NI,ALL. - Calculation — same as wind:
MW_ACTUAL→actual,MW_FORECAST→forecast. - Units & resolution — MW, 15-minute intervals.
- Caveats — Ireland's installed solar fleet is small relative to wind, so the gauge value will often be a fraction of demand even at noon in summer.
Net Imports gauge¶
- What it shows — how much of demand is currently being met by electricity imported from Great Britain across the three undersea interconnectors (EWIC, Greenlink, Moyle). When Ireland is a net exporter, the gauge shows zero and the sub-label flips to "exporting to GB".
- Upstream source —
interconnbackend (interconn.smartgriddashboard.com/api/Interconnector/...); the panel uses the precomputedNETconnector entry. - Calculation — the gauge value is
max(0, NET)so it only counts net imports, not exports. The 30-day chart below shows signed flow (positive = import, negative = export). The 30-day chart and the per-connector cards below the gauges are sourced from the same payload. - Units & resolution — MW, 15-minute intervals.
- Caveats — see the Interconnector Flow Bars section for how the three physical connectors are grouped and what the regional metadata in the upstream payload actually means.
Other Generation gauge¶
- What it shows — a derived bucket: everything that is not wind, solar, or net imports. In practice this is mostly gas-fired power stations, plus a small amount from batteries and hydro. It is the dispatchable backbone that balances the grid when wind and solar fall short.
- Upstream source — no single source; computed in the browser.
- Calculation —
other = demand − wind − solar − net_interconnector_flow. Computed per region: All-island uses the All-island demand, wind, solar, andNETinterconnector; ROI uses ROI demand, wind, solar, andEWIC + GRNLK; NI uses NI demand, wind, solar, andMOYLE. - Units & resolution — MW, derived at gauge-render time from the underlying 15-minute series.
- Caveats — this is an approximation. It silently absorbs measurement noise, rounding error, and any contribution the four inputs do not cover (e.g. small embedded generation). Use the generation-mix donut for an authoritative fuel-type breakdown (ROI only).
Latest gauges — row 2¶
Frequency gauge¶
- What it shows — current system frequency in hertz. The grid target is exactly 50.000 Hz; the gauge dial shows colour zones for the normal range (49.8–50.2 Hz), the warning zones (49.7–49.8 and 50.2–50.3 Hz), and the emergency zones outside that.
- Upstream source —
dashboardbackend, areafrequency, regionROIonly. - Calculation — the gauge shows the latest non-null reading passed through unchanged.
- Units & resolution — Hz, 5-second native resolution. The 30-day chart below shows hourly averages (computed in DuckDB at export time — never loads the raw 5-second rows into Python).
- Caveats — EirGrid only publishes frequency for ROI, so the gauge does not change when the region toggle is set to NI or All-island.
SNSP gauge¶
- What it shows — System Non-Synchronous Penetration, the share of electricity coming from sources that are not physically spinning in sync with the grid (wind, solar, batteries, HVDC imports). EirGrid currently caps instantaneous SNSP at 75 % to maintain grid stability.
- Upstream source —
dashboardbackend, areasnspall, regionALL. - Calculation — raw
Value(already a percentage) passed through. The gauge fill colour shifts from green to amber to rose at the 60 % and 75 % thresholds. - Units & resolution — %, 30-minute intervals (15 min on the newer EirGrid feed).
- Caveats — SNSP only exists at the all-island level; ROI/NI region filters do not change this gauge.
CO₂ Intensity gauge¶
- What it shows — grams of CO₂ emitted per kilowatt-hour of electricity generated, ROI only. Lower is cleaner. Ireland's 2030 climate target is 105 g/kWh, marked on the gauge as a yellow tick.
- Upstream source —
dashboardbackend, areaco2Emission, regionROI(NI and ALL combinations returnValue: nulland are not requested). - Calculation — the raw EirGrid feed publishes CO₂ as
tonnes per hour. The dashboard converts that to grams per
kWh in the browser with
(t/h × 1000) / demand_MW, using the matching ROI demand reading from the same timestamp on the 30-day chart and the latest ROI demand value on the gauge. - Units & resolution — g/kWh (derived); raw upstream is 15-min t/h.
- Caveats — because the conversion depends on demand, a missing ROI demand reading at the same timestamp produces a null on the chart. The "above 2030 target" sub-label compares the current intensity to the 105 g/kWh line.
Generation Mix donut¶
- What it shows — the breakdown of electricity being generated in the Republic of Ireland right now, by fuel type. The centre shows the renewable share. Coal is omitted (Moneypoint's coal phase-out makes that bucket structurally near-zero).
- Upstream source —
dashboardbackend, areafuelMix, regionROI. Snapshot-only API — the endpoint ignores any date range and always returns the current five rows (FUEL_GAS,FUEL_RENEW,FUEL_COAL,FUEL_OTHER_FOSSIL,FUEL_NET_IMPORT). - Calculation — the upstream
Valueis cumulative MWh, not instantaneous MW. The dashboard normalises each segment by the per-snapshot total to render as a percentage. TheEffectiveTimefield in the upstream payload is always stale, so the pipeline overwrites it with the pipeline run timestamp at write time. Each pipeline run therefore stamps a fresh daily snapshot, and the daily Parquet partitions form a meaningful time series. - Units & resolution — %, daily snapshot per pipeline run (so effectively twice-daily today).
- Caveats — when scrubbing the time slider into historical
mode, the donut switches to a wind/demand/imports approximation
because
fuelMixis daily-only and does not have a 15-minute-aligned reading to look up.
Interconnectors¶
Interconnector Flow Bars¶
- What it shows — four horizontal bar panels — one for each HVDC link to Great Britain (EWIC, Greenlink, Moyle) plus a combined Net flow. Positive bars indicate import to Ireland; negative bars indicate export to GB. Each bar is annotated with the current MW value and a direction label.
- Upstream source —
interconnbackend (interconn.smartgriddashboard.com/api/Interconnector/...), regionALL. - Calculation — none. The dashboard groups rows by
Field_Name, not byRegion— each connector carries its own region in the upstream payload (EWIC and GRNLK → ROI, MOYLE → NI, NET → ALL). Bar widths are clamped to a fixed maximum per connector (600 MW for EWIC/Greenlink/Moyle, 1800 MW for Net). - Units & resolution — MW, 15-minute intervals.
- Caveats — the underlying payload is the same one feeding the Net Imports gauge and the 30-day interconnector chart. The three named cables are HVDC, so they are not synchronised with either AC grid and the flow can reverse on a sub-second time scale.
30-day history¶
Demand chart¶
- What it shows — line chart of demand over the last 30 days at 15-minute resolution. When All-island is selected the chart overlays all three series (ALL bold, ROI orange, NI teal); otherwise it shows just the selected region.
- Upstream source — same as the Demand gauge.
- Calculation — none for ROI/NI. All-island is derived ROI + NI as documented above.
- Caveats — large client-side series are downsampled to ≤ 720 points for chart performance (~hourly over 30 days). Chart values therefore appear slightly smoother than the underlying Parquet data, which retains 15-minute fidelity.
Wind chart¶
- What it shows — actual and forecast wind generation over the last 30 days. Forecast is rendered as a dashed lighter line.
- Upstream source — same as the Wind gauge.
- Calculation — none. Both
actualandforecastcome straight fromvargen. - Caveats — forecast continues into the future for a few hours ahead of the latest actual reading.
Solar chart¶
- What it shows — actual and forecast solar generation over the last 30 days.
- Upstream source — same as the Solar gauge.
- Calculation — none.
- Caveats — the diurnal cycle dominates the chart; output is zero overnight.
Interconnector chart¶
- What it shows — four series on the same chart: EWIC, Greenlink, Moyle, and the combined Net flow over 30 days. Net is drawn thicker for emphasis.
- Upstream source — same as the Interconnector Flow Bars.
- Calculation — none.
- Caveats — Greenlink is a recent connector — historical points may be sparse for the early part of the 30-day window.
CO₂ Intensity chart¶
- What it shows — ROI CO₂ intensity in g/kWh over the last 30 days, with a yellow dashed line at the 2030 target of 105 g/kWh.
- Upstream source — same as the CO₂ Intensity gauge, plus the ROI demand series for the unit conversion.
- Calculation — each upstream
Value(tonnes/hour) is divided by the nearest-in-time ROI demand reading, then multiplied by 1000 to give g/kWh. Performed in the browser at chart-render time. - Caveats — NI and ALL are never available. Points where ROI demand is missing become null on the chart.
Frequency chart¶
- What it shows — ROI system frequency over the last 30 days, shown as the hourly mean of the 5-second raw feed. The y-axis is clamped to 49.75–50.25 Hz so normal deviations are visible.
- Upstream source — same as the Frequency gauge.
- Calculation — DuckDB runs
avg(Value) GROUP BY date_trunc('hour', EffectiveTime)over the raw Parquet at export time. The dashboard never sees the raw 5-second rows. - Caveats — hourly averaging hides short-lived excursions. If you need second-level resolution, query the raw Parquet directly — see Data Model.
SNSP chart¶
- What it shows — System Non-Synchronous Penetration over the last 30 days, with a rose dashed line at the 75 % system limit.
- Upstream source — same as the SNSP gauge.
- Calculation — none.
- Caveats — SNSP routinely brushes the 75 % limit during windy overnight periods; that is normal operating behaviour, not a fault.
Generation Mix chart¶
- What it shows — ROI generation by fuel type as a stacked-area
percentage over the last 30 days. One line per fuel
(
FUEL_GAS,FUEL_RENEW,FUEL_OTHER_FOSSIL,FUEL_NET_IMPORT). Coal is excluded. - Upstream source — same as the Generation Mix donut.
- Calculation — for each daily snapshot the raw cumulative-MWh values are summed to a per-snapshot total, then each fuel is rendered as a percentage of that total. The conversion happens in the browser.
- Caveats — the resolution of this chart is daily, not 15-minute — there is one point per pipeline-run snapshot. As the pipeline runs roughly twice a day, the time series accumulates about two points per day.
See also¶
- Upstream Data — the EirGrid endpoints and raw payload shapes that feed every panel on this page.
- Data Model — the S3 Parquet layout, JSON summary schema, and DuckDB query examples for going deeper than the dashboard exposes.
- API Reference — the FastAPI endpoints the dashboard
hits (
/api/current,/api/{area},/api/snapshot,/api/gaps). - Gap Detection — what the small badges in the panel corners mean when upstream data goes missing.