주제
🔑 SHD:Smart Hidden Door-lock using biometric authentication and IoT technology
- 히든 도어 방식의 스마트 도어락
- 비밀번호, 지문, 카드키, NFC, 비콘을 이용해 잠금을 해제
- 모바일 앱에서 해제 기록 조회 및 키 관리 기능 지원
- 해제 기록 분석을 통한 주 출입시간 계산 및 이를 기반으로 자동 해제 기능 제공
- 도어락 기기 - 아두이노 / 라즈베리파이 / Flask (파이썬)
- 프론트 - 리액트네이티브 / 안드로이드
- 백엔드 - 스프링부트 / MariaDB / firebase
- 서버 - AWS EC2
전체 일정 상세
| 구분 | 기간 | 담당자 | 보조 |
|---|---|---|---|
| 전체 | 23.09.01 - 24.05.31 (274일) | 전원 | - |
| 기획 & 설계 | 23.09.01 - 24.02.29 (182일) | 전원 | - |
| 프로토타입 제작 | 23.11.01 - 24.12.08 (38일) | 전원 | - |
| 기기 | 24.03.01 - 24.05.24 (85일) | 류승준 | 이정교 |
| 프론트 | 24.03.01 - 24.05.24 (85일) | 이은빈 | 이정교 |
| 백엔드 | 24.03.01 - 24.05.24 (85일) | 이정교 | - |
| 발표 & 시연 | 24.05.24 - 24.05.31 (8일) | 발표 : 류승준 시연 : 이은빈 & 이정교 |
- |
- 팀장 : 류승준 -
- 팀원 : 이은비 -
- 팀원 : 이정교 -
- Java 11
- JDK 11.0.22
- IDE* : IntelliJ IDEA Community Edition
- Framework : Spring Boot 2.7.17
- Database : Maria DB
📦 root
├─ common // 엔티티/파이어베이스 등의 공통 폴더
├─ machine // 기기와의 통신 폴더
├─ openLock // 도어락 해제 신호 발송 폴더
├─ saveKey // 도어락 해제 키 등록 폴더
├─ phone // 어플과의 통신 폴더
├─ login // 어플 로그인 관리
├─ main // 어플 메인 화면
├─ registDoorLock // 어플에 도어락 등록 화면
├─ settings // 어플 설정 화면 필요 기능
├─ README.md
| 🚪 도어락 해제 유효성 검증 - 폴더
• 기기 or 모바일 어플 로부터 도어락 해제 시도 데이터를 전달받음.
• 기기 & 해제키 유효성 검사
• 해제 시도에 대한 가능(해제) & 불가능(해제 실패) 로그 기록
• 해제 가능 시, 도어락 기기로 도어락 해제 신호(flask Rest API) 전송
• 해제 가능 시, 모바일 어플로 해제 알림(firebase) 전송
구현
▸ 비밀번호 해제 : openBySecretNo()
▸ RFID & NFC 해제 : openByRfidAndNfc()
▸ 지문 해제 : openByFingerPrint()
▸ 태그리스 해제 : openByTagless()
| 🔑 해제키 등록 & 변경 & 삭제 - 폴더
• 기기 or 모바일 어플 로부터 도어락과 해제키 데이터를 전달받음.
• 기기 & 해제키 유효성 검사
• 기존 등록이 없는 경우, 등록 or 변경 or 삭제
구현
• 카드키 등록 : saveKeyCard()
• 지문 등록 : saveKeyBio()
• 비밀번호 변경 : changePwd()
• 카드키 삭제 : delKeyCard()
• 지문 정보 삭제 : delKeyBio()
| 📌 로그인 - 폴더
• 어플로부터 카카오 로그인시 발급되는 아이디 및 로그인 필요 정보 전달
• JWT 토큰으로 로그인 상태를 관리한다.
구현
• 카카오 로그인 (최초) : firstLogin()
• 지문 로그인 : accessLogin()
• accessToken 재발급 : refreshLogin()
| 📌 메인 페이지 - 폴더
구현
• 사용자별 등록된 nfc 데이터 리스트 출력 : getMyNfcList()
• owner 권한 이외, 등록된 NFC 삭제 API : delNfcOther()
• nfc 활성화 로그 실행 : activateNfc()
| 📌 도어락 기기 등록 - 폴더
구현
• 도어락 기기 정보 등록 : registMachine()
• 시리얼 넘버를 통한 도어락 검색 : searchSerialNo()
| 📌 NFC 등록 - owner:도어락 주인 - 폴더
구현
• 사용자 도어락 NFC 등록 (owner:도어락 주인) : registNfc()
| 📌 설정 화면 - 초대코드 생성 - 폴더
구현
• member, guest 초대 코드 생성 : inviteCode()
| 📌 NFC 등록 - member, guest 권한 해제키(NFC) - 폴더
구현
• 초대 코드 조회 : searchInviteCode()
• owner 권한 이외, NFC 등록 API : registNfcOther()
| 📌 도어락 비밀번호 설정 화면 - 폴더
구현
• 마지막 출입시간 기록 조회 : lastLog()
• 도어락 비밀번호 변경 : changePw()
| 📌 도어락 관리 어플 - 출입기록 보기 화면 - 폴더
구현
• 출입로그 조회 : viewLog()
| 📌 도어락 관리 어플 - 멤버관리 화면 - 폴더
구현
• 등록된 nfc, 지문, 카드키 전체 조회 : viewRegistKey()
• 승인된 nfc 해제키 리스트 조회 : viewApproveNfcList()
• member & guest 사용허가 : usePermit()
• member & guest 삭제 : delNfcOther()
• 카드키 삭제 : delKeyCard()
• 지문 삭제 : delKeyBio()
• owner 권한 양도 : tossOwnerAuth()
| 📌 도어락 관리 어플 - AI 설정 (태그리스 설정) 화면 - 폴더
구현
• 데이터 수집, AI 서비스 동의 여부 조회 로직 : selectPrivateYn()
• 토글-데이터 수집여부 update : dataToggle()
• 토글-AI 서비스 동의 여부 update : aiServiceToggle()
| 📌 도어락 관리 어플 - 카드키 제거 화면 - 폴더
구현
• owner의 양도 없는 삭제 : deleteOwner()