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 |
| powerplant_energy_consumed_total | Energy | Wh |
| powerplant_grid_energy_total_reactive_capacitive | Energy | VArh |
| powerplant_grid_energy_total_reactive_inductive | Energy | VArh |
| powerplant_grid_power | Power | W |
| powerplant_grid_energy_total | Energy | Wh |
powerplant_grid_power is the minute-aligned interpolation of powerplant_power_grid, summed across every meter, and powerplant_grid_energy_total the platform's own boot-aware energy counter integrated from it — the one monotonic site-production series the analytics read (a multi-meter park has several raw powerplant_energy_grid_total counters). Both carry a boot_time label; read the counter with sum(increase(…)).
Naming Convention Note
The raw meter metrics powerplant_energy_grid_* and powerplant_power_grid do not follow the standard naming pattern (powerplant_grid_*) for legacy reasons and keep their names for compatibility. Do not read powerplant_grid_power / powerplant_grid_energy_total as renamed twins of them: those are the platform's minute-aligned calculator series described above — one summed plant series, not one per meter.
PV and Battery Feeder Meters
A park with a battery (or another producer) behind the same grid connection point meters each feeder separately. The grid family above is the connection point, summed park-wide; the PV feeder publishes the powerplant_pv_* family and the battery feeder the powerplant_battery_* family — the same quantities with the same sign convention (production / discharge positive). The two battery counters are named by what the unit did: _energy_discharge_total is what it gave out, _energy_charge_total what it took in. Not to be confused with the battery_* families below, which are the battery controller's own view of its box, storage, module and cell levels.
| Metric Name | Type | Unit |
|---|---|---|
| powerplant_pv_power | Power | W |
| powerplant_pv_power_apparent | Power | VA |
| powerplant_pv_power_reactive | Reactive Power | VAr |
| powerplant_pv_energy_total | Energy | Wh |
| powerplant_pv_energy_consumed_total | Energy | Wh |
| powerplant_pv_energy_total_reactive | Energy | VArh |
| powerplant_pv_energy_total_reactive_capacitive | Energy | VArh |
| powerplant_pv_energy_total_reactive_inductive | Energy | VArh |
| powerplant_battery_power | Power | W |
| powerplant_battery_power_apparent | Power | VA |
| powerplant_battery_power_reactive | Reactive Power | VAr |
| powerplant_battery_energy_discharge_total | Energy | Wh |
| powerplant_battery_energy_charge_total | Energy | Wh |
| powerplant_battery_energy_total_reactive | Energy | VArh |
| powerplant_battery_energy_total_reactive_capacitive | Energy | VArh |
| powerplant_battery_energy_total_reactive_inductive | Energy | VArh |
Plant AC Totals
Plant-level AC totals published by loggers that report the plant as one AC unit (legacy naming, energy/power before ac).
| Metric Name | Type | Unit |
|---|---|---|
| powerplant_energy_ac_total | Energy | Wh |
| powerplant_energy_ac_reactive_total | Energy | VArh |
| powerplant_power_ac | Power | W |
| powerplant_power_ac_reactive | Reactive Power | VAr |
| powerplant_power_ac_apparent | Power | VA |
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 |
| powerplant_inverter_power | Power | W |
| powerplant_inverter_energy_total | Energy | Wh |
| powerplant_inverter_data_complete | Validity | bool |
| powerplant_inverter_derating_reason | Reason | code |
| powerplant_inverter_operating_state | State | code |
powerplant_inverter_power / powerplant_inverter_energy_total are the inverter-summed, minute-aligned analogues of the grid pair above (one plant series with a boot_time label, not one per inverter). powerplant_inverter_data_complete is the per-minute verdict on that sum: 1 when every expected inverter contributed, 0 otherwise, absent when no verdict was possible. powerplant_inverter_operating_state is the platform's standard operating state derived from the maker's status code (0 unknown, 1 idle, 2 producing, 3 producing limited, 4 self-derating, 5 stopped by command, 6 stopped by protection, 7 unreachable, 8 fault — numbered so max reads as the worst state), while powerplant_inverter_derating_reason is the maker's own reason code for a derate.
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 |
Wind Turbine Metrics
A wind turbine is a flat plant component like an inverter, identified by the turbine_id label (with turbine_name and turbine_vendor). Values are the 10-minute averages the turbine controller records. powerplant_turbine_blade_pitch_angle carries a blade label (A/B/C) and powerplant_turbine_temperature a sensor label (gearbox, generator, transformer, nacelle, …). The time_* series are seconds per 10-minute interval spent in each state — measured availability, not inferred from gaps. The curtailment and loss series are the measured gap between possible and actual power, attributed to a party by the controller's own status code (grid = grid operator, marketer = plant-controller dispatch, environment = shadow / bat / ice / weather stops, command = manual or service stops, fault = a turbine alarm); their _energy_total counters are lifetime totals the platform maintains.
| Metric Name | Type | Unit |
|---|---|---|
| powerplant_turbine_power_ac | Power | W |
| powerplant_turbine_power_ac_possible | Power | W |
| powerplant_turbine_power_ac_reactive | Reactive Power | VAr |
| powerplant_turbine_energy_ac_total | Energy | Wh |
| powerplant_turbine_energy_consumed_total | Energy | Wh |
| powerplant_turbine_voltage_ac__phase__L1 | Voltage | V |
| powerplant_turbine_voltage_ac__phase__L2 | Voltage | V |
| powerplant_turbine_voltage_ac__phase__L3 | Voltage | V |
| powerplant_turbine_current_ac__phase__L1 | Current | A |
| powerplant_turbine_current_ac__phase__L2 | Current | A |
| powerplant_turbine_current_ac__phase__L3 | Current | A |
| powerplant_turbine_frequency | Frequency | Hz |
| powerplant_turbine_power_factor | Power Factor | - |
| powerplant_turbine_wind_speed | Wind Speed | m/s |
| powerplant_turbine_wind_direction | Wind Direction | ° |
| powerplant_turbine_nacelle_direction | Direction | ° |
| powerplant_turbine_rotor_speed | Speed | rpm |
| powerplant_turbine_generator_speed | Speed | rpm |
| powerplant_turbine_blade_pitch_angle | Angle | ° |
| powerplant_turbine_temperature | Temperature | °C |
| powerplant_turbine_temperature_ambient | Temperature | °C |
| powerplant_turbine_time_running | Duration | s |
| powerplant_turbine_time_ok | Duration | s |
| powerplant_turbine_time_alarm | Duration | s |
| powerplant_turbine_time_wind_ok | Duration | s |
| powerplant_turbine_time_grid_ok | Duration | s |
| powerplant_turbine_time_service | Duration | s |
| powerplant_turbine_time_derate_remote | Duration | s |
| powerplant_turbine_time_derate_internal | Duration | s |
| powerplant_turbine_vendor_status | Status | code |
| powerplant_turbine_pause_reason | Reason | code |
| powerplant_turbine_operating_state | State | code |
| powerplant_turbine_setpoint_power_active | Setpoint | W |
| powerplant_turbine_stop_command | Command | bool |
| powerplant_turbine_curtailment_grid_power | Power | W |
| powerplant_turbine_curtailment_marketer_power | Power | W |
| powerplant_turbine_curtailment_environment_power | Power | W |
| powerplant_turbine_curtailment_command_power | Power | W |
| powerplant_turbine_loss_fault_power | Power | W |
| powerplant_turbine_curtailment_grid_energy_total | Energy | Wh |
| powerplant_turbine_curtailment_marketer_energy_total | Energy | Wh |
| powerplant_turbine_curtailment_environment_energy_total | Energy | Wh |
| powerplant_turbine_curtailment_command_energy_total | Energy | Wh |
| powerplant_turbine_loss_fault_energy_total | Energy | Wh |
Component Info Series
The names an operator gave the components, published as their own series so dashboards can show current names without the telemetry carrying them as labels (a label change would fork a series). One series per component, keyed exactly like its telemetry (inverter_id; gak_id; string_number, with gak_id only behind a combiner box; id for a feed-in meter; turbine_id) plus the name label (inverter_name, gak_name, string_name, meter_name, turbine_name). The value is the emission time; the series is refreshed on every tree sync, so a rename shows up on the next sync. Never chart, sum or alert on these — join them onto the telemetry as shown in Building Your Own Grafana Dashboards.
| Metric Name | Type | Unit |
|---|---|---|
| powerplant_inverter_info | Info | - |
| powerplant_gak_info | Info | - |
| powerplant_string_info | Info | - |
| powerplant_feedin_info | Info | - |
| powerplant_turbine_info | Info | - |
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_max_power_import_by_grid | Limit | % |
| powerplant_battery_setpoint_external_w | Setpoint | W |
| powerplant_battery_setpoint_applied | Setpoint | % |
| powerplant_battery_setpoint_applied_w | Setpoint | W |
| powerplant_battery_max_power_charge_by_grid | Limit | % |
| powerplant_battery_max_power_charge_by_grid_w | Limit | W |
| powerplant_battery_max_power_discharge_by_grid | Limit | % |
| powerplant_battery_max_power_discharge_by_grid_w | Limit | 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 | - |
Battery setpoints are signed (positive = discharge, negative = charge): _external / _external_w is the marketer's order, _local_w the operator's manual entry, _applied / _applied_w what the plant controller actually commands the storage with after folding every order and cap into one number. Caps are positive magnitudes: powerplant_max_power_import_by_grid is the grid operator's limit on what the plant may draw (100 = no reduction), and the battery_max_power_charge/discharge_by_grid pairs the grid operator's limits on the storage inside a larger plant, one lane per direction. Each device publishes the lane it states natively (percent or watts); the platform never converts between them.
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 | - |
| powerplant_grid_power_loss | Power | W |
| powerplant_grid_energy_total_loss | Energy | Wh |
| powerplant_inverter_power_loss | Power | W |
| powerplant_inverter_energy_total_loss | Energy | Wh |
| powerplant_gak_power_loss | Power | W |
| powerplant_gak_energy_total_loss | Energy | Wh |
| powerplant_string_power_loss | Power | W |
| powerplant_string_energy_total_loss | Energy | Wh |
Status Metrics
The platform's daily production verdict per component: 1 when the component produced normally, 0 otherwise, with the detailed state in the status label. Not to be confused with powerplant_inverter_operating_state, which is what the device itself reports per poll.
| Metric Name | Type | Unit |
|---|---|---|
| powerplant_string_status | Status | bool |
| powerplant_gak_status | Status | bool |
| powerplant_inverter_status | Status | bool |
| powerplant_grid_status | Status | bool |
Configured Facts
Published once per park-local day by the platform from the plant configuration, never measured: the peak power of each component and of the park, the park's inverter limit and the component counts. Hidden components are excluded and an unconfigured value writes no sample, so "not configured" stays distinguishable from "configured as zero". Read them like any series, e.g. last_over_time(powerplant_inverter_peak_power[1d]).
| Metric Name | Type | Unit |
|---|---|---|
| powerplant_inverter_peak_power | Power | W |
| powerplant_gak_peak_power | Power | W |
| powerplant_string_peak_power | Power | W |
| powerplant_park_peak_power | Power | W |
| powerplant_park_limit_inverter | Power | W |
| powerplant_park_inverter_count | Count | - |
| powerplant_park_string_count | Count | - |
Deprecated Metrics
Kept only for dashboards that already use them — new dashboards should use powerplant_solar_radiation and powerplant_inverter_frequency instead.
| Metric Name | Type | Unit |
|---|---|---|
| powerplant_power_radiation | Power | W |
| powerplant_frequency_grid | Frequency | Hz |
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. |
| powerplant_weather_forecast_radiation_power | Irradiance | W/m² | Capacity-weighted plane-of-array irradiance the weather forecast power is computed from — the forecast's own input, as a gauge. |
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. |
Wind settlement families
Onshore wind settles curtailment per turbine and sums to a park lane: the per-turbine points carry a turbine_id label, the park sum carries none — read them apart with turbine_id!~".+", since a bare sum(...) over both double-counts. Three methods share the same maths and labels: nacelle (the turbine's own anemometer feeds the certified power curve), windref (the default — a reference turbine's or a meteorological-service wind speed), and windfixed (flat-rate: the last unrestricted measured power, frozen for the whole measure). The Marktprämie feed-in is the measured grid feed-in with every negative-price quarter zeroed, one copy per negative_price_rule. <party> is grid or marketer.
| Metric Name Pattern | Type | Unit | Description |
|---|---|---|---|
powerplant_nacelle_curtailment_<party>_power | Power | W | Curtailment loss, nacelle-anemometer method. |
powerplant_nacelle_curtailment_<party>_energy_total | Energy | Wh | Cumulative curtailment energy, nacelle method. |
powerplant_windref_curtailment_<party>_power | Power | W | Curtailment loss, reference-wind method (default). |
powerplant_windref_curtailment_<party>_energy_total | Energy | Wh | Cumulative curtailment energy, reference-wind method. |
powerplant_windfixed_curtailment_<party>_power | Power | W | Curtailment loss, flat-rate wind method. |
powerplant_windfixed_curtailment_<party>_energy_total | Energy | Wh | Cumulative curtailment energy, flat-rate wind method. |
| powerplant_marktpraemie_feedin_power | Power | W | Marktprämie-eligible feed-in as a quarter-hour mean. |
| powerplant_marktpraemie_feedin_energy_total | Energy | Wh | Cumulative Marktprämie-eligible feed-in energy, per delivery month (period label). |
powerplant_mischpreis_<wind method>_grid_revenue | Revenue | EUR | Market value of the grid-curtailed energy per 15-minute interval; <wind method> is nacelle, windref or windfixed. Park sum only, grid party only. |
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. |
| battery_pcs_vendor_status | Status | code | The converter's own operating state in the maker's vocabulary (battery_vendor label selects the decode table). A gap means "not read"; never sum or average it. |
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. |
| battery_box_cell_voltage_min | Voltage | V | Lowest single-cell voltage in the box, as the BMS reports it. |
| battery_box_cell_voltage_max | Voltage | V | Highest single-cell voltage in the box. |
| battery_box_cell_temperature_min | Temperature | °C | Lowest cell temperature in the box. |
| battery_box_cell_temperature_max | Temperature | °C | Highest cell temperature in the box. |
| battery_box_power_limit_charge | Limit | W | What the BMS currently allows the box to take in. Positive magnitude; a derated box sits below its nameplate. |
| battery_box_power_limit_discharge | Limit | W | What the BMS currently allows the box to give out. |
| battery_box_power_auxiliary | Power | W | What the box's own systems draw to keep running (climate control, electronics, pumps). Positive consumption, never folded into the charge/discharge lanes. |
| battery_box_energy_auxiliary_total | Energy | Wh | Lifetime auxiliary consumption counter. |
| battery_box_vendor_status | Status | code | The container's own state word in the maker's vocabulary (battery_vendor label). A gap means "not read"; never sum or average it. |
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). |
| battery_storage_power_limit_charge | Limit | W | Per-storage charge ceiling the BMS currently allows. Positive magnitude. |
| battery_storage_power_limit_discharge | Limit | W | Per-storage discharge ceiling the BMS currently allows. |
| battery_storage_cycle_count | Count | - | Full cycle equivalents as the BMS counts them since commissioning. |
| battery_storage_vendor_status | Status | code | The rack's own operating state in the maker's vocabulary (battery_vendor label). Never sum or average it. |
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 |
| battery_cell_soc | State of Charge | % |
| battery_cell_soh | State of Health | % |
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 | - |
Network Monitoring Metrics
The agent's own active checks (ICMP, TCP, HTTP) against the devices on the plant network. Per-device series carry device_ip, device_name, device_type and device_vendor; TCP checks add the port, HTTP checks the endpoint. netmon_park_network_up is one roll-up series per plant.
| Metric Name | Type | Unit |
|---|---|---|
| netmon_park_network_up | Status | bool |
| netmon_device_up | Status | bool |
| netmon_device_ping_latency_ms | Latency | ms |
| netmon_device_ping_packet_loss_percent | Packet Loss | % |
| netmon_tcp_port_open | Status | bool |
| netmon_tcp_port_response_ms | Response Time | ms |
| netmon_http_status_code | HTTP Status | code |
| netmon_http_response_ms | Response Time | ms |
| netmon_http_up | Status | bool |
| netmon_discovered_devices_total | Count | - |
| netmon_snmp_devices_total | Count | - |
| netmon_discovery_duration_seconds | Duration | s |
SNMP Metrics
Read from SNMP-capable devices on the plant network (switches, routers, gateways). Device series carry the same device labels as above; interface series add if_index, if_name and if_type.
| Metric Name | Type | Unit |
|---|---|---|
| snmp_device_uptime_seconds | Duration | s |
| snmp_device_available | Availability | bool |
| snmp_device_cpu_usage_percent | Usage | % |
| snmp_device_memory_usage_percent | Usage | % |
| snmp_device_memory_used_bytes | Memory | bytes |
| snmp_device_memory_total_bytes | Memory | bytes |
| snmp_device_temperature_celsius | Temperature | °C |
| snmp_interface_status | Status | code |
| snmp_interface_admin_status | Status | code |
| snmp_interface_speed_bps | Speed | bit/s |
| snmp_interface_in_bytes_total | Traffic | bytes |
| snmp_interface_out_bytes_total | Traffic | bytes |
| snmp_interface_in_errors_total | Errors | - |
| snmp_interface_out_errors_total | Errors | - |
| snmp_interface_in_discards_total | Discards | - |
| snmp_interface_out_discards_total | Discards | - |
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_cloud_liveness_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
- operator_cloud_liveness_age_seconds: Seconds since the cloud process was last confirmed alive (health endpoint) — stays fresh even while the main API returns errors, so it is the failsafe gate
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