전체 시나리오

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

통신별 시나리오

어플