비동기 와이파이 제어 인터페이스와 소켓 아이오 실시간 연결
초록
본 논문은 라즈베리 파이 3에 터치 디스플레이를 장착한 IoT 디바이스에서 Wi‑Fi 연결을 손쉽게 관리하도록 설계된 비동기 와이파이 제어 인터페이스(AWCI)를 소개한다. 서버는 Node.js와 Express 기반으로 구현하고, 실시간 양방향 통신을 위해 Socket.IO를 활용한다. 클라이언트는 Bootstrap을 이용한 반응형 웹 UI로, 주변 네트워크 스캔, 비밀번호 입력, 연결·해제 과정을 실시간으로 표시한다. 또한 “wireless‑tools”와 “pi‑wifi” 모듈을 이용해 Linux 환경에서 네트워크 제어를 수행한다.
상세 분석
AWCI는 라즈베리 파이 3와 같은 저전력 임베디드 보드에 내장된 Wi‑Fi 모듈을 활용해, 별도의 그래픽 환경 없이도 터치스크린 기반 UI로 네트워크 설정을 가능하게 한다. 서버 측은 Node.js의 이벤트‑드리븐 비동기 I/O 모델을 채택함으로써, 네트워크 스캔 결과를 주기적으로 폴링하지 않고도 실시간으로 클라이언트에 푸시할 수 있다. 이때 Socket.IO가 웹소켓 위에 구축된 추상화 레이어를 제공해, 브라우저 호환성 문제를 최소화하고 자동으로 폴백 메커니즘을 적용한다는 점이 큰 장점이다.
클라이언트 UI는 Bootstrap 3을 기반으로 구현돼 다양한 브라우저와 화면 크기에 대응한다. 특히 라즈베리 파이용 터치스크린의 해상도에 맞춰 동적으로 레이아웃을 조정함으로써 사용성이 높다. UI는 스캔된 SSID와 신호 강도, 보안 유형을 리스트 형태로 보여주고, 사용자가 선택하면 모달 창을 통해 비밀번호를 입력하도록 유도한다. 입력된 비밀번호는 “wireless‑tools”의 비동기 메서드인 wpa_supplicant.enable에 전달되어 wpa‑supplicant 프로세스를 통해 인증 절차를 수행한다. 연결 성공·실패·진행 상황은 Socket.IO 이벤트를 통해 실시간으로 피드백된다.
네트워크 해제 역시 동일한 비동기 메서드 wpa_supplicant.disable을 호출해 수행되며, 이 과정 역시 콜백을 통해 완료 시점을 클라이언트에 알린다. 이러한 설계는 사용자가 화면을 새로 고침하거나 명령어를 수동으로 입력할 필요 없이, UI 상에서 즉시 상태 변화를 확인할 수 있게 만든다.
시스템 전반에 걸쳐 사용된 npm 패키지는 라즈베리 파이 OS(Raspbian)와 호환되는 것이 선택되었으며, “wireless‑tools”는 iwlist 명령을 내부적으로 호출해 SSID와 채널 정보를 파싱한다. 또한 “pi‑wifi”는 WPA‑PSK 기반 인증을 자동화해 보안 설정을 간소화한다.
한계점으로는 현재 구현이 로컬 네트워크 내에서만 동작한다는 점과, 다중 사용자 동시 접속 시 충돌 관리가 미비하다는 점을 들 수 있다. 향후 연구에서는 외부 클라이언트가 원격으로 네트워크 리스트를 조회하고 연결을 트리거할 수 있는 기능을 추가하고, 인증 토큰 기반의 접근 제어와 연결 상태 동기화를 위한 데이터베이스 연동을 고려한다.
댓글 및 학술 토론
Loading comments...
의견 남기기