Skip to main content

rbe

Report by Exception — only pass messages when values actually change.

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).

Filter
Duplicates
Dead
Band
Narrow
Band
Noise
Reduction

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.

Related Nodes