Problem
CUJAE’s Faculty of Informatics needed a real-time access-control system at building entrances. Manual checks at the door don’t scale during class transitions, paper rosters drift out of sync with enrollment, and the faculty already had a digital record of who belongs where. The system had to live at the door — meaning embedded hardware, not server racks — and decide locally whether a person could come in.
Approach
I designed the system as an edge-and-bridge architecture under contract with the Informatics department:
- Edge (Raspberry Pi + Python + OpenCV) — small embedded nodes at building doors running a Linux-based scanner station. The OpenCV pipeline reads QR codes from physical student/staff IDs through a webcam, decodes them in real time, and displays the resolved record on a connected monitor (name, ID, faculty, group).
- Bridge (Node-RED) — a central Node-RED backend exposes REST APIs that the edge nodes call to verify a scanned ID against the faculty’s authoritative roster. Node-RED was the deliberate choice here: it gave the Informatics team a visual ops surface they could maintain after handoff, instead of a black-box service.
- Decision flow — scan, look up, surface the explicit outcome (granted / denied) with the resolved identity record so a human operator can intervene if something looks off.
Outcome
The system runs on the campus today, integrated with the faculty’s central registry through the Node-RED layer. The decision to use Node-RED for the backend turned out to be a sustainability call: when the contract ended, the Informatics team kept iterating on the flow without needing a software engineer in the loop.
The hardware-software split — Python doing the CV at the edge, Node-RED doing the integration in the middle — became the template for follow-on integrations between physical sensors and the faculty’s software layer.