#!/usr/bin/env python3 import json with open('/home/mdares/.node-red/flows.json', 'r') as f: flows = json.load(f) print("ADDING DEBUG LOGGING TO TRACE MESSAGE FLOW") print("="*60) # Add logging to Refresh Trigger for node in flows: if node.get('name') == 'Refresh Trigger': func = node.get('func', '') # Add logging at the start if 'node.warn(`[REFRESH] Received _mode: ${msg._mode}`)' not in func: # Insert after first line lines = func.split('\n') lines.insert(0, 'node.warn(`[REFRESH] Received _mode: ${msg._mode}`);') node['func'] = '\n'.join(lines) print("✅ Added logging to Refresh Trigger") else: print("✅ Refresh Trigger already has logging") break # Add logging to Back to UI for node in flows: if node.get('name') == 'Back to UI': func = node.get('func', '') # Add logging at the start if 'node.warn(`[BACK TO UI] mode: ${mode}, started:' not in func: # Find where mode and started are extracted insert_pos = func.find('const mode = msg._mode') if insert_pos > 0: # Find end of started line insert_pos = func.find('\n', func.find('const started = msg.startOrder')) # Insert logging after extraction log_line = '\nnode.warn(`[BACK TO UI] mode: ${mode}, started: ${JSON.stringify(started)}`);\n' func = func[:insert_pos + 1] + log_line + func[insert_pos + 1:] node['func'] = func print("✅ Added logging to Back to UI") else: print("✅ Back to UI already has logging") break # Add logging to Home Template message handler for node in flows: if node.get('id') == '1821c4842945ecd8': # Home Template template = node.get('format', '') # Add console.log at start of activeWorkOrder handler if "console.log('[HOME] Received activeWorkOrder'" not in template: # Find the activeWorkOrder handler handler_pos = template.find("if (msg.topic === 'activeWorkOrder') {") if handler_pos > 0: # Insert logging after the opening brace insert_pos = template.find('\n', handler_pos) log_line = "\n console.log('[HOME] Received activeWorkOrder:', msg.payload);" template = template[:insert_pos] + log_line + template[insert_pos:] node['format'] = template print("✅ Added logging to Home Template activeWorkOrder handler") else: print("✅ Home Template already has logging") break # Write updated flows with open('/home/mdares/.node-red/flows.json', 'w') as f: json.dump(flows, f, indent=4) print("\n" + "="*60) print("✅ DEBUG LOGGING ADDED") print("="*60) print("\nAdded logging to:") print(" 1. Refresh Trigger - shows _mode received") print(" 2. Back to UI - shows mode and startOrder data") print(" 3. Home Template - shows activeWorkOrder received") print("\nNEXT STEPS:") print(" 1. Restart Node-RED: sudo systemctl restart nodered") print(" 2. Go to WO tab, select work order, click Start") print(" 3. Check debug console for:") print(" - [REFRESH] Received _mode: start") print(" - [BACK TO UI] mode: start, started: {...}") print(" - [HOME] Received activeWorkOrder: {...} (in browser console)") print("\nThis will show exactly where the message flow breaks!")