Express framework를 이용하여 이용자가 창고를 등록하고 원하는 면적, 날짜 만큼 대여할 수 있는 공유 플랫폼을 형성하고, 등록한 창고의 경우 창고 상황을 라즈베리파이 및 아두이노 센서로 실시간 모니터링할 수 있는 시스템
- Windows 10
- VS Code
- Node -v 12.22.4
- npm -v 6.14.14
- node.js
- npm
- node.js
- apollo-server-express: 버전 2 이하 (버전 3 이후는 graphql, pubsub 등 별도 설치 필요)
-
git clone
$ git clone https://github.com/AUTOINVEN/autoinven.git
-
.env파일 생성한 폴더에 추가 -
Docker 컨테이너 생성 및 실행
$ docker-compose build $ docker-compose up
-
접속
localhost:5000
- 아래 회로도 참조하여 구성
- HW/ArduinoSensor 폴더 안 Arduino_Sensor.ino 파일을 아두이노에 업로드
- 창고 PC에 연결
- 종프2에서는 라즈베리파이를 사용하였으나, 일반 데스크탑, 노트북 등 무엇을 사용하든 무관.
-
HW/raspi 폴더로 이동
-
창고 IP 주소 세팅
- app.js 파일 내 ip 주소 서버 주소로 수정
ip: '<IP>:<PORT>' -
아두이노 포트 수정
- 아두이노 연결 후 포트 확인하여 apollo.js 수정
- 아래 둘 중 하나 수정하면 됨
var serial = new SerialPort('/COM5', 9600); // windows var serial = new SerialPort('/dev/ttyACM0', 9600); // raspi
-
master브랜치로 이동 후developmerge$ git checkout master $ git merge develop $ git push
-
AWS EC2 접속
- 해당 정보는 인수 인계 자료 참조
-
컨테이너 내에 있는 DB 백업
-
autoinven 폴더로 이동
cd autoinven -
git pull(master브랜치에서)$ git branch // 브랜치 확인 $ git pull
-
Docker 컨테이너 생성
$ docker-compose build $ docker-compose up
-
컨테이너 내에 있는 DB 복구
IE / Edge |
Chrome |
|---|---|
| Edge | last version |
- 창고 임대인
- 창고 등록 및 Buyer에게 대여
- 창고 임차인
- Provider에게 요금을 지불 후 대여
- 유저 및 창고 관리
- 창고 등록/대여 건에 대하여 승인/거절
- 창고 등록/대여 내역 확인
- step 1에서 Provider, Buyer 선택
- step 2에서 회원 정보 입력 후 가입 완료
- 이메일 인증 필요
- 형식에 맞춰 입력해야 함
- 한글 입력 불가
- 아이디, 비밀번호 입력 후 로그인
- 중앙에 소개 글 표시
- 화면 아래에 지도 및 창고 마커 표시
- HELP 페이지 버튼, 로그인 화면으로 이동하는 버튼이 존재
- HELP 페이지 버튼만 존재
- Register Warehouse → 창고 정보 입력 → Submit
- 한글 입력 불가
-
Provider 등록 신청 (Register Warehouse) → Admin의 승인/거절
-
승인 시, Provider - My Warehouse, Buyer - Search Warehouse 지도에 표시됨
-
창고 등록 후 Provider 화면
-
창고 등록 후 Admin 화면
-
Admin - 창고 등록 승인 시
-
Admin - 창고 등록 거절 시
-
Buyer 대여 신청→ Admin의 승인/거절 → Provider의 승인/거절
-
승인시 다음 단계로 진행하나, 거절시 거절 사유를 입력하여 이를 상대방에게 알림.
-
Buyer는 승인 진행 상황을 Warehouse Request List 에서 확인 가능
- 결제는 모든 승인 완료 후 Payment List의 내역에 있을 경우 가능
- Buyer가 결제 후 창고 사용이 시작됨
-
Usage History에서 현재 사용 중인 창고 사용 / 과거 창고 사용 내역을 확인 가능
-
Provider의 IoT 서비스 신청 여부에 따라 IoT 서비스 이용 여부 확인 가능
-
Provider 및 사용 중인 창고의 세부 정보 확인 가능
-
My Warehouse에서 등록한 창고의 List를 확인 가능
-
IoT서비스를 신청하여 이용 가능
-
등록한 창고 각각에 대한 세부정보 확인 가능
-
창고 이름과 창고 주소를 제외한 창고 정보 수정 가능
-
등록한 창고에 대한 Buyer들의 현재 사용 / 과거 구매 내역 확인 가능
-
승인
- Provider가 등록한 창고에 대한 정보 확인 후 승인
- Buyer가 창고 사용 신청시(Inquire) 신청 정보 확인 후 승인
- Provider가 신청한 IoT 서비스에 대한 정보 확인 후 승인
- View 페이지를 통해 실제 IoT 서비스 사용 테스트
-
내역 확인
- 전체 창고 목록 확인 가능
- 전체 창고 구매 내역 목록 확인 가능
-
Admin이 신청을 승인 또는 거절 할 수 있음.
- REQUEST → WAREHOUSE IOT → IoT Service Request List
-
Provider 및 Buyer는 승인된 창고에 대해서 IoT서비스를 사용할 수 있음.
-
Buyer: MY WAREHOUSE → USAGE HISTORY → Warehouse Usage → IoT
-
Provider: MY WAREHOUSE → My Warehouse → IoT 또는 MY WAREHOUSE → My Warehouse → Info → IoT
-
Admin: List → WAREHOUSE → Warehouse List → IoT
- 창고의 상태를 실시간으로 확인할 수 있음
- 온도/습도: 현재 온도/습도를 알 수 있음
- 불꽃/가스: 불꽃/가스 발생 여부를 알 수 있음
-
창고의 물품 입출고 상태를 실시간으로 확인할 수 있음
-
물품을 보내기 전에 물품을 등록하고 자신이 사용하는 창고에 물품을 보냄
- REGISTRATION → Register Product
- RFID, 물품 이름, 물품 수량 입력
- Save
-
물품이 창고에 도착하면 RFID태그 인식을 통해 물품 입고를 확인하고 상태가 "Not arrived"에서 "Arrived"로 바뀌는 것을 실시간을 확인할 수 있음
-
Buyer와 Admin에게만 물품 수정 권한이 있음
- REGISTRATION → Edit
- 이름과 수량 수정(RFID는 수정 불가)
- Save
-
Buyer와 Admin에게만 물품 삭제 권한이 있음
- REGISTRATION → Delete
- 로그인 전 - 간단한 서비스 구성도가 보임.
- IoT의 이전 버전 Demo Youtube
- IoT 병합 전 버전의 GitHub Repo
- 아두이노의 RFID 리더기가 랜덤으로 인식이 되지 않는 케이스가 있음
- 전원을 껐다 켜면 정상 작동함
- 메모리 부족으로 추정했으나 아닌 듯하고 정확한 원인을 모르겠음
- 창고 등록시 사진을 여러 개 등록할 수 있도록 할 것
- 현재 창고 사진 1개 등록할 수 있음
- 클라이언트 - 창고 서버 간의 통신을 프록시로 구현
- 현재 클라이언트 측에서 창고 서버의 웹소켓 주소를 직접 접속하도록 구현되어 있음
- 메인 서버가 웹소켓 요청을 받으면 창고 서버로 우회하도록 구현