Skip to content

LeeJeonggyo/pwd486

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛠 Capstone Design 프로젝트 - 졸업작품 - 백엔드



💻 프로젝트 소개

주제

🔑 SHD:Smart Hidden Door-lock using biometric authentication and IoT technology


프로젝트 특징

  • 히든 도어 방식의 스마트 도어락
  • 비밀번호, 지문, 카드키, NFC, 비콘을 이용해 잠금을 해제
  • 모바일 앱에서 해제 기록 조회 및 키 관리 기능 지원
  • 해제 기록 분석을 통한 주 출입시간 계산 및 이를 기반으로 자동 해제 기능 제공

구성

  • 도어락 기기 - 아두이노 / 라즈베리파이 / Flask (파이썬)
  • 프론트 - 리액트네이티브 / 안드로이드
  • 백엔드 - 스프링부트 / MariaDB / firebase
  • 서버 - AWS EC2

⏳ 개발 기간

백엔드 - 24.03.01 - 24.05.24 (85일) - 담당자:이정교

전체 일정 상세
구분 기간 담당자 보조
전체 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()

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages