Skip to main content
Version: Next

RBE (Filter)

Report-by-exception. It drops a message whose value has not moved enough to be worth acting on, which is the cheapest way to stop a noisy source flooding everything downstream.

Type: rbe · Category: Common · Ports: one input · one output

The RBE (Filter) node as it appears on the pipeline canvas.The RBE (Filter) node as it appears on the pipeline canvas.

When to use it

  • Immediately after any subscribe, unless you genuinely want every sample
  • In front of a database write, an API call or a notification
  • When a sensor jitters around a value and each wobble is triggering work

Settings

SettingKeyDefaultPurpose
ModemoderbeBlock unless changed, or one of the deadband modes.
PropertypropertypayloadWhich property to compare.
GapgapMinimum change required to pass. 5 is absolute; 5% is relative.
In/outinoutoutWhether the gap is measured inside or outside the band.
StartstartInitial comparison value.
Separate topicsseptopicstrueTrack the last value per topic rather than globally.

Example — suppressing a noisy temperature

Mode: deadband
Property: payload.temperature
Gap: 0.5

In (four consecutive messages)

{ "payload": { "temperature": 71.2 } }
{ "payload": { "temperature": 71.4 } }
{ "payload": { "temperature": 71.9 } }
{ "payload": { "temperature": 71.6 } }

Out — only the first and third pass:

{ "payload": { "temperature": 71.2 } }
{ "payload": { "temperature": 71.9 } }

The second is within 0.5 of 71.2 and is dropped. The third is 0.7 away and passes, which then becomes the new reference — so the fourth, 0.3 from 71.9, is dropped too.

Gotchas

  • Leave separate topics on when one pipeline carries several tags. Turn it off and the last value is tracked globally, so alternating tags pass everything and the filter does nothing.
  • A deadband is not a rate limit. A value that ramps steadily passes every message however small the steps are, because each one is measured against the last one that passed.

See also