Metric Collection
Mirox gathers performance data from your renewable energy plants into a single, standardized metric vocabulary — the foundation for every monitoring, analysis, reporting, and forecasting capability on the platform. This page is the reference catalog of what is measured and how the measurements are organized.
The full taxonomy spans 458 standardized metric names across twelve families: plant production (powerplant), battery storage, the site's alarm system, weather inputs, weather-derived models, and several operational families that describe the collection itself — network monitoring, the agents, the operator fleet, basic network reachability, and the scraper sources. The tables below document the families you will chart most often; the operational families are summarized in the Network Metrics and Agent Metrics sections.
Data Scraper Architecture
At the core of metric collection is the Data Scraper, the edge component that collects time-series data from your plants. Rather than a single generic protocol engine, it uses a dedicated adapter per device family (data loggers, inverters, meters, battery systems), each built for that vendor's interface. The Data Scraper can operate in two deployment modes:
Cloud-Based Collection
When deployed in the cloud:
- Connects to solar parks via secure internet connections
- Aggregates data from multiple sites centrally
- Handles connection management and retry logic
- Optimizes bandwidth usage through intelligent polling
Edge-Based Collection
When deployed at the edge (on-site):
- Directly interfaces with local equipment for minimum latency
- Operates with local buffering to handle internet outages
- Performs preliminary data validation and filtering
- Synchronizes with the cloud when connectivity is available
The dual-mode architecture ensures reliable data collection regardless of site connectivity conditions or system scale.
Collected Metrics
The metric collection system gathers a comprehensive set of measurements that provide complete visibility into renewable energy plant performance. Metrics are grouped along three orthogonal axes:
- Site Metrics describe the physical site itself — its powerplant, its battery storage, its alarm system, and the weather around it.
- Network Metrics describe the connectivity between the site and the cloud.
- Agent Metrics describe the data-collection agents themselves — the scraper sources and the supporting infrastructure services running on the IoT device.
Site Metrics
Site metrics are the raw, time-series measurements collected directly from the equipment installed at a renewable energy site. They are partitioned by domain into the powerplant (PV inverters, grid connection, etc.), the battery energy storage system (BESS), the site's alarm system, and the weather (forecast and modelled).
Powerplant Metrics
Grid Metrics
| Metric Name | Type | Unit |
|---|---|---|
| powerplant_energy_grid_total | Energy | Wh |
| powerplant_energy_grid_out_total | Energy | Wh |
| powerplant_grid_energy_total_reactive | Energy | VArh |
| powerplant_grid_energy_total_apparent | Energy | VAh |
| powerplant_power_grid | Power | W |
| powerplant_grid_power_reactive | Power | VAr |
| powerplant_grid_power_apparent | Power | VA |
Naming Convention Note
The powerplant_energy_grid_* and powerplant_power_grid metrics do not follow the standard naming pattern (powerplant_grid_energy_* and powerplant_grid_power) due to legacy reasons. Other grid metrics follow the standard powerplant_grid_* pattern. These legacy metric names will be updated to follow the standard pattern in a future release.
Inverter Metrics
| Metric Name | Type | Unit |
|---|---|---|
| powerplant_inverter_energy_ac_total | Energy | Wh |
| powerplant_inverter_energy_dc_total | Energy | Wh |
| powerplant_inverter_energy_consumed_total | Energy | Wh |
| powerplant_inverter_power_ac | Power | W |
| powerplant_inverter_power_dc | Power | W |
| powerplant_inverter_power_reactive | Power | VAr |
| powerplant_inverter_power_max | Power | W |
| powerplant_inverter_setpoint_power_active | Setpoint | W |
| powerplant_inverter_setpoint_power_active_percent | Setpoint | % |
| powerplant_inverter_setpoint_power_reactive | Setpoint | VAr |
| powerplant_inverter_max_power | Shutdown | % |
| powerplant_inverter_voltage_ac | Voltage | V |
| powerplant_inverter_current_ac | Current | A |
| powerplant_inverter_voltage_dc | Voltage | V |
| powerplant_inverter_current_dc | Current | A |
| powerplant_inverter_resistance_iso | Resistance | Ohm |
| powerplant_inverter_vendor_status | Status | code |
| powerplant_inverter_cos | Power Factor | - |
| powerplant_inverter_frequency | Frequency | Hz |
| powerplant_inverter_temperature | Temperature | °C |
| powerplant_inverter_current_ac_phase | Current | A |
| powerplant_inverter_voltage_ac__phase__L1_L2 | Voltage | V |
| powerplant_inverter_voltage_ac__phase__L2_L3 | Voltage | V |
| powerplant_inverter_voltage_ac__phase__L3_L1 | Voltage | V |
| powerplant_inverter_current_ac__phase__L1 | Current | A |
| powerplant_inverter_current_ac__phase__L2 | Current | A |
| powerplant_inverter_current_ac__phase__L3 | Current | A |
Junction Box (GAK) Metrics
| Metric Name | Type | Unit |
|---|---|---|
| powerplant_gak_voltage | Voltage | V |
| powerplant_gak_current | Current | A |
| powerplant_gak_power | Power | W |
| powerplant_gak_energy_total | Energy | Wh |
| powerplant_gak_temperature | Temperature | °C |
String Metrics
| Metric Name | Type | Unit |
|---|---|---|
| powerplant_string_voltage | Voltage | V |
| powerplant_string_current | Current | A |
| powerplant_string_power | Power | W |
| powerplant_string_energy_total | Energy | Wh |
Control Metrics
| Metric Name | Type | Unit |
|---|---|---|
| powerplant_max_power_by_grid | Shutdown | % |
| powerplant_max_power_by_external | Shutdown | % |
| powerplant_max_power_by_external_w | Shutdown | W |
| powerplant_max_power_by_local | Shutdown | % |
| powerplant_battery_setpoint_external | Control | % |
| powerplant_battery_setpoint_local_w | Control | W |
| powerplant_control_connection_grid | Control | bool |
| powerplant_control_connection_external | Control | bool |
| powerplant_control_interface_ready | Control | bool |
| powerplant_power_max | Power | W |
| powerplant_max_power_source | Control | - |
Irradiance Metrics
| Metric Name | Type | Unit |
|---|---|---|
| powerplant_solar_radiation | Irradiance | W/m² |
| powerplant_energy_irradiation_total | Energy | Wh |
| powerplant_solar_ghi_reference | Irradiance | W/m² |
| powerplant_solar_ghi_reference_energy | Energy | Wh |
Environmental Metrics
| Metric Name | Type | Unit |
|---|---|---|
| powerplant_humidity | Humidity | % |
| powerplant_ambient_temperature | Temperature | °C |
| powerplant_module_temperature | Temperature | °C |
| powerplant_wind_speed | Wind Speed | m/s |
| powerplant_wind_direction | Wind Direction | ° |
Loss Metrics
| Metric Name | Type | Unit |
|---|---|---|
| powerplant_energy_loss_total | Energy | Wh |
| powerplant_power_loss | Power | W |
Report Metrics
| Metric Name | Type | Unit |
|---|---|---|
| powerplant_power_report | Power | W |
| powerplant_energy_report_total | Energy | Wh |
| powerplant_energy_radiation_total | Energy | Wh |
Digital Twin Metrics
| Metric Name | Type | Unit |
|---|---|---|
| powerplant_grid_power_simulation | Power | W |
| powerplant_grid_energy_total_simulation | Energy | Wh |
| powerplant_grid_prrc | PRRC | - |
| powerplant_grid_sim_err | Error | - |
| powerplant_inverter_power_ac_simulation | Power | W |
| powerplant_inverter_energy_ac_total_simulation | Energy | Wh |
| powerplant_inverter_prrc | PRRC | - |
| powerplant_inverter_sim_err | Error | - |
| powerplant_gak_power_simulation | Power | W |
| powerplant_gak_energy_total_simulation | Energy | Wh |
| powerplant_gak_prrc | PRRC | - |
| powerplant_gak_sim_err | Error | - |
| powerplant_string_power_simulation | Power | W |
| powerplant_string_energy_total_simulation | Energy | Wh |
| powerplant_string_shadow_factor | Factor | - |
| powerplant_string_prrc | PRRC | - |
| powerplant_string_sim_err | Error | - |
Edge Analytics Metrics
The Data Scraper computes a set of analytics directly at the plant and publishes them as chartable series alongside the raw measurements. These are the series behind the platform's performance-ratio, curtailment and settlement features. Most families exist once per irradiance source — written <source> below, one of pyranometer (on-site sensors), satellite (satellite-derived irradiance for the site) or weather (modelled irradiance from meteorological data) — so each source keeps its own independent series and a drifting input can never silently distort the others.
Irradiance & modelled production
The plane-of-array irradiance each source sees, and the theoretical (uncurtailed) plant output modelled from it. One set per source — 13 series in total.
| Metric Name Pattern | Type | Unit | Description |
|---|---|---|---|
powerplant_<source>_radiation_power | Irradiance | W/m² | Plane-of-array irradiance from this source — the sunlight actually hitting the modules. |
powerplant_<source>_radiation_energy_total | Energy | Wh/m² | Cumulative irradiation integrated from the series above. |
| powerplant_pyranometer_ghi_radiation_power | Irradiance | W/m² | Cleaned plant-mean horizontal irradiance (GHI) — only present when the plant has horizontal pyranometers. |
powerplant_<source>_power | Power | W | Theoretical plant output modelled from this source's irradiance and the plant's module orientations. |
powerplant_<source>_energy_total | Energy | Wh | Cumulative modelled energy. |
Performance ratio
Actual production compared against the modelled production — one independent PR lane per irradiance source, at plant level. See Expected Power and Performance Ratio for how the filters work.
| Metric Name Pattern | Type | Unit | Description |
|---|---|---|---|
powerplant_<source>_pr | Performance Ratio | - | Measured production over modelled production. |
powerplant_<source>_pr_filter | Filter | - | Per-filter breakdown — which quality filter (low light, clipping, curtailment, frost/snow/fog, data gaps) excluded a moment from the clean PR. |
powerplant_<source>_pr_validity | Validity | bool | 1 when the moment passed every filter and counts toward the trustworthy PR. |
Expected power & energy
The PR-calibrated expectation — the modelled production scaled by the plant's real-world efficiency. This is the baseline the component health watchdog holds live production against.
| Metric Name Pattern | Type | Unit | Description |
|---|---|---|---|
powerplant_<source>_expected_power | Power | W | Expected plant output under the current conditions. |
powerplant_<source>_expected_energy_total | Energy | Wh | Cumulative expected energy. |
Per-component model & performance ratio
The component-level analogue of the plant-wide model: theoretical output and PR of a single inverter, combiner box (GAK) or string, using that component's own orientation and peak power. Emitted for the weather and pyranometer sources; series carry the component's identity labels. <component> is one of inverter, gak, string — 12 series in total, plus the daily completion marker.
| Metric Name Pattern | Type | Unit | Description |
|---|---|---|---|
powerplant_<source>_<component>_power | Power | W | Modelled output of one component from this source's irradiance. |
powerplant_<source>_<component>_pr | Performance Ratio | - | Per-component performance ratio (clean, filtered values only). |
| powerplant_simulation_day_complete | Marker | - | Stamped once per source and day when the day's model series are verified complete. |
Live & forecast power lanes
Real-time and forward-looking production references.
| Metric Name | Type | Unit | Description |
|---|---|---|---|
| powerplant_pyranometer_live_power | Power | W | Real-time PR-adjusted expected power from on-site sensors. |
| powerplant_satellite_live_power | Power | W | Real-time PR-adjusted expected power from satellite irradiance. |
| powerplant_pyranometer_live_energy_total | Energy | Wh | Cumulative energy of the pyranometer live lane. |
| powerplant_satellite_live_energy_total | Energy | Wh | Cumulative energy of the satellite live lane. |
| powerplant_clearsky_power | Power | W | Theoretical ideal-conditions (clear-sky) output — the physical ceiling for a settled day. |
| powerplant_clearsky_energy_total | Energy | Wh | Cumulative clear-sky energy. |
| powerplant_weather_forecast_power | Power | W | Day-ahead production forecast derived from weather data. |
| powerplant_weather_forecast_energy_total | Energy | Wh | Cumulative forecast energy. |
| powerplant_clearsky_forecast_power | Power | W | Clear-sky forecast — the ideal-conditions ceiling for the forecast horizon. |
| powerplant_clearsky_forecast_energy_total | Energy | Wh | Cumulative clear-sky forecast energy. |
Curtailment
Foregone production attributed to its cause — <party> is grid (a grid-operator setpoint limits production) or marketer (the direct marketer's cap limits production). Each combination is emitted as instantaneous power and cumulative energy, in two variants: the settled series and a live series computed in real time. 24 series in total.
| Metric Name Pattern | Type | Unit | Description |
|---|---|---|---|
powerplant_<source>curtailment<party>_power | Power | W | Settled curtailment loss — production foregone because of the binding curtailer. |
powerplant_<source>curtailment<party>_energy_total | Energy | Wh | Cumulative settled curtailment energy. |
powerplant_<source>live_curtailment<party>_power | Power | W | The same attribution computed live, at real timestamps. |
powerplant_<source>live_curtailment<party>_energy_total | Energy | Wh | Cumulative live curtailment energy. |
Settlement families
Series backing curtailment settlement and compensation. The fixed (flat-rate) family implements the source-independent settlement method: the reference is the average measured grid power over the 15 minutes before the curtailment began, frozen for the whole measure — no irradiance input needed. The Mischpreis family prices curtailment energy with the quarter-hourly German market mixed price, giving a revenue value in EUR per 15-minute interval.
| Metric Name Pattern | Type | Unit | Description |
|---|---|---|---|
powerplant_fixed_curtailment_<party>_power | Power | W | Flat-rate curtailment loss against the frozen pre-curtailment reference. |
powerplant_fixed_curtailment_<party>_energy_total | Energy | Wh | Cumulative flat-rate curtailment energy. |
| powerplant_fixed_curtailment_reference_power | Power | W | The last valid uncurtailed reference power the flat-rate method freezes at curtailment onset. |
powerplant_mischpreis_<variant>_<party>_revenue | Revenue | EUR | Market value of the curtailed energy per 15-minute interval. <variant> is one of the curtailment lanes above: pyranometer, satellite, weather, their _live counterparts, or fixed — 14 series in total. |
Battery Metrics
The battery_* family is the vendor-independent metric vocabulary for any Battery Energy Storage System (BESS). It follows a strict component hierarchy where instance identification lives in labels, not in the metric name:
battery_environment_* ambient sensors around the BESS
battery_pcs_* grid-tied Power Conversion System in front of the box
battery_box_* a BESS box / container — the DC battery
└── battery_storage_* a cabinet / rack inside the box
└── battery_module_* a module inside the cabinet
└── battery_cell_* an individual cell inside the module
The battery hierarchy (box → storage → module → cell) describes the DC battery itself. The PCS (battery_pcs_*) is the grid-tied AC↔DC converter that sits in front of the box — it owns the AC side of the BESS plus its own converter telemetry, and is identified per device by the pcs label. Modelling it as its own component lets the battery and its converter be collected as two independent devices for the same container without their series colliding.
This is a collection-only spec — adapters publish raw values exactly as the vendor exposes them, with no aggregations, derivations, _min / _max / _mean modifiers, or status / health flags. All interpretation, roll-ups and alarming are downstream concerns of the digital twin.
Two distinct kinds of "voltage"
The spec deliberately separates two physically different quantities that both happen to be measured in volts:
- Cell voltage (
*_cell_voltage) — the chemical terminal voltage produced by the cells. At the cell level it is the single-cell voltage (~3.2 V for an LFP cell). At higher levels it is the sum of all cell voltages on the same series string. It changes only with state-of-charge. - Interface voltage (
*_voltage_dc,_dc_in,_dc_out) — what is being fed in or pulled out of the battery at its electrical terminals. Differs from the cell voltage by I·R during charge / discharge.
The two are physically the same number when the battery is at rest; they diverge by the IR drop the moment any current flows.
Direction-aware DC variants
For each DC quantity (voltage_dc, current_dc, power_dc) at the box, storage and module levels there are three variants: *_dc (signed, single register from the vendor), *_dc_in (always positive — value while charging) and *_dc_out (always positive — value while discharging). Adapters publish whichever variant(s) the vendor actually exposes.
Environment
Ambient sensors around the BESS — distinguished by the sensor label.
| Metric Name | Type | Unit |
|---|---|---|
| battery_environment_temperature | Temperature | °C |
| battery_environment_humidity | Humidity | % |
PCS Level
The grid-tied Power Conversion System — the AC↔DC converter in front of the battery box. It owns the AC side of the BESS (which the DC battery never measures), plus its own DC-bus reading, the battery state it relays, and converter-side telemetry. A PCS is a distinct device, identified by the pcs label; phase distinguishes per-phase AC quantities. Sign convention: positive = charging (grid → battery); direction is resolved from the directional energy counters, never from a status bit.
DC bus
The converter's own view of the DC link — the battery's authoritative DC state remains at box level.
| Metric Name | Type | Unit | Description |
|---|---|---|---|
| battery_pcs_voltage_dc | Voltage | V | DC-bus voltage measured at the converter. |
| battery_pcs_current_dc | Current | A | DC current. Signed (+ = charging). |
| battery_pcs_power_dc | Power | W | DC power. Signed. |
AC side
| Metric Name | Type | Unit | Description |
|---|---|---|---|
| battery_pcs_voltage_ac | Voltage | V | RMS line-to-line AC voltage. |
| battery_pcs_voltage_ac__phase__L1_L2 | Voltage | V | Per-phase (line-to-line) AC voltage. |
| battery_pcs_voltage_ac__phase__L2_L3 | Voltage | V | Per-phase (line-to-line) AC voltage. |
| battery_pcs_voltage_ac__phase__L3_L1 | Voltage | V | Per-phase (line-to-line) AC voltage. |
| battery_pcs_current_ac | Current | A | RMS AC current. |
| battery_pcs_current_ac__phase__L1 | Current | A | Per-phase AC current. |
| battery_pcs_current_ac__phase__L2 | Current | A | Per-phase AC current. |
| battery_pcs_current_ac__phase__L3 | Current | A | Per-phase AC current. |
| battery_pcs_frequency | Frequency | Hz | AC frequency. |
| battery_pcs_power_ac | Power | W | Active power, AC side. Signed. |
| battery_pcs_power_ac_in | Power | W | Active power into the battery (charging from grid). Always positive. |
| battery_pcs_power_ac_out | Power | W | Active power out of the battery (discharging to grid). Always positive. |
| battery_pcs_power_ac_reactive | Reactive Power | VAr | Reactive power, AC side. Signed. |
| battery_pcs_power_factor | Power Factor | - | Power factor (−1…1). |
Setpoints
Read-only view of the active dispatch targets.
| Metric Name | Type | Unit | Description |
|---|---|---|---|
| battery_pcs_power_ac_setpoint | Setpoint | W | Active-power setpoint. Signed. |
| battery_pcs_power_ac_setpoint_reactive | Setpoint | VAr | Reactive-power setpoint. Signed. |
| battery_pcs_power_factor_setpoint | Setpoint | - | Power-factor setpoint. |
Energy counters
Published exactly as the device's own lifetime counters report them — separate directional counters, so no sign decision is needed.
| Metric Name | Type | Unit | Description |
|---|---|---|---|
| battery_pcs_energy_ac_in_total | Energy | Wh | Lifetime AC energy charged into the battery. |
| battery_pcs_energy_ac_out_total | Energy | Wh | Lifetime AC energy discharged from the battery. |
Relayed battery state & converter limits
The PCS relays a battery-management summary and reports its own dynamic operating limits. Where the battery management system is collected directly, battery_box_soc is authoritative and the relayed value is redundant; on a PCS-only site it is the only state of charge available.
| Metric Name | Type | Unit | Description |
|---|---|---|---|
| battery_pcs_soc | State of Charge | % | State of charge relayed from the battery management system (0–100). |
| battery_pcs_current_limit_charge | Limit | A | Maximum allowed charge current (dynamic). |
| battery_pcs_current_limit_discharge | Limit | A | Maximum allowed discharge current. |
| battery_pcs_power_limit_charge | Limit | W | Maximum allowed charge power. |
| battery_pcs_power_limit_discharge | Limit | W | Maximum allowed discharge power. |
| battery_pcs_temperature | Temperature | °C | Converter temperature — the converter's thermal state, not a battery cell temperature. |
Box Level
The top of the battery side — a BESS box / container. Required label: box. Optional labels: inverter, phase. AC-side metrics are only present when the AC↔DC conversion physically sits at box level.
AC-side energy flow
| Metric Name | Type | Unit |
|---|---|---|
| battery_box_voltage_ac | Voltage | V |
| battery_box_voltage_ac__phase__L1_L2 | Voltage | V |
| battery_box_voltage_ac__phase__L2_L3 | Voltage | V |
| battery_box_voltage_ac__phase__L3_L1 | Voltage | V |
| battery_box_current_ac | Current | A |
| battery_box_current_ac__phase__L1 | Current | A |
| battery_box_current_ac__phase__L2 | Current | A |
| battery_box_current_ac__phase__L3 | Current | A |
| battery_box_frequency | Frequency | Hz |
| battery_box_power_ac | Power | W |
| battery_box_power_ac_in | Power | W |
| battery_box_power_ac_out | Power | W |
| battery_box_power_ac_reactive | Reactive Power | VAr |
| battery_box_power_ac_setpoint | Setpoint | W |
| battery_box_power_ac_setpoint_reactive | Setpoint | VAr |
| battery_box_energy_ac_in_total | Energy | Wh |
| battery_box_energy_ac_out_total | Energy | Wh |
DC-side interface
| Metric Name | Type | Unit |
|---|---|---|
| battery_box_voltage_dc | Voltage | V |
| battery_box_voltage_dc_in | Voltage | V |
| battery_box_voltage_dc_out | Voltage | V |
| battery_box_current_dc | Current | A |
| battery_box_current_dc_in | Current | A |
| battery_box_current_dc_out | Current | A |
| battery_box_power_dc | Power | W |
| battery_box_power_dc_in | Power | W |
| battery_box_power_dc_out | Power | W |
| battery_box_energy_dc_in_total | Energy | Wh |
| battery_box_energy_dc_out_total | Energy | Wh |
Chemistry & state
| Metric Name | Type | Unit | Description |
|---|---|---|---|
| battery_box_cell_voltage | Voltage (sum) | V | Sum of cell voltages on the box DC bus. |
| battery_box_soc | State of Charge | % | Box-wide state of charge (0–100). |
| battery_box_soh | State of Health | % | Box-wide state of health (0–100). |
| battery_box_temperature | Temperature | °C | Box-level representative temperature. |
| battery_box_energy_nominal | Energy | Wh | Cell-installed nameplate energy at beginning-of-life. Drifts downward with SoH. |
| battery_box_energy_usable | Energy | Wh | Maximum usable energy — the static BMS-allowed capacity that SoC = 100 % corresponds to (typically 85–95 % of _nominal). |
| battery_box_energy_charged | Energy | Wh | Energy currently stored in the box, derived from soc / 100 × energy_usable. |
Storage Level
A cabinet / rack inside a box. Required labels: box, storage. AC metrics are rare at this level — they are present only when the AC↔DC conversion physically sits at storage level.
AC-side energy flow
The same AC vocabulary as the box level, without per-phase or setpoint variants.
| Metric Name | Type | Unit |
|---|---|---|
| battery_storage_voltage_ac | Voltage | V |
| battery_storage_current_ac | Current | A |
| battery_storage_frequency | Frequency | Hz |
| battery_storage_power_ac | Power | W |
| battery_storage_power_ac_in | Power | W |
| battery_storage_power_ac_out | Power | W |
| battery_storage_power_ac_reactive | Reactive Power | VAr |
| battery_storage_energy_ac_in_total | Energy | Wh |
| battery_storage_energy_ac_out_total | Energy | Wh |
DC-side interface
| Metric Name | Type | Unit |
|---|---|---|
| battery_storage_voltage_dc | Voltage | V |
| battery_storage_voltage_dc_in | Voltage | V |
| battery_storage_voltage_dc_out | Voltage | V |
| battery_storage_current_dc | Current | A |
| battery_storage_current_dc_in | Current | A |
| battery_storage_current_dc_out | Current | A |
| battery_storage_power_dc | Power | W |
| battery_storage_power_dc_in | Power | W |
| battery_storage_power_dc_out | Power | W |
| battery_storage_energy_dc_in_total | Energy | Wh |
| battery_storage_energy_dc_out_total | Energy | Wh |
Chemistry & state
| Metric Name | Type | Unit | Description |
|---|---|---|---|
| battery_storage_cell_voltage | Voltage (sum) | V | Sum of all cell voltages in the storage's series string. |
| battery_storage_soc | State of Charge | % | State of charge of this storage (0–100). |
| battery_storage_soh | State of Health | % | State of health of this storage (0–100). |
| battery_storage_temperature | Temperature | °C | Storage-level representative temperature. |
| battery_storage_energy_nominal | Energy | Wh | Cell-installed nameplate energy of this storage (beginning-of-life). |
| battery_storage_energy_usable | Energy | Wh | Maximum usable energy — the static BMS-allowed capacity that SoC = 100 % corresponds to (typically 85–95 % of _nominal). |
| battery_storage_energy_charged | Energy | Wh | Energy currently stored, derived from soc / 100 × energy_usable. |
| battery_storage_comm_quality | Quality | % | Communication-link quality at storage level (0–100). |
Module Level
A module inside a cabinet — the smallest unit that has its own BMS chip. Required labels: box, storage, module. AC metrics are practically never present here.
DC-side interface
| Metric Name | Type | Unit |
|---|---|---|
| battery_module_voltage_dc | Voltage | V |
| battery_module_voltage_dc_in | Voltage | V |
| battery_module_voltage_dc_out | Voltage | V |
| battery_module_current_dc | Current | A |
| battery_module_current_dc_in | Current | A |
| battery_module_current_dc_out | Current | A |
| battery_module_power_dc | Power | W |
| battery_module_power_dc_in | Power | W |
| battery_module_power_dc_out | Power | W |
| battery_module_energy_dc_in_total | Energy | Wh |
| battery_module_energy_dc_out_total | Energy | Wh |
Chemistry & state
| Metric Name | Type | Unit | Description |
|---|---|---|---|
| battery_module_cell_voltage | Voltage (sum) | V | Sum of cell voltages in this module's series string. |
| battery_module_soc | State of Charge | % | Module state of charge (0–100). |
| battery_module_soh | State of Health | % | Module state of health (0–100). |
| battery_module_temperature | Temperature | °C | Representative module temperature. |
| battery_module_energy_nominal | Energy | Wh | Maximum storable energy of this module. |
| battery_module_energy_usable | Energy | Wh | Maximum usable energy — the static BMS-allowed capacity that SoC = 100 % corresponds to. |
| battery_module_energy_charged | Energy | Wh | Energy currently stored, derived from soc / 100 × energy_usable. |
| battery_module_comm_quality | Quality | % | BMS comms quality between this module and its storage controller (0–100). |
Cell Level
The smallest physical unit. Cells are series-connected within a module and share the module current, so per-cell current and power are not meaningful. Required labels: box, storage, module, cell.
| Metric Name | Type | Unit |
|---|---|---|
| battery_cell_voltage | Voltage | V |
| battery_cell_temperature | Temperature | °C |
Weather Forecast Metrics
Daily Weather Metrics
| Metric Name | Type | Unit |
|---|---|---|
| weather_forecast_daily_shortwave_radiation_sum | Radiation | Wh/m² |
| weather_forecast_daily_precipitation_sum | Precipitation | mm |
| weather_forecast_daily_rain_sum | Rain | mm |
| weather_forecast_daily_showers_sum | Showers | mm |
| weather_forecast_daily_snowfall_sum | Snowfall | cm |
| weather_forecast_daily_precipitation_hours | Duration | h |
| weather_forecast_daily_weather_code | Code | - |
| weather_forecast_daily_temperature_2m_max | Temperature | °C |
| weather_forecast_daily_wind_speed_10m_max | Wind Speed | m/s |
| weather_forecast_daily_wind_gusts_10m_max | Wind Gusts | m/s |
| weather_forecast_daily_wind_direction_10m_dominant | Wind Direction | ° |
15-Minute Weather Metrics
| Metric Name | Type | Unit |
|---|---|---|
| weather_forecast_minutely_15_terrestrial_radiation | Radiation | W/m² |
| weather_forecast_minutely_15_shortwave_radiation | Radiation | W/m² |
| weather_forecast_minutely_15_diffuse_radiation | Radiation | W/m² |
| weather_forecast_minutely_15_direct_normal_irradiance | Irradiance | W/m² |
| weather_forecast_minutely_15_lightning_potential | Potential | - |
| weather_forecast_minutely_15_precipitation | Precipitation | mm |
| weather_forecast_minutely_15_snowfall | Snowfall | cm |
| weather_forecast_minutely_15_rain | Rain | mm |
| weather_forecast_minutely_15_weather_code | Code | - |
| weather_forecast_minutely_15_relative_humidity_2m | Humidity | % |
| weather_forecast_minutely_15_dew_point_2m | Temperature | °C |
| weather_forecast_minutely_15_apparent_temperature | Temperature | °C |
| weather_forecast_minutely_15_cloud_cover | Cloud Cover | % |
| weather_forecast_minutely_15_temperature_2m | Temperature | °C |
| weather_forecast_minutely_15_temperature_80m | Temperature | °C |
| weather_forecast_minutely_15_temperature_120m | Temperature | °C |
| weather_forecast_minutely_15_temperature_180m | Temperature | °C |
| weather_forecast_minutely_15_wind_speed_10m | Wind Speed | m/s |
| weather_forecast_minutely_15_wind_speed_80m | Wind Speed | m/s |
| weather_forecast_minutely_15_wind_speed_120m | Wind Speed | m/s |
| weather_forecast_minutely_15_wind_speed_180m | Wind Speed | m/s |
| weather_forecast_minutely_15_wind_direction_10m | Wind Direction | ° |
| weather_forecast_minutely_15_wind_direction_80m | Wind Direction | ° |
| weather_forecast_minutely_15_wind_direction_120m | Wind Direction | ° |
| weather_forecast_minutely_15_wind_direction_180m | Wind Direction | ° |
| weather_forecast_minutely_15_wind_gusts_10m | Wind Gusts | m/s |
| weather_forecast_minutely_15_snow_depth | Snow Depth | m |
| weather_forecast_minutely_15_visibility | Visibility | m |
Weather Calculation Metrics
| Metric Name | Type | Unit |
|---|---|---|
| weather_forecast_minutely_15_gti | Irradiance | W/m² |
| weather_forecast_minutely_15_gti_direct | Irradiance | W/m² |
| weather_forecast_minutely_15_gti_clearsky | Irradiance | W/m² |
| weather_forecast_minutely_15_ghi_direct | Irradiance | W/m² |
| weather_forecast_minutely_15_ghi_direct_clearsky | Irradiance | W/m² |
| weather_forecast_minutely_15_gti_direct_clearsky | Irradiance | W/m² |
| weather_forecast_minutely_15_gti_energy | Energy | Wh |
Weather Model Metrics
Weather Model Power Metrics
| Metric Name | Type | Unit |
|---|---|---|
| powerplant_power_model_dc | Power | W |
| powerplant_energy_model_dc_total | Energy | Wh |
| powerplant_power_model_ac | Power | W |
| powerplant_energy_model_ac_total | Energy | Wh |
| powerplant_power_model_grid | Power | W |
| powerplant_energy_model_grid_total | Energy | Wh |
| powerplant_energy_model_grid_in_total | Energy | Wh |
| powerplant_energy_model_grid_out_total | Energy | Wh |
Clearsky Model Power Metrics
| Metric Name | Type | Unit |
|---|---|---|
| powerplant_power_clearsky_dc | Power | W |
| powerplant_energy_clearsky_dc_total | Energy | Wh |
| powerplant_power_clearsky_ac | Power | W |
| powerplant_energy_clearsky_ac_total | Energy | Wh |
| powerplant_power_clearsky_grid | Power | W |
| powerplant_energy_clearsky_grid_total | Energy | Wh |
| powerplant_energy_clearsky_grid_in_total | Energy | Wh |
| powerplant_energy_clearsky_grid_out_total | Energy | Wh |
Alarm System Metrics
The alarm_* family is the site's own alarm signalling. Nothing in it is measured: every value is the position of a relay contact read through a controller's digital inputs — an intrusion alarm panel's own relay outputs, plus the supervision contacts of the communication cabinet the panel is wired through.
Every series is a 0/1 gauge normalized so that 1 always means "the condition is present" (door open, alarm raised, UPS on battery, breaker tripped) and 0 means normal, whatever polarity the contact has on the wire. Absence is never a zero: a signal the device did not serve this cycle is not published at all, and a contact the operator has declared unwired is withheld rather than left standing in alarm. Instance identification lives in the alarm label — the alarm system the signals belong to — never in the metric name.
Every signal except alarm_door_open also opens a park event of the same name while it is asserted; an open door is routine and stays a series only. See Alarm System for the page these series feed.
| Metric Name | Type | Unit | Description |
|---|---|---|---|
| alarm_door_open | State | 0/1 | The panel reports the gate or door as open. Series only — never an event. |
| alarm_triggered | State | 0/1 | The panel has raised an alarm. |
| alarm_fault | State | 0/1 | The panel reports a fault of its own. |
| alarm_cabinet_ups_alarm | State | 0/1 | The communication cabinet's UPS reports a fault. |
| alarm_cabinet_ups_on_battery | State | 0/1 | Mains supply lost — the UPS is carrying the cabinet. |
| alarm_cabinet_heating_breaker_tripped | State | 0/1 | The cabinet heating's circuit breaker has tripped. |
| alarm_cabinet_main_switch_off | State | 0/1 | The cabinet's main switch is off. |
Network Metrics
Network metrics describe the connectivity between the IoT device and the cloud, independent of any specific scraper or service.
| Metric Name | Type | Unit |
|---|---|---|
| network_ping_latency_ms | Latency | ms |
| network_ping_packet_loss_percent | Packet Loss | % |
| network_ping_success | Success | bool |
| network_connection_status | Status | - |
Agent Metrics
Agent metrics describe the data-collection agents themselves — both the per-source state of individual scraper adapters, and the overall health and traffic of the agents and supporting connectivity. These metrics let your dashboards correlate data gaps with adapter or connectivity failures rather than with the equipment under measurement.
Scraper Source Metrics
The Data Scraper emits one set of these metrics per active adapter source. Series are distinguished by the source, source_num and name labels, so that data gaps can be correlated directly with adapter health rather than with the equipment being measured.
| Metric Name | Type | Unit | Labels |
|---|---|---|---|
| scraper_health_state | State | code | source, source_num, name |
| scraper_cycles_total | Counter | - | source, source_num, name |
| scraper_errors_total | Counter | - | source, source_num, name |
| scraper_last_success_timestamp | Timestamp | s | source, source_num, name |
- scraper_health_state: Current adapter state, encoded as an integer:
0= initializing,1= healthy,2= unhealthy,3= reconnecting,4= frozen (the logger is returning stale/stuck values),5= paused. - scraper_cycles_total: Number of fetch cycles the adapter has executed since process start (resets on restart).
- scraper_errors_total: Number of fetch cycles that ended in an exception since process start (resets on restart).
- scraper_last_success_timestamp: Unix epoch seconds of the last successful fetch cycle. Only emitted after the first success.
Agent Service Metrics
These metrics track the health and network usage of the individual agent services (Data Scraper, Digital Twin, and supporting services) running on a device, so you can see whether a data gap is the equipment or the agent itself.
Network Traffic
| Metric Name | Type | Unit |
|---|---|---|
| agent_network_rx_bytes | Counter | bytes |
| agent_network_tx_bytes | Counter | bytes |
Agent Health
| Metric Name | Type | Unit |
|---|---|---|
| agent_health | Status | bool |
| agent_uptime_seconds | Duration | s |
| agent_boottime | Timestamp | s |
Organization VPN
Connectivity and traffic for the organization-wide VPN link between the plant and the cloud.
| Metric Name | Type | Unit |
|---|---|---|
| agent_organization_vpn_connected | Status | bool |
| agent_organization_vpn_rx_bytes | Counter | bytes |
| agent_organization_vpn_tx_bytes | Counter | bytes |
Direct VPN
Connectivity and traffic for each direct (per-plant) VPN tunnel. Series carry a vpn_name label so each tunnel is identified individually.
| Metric Name | Type | Unit |
|---|---|---|
| agent_direct_vpn_connected | Status | bool |
| agent_direct_vpn_rx_bytes | Counter | bytes |
| agent_direct_vpn_tx_bytes | Counter | bytes |
SaaS VPN
Connectivity and traffic for the built-in agent-to-cloud tunnel that carries the platform's remote-access traffic to the plant.
| Metric Name | Type | Unit |
|---|---|---|
| agent_saas_vpn_connected | Status | bool |
| agent_saas_vpn_rx_bytes | Counter | bytes |
| agent_saas_vpn_tx_bytes | Counter | bytes |
VPN Server
When the agent itself acts as a VPN server for incoming connections, these metrics report the server state and every connecting peer. Per-peer series carry the interface, peer_uid and peer_kind labels, so dashboards can tell user connections and site links apart.
| Metric Name | Type | Unit |
|---|---|---|
| agent_vpn_server_running | Status | bool |
| agent_vpn_server_peer_connected | Status | bool |
| agent_vpn_server_peer_rx_bytes | Counter | bytes |
| agent_vpn_server_peer_tx_bytes | Counter | bytes |
| agent_vpn_server_peer_last_handshake | Timestamp | s |
- agent_vpn_server_peer_last_handshake: Unix epoch seconds of the peer's last completed handshake;
0means the peer never completed one. For OpenVPN peers, which expose no per-handshake timestamp, the connected-since time is published under the same metric so one query covers both protocols.
Operator Metrics
The operator fleet pushes infrastructure metrics for VPN tunnel monitoring and operator health, letting you see the state of the cloud-side connectivity that links your plants to the platform.
VPN Tunnel Metrics
| Metric Name | Type | Unit | Labels |
|---|---|---|---|
| operator_vpn_connected | Status | bool | vpn_service, organization, cluster, region |
| operator_vpn_rx_bytes | Traffic | bytes | vpn_service, organization, cluster, region |
| operator_vpn_tx_bytes | Traffic | bytes | vpn_service, organization, cluster, region |
- operator_vpn_connected:
1if the VPN tunnel has a recent handshake (within the last 3 minutes),0otherwise - operator_vpn_rx_bytes: Total bytes received through the VPN tunnel (counter)
- operator_vpn_tx_bytes: Total bytes transmitted through the VPN tunnel (counter)
Operator Health Metrics
| Metric Name | Type | Unit | Labels |
|---|---|---|---|
| operator_health | Status | bool | operator, cluster, region |
| operator_uptime_seconds | Duration | s | operator, cluster, region |
| operator_cloud_response_age_seconds | Duration | s | operator, cluster, region |
- operator_health:
1if the operator has an active cloud connection,0if in timeout state - operator_uptime_seconds: Seconds since the operator process started
- operator_cloud_response_age_seconds: Seconds since the last successful cloud API response
Collection Process
The data collection process follows a structured workflow:
- Discovery: The system identifies all components to monitor based on park configuration
- Scheduling: Collection schedules are optimized based on metric importance and variability
- Retrieval: The data scraper connects to devices and collects raw measurements
- Validation: Collected data is validated for accuracy and range compliance
- Enrichment: Contextual information is added (timestamps, component identifiers, etc.)
- Transmission: Data is securely transmitted to the Time-Series Database
- Verification: The system confirms successful storage and availability
Integration Points
The metric collection system integrates with other platform components:
- Monitoring Dashboard: Provides real-time data visualization
- Event Detection: Supplies data for anomaly and issue identification
- Reporting Engine: Furnishes measurements for performance reports
- Analytics System: Feeds data into advanced performance calculations
- Forecasting Module: Provides historical data for prediction models
Data Security
All collected metrics are protected through multiple security measures:
- Encryption: Data is encrypted both in transit and at rest
- Access Control: Metrics are subject to the same permission model as other resources
- Auditing: All access to metric data is logged for compliance purposes
- Anonymization: Aggregated data used for benchmarking is anonymized
Extensibility
The metric collection system is designed for extensibility:
- New Device Families: We build a dedicated adapter for each device family on request — if your plant uses a logger, inverter, meter, or battery system we do not yet support, it can be added without a generic catch-all.
- Custom Metrics: Support for site-specific or equipment-specific measurements.
- External Data Sources: Weather and reference-irradiance series are pulled in alongside your plant data to power analysis and forecasting.
Related Features
- Data Scraper — the edge agent that collects these metrics with a dedicated adapter per device family
- Digital Twin — turns the raw metrics into simulated production, performance ratio, and loss findings
- Metrics Export API — query and download these metrics for your own use
- MiroxQL — the query format for programmatic and raw access to your collected metrics
- Real-Time Monitoring — live dashboards built on the collected metrics