블루투스 메시 센서망 허브·수집 서버

저전력 블루투스 센서 장비의 펌웨어 개발 환경을 세우고, 메시 네트워크로 올라오는 측정값을 단일 보드 컴퓨터가 받아 기록하는 수집 서버와 파이썬 패키지를 만들었습니다.

입사 직후 맡은 일은 저전력 블루투스 장비의 펌웨어를 다룰 수 있는 환경을 만드는 것이었습니다. 크로스 컴파일 도구와 디버거, 제조사 SDK 를 묶어 개발 환경을 세우고 무선 펌웨어 갱신 절차를 확인한 뒤, 같은 작업을 다른 사람도 할 수 있도록 사내 세미나 자료로 남겼습니다.

장비를 여러 대 이어 통신 거리를 넓히는 메시 네트워크에서는 중계와 대리 역할을 맡는 노드 구성을 확인했습니다. 제품에 넣을 코드는 공개 예제의 라이선스를 그대로 쓸 수 없어 사내 라이선스 기준으로 다시 작성했습니다.

센서 값을 모으는 쪽은 단일 보드 컴퓨터가 맡았습니다. 장치를 이름으로 찾아 연결하고 알림을 구독하는 과정을 파이썬 패키지로 묶고, 장비가 보내는 패킷을 필드 규칙표로 해석하는 파서와 표 형태로 쌓는 기록 클래스를 붙여 하루 단위 파일로 저장했습니다. 예약 실행을 걸어 24시간 수집이 이어지게 했습니다.

초기 데이터는 값이 맞지 않아 그대로 쓸 수 없었습니다. 스트림을 16진수 수준에서 늘어놓고 장비를 조작해 가며 필드를 하나씩 대조해, 배치가 어긋난 항목과 폭이 잘못 잡힌 항목을 바로잡은 뒤에야 온도 변화가 값에 제대로 반영되는 것을 확인했습니다.

nRF51802BLERaspberry PiPythonpandas