전체 시나리오
- App에서 반납 버튼을 누르면, App에서 서버에 반납절차 시작을 알린다.
- 서버는 App에게 반납할 RaspPi에 대한 정보(칸 번호, 위치 등)를 Response로 준다.
- 서버는 RaspPi에게 반납 절차가 시작됨을 알린다.
- App에는 반납 대기 화면이 뜬다.
- RaspPi에서는 무게 센서의 값을 주시한다.
- 병사가 스마트폰을 무게 센서에 올려두고 문을 닫으면, RaspPi는 이를 감지하고 서버에 알린다.
- RaspPi는 QR코드 인식 상태로 대기한다.
- 서버에서 App에게 난수를 전송한다.
- App에서는 난수(와 추가적인 정보)를 QR코드로 변환, 암호화한다.
- RaspPi는 기기의 화면에서 송출되는 QR코드를 읽고, 서버에 전송한다.
- 이 때 무게 센서에서 읽은 무게 정보도 같이 전송한다.
- 서버는 RaspPi에게서 받은 정보와 처음에 App에 보낸 정보를 비교한다.
- 서버에 저장된 무게 정보와 RaspPi에게서 받은 무게 정보도 비교한다.
- 문제가 없다면 서버 DB에서 사용자/핸드폰의 반납 여부를 '반납'으로 수정한다.
- 특이사항이 생긴다면, 일단 RaspPi에서 카메라로 병사가 반납한답시고 넣어놓은 핸드폰을 사진 찍는다. 그리고 통제 간부가 확인할 수 있도록 알림을 전송한다.
통신별 시나리오
어플
- 어플 → 서버 : App에서 반납 버튼을 누르면, 서버에 해당 기기의 정보(이름, 군번...)를 전송한다.