BABIL_PROJECT 17

BLE

본 포스트는 졸업 프로젝트 중간 보고서로 제출한 내용 중 일부를 가져온 것입니다. 블루투스 4.0 스펙을 의미한다. Central 과 Peripheral 방식으로 장치 역할이 나뉘는데, 각자 규칙을 정하는 역할, 제시되는 설정에 따라 동작하는 역할로 보면 된다. 본 프로젝트는 BLE를 이용하므로 그 구조와 프로토콜에 대한 이해가 어느정도 필요하다. 다음은 BLE 의 프로토콜 스택 이미지이다. 크게 Host 와 Controller로 나뉘어 있다. PHY는 하드웨어, LL은 BLE 연결을 직접적으로 관리하는 계층이다. 하드웨어 계층과 직접적으로 연결된 LL에서 연결 상태가 정의 되므로 BLE를 이용하는데 있어 중요한 계층이라고 할 수 있다. 그림은 다음과 같다. Central 장치가 scanning 을 해서..

BABIL_PROJECT/BLE 2022.06.18

자동 로그인 구현

firebase api를 이용해서 자동로그인을 구현하는 방법이 없을까 (라기 보다는 추천하는 방법이 없을까) 해서 문서를 읽어보고있다. https://firebase.google.com/docs/auth/web/auth-state-persistence?hl=ko&authuser=0#supported_types_of_auth_state_persistence 인증 상태 지속성 | Firebase Documentation Join Firebase at Google I/O online May 11-12, 2022. Register now 의견 보내기 인증 상태 지속성 Firebase JS SDK를 사용하면 인증 상태를 유지하는 방식을 지정할 수 있습니다. 로그인한 사용자가 명시적으로 로그 firebase.goo..

React-Navigation & Lifecycle

한동안 개발일지 작성을 못했다. 최근엔 뭔가를 새로 배우기 보다는 노가다의 연속이 많기 때문이다. 물론 개선해야할 부분은 매우매우 많지만 (응답 실패에 대한 분기라던가) 먼저 1차 완성본을 만드는게 우선이라 많은 부분을 그냥 넘어가고 있다. 지금은 메인화면 index.js에서 화면을 벗어나면 스캔을 종료하는 로직을 구현하려고 한다. componentWillUnmount를 이용할 수 있을까 했는데, 그저 스크린이 넘어가는것이 unmount의 조건이 아닌것같다. react-navigation document를 참고하니 의외로 매우 쉽게 해결됐는데, react-navigation 역시 나름의 lifecycle이 있어 다른 스크린으로 navigate 한다고 해당 스크린을 구성하던 component들이 unmou..

BABIL_PROJECT/APP 2022.05.07

바이크 등록

할 일 바빌 키 등록의 성공 / 실패 화면으로 넘어가는 분기를 만들어야 한다. 분기는 크게 다음 두가지 상황에서 나타날 수 있다. 1. 타겟 디바이스를 입력한 뒤 babilScan.js 에서 해당 디바이스를 스캔한 결과에 따라. 2. 주변에 타겟 디바이스를 발견하여 닉네임을 설정했으나 서버로부터 응답이 거부된 경우. 닮아보이는 성공 실패 화면을 한 컴포넌트로 재활용하면 좋겠다는 생각이 든다. 해결 1. babilScan.js에서 타겟 디바이스를 어느정도 스캔해보고 promise로 결과를 받는다. 2. 그러기 위해선 먼저 nickName 화면 먼저 만들어야 한다. 그냥 문자열을 적어 제출하면 끝이다. userId : uid productId: device uid brand modelName bikeNick..

BABIL_PROJECT/APP 2022.05.02

모듈 등록 가능 여부 확인

할 일 QR을 찍는다는 것은, 바빌키 uid를 읽어 복호화 한다는 의미이다. 읽어낸 uid는 서버에 보내 실제로 있는 모델인지, 그리고 사용가능한지를 확인한다. 사용가능하면 차대번호를 입력해서 다음 화면으로 넘어간다. 해결 & 코드 QR코드 자체는 당장 우선순위가 아니고, 차대번호 역시 조금 밀린다고 본다. 따라서 지금은 직접 uid를 입력하는 방식으로 만들었다. 그저 db에 해당 uid가 있는지 확인하고, 사용 가능한지 확인하는 작업을 하는 액션이다. 추후 QR 인증 방식으로 전환하는게 좋겠다. babilLink.js renderCheckButton = (deviceUid) => { const disabled = this.state.targetProductUid ? true : false; const ..

BABIL_DB스키마

큰일난것 같다. DB를 너무 쉽게 생각한 모양이다. 왜 그러는지는 명세를 작성하며 정리해보자. 먼저 모듈 얘기 부터 하자. 우리는 바빌키를 판매한다. 판매한 바빌키는 구매한 소비자에게 넘어갈 것이고, 소비자는 앱을 이용하여 어떤 인증과정을 통해 해당 바빌키를 활성화 시킨다. 활성화 과정 중, 유저는 자신의 바이크 정보를 앱에 기입한다. 우리 쪽에서는 이제, 어떤 사람이 (가입해야지만 활성화가 가능하니까 결국 활성화 한 사람이 누군지 알 수 있는것), 또 어떤 바이크에 장착하여, 어떤 바빌키를 이용하는지 알 수 있게된다! 유저가 바빌키를 이용하던 도중 문제가 발생할 수 있다. 그렇다면, 우리는 바빌키 장착 후 얼마만큼 시간이 지나서 문제가 발생했는지 (장착해야지만 모듈이 가동될테니까), 어떤 모델에 장착했..

오토바이 DB

아무리 파이어베이스가 백엔드를 날로먹는다고는 하지만, 결국 데이터 구조를 짜는것은 개발자의 몫인것은 당연하다. 그래서 미약한 지식으로 최대한 빠르게 작업해보자 한다. 음... 그럼 db에서 가져올 "데이터"는 도대체 뭐가 있을지 부터 한번 보자. --------------------------------------------------------------------------------- DB는 이도윤 팀원과 함께 진행하기로 했다. babil_프로토타입_ver01.3 (adobe.com) babil_프로토타입_ver01.3 46 Screens, Last modified on Jan 24, 2022 08:12 GMT xd.adobe.com 먼저, 화면 상 띄워주는 데이터들은 아래 자료들 정도이다. 말 그..