Overview
The delay node delays messages or limits message rate.
Essential for rate limiting API calls, debouncing sensor readings, implementing timeouts,
and controlling message flow to prevent overwhelming downstream systems.
Properties
| Property | Type | Default | Description |
|---|---|---|---|
| pauseType | string | "delay" | delay, delayv, random, rate, queue, timed |
| timeout | number | 5 | Delay time value |
| timeoutUnits | string | "seconds" | milliseconds, seconds, minutes, hours, days |
| rate | number | 1 | Messages per time unit (rate mode) |
| drop | boolean | false | Drop intermediate messages |
Delay Modes
Fixed Delay
Delay each message by a fixed amount
Input: msg1 ─┬─ msg2 ─┬─ msg3
│ │
Output: ──────msg1────msg2────msg3
(5s delay for each) Random Delay
Delay by random time within range
// Between 1-5 seconds
Input: msg1 ─┬─ msg2 ─┬─ msg3
Output: ──msg1────────msg2──msg3
(varies each time) Rate Limit
Limit to X messages per time period
// 1 message per second
Input: msg1,msg2,msg3,msg4 (burst)
Output: msg1──msg2──msg3──msg4
(evenly spaced) Rate Limit (Drop)
Drop excess messages beyond rate
// 1 msg/sec, drop excess
Input: msg1,msg2,msg3,msg4 (burst)
Output: msg1──────────────msg4
(only latest kept) Example: API Rate Limiting
Limit API calls to 10 per minute to avoid throttling.
// Delay node configuration
{
"pauseType": "rate",
"rate": 10,
"rateUnits": "minute",
"drop": false
}
// Flow: sensor readings → delay (rate limit) → HTTP API
// Ensures max 10 calls per minute regardless of sensor frequency Example: Button Debounce
Debounce button presses to ignore rapid repeated clicks.
// Delay node configuration (drop mode)
{
"pauseType": "rate",
"rate": 1,
"rateUnits": "second",
"drop": true // Drop intermediate messages
}
// User presses button rapidly: click click click click
// Output: Only first click passes
// Next click allowed after 1 second Example: Dynamic Delay
Set delay time dynamically based on message properties.
// Delay node configuration
{
"pauseType": "delayv",
"timeoutUnits": "seconds"
}
// Function node before delay:
msg.delay = msg.payload.priority === "low" ? 10000 : 1000; // ms
return msg;
// Low priority: 10 second delay
// High priority: 1 second delay Control Messages
Flush Queue
Release all queued messages immediately
msg.flush = true;
// or
msg.payload = "flush"; Reset/Clear
Clear all queued messages
msg.reset = true;
// Clears queue without sending Push to Front
Add message to front of queue (priority)
msg.toFront = true;
// Message goes to front of queue Get Queue Length
Check how many messages are queued
// Status shows: "X queued"
// Use inject to trigger status check Common Use Cases
API Throttling
Respect API rate limits (e.g., 100 req/min)
Sensor Debounce
Ignore rapid sensor fluctuations
Retry Delays
Wait before retrying failed operations
Animation Timing
Sequence LED patterns or displays