포트폴리오/[IoT 기반 피지컬 AI 교육일지]

[ C언어 IoT 프로젝트 ] #6 스마트홈 최종 발표 준비 및 회고 (30일차 기록)

개발자혜콩 2026. 3. 27. 16:33

1. 오늘 한 것

① 프로젝트 전체 아키텍처 및 시스템 최종 구조도 정리

아두이노(hw) - 리눅스(게이트웨이/서버) - 윈도우(클라이언트)로 이어지는

3계층 데이터 파이프라인의 최종 구조를 도식화하고 문서화함.

 

② 프로젝트 회고

 - 가장 잘한 결정 (바이너리 프로토콜 도입):

  • 텍스트 파싱의 취약함을 깨닫고, NetPacket 구조체를 정의하여 protocol.h 하나로 세 플랫폼이 공유하도록 설계한 것. 이 결정 덕분에 유지보수성과 확장성이 극대화됨.

 - 가장 고생한 순간 :

  • 스레드 간 컨텍스트를 혼동하여 발생한 컴파일 에러. serialThread에서 클라이언트의 소켓 fd를 참조하려 했던 실수를 통해 "이 함수가 지금 어느 스레드 위에서 돌고 있는가"를 항상 의식하는 계기가 됨.

2. 기술적 한계와 극복 방법 분석

① 네트워크 단절 시 경보 미전달 : TCP 연결이 끊기면 경보가 전달되지 않음

  - 극복 방향:

  • 서버를 systemd 서비스로 등록해 자동 재시작
  • 서버가 30초 이상 아두이노 패킷을 못 받으면 "센서 연결 끊김" 경고 발송
  • SMS/카카오 알림 API를 보조 채널로 연동
  • 아두이노 자체에서 연결 끊김 감지 시 LED로 로컬 경고

② 인증 없는 TCP 접속 : "GUARDIAN" 문자열만으로 접속이 허용되는 평문 통신

  - 극복 방향:

  • 접속 시 비밀번호 또는 토큰 기반 인증 추가
  • TLS 암호화로 전송 데이터 보호
  • 허용 IP 화이트리스트 적용

③ 오경보 문제 : 센서 임계값 오류로 인한 잦은 오경보

  - 극복 방향:

  • 설치 환경에 맞는 초기 캘리브레이션 단계 도입
  • 보호자가 "오감지" 처리할 수 있는 버튼 제공
  • 오감지 이력 분석으로 임계값 자동 보정

3. 향후 개선 방향

① 보안 강화

  • 현재: TCP 평문 통신, 문자열 인증
  • 개선: TLS 암호화 + JWT 토큰 인증

② 스마트폰 앱 확장

  • Windows UI 의존성을 탈피해 React Native나 Flutter로 모바일 앱을 제작 > 보호자가 항시 모니터링 가능 
  • 서버 API만 REST로 추가하면 됨.

③ 데이터 분석

  • sensor_logs가 쌓이면 거주자의 생활 패턴 분석이 가능해짐.
  • "평소 이 시간에 움직임이 있었는데 오늘은 없다" 같은 패턴 기반 이상 감지로 발전가능성 有.

DB 자동 정리

  • sensor_logs는 3초마다 쌓임 > 1년이면 수천만 건
  • 30일 이상 된 센서 로그는 자동 삭제, alert_logs는 영구 보관하는 구조가 필요.
-- cron으로 매일 실행
DELETE FROM sensor_logs
WHERE created_at < NOW() - INTERVAL 30 DAY;

4. 프로젝트 회고

처음 기획할 때의 목표는 단순했다.
"고령 1인가구가 위험에 처했을 때 보호자가 바로 알 수 있게 하자."

아두이노 센서가 위험을 감지하면, 보호자 화면이 빨갛게 번쩍인다.

 

하지만 그 과정에서 배운 건 목표 이상이었다.

시스템은 항상 가장 약한 연결고리에서 무너진다.
텍스트 파싱 하나, 공유 DB 연결 하나, 인코딩 설정 하나.

작은 것들이 전체를 혼란스럽게 만들었고, 그것들을 하나씩 고치는 과정이 진짜 개발이었다.

 

그리고 솔직히 말하면, 아직 부족하다.
보안도 없고, 재연결 로직도 없고, 모바일 앱도 없다.

하지만 그 부족함을 알고 있다는 것, 그리고 어떻게 채워야 할지 방향을 알고 있다는 것.

그것만으로도 이 프로젝트는 충분히 의미 있었다.


전체 시리즈 링크

2026.03.23 - [저네콩/[IoT 기반 피지컬 AI 교육일지]] - [ C언어 IoT 프로젝트 ] #1 고령 1인가구 안심 스마트홈 아키텍처 설계 (25일차 기록)

 

[ C언어 IoT 프로젝트 ] #1 고령 1인가구 안심 스마트홈 아키텍처 설계 (25일차 기록)

1. 오늘 한 것① 프로젝트 기획 및 요구사항 명세기획 배경: 1인 가구 증가 및 독거노인 고독사 문제 해결을 위한 '고령 1인가구 안심 스마트홈 케어 시스템' 기획.핵심 기능 도출 (페르소나 분리):

hyekkong.tistory.com

 

2026.03.23 - [저네콩/[IoT 기반 피지컬 AI 교육일지]] - [ C언어 IoT 프로젝트 ] #2 스마트홈 센서 테스트 & 시리얼 통신 (26일차 기록)

 

[ C언어 IoT 프로젝트 ] #2 스마트홈 센서 테스트 & 시리얼 통신 (26일차 기록)

센서 사용해서 직접 결과보고 예상치 못한 결과를 어떻게하면 값이 튀지 못하게 할지 고민해 보는 부분이 재밌었다 1. 사용한 센서 및 부품초기에는 가스 센서(MQ-2), 심박수, 기울기 센서까지 모

hyekkong.tistory.com

 

2026.03.24 - [저네콩/[IoT 기반 피지컬 AI 교육일지]] - [ C언어 IoT 프로젝트 ] #3 MySQL 연동 및 멀티스레드 TCP 소켓 구축(27일차 기록)

 

[ C언어 IoT 프로젝트 ] #3 MySQL 연동 및 멀티스레드 TCP 소켓 구축(27일차 기록)

1. 오늘 한 것① 시스템 데이터베이스(MariaDB/MySQL) 설계 및 구축데이터의 성격과 보존 주기에 따라 3개의 핵심 테이블 구조를 설계함.sensor_logs: 아두이노 센서 수치 실시간 기록 (주기적 삭제 필요)

hyekkong.tistory.com

 

2026.03.24 - [저네콩/[IoT 기반 피지컬 AI 교육일지]] - [ C언어 IoT 프로젝트 ] #4 인코딩 에러수정, WinAPI 비동기 UI 개발 (28일차 기록)

 

[ C언어 IoT 프로젝트 ] #4 인코딩 에러수정, WinAPI 비동기 UI 개발 (28일차 기록)

1. 오늘 한 것① 한글 인코딩(UTF-8 ↔ CP949 ↔ UTF-16) 구조 통일Linux 서버(UTF-8)에서 보낸 한글 데이터가 Windows 클라이언트(CP949)의 로그창에서 깨지는 현상을 해결하기 위해 전 구간 인코딩 파이프라

hyekkong.tistory.com

 

2026.03.24 - [저네콩/[IoT 기반 피지컬 AI 교육일지]] - [ C언어 IoT 프로젝트 ] #5 Win32 API 대시보드 구현 및 최종 기능 점검 (29일차 기록)

 

[ C언어 IoT 프로젝트 ] #5 Win32 API 대시보드 구현 및 최종 기능 점검 (29일차 기록)

1. 오늘 한 것① 보호자 대시보드 UI 구조 완성┌────────────────────────────────────────────┐│ 시계 (타이틀바, 어두운 배경) │├──

hyekkong.tistory.com

 

프로젝트 깃허브 링크

https://github.com/hyekong/The_Safest_House

 

GitHub - hyekong/The_Safest_House: IoT 기반 고령 1인가구 안심 스마트홈 시스템

IoT 기반 고령 1인가구 안심 스마트홈 시스템. Contribute to hyekong/The_Safest_House development by creating an account on GitHub.

github.com