Skip to main content

Troubleshooting — Common Pitfalls in Flows

SymptomCause / Resolution
No change even after DeployA red dot remaining on the node means it was not saved. Deploy again. Or you are looking at a cached inject result — click a new inject trigger
Tag value always reads nullTypo in the tag ID / the tag is not registered on the gateway / the OPC connection is down. Check 자주 하는 작업 → 실시간 값 보기 first
Gateway load from injecting too fastPolling faster than 1 second is not recommended. If you truly need rapid updates, consider Sparkplug or a direct MQTT subscription
Polling many tags at once with the Fresh option enabledA flood of simultaneous PLC reads. The cache (default) is normally sufficient; use fresh only for diagnostics
Node-RED suddenly hangsSuspect an infinite loop (node output → same node input). Placing a Catch node makes debugging easier
External internet calls failCheck the gateway firewall / DNS. In an internal network environment, proxy settings are required
"Maximum call stack size exceeded"Infinite recursion in a function node. Check whether return msg is structured so that it re-triggers itself
All flows disappear after Deploy/data1/pp-data/node-red/flows.json is corrupted. Restore from a backup. node/bin/start.sh auto-syncs with the master conf, but once corruption is written to disk, recovery is required
MQTT messages never arriveTypo in the topic wildcard (#/+). Check the topic tree with a separate tool such as MQTT Explorer
OPC-UA BadIdentityTokenInvalidUsername/password or certificate not trusted. Mark the client certificate as Trust in the server console
OPC-UA BadTypeMismatchThe DataType in OpcUa-Item differs from the actual node type

Debugging Tips

  1. Set the debug node to the full msg object to see which fields are flowing through.
  2. Place a Catch node off to the side to capture all errors and send them to debug — you immediately see which node failed.
  3. Use a Status node to catch connected / disconnected transitions on mqtt/opcua nodes, which makes diagnosing external communication problems easy.
  4. Use inject's Inject once after deploy to create a "run once on Deploy" action and check the result in debug.
  5. node.warn(...) inside function or node.error(...) lets you print freely to the sidebar.

Next Steps