Skip to content

Capacity: how many metrics fit

For users installing many Modbus devices on one Sentinel. The figures come from computer simulation with the same payload-building code as the firmware; they have not been measured on a real board and broker. Firmware 0.20.

Limit Value Consequence if exceeded
Telemetry message length 12,086 B the message is not sent; the oversize_dropped counter rises (web: Memory card; serial log)
Length of one history sample (when MQTT is down, direct mode) 10,238 B the sample is skipped from history
Number of source metrics 400 a source that exceeds the limit is rejected
Number of sources 40 the next source is rejected
Registers (metrics) per source 16 the source is rejected
sources message 6144 B the whole message is rejected, the old set keeps running

What binds in practice is message length, not the number of metrics: with long names the message is full before 400 metrics are reached.

Telemetry size ≈ base + number of metrics × (name length + 9 to 12) bytes. Base = the board’s built-in metrics, ±940 B on G1 (all sensors active). Name length is the full <prefix>_<suffix> name (e.g. rak3_voltage = 12). 9 applies to plausible values (voltage, current, power); 12 to all values being 9-character numbers.

Maximum number of metrics per name length (SNT-G1)

Section titled “Maximum number of metrics per name length (SNT-G1)”
Name length Plausible values Worst-case values History
6 734 619 613
8 649 557 541
10 581 506 485
12 526 464 439
16 442 398 369
20 382 348 318
24 336 309 280

“History” uses the 10,238 B sample limit: that is the limit when MQTT is down and history is active. Example: 40 SDM120 with prefixes m1…m40 (names ±11 characters, 400 metrics) fit with margin; 40 SDM120 with 12-character prefixes (names of 20 to 22) are no longer safe on G1.

  1. Use short names. Source prefixes of 2 to 6 characters (m1, rak3, pz2); the profile suffix already adds 3 to 8 characters.
  2. Install only the metrics you need. A compact profile (SDM120: voltage, current, power, energy = 4 metrics, not 10) shrinks the message and speeds up the read cycle.
  3. Measure before installing. After the set is loaded, look at oversize_dropped in the web Status tab or GET /api/status; it must stay 0.
  4. Use telemetry groups so rarely-changing values are sent less often and messages are smaller.