Metrics & Telemetry
Everything Nereus shows you — a dashboard reading, a report KPI, an alert threshold — resolves to a
metric: a named, unit-bearing quantity like pressure_kpa or level_m. Sensors from different
vendors speak different payload formats, but they all land on this one shared vocabulary, so a widget
or a rule binds to a metric key, never to a particular device’s byte layout.
This page explains that vocabulary, how raw readings roll up into the aggregates you see on charts, and how a sensor that goes quiet becomes an offline alert.
The metric catalogue
Section titled “The metric catalogue”The catalogue is the canonical set of metrics every part of the product agrees on. Each entry has a key (the stable identifier), a unit, and a kind that decides how it aggregates.
| Metric | Key | Unit | Kind |
|---|---|---|---|
| Total volume | water_volume_m3 |
m³ | counter |
| Flow rate | flow_rate_lpm |
L/min | gauge |
| Pressure | pressure_kpa |
kPa | gauge |
| Level | level_m |
m | gauge |
| Temperature | temperature_c |
°C | gauge |
| Battery | battery_v |
V | gauge |
| Signal (RSSI) | rssi_dbm |
dBm | gauge |
| Signal (SNR) | snr_db |
dB | gauge |
| Leak · Burst pipe · Empty pipe · Tamper · Reverse flow · Low battery | (event keys) | — | event |
The catalogue is data, not code — it is seeded into the database and can grow with new rows, so a new metric doesn’t need a release. The set above is the canonical starter catalogue.
How a reading becomes an aggregate
Section titled “How a reading becomes an aggregate”A metric’s kind sets how a stream of raw readings collapses into the single number a chart bucket or KPI shows. You never pick this — it follows from what the metric means:
| Kind | Aggregates as | Why |
|---|---|---|
| gauge | time-weighted mean | An instantaneous level or pressure — averaged over the bucket, weighted by how long each reading held |
| counter | delta | A cumulative total (a meter that only ever climbs) — the bucket’s value is how much it rose |
| state | last / duration | A discrete condition — the bucket carries the latest state and how long it held |
| event | count | A discrete occurrence (a leak flag, a tamper) — the bucket counts how many fired |
So a flow gauge over an hour is its time-weighted average; a volume counter over the same hour is the consumption in that hour (end minus start), not the odometer reading. Event metrics also record each occurrence individually, so you can see not just how many leaks fired but when.
Widgets and reports may override the reducer per bucket, but when they don’t, this default is what you get.
Diagnostics vs. the network reading
Section titled “Diagnostics vs. the network reading”Three metrics — battery (battery_v), signal RSSI (rssi_dbm), and signal SNR (snr_db)
— describe the sensor’s own health, not the water network. Nereus treats them as diagnostics:
they populate the sensor’s health view and drive low-battery / weak-signal warnings, but they never
stand in for “the asset’s latest reading”. A reservoir’s headline number is its level, never the
voltage of the box bolted to it.
Each asset class also has a primary metric — the headline reading the map and popovers lead with:
| Asset class | Primary metric |
|---|---|
| Water meter | Flow rate (flow_rate_lpm) |
| Reservoir | Level (level_m) |
| Pressure point | Pressure (pressure_kpa) |
A pump station has no fixed primary, so it falls back to its most recent non-diagnostic reading.
Staleness: from quiet to offline
Section titled “Staleness: from quiet to offline”Each sensor keeps a shadow — a small record of its last uplink time and latest signal/battery snapshot. The shadow starts empty and comes alive when the first uplink lands (which is why a freshly enrolled sensor sits as Commissioned until then).
Nereus watches the gap between now and each sensor’s last-seen time. When that gap grows past the staleness window (a multiple of the device’s expected reporting cadence — roughly 6× cadence), the sensor is stale, and the staleness detector raises an offline alert automatically. This is the one alert nobody authors: it fires on the absence of data rather than a value crossing a threshold.
When the sensor reports again, its shadow updates and the offline alert resolves. See
Alert rules for how the stale comparator fits alongside value-based rules.
Related
Section titled “Related”- Metric catalogue — the full lookup table (key, unit, kind, aggregation)
- Alert rules — comparators (including
stale) that read these metrics - Assets & groups — asset classes and their primary metrics
- Device profiles — how a vendor’s raw payload is decoded onto these keys
- Dashboard widgets — how metrics render as reading cards and gauges