티스토리 뷰
하드웨어+펌웨어+앱+웹(서버) 통합 개발 - BiliMon
tothebeyond 2026. 7. 31. 18:37[금번 보완 내용]
Ver.1.0.059
1. 목적
1) 이 프로젝트의 최초 기획 목적은 "근거리 무선 통신(BLE) 광고의 상시 고정 방식을 상황에 따라 조절되는 적응형 방식으로 전환"하고 "센서 이벤트 발생 방식도 마찬가지로 적응형으로 전환"하는 것이었음.
2) 이후 여러 차례의 검토·보완 라운드를 거치며 논의가 확장되어, "데이터가 쌓이고 향후 기계학습/AI가 적용되며 계속 진화할 수 있는 시스템의 토대를 만든다"는 방향으로 목적이 구체화됨 — 특히 열화상 센서를 이용해 "아기 모니터링"(자세 이상·발열 감지)과 "화재 감지"(극단 고온 감지) 두 가지 동작 모드 중 기기당 하나를 선택해 운용하는 기능으로 구체적인 결실을 맺음.
3) 직전 라운드에서는 그동안의 모든 기획·검토 내용을 전수 재검토하여 빠지거나 서로 어긋나는 부분이 없는지 확인하는 감사 작업이 이루어졌고, 그 결과를 바탕으로 실제 구현계획서가 별도로 작성되어 코드에 반영되었음.
4) 이후 그 구현계획서와 실제 코드를 다시 한번 전수 대조하는 감사가 이루어졌고, 이 과정에서 아직 반영되지 않았거나 일부만 반영된 항목 9가지가 확인되었음.
5) 이번 세션의 목적은 새로운 기능을 새로 기획하는 것이 아니라, 이미 대부분 반영되어 있던 코드(전수 감사 결과 "예상보다 훨씬 광범위하게 이미 구현되어 있었음"으로 확인됨) 중에서 **위 9개 항목 가운데 미뤄두기로 확정한 1개를 제외한 나머지 8개를 마저 완성**하는 것이었음. 제외된 1개 항목은 "근거리 무선통신 연결 종료 확인 방식을 고정 대기시간 방식에서 실제 확인 방식으로 교체"하는 항목으로, 관련 라이브러리의 동작 방식이 아직 실측으로 확인되지 않았다는 이유로 이번 라운드에서는 다루지 않기로 함.
2. 의미 — 왜 이 항목들이 중요했는가
1) 신규 생산 기기의 초기 설정값을 담는 템플릿 파일에서 누락된 항목이 발견되었는데, 이는 단순 누락이 아니라 **심각도가 가장 높은 문제**였음: 실제로 대조해 본 결과 동작 모드 선택 설정뿐 아니라 관련된 임계값 설정 상수 다수(약 40개)가 통째로 빠져 있어, 방치했다면 **신규 생산 기기가 정상적으로 빌드조차 되지 않는** 상황이었음(당초 파악됐던 것보다 훨씬 큰 누락이었음을 이번 세션에서 다시 확인함).
2) 불량 셀이 확정될 때 진단용 원본 데이터를 서버에 올리는 기능을 구현하는 과정에서, 기존 데이터 업로드 처리 로직의 임시 저장 공간이 고정된 크기로 제한되어 있어 상당한 크기의 진단 데이터가 조용히 유실될 뻔한 **실제 결함을 발견하고 함께 수정**함 — 애초 계획에는 없던 부수적 발견.
3) 화재 감지 시 근거리 무선통신 광고가 요청되지 않는 문제를 확인하는 과정에서, 화재 조기경보 판정 로직 중 하나(배터리 관련 센서의 전류값을 이용한 판정)에 **수치 비교 방식의 결함**(부호가 있는 원시값을 그대로 비교해 특정 방향의 큰 전류 변화를 놓치는 문제)을 먼저 발견해 수정했으나, 곧이어 기획 확인 결과 "해당 센서는 애초에 화재 감지 판정에 사용하지 않는다"는 방침이 명확히 정해져 그 판정 로직 자체를 완전히 제거함 — 화재 감지는 열화상 센서의 절대 온도 기준(불량 셀 제외)만으로 판정하는 것으로 범위가 좁혀짐.
4) 화재 감지 동작 모드는 나머지 세부 로직이 추후 개발 예정이라는 판단에 따라 비활성 상태로 고정하고, 실수로 켜지지 않도록 관련 설정에 안내를 보강함 — 즉 이번 라운드는 화재 감지 기능을 "완성"한 것이 아니라 **아기 모니터링 모드를 실사용 가능한 수준으로 완성하고, 화재 감지 모드는 의도적으로 미완성 상태임을 명시적으로 잠가둔 것**임.
3. 수정 내용 (기기 내부 동작 프로그램)
1) 신규 기기 생산용 초기 설정값 템플릿 파일: 두 가지 동작 모드 선택 설정과 관련 임계값 설정 상수 전체(약 40개)를 반영하고, 버전 표시값을 실제 운영 중인 프로그램과 동일하게 맞춤.
2) 기기 부팅 시 보고하는 정보 문자열에, 열화상 센서 실장 여부를 알리는 항목이 빠져 있던 것을 추가 — 서버 쪽은 이미 이 값을 받아 처리하는 준비가 되어 있었으나 기기 쪽에서 값을 보내지 않고 있었음.
3) 재부팅 원인을 더 세분화해서 기록하도록, 재부팅 원인의 구체적인 원시 코드값을 함께 남기는 기능을 추가.
4) 열화상 센서가 없는 기기에서 아기 모니터링 기능이 자동으로 비활성화된다는 사실을 소유자에게 알리는 최초 1회 알림 기능을, 재부팅될 때마다 초기화되어 매번 다시 발송되던 방식(취지에 맞지 않음)에서, 전원이 완전히 꺼졌다 켜져도 값이 남는 저장방식으로 변경해 실제로 최초 1회만 발송되도록 구현.
5) 불량 셀이 확정될 때 진단용 원본 열화상 데이터(전체 프레임) 1회를 서버에 올리는 기능을 구현. 별도의 새 통신 경로를 만드는 대신 기존에 쓰이던 데이터 업로드 경로를 그대로 재사용하여 서버 쪽 코드 변경 없이 구현. 이 과정에서 실제로 쓰이고 있는 업로드 처리 로직과, 코드에는 남아있지만 실제로는 호출되지 않는 예비 처리 로직 두 곳 모두에서, 임시 저장 공간 크기를 고정값이 아니라 실제 전송할 데이터 크기에 맞춰 정하도록 수정.
6) 열화상 화면을 표시하는 앱 화면에서, 불량 셀이 일정 개수(3개) 이상 확정된 경우 화면을 보여주기 전에 경고 안내창을 먼저 띄우는 기능을 신규 구현(기존에 있던, 훨씬 많은 개수(10개) 초과 시의 경고 안내창과는 별개 기능임).
7) 앱의 배포용 서명 절차에서, 서명에 쓰이는 비밀번호가 소스코드 안에 평문으로 그대로 적혀 있던 문제를 별도의 비공개 설정 파일로 분리해 관리하도록 개선. 이 설정 파일이 없는 환경에서도 서명이 필요 없는 나머지 빌드 작업은 계속 가능하도록 처리.
8) [보류] 근거리 무선통신 연결 종료를 고정된 대기시간 대신 실제 확인 방식으로 처리하도록 교체하는 항목은, 관련 라이브러리의 동작이 아직 실측으로 확인되지 않았다는 이유로 이번 라운드에서 보류함.
9) 화재/안전 관련 위급 상황이 확정되었을 때 근거리 무선통신 광고를 함께 요청하는 기능이, 관련 코드 뼈대는 있었지만 실제로 호출되는 지점이 어디에도 없던 것을 확인함. 열화상 기반 화재·극단고온 확정 판정 지점(최초 확정 시점과 상황이 계속될 때의 재알림 시점 양쪽)과, 발열이 가장 심각한 단계로 확정되는 지점 두 곳에 이 광고 요청 호출을 새로 배선함.
10) [위 9번 작업 중 부수적으로 발견되어 재정정] 화재 조기경보 판정 로직 중 배터리 관련 센서의 전류값을 이용하는 부분에서, 부호를 고려하지 않은 수치 비교 결함을 먼저 발견해 절대값 기준 비교로 수정했으나, 이후 기획 확인 결과 이 센서는 애초에 화재 감지에 사용하지 않기로 확정되어 해당 판정 로직 전체를 삭제함. 이제 화재 조기경보 후보 조건은 열화상 센서의 급격한 온도 상승 추세와, 절대 온도 임계치·인접 셀 동반 상승·불량 셀 제외 조건을 모두 만족하는 정식 판정, 이 두 가지만 남음.
11) 화재 감지 동작 모드 설정을 신규 생산용 템플릿과 현재 운영 중인 설정 파일 양쪽 모두에서 비활성 상태로 유지하고, "나머지 화재 감지 로직은 추후 개발 예정이므로 활성화하지 말 것"이라는 안내를 명시적으로 추가함.

