Building Your Own Grafana Dashboards
The provisioned Grafana is not read-only. Every portfolio has its own Grafana workspace in which you can build dashboards on the same raw time series the platform records — as long as you keep one rule: the overview dashboard Mirox provides is managed and gets replaced on every version rollout, so build your own dashboards as copies, never by editing it. This guide explains how Grafana is structured, what you may change, and how the platform's time series have to be read to give correct numbers.
If you only want to open the provided dashboard, see Using Grafana as an External Read Platform. For the metric catalogue, see Metric Collection.
How Grafana Is Structured
One Grafana organization per portfolio
Mirox provisions one Grafana organization per portfolio, named <organization> - <portfolio>. Everything inside it is shared by the portfolio's members:
- One data source (
<organization> - <portfolio>), scoped to the plants of that portfolio. Every query you write runs against this data source and can only ever see the portfolio's plants — there is nothing to configure and nothing to leak. - One managed dashboard,
Portfolio Overview - <portfolio>, provided by Mirox (see below). - Your own dashboards and folders, visible to everyone who can see the portfolio.
Because a portfolio is the unit of resource sharing, a plant that belongs to several portfolios is reachable from each of their Grafana organizations, and a dashboard you build in one portfolio does not appear in another. Put a dashboard where the people who need it are members.
Who can view and who can edit
Grafana membership follows the platform's permissions and is refreshed automatically whenever they change — there is no separate Grafana user management:
| Platform role | Grafana role | Can |
|---|---|---|
| Any user who can see the portfolio | Viewer | Open every dashboard of the portfolio, change time range and variables, explore queries |
| Job roles Operator and Technical manager on the portfolio (or on a plant of it), organization admins and owners | Editor | Additionally create, edit, import and delete dashboards and folders in the portfolio's organization |
Membership and roles are synced when a permission is granted or revoked; an open Grafana session is refreshed so that a newly promoted editor does not need to log out and in again.
The Managed Overview Dashboard
Portfolio Overview - <portfolio> is rendered by Mirox from a published template version. The dashboard's tags carry the version (mirox-template-v<N>) and its description names the exact published content. Mirox administrators roll new versions out from the platform's admin area, and a rollout deletes and re-creates the dashboard — this is what keeps every portfolio on a known, tested template.
Never edit the managed dashboard
Any change you make to Portfolio Overview - <portfolio> — a new panel, a changed query, a different layout — is lost the next time a template version is applied to the portfolio. Grafana's own version history does not protect it either: the rollout replaces the dashboard as a whole.
What to do instead:
- Open the managed dashboard, then use Edit → Save as copy (or Export → Export as JSON and Import) to create your own copy with a new name. Put it in a folder of your own.
- Build on the copy: add panels, change queries, add variables. Your copy is yours — no rollout touches it.
- After a new template version is rolled out, open the managed dashboard once to see whether it gained panels you want to carry over to your copy.
The same applies to every dashboard you create from scratch: anything that is not the managed overview is left alone by the platform.
Start from the template's variables
The managed dashboard's park variable lists the portfolio's plants by name and hands the plant identifier to the queries; group selects a plant's sub-groups; inverter and gak are populated from the data. A copy keeps these variables, so the fastest way to a working custom dashboard is to copy the overview and remove what you do not need.
Reading the Time Series Correctly
Grafana shows you whatever a query returns, so a wrong reading looks exactly like a right one. The rules below are the ones the platform itself follows in its reports; a custom dashboard that follows them prints the same numbers as the report pages.
Labels: what a series is
Every series is identified by its metric name plus its labels. The labels you will filter and group by:
| Label | Meaning |
|---|---|
park | The plant identifier (the 12-character plant UID). Always filter on it — the park variable of the managed dashboard provides it as ${park} |
group | The plant's sub-group (segments of a plant with separate feed-in) |
inverter_id, gak_id, string_number | Component identities: an inverter, a combiner box under it, a string under that |
turbine_id | A wind turbine |
id | A feed-in meter, an irradiance sensor or another standalone device |
phase | L1, L2, L3 on per-phase electrical series |
sensor, blade, position | Instance labels on multi-instance series (turbine temperatures, blade pitch, sensor position) |
box, storage, module, cell, pcs | The battery hierarchy |
boot_time | Present on the platform's own energy counters — one series per agent start (see below) |
segment_id | Present on per-segment duplicates of source-derived series; segment_id!~".+" selects the plant-level series |
clipping, pr, variant, model | Lane selectors on the analytics families: which model lane (clipping="considered"), whether the PR is applied (pr="valid" / pr="none"), the clean PR (variant="clean"), the satellite model (model="eumetsat_sarah3") |
Two things are deliberately not labels: component names (see the next section) and units — every value is stored in base SI units: W, Wh, V, A, Hz, °C, W/m², Wh/m². Set the Grafana unit to watt / watt-hour and let Grafana scale to kW / MWh; never divide in the query.
Showing current component names
Telemetry carries component identifiers, not names: a rename in Mirox must not split a series into "before" and "after". The current names are published as their own info series — powerplant_inverter_info, powerplant_gak_info, powerplant_string_info, powerplant_feedin_info, powerplant_turbine_info — keyed exactly like the telemetry and carrying the name as a label (inverter_name, gak_name, string_name, meter_name, turbine_name). Join them onto the telemetry with the following pattern (this is what the managed dashboard does):
sum by (inverter_id, inverter_name) (
(
powerplant_inverter_power_ac{park="${park}"}
* on (park, inverter_id) group_left(inverter_name)
sgn(topk_last(1, last_over_time(powerplant_inverter_info{park="${park}"}[7d] @ (now()))) by (park, inverter_id))
)
or on (park, inverter_id) powerplant_inverter_power_ac{park="${park}"}
)
How it works: last_over_time(...[7d] @ (now())) picks the newest info point for each component as of now, so a rename is reflected on every time range; sgn() turns it into a 1 that the multiplication keeps; group_left(inverter_name) copies the name onto the telemetry; and the or on (...) branch keeps a component visible (by its id) if it has no info series yet. For a combiner box join on (park, inverter_id, gak_id) with gak_name; for a string on (park, inverter_id, gak_id, string_number) — the info series only carries gak_id when the string sits behind a combiner box, mirroring the telemetry. Never chart, sum or alert on an info series itself.
The four shapes of a series
The report engine reads every series in one of four ways. Use the same reading and your dashboard agrees with the report pages.
| Shape | What it is | Read it with |
|---|---|---|
| Counter (energy register) | A cumulative Wh / Wh/m² counter, monotonic | sum(increase(<metric>{...}[$__interval])) for a bar per bucket; running_sum(sum(increase(<metric>{...}[$__interval]))) for a cumulative curve; sum(increase(<metric>{...}[$__range])) for the period total |
| Minute gauge | A value per minute (power, voltage, temperature) | avg_over_time(<metric>{...}[$__interval]), summed (sum(...)) across a plant or averaged (avg by (...)) per component |
| Quarter-hour lane | One value per 15 minutes, stamped at the quarter (limits, settled curtailment, weather forecast, market prices) | last_over_time(<metric>{...}[15m]) — a quarter-hour bucket is the sample itself; never average it into finer steps |
| Trailing-day ratio | A ratio the platform recomputes daily as a trailing mean (performance ratio) | avg_over_time(<metric>{variant="clean"}[7d]) — never sum, never increase |
Energy is a register, not an integrated power curve
Never compute energy by integrating a power series yourself. Every energy quantity has its own cumulative counter, and the counter is what the platform reads. Two consequences:
- The platform's own counters (
powerplant_grid_energy_total,powerplant_inverter_energy_total, every*_expected_energy_total,*_radiation_energy_total,*_curtailment_*_energy_total, …) carry aboot_timelabel — one series per agent start. Always read them assum(increase(...)): the increase is taken per series and only then added, so a restart never produces a spike or a drop. For the current value of such a counter usemax without (boot_time) (...). - Raw device counters (
powerplant_energy_grid_total,powerplant_inverter_energy_ac_total) exist once per meter or inverter.sum(increase(...))adds them correctly; a baresum(...)of the raw values is only meaningful while every device reports.
Plant totals versus components
Source-derived analytics series (models, expected power, performance ratio, curtailment) exist at plant level and once per segment. Select the plant-level series with segment_id!~".+" or a segmented plant reads N + 1 times. The same applies to onshore wind settlement: per-turbine points carry turbine_id, the park sum carries none — use turbine_id!~".+" for the park lane.
For per-component panels group by the identity labels and, where you want names, join the info series as shown above. Per-component modelled power and PR (powerplant_<source>_inverter_power, powerplant_<source>_inverter_pr, and the gak / string twins) exist for the pyranometer and weather sources.
Status codes and states
powerplant_inverter_vendor_status, powerplant_turbine_vendor_status, battery_*_vendor_status are the maker's own codes: a gap means "not read", and the value is a code, never a quantity — do not sum or average them. powerplant_inverter_operating_state and powerplant_turbine_operating_state are the platform's standard states (0 unknown … 8 fault), numbered so that max by (inverter_id) reads as "the worst state in the bucket". Show them with a Grafana value mapping rather than as a line.
Common pitfalls
last_over_time(...[30y])to fetch "the latest value" scans the whole retention on every refresh. Use a window that matches the series cadence —[1h]for a minute gauge,[1d]for a daily value,[7d]for the info series.- Filtering on names (
inverter_name="WR 01") stops working after a rename. Filter oninverter_idand show the name through the info-series join. - Mixing lanes:
powerplant_pyranometer_powerwithoutclipping/prpins returns several lanes of the same quantity. Pin the lane you mean — the table below names the pins the reports use. - Multi-meter plants:
powerplant_power_gridis one series per meter.sum(...)them, or readpowerplant_grid_power, which is already the summed, minute-aligned plant series. - Timezone: series are stored in UTC and Grafana displays them in the browser's timezone. Daily values (configured facts, daily verdicts) are stamped at the plant's local midnight, so set the dashboard timezone to the plant's when you compare days.
The Report Series Catalogue
The platform's report and export pages are built from a fixed catalogue of series, each with a defined reading. The table lists every item with the metric it reads, the shape it is read as (see above), the label pins the reports apply, and the level (plant, per inverter, per combiner box, per string, per segment). Items marked solar are only emitted for solar plants; the report unit is the unit the report pages display — the stored series is always in base units (Wh, W, Wh/m²). A pin period="<YYYY-MM>" selects the delivery month of a settled lane.
Meters and production counters
| Series | Metric | Shape | Label pins | Level | Report unit |
|---|---|---|---|---|---|
| Grid feed-in | powerplant_energy_grid_total | Counter | — | Plant | kWh |
| Grid consumption | powerplant_energy_consumed_total | Counter | — | Plant | kWh |
| Grid reactive energy | powerplant_grid_energy_total_reactive | Counter | — | Plant | kVArh |
| Inverter AC production, sum (solar) | powerplant_inverter_energy_ac_total | Counter | — | Plant | kWh |
| Inverter energy, integrated (solar) | powerplant_inverter_energy_total | Counter | — | Plant | kWh |
| DC energy, sum of combiner boxes (solar) | powerplant_gak_energy_total | Counter | — | Plant | kWh |
| DC energy, sum of strings (solar) | powerplant_string_energy_total | Counter | — | Plant | kWh |
Plant power
| Series | Metric | Shape | Label pins | Level | Report unit |
|---|---|---|---|---|---|
| Grid feed-in power | powerplant_power_grid | Minute gauge | — | Plant | W |
| Grid reactive power | powerplant_grid_power_reactive | Minute gauge | — | Plant | var |
| Grid apparent power | powerplant_grid_power_apparent | Minute gauge | — | Plant | VA |
| Inverter AC power, sum (solar) | powerplant_inverter_power | Minute gauge | — | Plant | W |
| DC power, sum of combiner boxes (solar) | powerplant_gak_power | Minute gauge | — | Plant | W |
| DC power, sum of strings (solar) | powerplant_string_power | Minute gauge | — | Plant | W |
Plant-plane radiation
| Series | Metric | Shape | Label pins | Level | Report unit |
|---|---|---|---|---|---|
| Plant-plane radiation, pyranometer (solar) | powerplant_pyranometer_radiation_energy_total | Counter | — | Plant | kWh/m² |
| Plant-plane radiation, satellite (seamless) (solar) | powerplant_satellite_radiation_energy_total | Counter | model!="eumetsat_sarah3" | Plant | kWh/m² |
| Plant-plane radiation, satellite (SARAH-3) (solar) | powerplant_satellite_radiation_energy_total | Counter | model="eumetsat_sarah3" | Plant | kWh/m² |
| Plant-plane radiation, weather model (solar) | powerplant_weather_radiation_energy_total | Counter | — | Plant | kWh/m² |
| Plant-plane irradiance, pyranometer (solar) | powerplant_pyranometer_radiation_power | Minute gauge | segment_id!~".+" | Plant | W/m² |
| Plant-plane irradiance, satellite (seamless) (solar) | powerplant_satellite_radiation_power | Minute gauge | model!="eumetsat_sarah3", segment_id!~".+" | Plant | W/m² |
| Plant-plane irradiance, satellite (SARAH-3) (solar) | powerplant_satellite_radiation_power | Quarter-hour lane | model="eumetsat_sarah3", segment_id!~".+" | Plant | W/m² |
| Plant-plane irradiance, weather model (solar) | powerplant_weather_radiation_power | Quarter-hour lane | segment_id!~".+" | Plant | W/m² |
Modelled, expected and clear-sky production
| Series | Metric | Shape | Label pins | Level | Report unit |
|---|---|---|---|---|---|
| Expected production (pyranometer) (solar) | powerplant_pyranometer_expected_energy_total | Counter | clipping="considered", pr="valid", segment_id!~".+" | Plant | kWh |
| Expected production (satellite) (solar) | powerplant_satellite_expected_energy_total | Counter | clipping="considered", pr="valid", segment_id!~".+" | Plant | kWh |
| Expected production (weather model) (solar) | powerplant_weather_expected_energy_total | Counter | clipping="considered", pr="valid", segment_id!~".+" | Plant | kWh |
| Radiation model (pyranometer) (solar) | powerplant_pyranometer_energy_total | Counter | segment_id!~".+" | Plant | kWh |
| Radiation model (satellite) (solar) | powerplant_satellite_energy_total | Counter | model!="eumetsat_sarah3", segment_id!~".+" | Plant | kWh |
| Radiation model (weather model) (solar) | powerplant_weather_energy_total | Counter | segment_id!~".+" | Plant | kWh |
| Clear-sky production (solar) | powerplant_clearsky_energy_total | Counter | pr="none", clipping="considered", segment_id!~".+" | Plant | kWh |
| Expected power (pyranometer) (solar) | powerplant_pyranometer_expected_power | Minute gauge | clipping="considered", pr="valid", segment_id!~".+" | Plant | W |
| Expected power (satellite) (solar) | powerplant_satellite_expected_power | Minute gauge | clipping="considered", pr="valid", segment_id!~".+" | Plant | W |
| Expected power (weather model) (solar) | powerplant_weather_expected_power | Minute gauge | clipping="considered", pr="valid", segment_id!~".+" | Plant | W |
| Radiation model power (pyranometer) (solar) | powerplant_pyranometer_power | Minute gauge | segment_id!~".+", clipping="considered" | Plant | W |
| Radiation model power (satellite) (solar) | powerplant_satellite_power | Minute gauge | model!="eumetsat_sarah3", segment_id!~".+", clipping="considered" | Plant | W |
| Radiation model power (weather model) (solar) | powerplant_weather_power | Minute gauge | segment_id!~".+", clipping="considered" | Plant | W |
| Clear-sky power (solar) | powerplant_clearsky_power | Minute gauge | pr="none", clipping="considered", segment_id!~".+" | Plant | W |
Performance ratio
| Series | Metric | Shape | Label pins | Level | Report unit |
|---|---|---|---|---|---|
| Performance ratio (pyranometer) (solar) | powerplant_pyranometer_pr | Trailing-day ratio | variant="clean", boot_time!~".+", segment_id!~".+" | Plant | % |
| Performance ratio (satellite) (solar) | powerplant_satellite_pr | Trailing-day ratio | variant="clean", boot_time!~".+", segment_id!~".+" | Plant | % |
| Performance ratio (weather model) (solar) | powerplant_weather_pr | Trailing-day ratio | variant="clean", boot_time!~".+", segment_id!~".+" | Plant | % |
On-site sensors
| Series | Metric | Shape | Label pins | Level | Report unit |
|---|---|---|---|---|---|
| Ambient temperature, site sensor | powerplant_ambient_temperature | Minute gauge | — | Plant | °C |
| Module temperature, site sensor | powerplant_module_temperature | Minute gauge | — | Plant | °C |
| Wind speed, site sensor | powerplant_wind_speed | Minute gauge | — | Plant | m/s |
| Wind direction, site sensor | powerplant_wind_direction | Minute gauge | — | Plant | ° |
| Humidity, site sensor | powerplant_humidity | Minute gauge | — | Plant | % |
Power limits
| Series | Metric | Shape | Label pins | Level | Report unit |
|---|---|---|---|---|---|
| Power limit by grid operator | powerplant_max_power_by_grid | Quarter-hour lane | — | Plant | % |
| Power limit by direct marketer | powerplant_max_power_by_external | Quarter-hour lane | — | Plant | % |
Settled curtailment
| Series | Metric | Shape | Label pins | Level | Report unit |
|---|---|---|---|---|---|
| Curtailment energy, grid operator — Spitz (solar) | powerplant_pyranometer_curtailment_grid_energy_total | Counter | segment_id!~".+", marketer_limit="considered", negative_price_rule!~".+", turbine_id!~".+", method="bilarem", period="<YYYY-MM>" | Plant | kWh |
| Curtailment power, grid operator — Spitz (solar) | powerplant_pyranometer_curtailment_grid_power | Quarter-hour lane | segment_id!~".+", marketer_limit="considered", negative_price_rule!~".+", turbine_id!~".+", method="bilarem" | Plant | W |
| Curtailment energy, grid operator — Spitz light (solar) | powerplant_satellite_curtailment_grid_energy_total | Counter | segment_id!~".+", marketer_limit="considered", negative_price_rule!~".+", turbine_id!~".+", method="bilarem", period="<YYYY-MM>" | Plant | kWh |
| Curtailment power, grid operator — Spitz light (solar) | powerplant_satellite_curtailment_grid_power | Quarter-hour lane | segment_id!~".+", marketer_limit="considered", negative_price_rule!~".+", turbine_id!~".+", method="bilarem" | Plant | W |
| Curtailment energy, grid operator — Pauschal (solar) | powerplant_fixed_curtailment_grid_energy_total | Counter | segment_id!~".+", marketer_limit="considered", negative_price_rule!~".+", turbine_id!~".+", method="bilarem", period="<YYYY-MM>" | Plant | kWh |
| Curtailment power, grid operator — Pauschal (solar) | powerplant_fixed_curtailment_grid_power | Quarter-hour lane | segment_id!~".+", marketer_limit="considered", negative_price_rule!~".+", turbine_id!~".+", method="bilarem" | Plant | W |
| Curtailment energy, direct marketer — Spitz (solar) | powerplant_pyranometer_curtailment_marketer_energy_total | Counter | segment_id!~".+", marketer_limit!~".+", negative_price_rule!~".+", turbine_id!~".+", method="bilarem", period="<YYYY-MM>" | Per segment | kWh |
| Curtailment power, direct marketer — Spitz (solar) | powerplant_pyranometer_curtailment_marketer_power | Quarter-hour lane | segment_id!~".+", marketer_limit!~".+", negative_price_rule!~".+", turbine_id!~".+", method="bilarem" | Per segment | W |
| Curtailment energy, direct marketer — Spitz light (solar) | powerplant_satellite_curtailment_marketer_energy_total | Counter | segment_id!~".+", marketer_limit!~".+", negative_price_rule!~".+", turbine_id!~".+", method="bilarem", period="<YYYY-MM>" | Per segment | kWh |
| Curtailment power, direct marketer — Spitz light (solar) | powerplant_satellite_curtailment_marketer_power | Quarter-hour lane | segment_id!~".+", marketer_limit!~".+", negative_price_rule!~".+", turbine_id!~".+", method="bilarem" | Per segment | W |
| Curtailment energy, direct marketer — Pauschal (solar) | powerplant_fixed_curtailment_marketer_energy_total | Counter | segment_id!~".+", marketer_limit!~".+", negative_price_rule!~".+", turbine_id!~".+", method="bilarem", period="<YYYY-MM>" | Per segment | kWh |
| Curtailment power, direct marketer — Pauschal (solar) | powerplant_fixed_curtailment_marketer_power | Quarter-hour lane | segment_id!~".+", marketer_limit!~".+", negative_price_rule!~".+", turbine_id!~".+", method="bilarem" | Per segment | W |
Inverters
| Series | Metric | Shape | Label pins | Level | Report unit |
|---|---|---|---|---|---|
| AC production per inverter (solar) | powerplant_inverter_energy_ac_total | Counter | — | Per inverter | kWh |
| AC power per inverter (solar) | powerplant_inverter_power_ac | Minute gauge | — | Per inverter | W |
| DC input per inverter (solar) | powerplant_inverter_energy_dc_total | Counter | — | Per inverter | kWh |
| DC power per inverter (solar) | powerplant_inverter_power_dc | Minute gauge | — | Per inverter | W |
| Reactive power per inverter (solar) | powerplant_inverter_power_reactive | Minute gauge | — | Per inverter | var |
| Phase voltages per inverter (solar) | powerplant_inverter_voltage_ac__phase__L1_L2 | Minute gauge | — | Per inverter | V |
| Phase currents per inverter (solar) | powerplant_inverter_current_ac__phase__L1 | Minute gauge | — | Per inverter | A |
| Grid frequency per inverter (solar) | powerplant_inverter_frequency | Minute gauge | — | Per inverter | Hz |
| Power factor per inverter (solar) | powerplant_inverter_cos | Minute gauge | — | Per inverter | cos φ |
| Temperature per inverter (solar) | powerplant_inverter_temperature | Minute gauge | — | Per inverter | °C |
| Insulation resistance per inverter (solar) | powerplant_inverter_resistance_iso | Minute gauge | — | Per inverter | Ω |
| Operating state per inverter (solar) | powerplant_inverter_operating_state | Quarter-hour lane | — | Per inverter | — |
| Radiation-based power per inverter (pyranometer) (solar) | powerplant_pyranometer_inverter_power | Quarter-hour lane | — | Per inverter | W |
| Performance ratio per inverter (pyranometer) (solar) | powerplant_pyranometer_inverter_pr | Trailing-day ratio | variant="clean" | Per inverter | % |
| Radiation-based power per inverter (weather model) (solar) | powerplant_weather_inverter_power | Quarter-hour lane | — | Per inverter | W |
| Performance ratio per inverter (weather model) (solar) | powerplant_weather_inverter_pr | Trailing-day ratio | variant="clean" | Per inverter | % |
Combiner boxes
| Series | Metric | Shape | Label pins | Level | Report unit |
|---|---|---|---|---|---|
| DC energy per combiner box (solar) | powerplant_gak_energy_total | Counter | — | Per combiner box | kWh |
| DC power per combiner box (solar) | powerplant_gak_power | Minute gauge | — | Per combiner box | W |
| Temperature per combiner box (solar) | powerplant_gak_temperature | Minute gauge | — | Per combiner box | °C |
| Radiation-based power per combiner box (pyranometer) (solar) | powerplant_pyranometer_gak_power | Quarter-hour lane | — | Per combiner box | W |
| Performance ratio per combiner box (pyranometer) (solar) | powerplant_pyranometer_gak_pr | Trailing-day ratio | variant="clean" | Per combiner box | % |
| Radiation-based power per combiner box (weather model) (solar) | powerplant_weather_gak_power | Quarter-hour lane | — | Per combiner box | W |
| Performance ratio per combiner box (weather model) (solar) | powerplant_weather_gak_pr | Trailing-day ratio | variant="clean" | Per combiner box | % |
Strings
| Series | Metric | Shape | Label pins | Level | Report unit |
|---|---|---|---|---|---|
| DC energy per string (solar) | powerplant_string_energy_total | Counter | — | Per string | kWh |
| DC power per string (solar) | powerplant_string_power | Minute gauge | — | Per string | W |
| Voltage per string (solar) | powerplant_string_voltage | Minute gauge | — | Per string | V |
| Current per string (solar) | powerplant_string_current | Minute gauge | — | Per string | A |
| Radiation-based power per string (pyranometer) (solar) | powerplant_pyranometer_string_power | Quarter-hour lane | — | Per string | W |
| Performance ratio per string (pyranometer) (solar) | powerplant_pyranometer_string_pr | Trailing-day ratio | variant="clean" | Per string | % |
| Radiation-based power per string (weather model) (solar) | powerplant_weather_string_power | Quarter-hour lane | — | Per string | W |
| Performance ratio per string (weather model) (solar) | powerplant_weather_string_pr | Trailing-day ratio | variant="clean" | Per string | % |
Battery
| Series | Metric | Shape | Label pins | Level | Report unit |
|---|---|---|---|---|---|
| Charged energy | battery_box_energy_dc_in_total | Counter | — | Plant | kWh |
| Discharged energy | battery_box_energy_dc_out_total | Counter | — | Plant | kWh |
| Battery DC power | battery_box_power_dc | Minute gauge | — | Plant | W |
| Battery DC voltage | battery_box_voltage_dc | Minute gauge | — | Plant | V |
| Battery DC current | battery_box_current_dc | Minute gauge | — | Plant | A |
| Battery AC frequency | battery_box_frequency | Minute gauge | — | Plant | Hz |
| State of charge | battery_box_soc | Minute gauge | — | Plant | % |
| State of health | battery_box_soh | Minute gauge | — | Plant | % |
| Stored energy | battery_box_energy_charged | Minute gauge | — | Plant | kWh |
| Battery temperature | battery_box_temperature | Minute gauge | — | Plant | °C |
| Setpoints received | powerplant_battery_setpoint_external | Minute gauge | — | Plant | % |
Weather
| Series | Metric | Shape | Label pins | Level | Report unit |
|---|---|---|---|---|---|
| Air temperature (2 m) | weather_temperature | Quarter-hour lane | height="2m" | Plant | °C |
| Dew point (2 m) | weather_dew_point | Quarter-hour lane | height="2m" | Plant | °C |
| Apparent temperature | weather_apparent_temperature | Quarter-hour lane | — | Plant | °C |
| Relative humidity (2 m) | weather_humidity | Quarter-hour lane | height="2m" | Plant | % |
| Cloud cover | weather_clouds | Quarter-hour lane | — | Plant | % |
| Wind speed (10 m) | weather_wind_speed | Quarter-hour lane | height="10m" | Plant | m/s |
| Wind gusts (10 m) | weather_wind_gusts | Quarter-hour lane | height="10m" | Plant | m/s |
| Wind direction (10 m) | weather_wind_direction | Quarter-hour lane | height="10m" | Plant | ° |
| Precipitation | weather_precipitation | Quarter-hour lane | — | Plant | mm |
| Rain | weather_rain | Quarter-hour lane | — | Plant | mm |
| Snowfall | weather_snowfall | Quarter-hour lane | — | Plant | cm |
| Snow depth | weather_snow_depth | Quarter-hour lane | — | Plant | m |
| Visibility | weather_visibility | Quarter-hour lane | — | Plant | m |
| Global horizontal irradiance (W/m²) | weather_shortwave_radiation | Quarter-hour lane | — | Plant | W/m² |
| Diffuse horizontal irradiance (W/m²) | weather_diffuse_radiation | Quarter-hour lane | — | Plant | W/m² |
| Direct normal irradiance (W/m²) | weather_direct_normal_irradiance | Quarter-hour lane | — | Plant | W/m² |
| Extraterrestrial irradiance (W/m²) | weather_terrestrial_radiation | Quarter-hour lane | — | Plant | W/m² |
Market prices
| Series | Metric | Shape | Label pins | Level | Report unit |
|---|---|---|---|---|---|
| Day-ahead spot price (DE-LU) | market_spot_price | Quarter-hour lane | zone="DE-LU", sequence="1", source="entsoe" | Plant | EUR/MWh |
| Mischpreis (official) | market_price_mischpreis | Quarter-hour lane | source="netztransparenz", unit="eur_mwh" | Plant | EUR/MWh |
Infrastructure
| Series | Metric | Shape | Label pins | Level | Report unit |
|---|---|---|---|---|---|
| Data completeness (solar) | powerplant_inverter_data_complete | Minute gauge | — | Plant | ratio 0..1 |
| Agent tunnel | agent_saas_vpn_connected | Minute gauge | servicetype="data-scraper" | Plant | ratio 0..1 |
| Logger health, worst | scraper_health_state | Quarter-hour lane | — | Plant | — |
Related Documentation
- Using Grafana as an External Read Platform — reaching the provisioned Grafana and the managed dashboard
- Metric Collection — the complete metric catalogue with units and labels
- MiroxQL Query Language — the same series, queried from the platform and turned into custom metrics for reports
- Metrics Export API — cleaned, aggregated metrics as CSV or JSON