Overview
The rbe (Report By Exception) node only passes messages
through when the monitored value has actually changed. It suppresses duplicate or near-duplicate
readings, reducing noise and unnecessary processing. It supports exact value comparison, deadband
filtering (ignore changes smaller than a threshold), and narrowband filtering (only pass if the
change is within a range).
Properties
| Property | Type | Default | Description |
|---|---|---|---|
| property | string | "payload" | Property to monitor for changes |
| mode | string | "value" | Comparison mode: "value", "deadband", or "narrowband" |
| bandgap | number | 0 | Threshold for deadband/narrowband modes |
| invert | boolean | false | Invert logic: block changes, pass unchanged values |
Filtering Modes
Value Mode
Only pass when the value is different from the previous message. Works with strings, numbers, booleans, and objects.
// Input: 20, 20, 21, 21, 20
// Output: 20, 21, 20
// Exact match comparison Deadband Mode
Only pass when the value changes by more than the bandgap threshold. Ignores small fluctuations.
// Bandgap: 0.5
// Input: 20.0, 20.3, 20.6, 20.4
// Output: 20.0, 20.6
// Change must exceed 0.5 Narrowband Mode
Only pass when the value change is within the bandgap range. Detects sudden spikes by blocking them.
// Bandgap: 2.0
// Input: 20.0, 20.5, 25.0, 20.8
// Output: 20.0, 20.5, 20.8
// Blocks changes > 2.0 (spike) Example: Temperature Change Detection
Only report temperature when it changes by more than 0.5 degrees Celsius, filtering out sensor noise.
// RBE node configuration
{
"property": "payload.temperature",
"mode": "deadband",
"bandgap": 0.5,
"invert": false
}
// Flow: [Temp Sensor] -> [RBE] -> [Dashboard] -> [Database]
//
// Sensor sends every 5 seconds:
// 22.1 -> PASS (first message always passes)
// 22.2 -> BLOCK (change of 0.1, less than 0.5)
// 22.3 -> BLOCK (change of 0.2, less than 0.5)
// 22.0 -> BLOCK (change of 0.1, less than 0.5)
// 22.7 -> PASS (change of 0.6, exceeds 0.5)
// 22.8 -> BLOCK (change of 0.1 from last passed)
// 23.3 -> PASS (change of 0.6, exceeds 0.5)
//
// Result: 70% fewer messages to dashboard and database Example: State Change Detection for Switches
Only react when a door sensor or switch actually changes state between open and closed.
// RBE node configuration (value mode for exact comparison)
{
"property": "payload.state",
"mode": "value",
"invert": false
}
// Flow: [Door Sensor MQTT] -> [RBE] -> [Automation Logic]
//
// Sensor publishes state every 1 second:
// "closed" -> PASS (initial state)
// "closed" -> BLOCK (no change)
// "closed" -> BLOCK (no change)
// "open" -> PASS (state changed!)
// "open" -> BLOCK (no change)
// "open" -> BLOCK (no change)
// "closed" -> PASS (state changed!)
//
// Without RBE: 60 messages per minute
// With RBE: Only 2-3 messages when state actually changes
//
// Connect output to:
// - Notification node (alert when door opens)
// - Light control (turn on lights when open)
// - Logging (record open/close timestamps) Common Use Cases
Sensor Noise Filtering
Use deadband mode to ignore minor fluctuations in temperature, humidity, and pressure readings.
Binary State Changes
Detect on/off, open/closed, or true/false transitions for switches, doors, and relays.
Bandwidth Reduction
Reduce the volume of data sent to dashboards, databases, and cloud services.
Spike Detection
Use narrowband mode inverted to detect sudden value spikes or anomalies in data streams.