Direct Answer
Snippet:
Home Assistant Node-RED flows can freeze when multiple Zigbee events fire
simultaneously due to event queue saturation, CPU contention, and limited
Node-RED execution threads. High-frequency Zigbee traffic overwhelms the
hub or single-board computer, causing delayed or blocked automation flows.Preliminary
Diagnostic Steps
1. Monitor Node-RED
Logs
- Open Node-RED → Menu → View → Log.
- Look for error messages such as:
- “Node execution timeout”
- “Event queue full”
- Identify which flows are freezing under
high event load.
2. Check Zigbee Event Frequency
- Use Zigbee2MQTT or ZHA logs to measure:
- Beacon broadcasts
- State updates from sensors
- Child device rejoin events
- Determine if multiple devices are sending
simultaneous updates.
3. Observe Hub CPU
and Memory Usage
- On Raspberry Pi, NUC, or server:
- Monitor CPU spikes during high
Zigbee activity.
- Check for memory bottlenecks that
can block Node-RED execution.
4. Identify Event
Storms
- Look for patterns such as:
- Motion sensors triggering repeatedly
- Contact sensors or smart plugs reporting
every second
- Correlate these bursts with Node-RED
freezes.
5. Test Individual
Flows
- Disable all but one Node-RED flow.
- Trigger Zigbee events to see if freezing
persists.
- Helps isolate flows causing congestion.Step-by-Step
Technical Fix
1. Increase
Node-RED Execution Threads
- Adjust Node-RED settings to allow concurrent
node execution:
- export NODE_OPTIONS="--max-old-space-size=1024"
- Restart Node-RED to apply changes.
- This helps manage simultaneous Zigbee
events.
2. Debounce
High-Frequency Sensors
- Use delay nodes in Node-RED to
buffer rapid updates:
- e.g., Motion sensors → Delay 500ms → Flow
- Prevents queue overflow from repeated
rapid triggers.
3. Separate Event
Handling Flows
- Split large automation flows into smaller,
independent flows.
- Assign each flow to handle a subset of
Zigbee events.
- Reduces execution blockage when multiple
events arrive simultaneously.
4. Optimize Zigbee
Polling Intervals
- For battery-powered devices, increase
reporting intervals.
- Reduces simultaneous event bursts.
5. Use Dedicated
Hardware for Node-RED
- High-load installations benefit from:
- Raspberry Pi 4/Compute Module
- Intel NUC
- Dedicated server
- Avoid running Node-RED on the same
low-power hub handling Zigbee traffic.
6. Enable Event
Filtering
- Only send relevant events to Node-RED
using event node filters.
- Exclude unnecessary or repetitive updates
to prevent queue saturation.
Preventing Future Freezes
1. Monitor Flow
Performance Regularly
- Use Node-RED Dashboard or system
metrics to track CPU and event queues.
2. Use Separate
Zigbee Coordinators for Large Networks
- In high-density setups, split the network
between two coordinators to reduce load.
3. Schedule Heavy
Automations During Off-Peak Times
- Time-consuming or multi-step routines can
be delayed when high Zigbee traffic is expected.
4. Keep Software
Updated
- Node-RED, Home Assistant, and
Zigbee2MQTT/ZHA updates often include performance improvements and
bug fixes.
5. Implement
Redundancy
- For critical automation, use failover
flows or backup triggers to ensure continuity even if some flows freeze.