4. 수정 내용 (사용자 앱, 총 3종)
열화상 센서가 포함된 메인 사용자 앱, 마스터 기기 제어용 앱, 싱글 마스터 운용 앱 등 총 3종의 안드로이드 앱 모두 배포 버전 표기를 이번 구현계획 반영분에 맞춰 통일하고, 새로운 배포용 설치파일을 각각 생성함. 빌드 과정에서, 개발 환경 설정 파일에 안드로이드 개발도구 설치 경로가 다른 사용자 계정 기준으로 고정되어 있던 문제(3개 앱 공통)를 현재 사용 중인 환경에 맞게 수정해 해결함.
5. 수정 내용 (문서화)
1) 기기 내부 동작 프로그램이 서버로 데이터를 올리거나 앱과 실시간으로 통신할 때 쓰는 짧은 약어 표기 전체를, 공통 항목과 센서별 항목으로 나누어 정리한 문서(문서 파일 및 표 형식 파일 각 1종)를 신규 작성. 각 약어가 어떤 영어 단어의 축약인지 원래 단어 안에서 해당 글자를 강조 표시하는 방식으로 의미를 표기함.
2) 데이터 종류를 구분하는 상위 분류 항목들에 지정되는 값들을 같은 방식으로 별도 정리한 문서(문서 파일 및 표 형식 파일 각 1종)를 신규 작성.
3) 향후 과제를 모아두는 기록 문서에, 불량 셀 확정 시 올리는 원본 진단 데이터를 조회·표시하는 기능이 아직 없다는 점(계획 단계에서는 별도로 기록해 미루기로 했다고 되어 있었으나 실제로는 그 기록이 빠져 있었음)을 신규 항목으로 추가함.
6. 미완료·후속 확인 필요 사항
1) 이번 세션에서 이루어진 기기 내부 프로그램/서버/앱 관련 소스 수정은 **실제 컴파일·빌드 테스트를 거치기 전** 상태로 기록을 마감함(사용자가 별도로 직접 컴파일할 예정이라 안내했으나, 세션 종료 시점 기준 실제 컴파일 결과는 확인되지 않음). 다만 사용자 앱 3종의 배포용 빌드는 3종 모두 정상적으로 완료되는 것을 확인함.
2) 서버 쪽 코드는 이번 세션에서 전혀 수정하지 않음 — 진단 데이터 업로드 기능도 기존 서버 코드가 별도 수정 없이 그대로 처리 가능한 방식으로 우회 구현했기 때문.
3) 앞서 작성된 구현계획서 본문 중 일부는 화재 감지에 배터리 관련 센서를 함께 사용한다는 전제로 적혀 있는데, 이번 정정으로 실제와 어긋나게 되었으므로 계획서를 다시 다룰 기회가 있으면 함께 바로잡을 필요가 있음.
4) 보류된 항목(근거리 무선통신 연결 종료 확인 방식 교체)은 여전히 착수 전 상태 — 관련 라이브러리 동작이 실측으로 확인된 뒤 재검토할 것.

'BilientSevices > Measurement&Monitoring' 카테고리의 다른 글
| BiliMon266, Ver.0.6 (0) | 2026.06.07 |
|---|---|
| BiliMon 시스템을 활용한 우선 추진 비즈니스 모델 (0) | 2026.06.03 |
| 프로그래머를 위한 BiliMon 활용 방안 (0) | 2026.05.31 |
| 관리자를 위한 BiliMon 활용 방법 (0) | 2026.05.30 |
| 데이터 분석가를 위한 BiliMon 활용 방법 (0) | 2026.05.24 |
- Total
- Today
- Yesterday
- 아두이노
- DYOV
- 둎
- Innovations&Hurdles
- ServantClock
- 혁신
- 빌리언트
- Innovations
- bilient
- 치매방지
- 전류
- 빌리칠드
- 허들
- 치매
- 절연형
- 전압
- 심심풀이치매방지기
- 혁신과허들
- 오블완
- Decorator
- Innovation&Hurdles
- 심심풀이
- Video
- image
- BSC
- 티스토리챌린지
- arduino
- 배프
- BiliChild
- Hurdles
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |

