Skip to main content

Flow Troubleshooting

SymptomCause / Resolution
No change after DeployRed dot remains on a node = not saved. Deploy again. Or you are seeing cached inject results — click a new inject trigger
Tag value read is always nullTypos in tag ID / that tag isn't registered on the gateway / OPC connection lost. Check in 자주 하는 작업 → 실시간 값 보기 first
Gateway overload from too-fast injectsPolling below 1 second is not recommended. If you really need a fast refresh, consider Sparkplug or MQTT direct subscription
Polling multiple tags simultaneously with Fresh option enabledPLC concurrent read burst. Normally the cache (default) suffices. Use fresh only for diagnostics
Node-RED suddenly stopsSuspect an infinite loop (node output → same node input). Add a Catch node to make debugging easier
External internet calls failCheck gateway firewall / DNS. If in a private network, proxy settings are required
"Maximum call stack size exceeded"Infinite recursion in a function node. Check whether return msg triggers itself again
All flows disappear after Deploy/data1/pp-data/node-red/flows.json is corrupted. Restore from backup. node/bin/start.sh auto-syncs with master conf, but once corruption is written to disk, recovery is needed
No MQTT message ever arrivesTypos in topic wildcards (#/+). Check the topic tree with a separate tool like MQTT Explorer
OPC-UA BadIdentityTokenInvalidUser/password or certificate is untrusted. Trust the client certificate on the server console
OPC-UA BadTypeMismatchThe DataType in OpcUa-Item differs from the actual node type

Debugging Tips​

  1. Set debug node to entire msg object to see which fields are flowing.
  2. Place a Catch node on one side to catch all errors and send them to debug — you can immediately identify which node died.
  3. Use a Status node to capture connected / disconnected changes on the mqtt/opcua nodes — makes diagnosing external communication issues easier.
  4. Use inject's Inject once after deploy to trigger "run once at Deploy" and verify the result with debug.
  5. Freely print to the sidebar using node.warn(...) or node.error(...) inside function.

Next Steps​