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


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
| Setting | Key | Default | Purpose |
|---|---|---|---|
| Mode | mode | rbe | Block unless changed, or one of the deadband modes. |
| Property | property | payload | Which property to compare. |
| Gap | gap | — | Minimum change required to pass. 5 is absolute; 5% is relative. |
| In/out | inout | out | Whether the gap is measured inside or outside the band. |
| Start | start | — | Initial comparison value. |
| Separate topics | septopics | true | Track 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.