THW Sauna Session Viewer

다기기 생체신호 정규화 · 통합 뷰 — Polar H10(가슴 ECG) · Galaxy Watch7 · Galaxy Fit3 · ㈜더웨이유 for ㈜사사사

내 세션 올리기

Polar Sensor Logger *_RR.txt (필수) · Samsung Health 내보내기 .zip · 세션 기록 기록시간.txt 를 한꺼번에 끌어다 놓으세요.

파일은 브라우저 안에서만 처리되고 서버로 전송되지 않습니다. 브라우저 처리에는 ECG 정렬 단계가 없어 박동 시각은 RR 누적합 기준입니다. 처음이면 아래 새 세션 데이터 넣는 법을 먼저 보세요.

심박 — 기기 통합 타임라인 (KST)

H10 (ECG R-R 기준)Watch7Fit3 사우나냉탕외기욕

HRV — RMSSD · SDNN (H10, 60초 창, 유효 커버리지 ≥ 80% 창만)

아래 막대 = 창별 H10 유효 박동 커버리지(초록 ≥0.8 사용 · 빨강 <0.8 제외). 손목 기기는 운동 중 박동간격(IBI)을 내보내지 않아 HRV는 H10만 산출합니다.

라운드 · 구간 요약

손목 vs H10 오차 (이 세션)

MAE = 손목 HR과 같은 시각 H10 HR의 평균 절대오차(bpm). 보정 = 기기 지연(냉탕 별도) + 선형(Fit3). 계수 v1.1은 2026-10-29·11-03 2세션 실측으로 추정 — 1인 데이터, 일반화 주장 아님.

정규화 규칙 (이 뷰어가 하는 일)

  1. 시간대 통일 — Samsung Health 내보내기 시각은 UTC → +9h로 KST 변환. Polar 파일 시각은 폰 로컬(KST) 그대로.
  2. H10 박동 시각 복원 — Polar의 'Phone timestamp'는 블루투스 수신 시각이라 묶음 수신 시 최대 수 분 밀림(11/3 실측 112초). 박동 시각 = 파일 첫 박동 + RR 누적합으로 다시 계산.
  3. RR 품질 판정 — 300~2000ms 이고 주변 5박 중앙값 대비 ±20% 이내만 유효(Malik 계열). 무효 박동은 HR·HRV 계산에서 제외.
  4. 기준 HR — 유효 RR의 순간심박을 1초 격자 5초 이동평균. 손목 HR 비교의 정답.
  5. HRV — 60초 창, 연속 유효 박동 쌍으로 RMSSD, 유효 박동으로 SDNN. 유효 커버리지 0.8 미만 창은 표시하지 않음(결측을 보간한 HRV는 측정값이 아님).
  6. 손목 보정 — HR_보정(t) = a × HR_기기(t − lag) + b. 냉탕 구간은 별도 lag. 냉탕은 보정 후에도 오차가 커서 '신뢰 낮음'으로 표시.
  7. 구간 라벨 — 세션 기록지(라운드별 사우나·냉탕·외기욕 종료 시각)로 모든 기기 샘플에 같은 라벨 부여.
새 세션 데이터 넣는 법 (사용법)

A. 화면에서 바로 보기 (누구나, 1회성)

  1. 측정 — 가슴에 Polar H10(전극 적셔서), 오른손목 Galaxy Watch, 왼손목 Galaxy Fit. 폰의 Polar Sensor Logger에서 H10을 연결하고 RR·ECG 기록 시작. 워치는 '기타 운동'으로 운동 시작(걷기는 자동 일시정지됨). 자세한 수칙은 납품 문서 ⑥ 가드레일·가이드라인 참고.
  2. 기록지 — 메모장에 아래 형식으로 라운드별 종료 시각을 적어 기록시간.txt로 저장(형식이 다르면 구간 라벨이 안 붙음).
    1차 시작 10:10
    사우나 온도 85도 종료 10:26
    콜드플런지 16도 종료 10:28
    외기욕 종료 10:38
    
    2차 시작 10:38
    …
  3. H10 파일 꺼내기 — Polar Sensor Logger에 저장된 파일 중 Polar_H10_…_RR.txt(필수)를 폰에서 PC로 옮긴다. 세션 중 끊겨 파일이 여러 개면 모두 옮긴다.
  4. 워치 데이터 꺼내기(선택) — Samsung Health 앱 › 설정 › 개인 데이터 다운로드로 받은 .zip을 압축 풀지 말고 그대로 준비. 측정 시간대(±30분)의 Watch·Fit 운동기록만 자동으로 읽는다.
  5. 올리기 — 위쪽 [+ 내 파일] → RR.txt 전부 + 기록시간.txt + zip을 한꺼번에 끌어다 놓기. 새 탭 'YYYY-MM-DD (업로드)'가 생긴다.
  6. 확인 — 라운드 표의 H10 커버가 빨간 구간(80% 미만)은 HRV를 믿지 말 것. 손목 vs H10 오차표에서 냉탕 값은 원래 크다(신뢰 낮음).

업로드 세션은 이 브라우저 화면에만 있고 새로고침하면 사라진다. 다른 사람과 공유하려면 B 방법으로 등록.

B. 데모 세션으로 영구 등록 (개발자)

  1. 원본을 한 폴더에 모은다: h10/(RR·ECG·ACC·HR txt), 기록시간.txt, samsung/(Samsung zip 압축 해제본).
  2. 정리: SESS_RAW=<폴더> SESS_OUT=<정리본> SESS_DAY=YYYY-MM-DD python organize.py → ECG 정렬까지 포함한 정리본 CSV 생성.
  3. 분석: analyze.py의 SESS 목록에 새 세션 정리본 경로를 추가하고 ANALYZE_SESS=…,YYYY-MM-DD python analyze.py 실행(보정 계수 재학습·교차검증).
  4. 웹 데이터: python export_web.py → data/sessions.json 갱신.
  5. 배포: npx wrangler pages deploy 11_web_mvp --project-name thw-sauna-viewer --branch main.

실명·계정 정보가 들어간 파일은 올리지 말 것(가명 S-xx 사용). 자세한 입출력 규격은 납품 문서 ② THW 엔진 기술·사용 설명서.