chore: HERV 통합 저장소 초기 커밋

- 펌웨어(program), C# 대시보드(TestProgram), 시뮬레이터(Simulator),
  프로토콜/문서(Protocol, doc) 전체를 단일 저장소로 통합
- program 폴더의 별도 git 저장소를 제거하고 통합 저장소에 흡수
- 빌드 산출물(program/build, bin/obj, *.o/.elf/.bin/.hex 등) .gitignore 처리
- 사내 Synology NAS Git 원격 연결 예정

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-15 21:44:23 +09:00
commit 5a96a696b1
265 changed files with 76458 additions and 0 deletions
+110
View File
@@ -0,0 +1,110 @@
# 소스 ↔ 개발사양서 비교 분석
- **작성일**: 2026-06-02
- **대상 사양서**: `각실제어시스템_개발사양서_DL_동작로직_260318.pptx` (2026.03.18, 전경선 수석)
- **대상 소스**: `d:\project\nuvoton\HERV\program\User\` (Nuvoton NANO100SE3BN, arm-gnu-gcc 빌드)
- **시스템**: 각실제어 시스템(DL) — ERV 본체 + 각실 디퓨저(거실=room1, 침실1~3=room2~4)
> 검증 방식: 핵심 불일치 항목(쾌적조리 풍량, 스마트수면, 공기질 색상등급)은 소스 직접 확인,
> 광범위 항목은 다중 탐색으로 수집 후 교차 확인.
---
## 1. 요약 (Conclusion)
| 구분 | 항목 수 | 비고 |
|------|--------|------|
| ✅ 일치 | 9 | 센서 임계값, 집중/전실 판정, 안심회복, LED 등 |
| ❌ 불일치/미반영 | 3 | 쾌적조리 풍량, 스마트수면 26.03.18 개정, 공기질 색상등급 |
| ⚠️ 확인 필요 | 2 | 팬 VSP 4단/공청 값, 센서 주기 |
---
## 2. ✅ 일치하는 항목
| 사양 항목 | 사양값 | 코드 | 위치 |
|---|---|---|---|
| 센서→풍량단계 임계값 (슬라이드5) | CO2 600/700/800/900, VOC 250/300/350/400, PM2.5 15/30/50/70 | `m_CO2/VOC/PM2_5_Level_1~4` 기본값 동일 (CO2는 히스테리시스 50 적용) | `My_Uart.c:1313-1326` |
| 3종 센서 Max로 풍량 결정 | 최대 등급 채택 | CO2\|VOC\|PM2.5 OR 비트 → 0~4단 | `My_system.c:890-935` |
| 집중/전실 판정 | [최대−2번째]≥2 → 집중 | `(vars[0].value - vars[1].value) >= 2` | `My_system.c:1080, 1108` |
| 집중모드 최소시간 | 5분 (최신) | `Focus_Mode_RunTime = 3000` (=5분, 100ms×3000) | `My_system.c:1087, 1115` |
| 풍량 최대 4단 | 4단 | `if(Tmp_Air_Volume>4)=4` | `My_system.c:1179` |
| 안심회복 모드 | 침실1 음압(급기X/배기O), 타실 급기O/배기X, **2단** | 선택실 SA=0/RA=110, 타실 SA=110/RA=0, `Set_Fan_Mode=2` | `My_system.c:732-770` |
| 디퓨저 LED | 댐퍼 1개라도 열리면 ON, 밝기 0~9 | SA\|RA≠0 → ON, `Light_Bright` 0~9 | `My_system.c:714-724` |
| 공청 시 배기팬 OFF | 공청=급기만 | 공청 1~4단 EA팬 duty=0 | `MyMotor.c:1294-1307` |
| 팬 VSP 기본값(환기 1~3단) | 슬라이드13: 1단 EA56/SA57, 2단 65/67, 3단 72/75 | `s_FAN2/1_VEN_*` 동일값 | `MyControl.c:124-152` |
### 안심회복 모드 상세 (사양 대비 정확 일치)
- 사양: 급기(SA) 거실O 침실1X 침실2O 침실3O / 배기(RA) 거실X 침실1O 침실2X 침실3X, 환기 2단
- 코드: 전실 SA=110/RA=0으로 초기화 후 `Ext_Select_Room`(침실1)만 SA=0/RA=110 역전 → 사양과 동일
---
## 3. ❌ 불일치 / 미반영 항목 (소스 직접 확인)
### 3.1 쾌적조리 모드 ERV 풍량 — 사양 3단 vs 코드 **4단**
- 사양(슬라이드9): "H-ERV 환기모드, 풍량 **3단계** (전실 급기 댐퍼 ON)"
- 코드: `Tmp_Air_Volume = 4;`**4단** (`My_system.c:1030`)
- 운전모드도 사양은 환기모드(MODE_VENTILATION)이나 코드는 `Set_Run_Mode = MODE_AUTO` (`My_system.c:1026`)
- 급기 전실 ON / 배기 전실 OFF, 후드 3단 연동(`Hood_Fan_Mode=3`)은 일치
### 3.2 스마트수면 모드 — 26.03.18 개정분 **미반영** (코드는 구버전 로직)
이력관리 "2026.03.18 자동, 수면 모드 수정(9P)" 항목이 코드에 미적용:
| 26.03.18 사양 | 코드 현재 | 위치 |
|---|---|---|
| 풍량 **1단 고정** | `if(Tmp_Air_Volume>=2) Tmp_Air_Volume-=1` (자동값 1, 구버전) | `My_system.c:1191-1200` |
| 초기 **거실 CLOSE / 침실1~3 OPEN** | 전용 댐퍼 패턴 **없음** | - |
| **1시간마다 CO2≥1000 OPEN** | 미구현 (일반 focus mode `vars 차이≥2`만 사용) | `My_system.c:1080` |
- 진입부(`Ext_Run_Mode==4`)는 `Set_Fan_Mode=1` 설정하나, 이후 PASS_VOLUME에서 매 주기 센서값 재계산 후 −1 → 실제로는 "자동−1"로 동작.
### 3.3 공기질 색상등급(슬라이드6, 26.03.18) — **전체 비활성(dead code)**
- `Air_Quality_color_process()` 시작부 `return(0);` 로 즉시 반환 → 색상/문구(좋음·보통·나쁨·매우나쁨) 로직 전부 미동작 (`My_system.c:1216`)
- 임계값도 슬라이드6(CO2 700/1000/1300)이 아니라 `m_Level`(600/700/800/900) 기준으로 작성됨 → 살리더라도 26.03.18 등급표와 불일치
---
## 4. ⚠️ 확인·주의 필요
### 4.1 팬 VSP 4단 / 공청 값
- 환기 4단: 코드 SA87/EA84 vs 슬라이드13 SA95/EA92 (단 슬라이드14·15 실측은 86/85 — "4단 250→230CMH 소음저감"(25.10.17) 반영값에 근접)
- 공청: 코드 SA 46/51/56/60 vs 사양 전압표 SA 66/70/77 → 상이
- 이 값들은 VSP 테스트모드 + EEPROM으로 **현장 튜닝**되는 값이라 컴파일 기본값과 사양 실측표 차이는 정상일 수 있음. **EEPROM 저장값 별도 확인 권장**
### 4.2 센서 주기
- 사양: "센서 주기 30초 단위"
- 코드: 분배기 폴링 1초(`InCom_polling_timer=100`×10ms) → SEN66 내부 측정주기와 폴링주기 구분 확인 필요
---
## 5. 🔗 직전 작업(CVnet 삭제)과의 연관 — DL_Sinario 처리
- 월패드→각실 시나리오 명령 `DL_Sinario_Process()`(CMD 0~5: 전실/침실 급배기 패턴)는 **CVnet 홈넷통신으로만 트리거**되던 코드.
- 2026-06-02 작업에서 CVnet 삭제 → DL_Sinario가 dead code가 되어 **`DL_Sinario_Process()` 및 관련 참조 일괄 제거 완료**.
- 제거: `My_system.c`(함수+`DL_Sinario_CMD`), `My_Uart.c`(0x61 호출부+extern), `My_define.h`(extern)
- 안심회복/쾌적조리/스마트수면(`Ext_Run_Mode`)은 룸콘 "S Mode Select" 경로라 영향 없음.
- ※ 월패드(씨브이넷) 기반 각실 제어가 사양상 필요하면 CVnet 삭제와 충돌 → 방향 재확인 필요.
---
## 6. 후속 작업 후보(TODO)
1. 쾌적조리 ERV 풍량 4단 → **3단** 수정 (`My_system.c:1030`, 운전모드 검토)
2. 스마트수면 26.03.18 로직 구현 (1단 고정 / 거실 CLOSE·침실 OPEN / 1시간마다 CO2≥1000 OPEN)
3. 공기질 색상등급(`Air_Quality_color_process`) 활성화 + 슬라이드6 임계값 반영
4. 팬 VSP 4단/공청 EEPROM 저장값 확인
5. 260520(5월판) 사양서와 추가 비교
---
## 부록. 주요 소스 위치
| 파일 | 역할 |
|------|------|
| `My_system.c` | 모드 제어(`Ext_Run_Mode`), 센서→풍량/색상, 집중/전실, 팬 duty 변환 |
| `My_Uart.c` | 센서 임계값/기본값, 분배기 파싱, VSP 테스트, PC 메뉴 |
| `MyMotor.c` | 디퓨저 댐퍼(`Diffuser_Damper_process`), 팬 속도(`Fan_Speed_*`), BLDC_SPEED_TABLE |
| `MyControl.c` | 팬 duty 기본값 / EEPROM 저장·로드 |
| `My_define.h` | 모드·핀·EEPROM 주소 정의 |
| `My_RJ2.c` | 룸콘(232) 프로토콜, VSP 모드, Set_Run/Fan_Mode |
+116
View File
@@ -0,0 +1,116 @@
# 소스 ↔ 개발사양서 비교 분석 (260520)
- **작성일**: 2026-06-02
- **대상 사양서**: `각실제어시스템_개발사양서_DL_동작로직_260520.pptx` (2026.05.20, 전경선 수석)
- **대상 소스**: `d:\project\nuvoton\HERV\program\User\` (Nuvoton NANO100SE3BN, arm-gnu-gcc 빌드)
- **시스템**: 각실제어 시스템(DL) — ERV 본체 + 각실 디퓨저(거실=room1, 침실1~3=room2~4)
- **연관 문서**: `260602_소스_개발사양서_260318.md`
> 검증 방식: 핵심 항목(자동모드 풍량 산출, 쾌적조리, 스마트수면)은 소스 직접 확인.
---
## 0. 260318 → 260520 주요 변경점
- 이력관리에 **"2026.05.20 동작로직 수정 (26.04.28 DL 자료 기반) (9~10P)"** 추가
- **자동모드 로직 전면 개편** (슬라이드9~10):
- 부하점수(Score) 기반 풍량 단수 결정
- Eco / Normal / Turbo 모드별 임계값 (3세트)
- **4종 센서** (CO2 / PM2.5 / PM10 / VOC) — PM10 추가
- **거실 가중치 및 P_max 강제보상 삭제** → 점수 기반으로 직관적 동작
- 히스테리시스(데드밴드) 모드·센서별 정의
- 용어 변경: 전실모드 → **분산모드**, 집중급기 → **집중모드**
- 배선도: 각실분배기 PBA가 휴벤ECO에 부착, AC전원 2구 필요
---
## 1. ✅ 일치 (260318과 동일 유지)
| 항목 | 사양(260520) | 코드 | 위치 |
|---|---|---|---|
| 집중/분산 판정 | dP = P_max P_2nd ≥ 2 → 집중, 아니면 분산, P_max=0 → 전체 OFF | `(vars[0].value - vars[1].value) >= 2` (qsort 내림차순) | `My_system.c:972, 1080` |
| 집중 시 댐퍼 | P_max 실만 ON(100%), 나머지 OFF | Focus_Mode 시 Focus_Room만 110, 타실 0 | `My_system.c:1126~` |
| 안심회복 | 침실1 음압(급기X/배기O), 환기 2단 | 선택실 SA=0/RA=110, 타실 SA=110/RA=0, Fan=2 | `My_system.c:732-770` |
| 공청 PM2.5 단계 | 0~14정지 / 15~29 / 30~49 / 50~69 / 70~ | `m_PM2_5_Level` 15/30/50/70 | `My_Uart.c:1323-1326` |
| 풍량 CMH | 환기 100/150/200/250, 공청 80/100/120/150, 바이패스 150 | 단계 구조 동일, 공청 EA팬 OFF | `MyMotor.c:1294-1307` |
| 디퓨저 LED | 댐퍼 1개라도 열리면 ON, 0~9 디밍, 단색 | SA\|RA≠0 → ON, `Light_Bright` 0~9 | `My_system.c:714-724` |
| 팬 VSP(환기 1~3단) | 1단 EA56/SA57, 2단 61/63, 3단 67/69 | `s_FAN*_VEN_*` 동일 | `MyControl.c:124-152` |
---
## 2. ❌ 핵심 불일치 — 자동모드 로직(26.04.28 개정) 미반영
현재 코드는 **개정 전(점수기반 이전) 로직**으로, 사양이 삭제하라고 명시한 P_max 기반 동작이 남아 있음.
### 2.1 풍량 단수 산출 방식 상이 (가장 큰 차이)
- **사양 260520**: 부하점수 Score = 4실 Level 합산(0~16) →
**0: OFF / 1~4: 1단 / 5~8: 2단 / 9~12: 3단 / 13~16: 4단**
- **코드 현재**:
- 분산: `Tmp_Air_Volume = 4실 합산``if(>=4) =4` (= min(합,4)) — `My_system.c:935, 948`
- 집중: `Tmp_Air_Volume = vars[0].value` (= P_max) — `My_system.c:1082`
| 예시 (Score) | 사양 최종단수 | 코드 최종단수 |
|---|---|---|
| 합 3 (1,1,1,0) 분산 | 1단 | **3단** |
| 합 6 (2,2,1,1) 분산 | 2단 | **4단(cap)** |
| 침실 단독 4 (집중) | 1단 | **4단(P_max)** |
| 합 16 (4,4,4,4) | 4단 | 4단 |
→ 슬라이드10 QA 진리표(7개 케이스)로 유닛 테스트 검증 필요.
### 2.2 Eco / Normal / Turbo 모드별 임계값 미구현
- 사양: 모드별 CO2/PM2.5/PM10/VOC 임계표 3세트
(예: Normal CO2 0~700 / 701~1000 / 1001~1300 / 1301~1600 / 1601~)
- 코드: 단일 임계값 `m_*_Level`(CO2 600/700/800/900) 한 세트, 모드 분기 없음
### 2.3 4종 센서 중 PM10 미사용
- 사양: CO2 / PM2.5 / PM10 / VOC **4종**으로 Level 산출
- 코드: `room_CVP_quality = CO2 | VOC | PM2.5` (3종). `SEN66_pm10p0`는 수신만 하고 Level 계산에 미사용 — `My_system.c:890`
### 2.4 히스테리시스(데드밴드) 부분 적용
- 사양: 모드·센서별 하강 데드밴드 (CO2 50, PM2.5 2, PM10 5, VOC 5/3)
- 코드: **CO2만** `CO2_Histeresys=50` 적용, PM2.5/PM10/VOC 없음 — `My_system.c:673`
---
## 3. ❌ 260318부터 이어진 미반영 (260520에서도 동일)
| 항목 | 사양 260520 | 코드 | 위치 |
|---|---|---|---|
| 쾌적조리 ERV 풍량 | **3단** (각실 급기만 ON) | `Tmp_Air_Volume = 4` (4단), `Set_Run_Mode = MODE_AUTO` | `My_system.c:1026, 1030` |
| 스마트수면 | 1단 고정 / 초기 거실 CLOSE·침실 OPEN / 1시간마다 CO2≥1000 OPEN | 구버전 "자동−1", 전용 댐퍼·CO2 1시간 로직 없음 | `My_system.c:1191-1200` |
| 공기질 색상등급 | (구성 변경) | `Air_Quality_color_process()` `return(0)` dead code | `My_system.c:1216` |
---
## 4. ⚠️ 확인 필요 (변동 없음)
- 팬 VSP 4단: 코드 SA87/EA84 vs 사양(슬라이드11·12) SA86/EA85 (실측 기반) → EEPROM 저장값 확인 권장
- 센서/제어 주기: 사양 "매 제어 주기(예 1분)" (슬라이드10) vs 코드 분배기 폴링 1초
---
## 5. 결론
260520의 핵심 개정(**자동모드 점수기반 풍량 + Eco/Normal/Turbo + PM10 + 모드별 히스테리시스**)은 현재 소스에 **거의 미반영** 상태.
다만 **집중/분산 판정(dP≥2) 및 댐퍼 개폐 패턴**은 이미 일치하므로, "풍량 단수 결정 로직"을 점수기반(Score 테이블 매핑)으로 교체하는 것이 핵심 작업.
### 후속 작업 후보(TODO)
1. 자동모드 풍량을 **Score(0~16) → 단수(0/1/2/3/4)** 테이블 매핑으로 교체 (P_max·cap 방식 제거)
2. Eco/Normal/Turbo 모드별 임계표 도입 (현재 단일 `m_*_Level` → 3세트)
3. PM10(`SEN66_pm10p0`) Level 산출 반영 (3종 → 4종)
4. PM2.5/PM10/VOC 히스테리시스 추가
5. 쾌적조리 3단 수정, 스마트수면 26.03.18 로직 구현
6. 슬라이드10 QA 진리표(7케이스) 기반 검증
---
## 부록. 주요 소스 위치
| 파일 | 역할 |
|------|------|
| `My_system.c` | 자동모드 풍량 산출(`Air_Quality_damper_process`), 집중/분산, 시나리오 모드(`Ext_Run_Mode`) |
| `My_Uart.c` | 센서 임계값/기본값, 분배기 파싱(`Diffuser_parsing`), VSP 테스트 |
| `MyMotor.c` | 디퓨저 댐퍼, 팬 속도, BLDC_SPEED_TABLE |
| `MyControl.c` | 팬 duty 기본값 / EEPROM |
| `My_define.h` | 모드·핀·EEPROM 정의 |
Binary file not shown.
+27
View File
@@ -0,0 +1,27 @@
HERV MCU PIN-MAP & CONNECTOR
MCU (STATUS_LED - PA.10)
MCU (CURRENT2 - PA.4)
CN4, WHITE, TEMP1, ADC, MCU (TEMP_ADC1 - PA.0)
CN8, BLUE, TEMP2, ADC, MCU (TEMP_ADC2 - PA.1)
CN11, WHITE, ROOM_UART, UART, MCU (ROOMCON_RX - PA.9, ROOMCON_TX - PA.8)
CN6, WHITE, HOOD, ACTIVE LOW, MCU (EX_SW - PA.11)
CN13, YELLOW, HOOD_485, 485, MCU (I485_TX - PB.1, I485_RX - PB.0, I485_DIR - PB.2)
CN17, BLACK, BUNBAGI_485, 485, MCU (E485_TX2 - PC.0, E485_RX2 - PC.1, E485_DIR2 - PC.7)
CN15, RED, HOMENET_485, 485, MCU (E485_TX - PB.5, E485_RX - PB.4, E485_DIR - PB.6)
CN13, YELLOW, UV_LED1, MCU (UV_PW_ON - PA.5 , UV_ON - XT1_OUT)
CN16, YELLOW, UV_LED2, MCU (UV_PW_ON - PA.5 , UV_ON - XT1_OUT)
CN12, BLUE, SA_FAN, MCU (BLDC_PW_ON - PB.7, VOLUME_1 - PA.2 , BLDC1_PWM_OUT - PB.11 , BLDC1_FG_IN - PE.5)
CN14, WHITE, EA_FAN, MCU (BLDC_PW_ON - PB.7, VOLUME_2 - PA.3 , BLDC2_PWM_OUT - PA.12, BLDC2_FG_IN - PA.13)
외기(OA), CN2 , GREEN, U1(15~18),MCU (PB.12,PB.13,PB.14,PB.8)
공청(AIR), CN10, YELLOW, U4 (11~14), MCU (PD.14,PD.7, PD.6,PB.3)
바이패스(BYPASS), CN5, RED, U2 (15~18), MCU (PA.6,PA.14,PA.15,PC.8)
배기(EA), CN3, BLACK, U1(11~14), MCU (PB.15,PC.14,PC.15,PC.6)
급기(SA), CN7, BLUE, U2(11~14), MCU (PC.9,PC.10,PC.11,PB.9)
환기(RA), CN9, WHITE, U4(15~18), MCU (PB.10,PC.2,PC.3,PD.15)
Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

@@ -0,0 +1,112 @@
# 스마트폰에서 Claude Code 작업하기 — Remote Control 가이드
작성일: 2026-06-14
데스크톱(Windows + VS Code 확장)에서 진행 중인 Claude Code 세션을 스마트폰에서 그대로 조종하는 방법.
빌드·COM 포트·실보드 플래시 등 실제 작업은 **데스크톱에서** 실행되고, 폰은 지시·확인·승인 역할.
---
## 0. 준비물
| 항목 | 내용 |
|---|---|
| 버전 | Claude Code **v2.1.51 이상** (모바일 푸시 알림은 v2.1.110+). 확인: 터미널 `claude --version` |
| 플랜 | **Pro / Max / Team / Enterprise** (API 키 인증 불가, claude.ai 계정 로그인 필요). 로그인/확인: `claude /login` |
| OS | Windows 지원. **터미널 CLI·VS Code 확장 둘 다 가능** |
| 팀/기업 | 관리자가 관리설정에서 "Remote Control" 토글을 켜둬야 함 |
| 폰 앱 | **Claude by Anthropic** (iOS App Store / Android Play) — 데스크톱과 같은 계정 로그인 |
---
## 1. 데스크톱에서 Remote Control 시작 (택1)
### A. VS Code 확장에서 (지금 쓰는 방식 — 가장 간단)
1. Claude 채팅 입력창에 **`/remote-control`** (또는 `/rc`) 입력
2. 입력창 위 배너 → **"Open in browser"** 클릭하면 claude.ai/code로 연결
3. ⚠️ VS Code에서는 QR 미표시·이름 지정 미지원
### B. 터미널 CLI에서 (QR·이름 지원, 권장)
```powershell
cd D:\project\nuvoton\HERV
claude remote-control --name "HERV"
```
- 세션 URL 출력 + **스페이스바**를 누르면 QR 코드 표시
- 터미널은 켜둔 채 유지(**Ctrl+C 금지**). 네트워크 끊겨도 ≤10분이면 자동 재연결
**선택 플래그**
- `--name "HERV"` : 세션 제목(목록에 표시)
- `--spawn worktree` : 기기별 독립 git worktree(파일 충돌 방지, git 저장소 필요)
- `--spawn session` : 정확히 1기기만 연결 허용
- `--verbose` : 연결/도구 상세 로그
- `--sandbox` : 파일시스템/네트워크 격리
### C. 이미 진행 중인 세션을 전환
실행 중인 세션 입력창에 `/remote-control HERV` → 기존 대화 유지하며 활성화
---
## 2. 스마트폰에서 연결
1. **Claude 앱** 설치(데스크톱에서 `/mobile` 치면 다운로드 QR 표시) → 데스크톱과 **같은 계정** 로그인
2. 연결 3가지:
- **QR 스캔**: 터미널 스페이스바로 띄운 QR을 앱으로 스캔
- **세션 URL**: 터미널/배너의 URL 복사 → 폰 브라우저 붙여넣기
- **세션 목록**: 앱 하단 **"Code" 탭** → 목록에서 "HERV"(**녹색 점 컴퓨터 아이콘**) 선택
---
## 3. 폰에서 할 수 있는 것
**가능**
- 메시지 전송 / 답변·변경(diff) 확인
- **도구 권한 승인·거부** (Allow / Deny / Allow always) — 데스크톱과 실시간 동기화
- `@`로 로컬 파일경로 자동완성
- `/clear` `/compact` `/context` `/usage` `/exit`
**불가(로컬 전용)**
- `/plugin`(플러그인 선택기), `/resume`(세션 복구 대화)
**푸시 알림(선택, v2.1.110+)**
- 폰 앱 로그인 → OS 알림 허용 → 데스크톱 `/config`**"Push when Claude decides"** 켜기
- 긴 작업 완료/결정 필요 시 알림. "notify me when X finishes" 식 요청도 알림
---
## 4. 핵심 제약 (이 프로젝트 기준 중요)
- **데스크톱이 계속 켜져 있어야 함** — 절전/잠금 금지, 터미널·VS Code 종료 금지, 네트워크 유지
- 빌드(`dotnet`, `bash build.sh`), **COM 포트 통신**, **실보드 플래시(`bash build.sh flash`)** 는 전부 데스크톱 실행 → 폰은 지시·확인 역할
- 기본은 한 번에 한 기기 입력. 단절 >10분이면 세션 종료 → 재시작 필요
- 보안: 아웃바운드 443(HTTPS)만 사용(인바운드 포트 안 염), TLS 암호화·단기 자격증명
---
## 5. 연결 종료
- VS Code: 배너 X 버튼
- 터미널: Ctrl+C
- 어디서나: `/exit`
---
## 6. 문제 해결
| 증상/메시지 | 해결 |
|---|---|
| "claude.ai subscription / full-scope token 필요" | `claude /login` 재로그인 |
| "organization 정책으로 비활성" | 관리자가 claude.ai 관리설정에서 Remote Control 토글 켜기 |
| "Remote Control not yet enabled" | `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`·`DISABLE_TELEMETRY`·`CLAUDE_CODE_USE_BEDROCK` 등 환경변수 제거 |
| QR 안 보임 | 터미널 창 넓히고 스페이스바 다시 |
| 세션 목록에 없음 | 데스크톱에서 `claude remote-control` 다시 실행, 터미널 실행 중인지 확인 |
| 상세 디버깅 | `claude remote-control --verbose` |
---
## 7. 권장 사용 흐름 (이 프로젝트)
1. 평소엔 데스크톱 VS Code 확장에서 작업
2. 자리 비울 때 **`/rc` → Open in browser**(또는 터미널 `claude remote-control --name "HERV"` + QR)로 폰 연결
3. 폰에서 진행 확인·권한 승인·간단 지시(예: "다음 단계 진행해", "빌드 결과 보여줘")
4. 실보드/COM 검증은 데스크톱을 켜둔 상태로 폰에서 원격 지시
> 공식 문서: https://code.claude.com/docs/en/remote-control
@@ -0,0 +1,64 @@
# 팀 공유 · 이동 중 작업 환경 구성 (검토 메모)
작성일: 2026-06-15
## 1. 배경 / 요구사항
- 이동 중에도 지금처럼 **VS Code로 수정·저장**하는 방식을 유지하고 싶다.
- 기존 Google Drive 방식(수동 다운로드/업로드)은 번거롭고 버전 꼬임이 생겨 개선 필요.
- **다른 직원과 소스 공유**도 해야 한다.
## 2. 결론
**Git + 사내 원격 저장소(private)** 로 간다.
한 번에 세 가지를 해결:
1. 팀 공유 — 각자 clone, 수정 후 push, 누가 뭘 바꿨는지 추적
2. 이동 중 작업 — 노트북에서 clone, 또는 브라우저 웹 IDE로 편집
3. 변경 이력 — 현재 이 폴더는 git 저장소가 아니라 diff 추적 불가 → git 도입으로 영구 해결
> 폴더 동기화(Google Drive / OneDrive / Syncthing)는 여러 명이 동시에 수정하면 충돌 파일이 쌓여 **팀 공유에는 부적합**. 단독 백업 용도라면 OneDrive/Syncthing이 Drive보다 낫지만, 본 목적에는 Git 채택.
## 3. 호스팅: 회사 Synology NAS (확정)
사내에 소스가 머무르고 직원 공유가 깔끔함. 내일 NAS에 Git 설치 후 진행 예정.
### 방식 비교
| 방식 | 특징 | 추천 상황 |
|---|---|---|
| **Git Server 패키지 (추천)** | 패키지 센터에서 `Git Server` 설치, SSH로 bare repo 접근. 가볍고 간단. | 소규모 팀(현재) |
| **GitLab (패키지/Docker)** | 머지요청·이슈·권한관리·웹 편집 등 풀기능 웹 UI. 무겁고 RAM 사용 큼. | 코드리뷰/PR 문화 필요 시 |
→ 우선 **Git Server 패키지**로 시작, 필요해지면 GitLab으로 확장.
### Git Server 방식 절차 (예시)
```bash
# NAS 측 (SSH 접속 후) — bare 저장소 생성
git init --bare /volume1/git/HERV.git
# 직원 PC 측 — clone
git clone ssh://사용자@NAS주소:포트/volume1/git/HERV.git
```
## 4. 로컬 준비 (NAS 연결 전, 오늘 가능)
원격 설정만 내일 하면 되도록 로컬 git을 먼저 초기화:
1. `.gitignore` 생성 — 빌드 산출물 제외, 소스·문서·PDF만 추적
- 제외 대상: `program/build/`, C# `bin/` · `obj/`, `*.o *.d *.elf *.bin *.hex *.map`
2. `git init` + 첫 커밋 (현재 상태 스냅샷 → **이 시점부터 변경 이력 남음**)
내일 NAS 작업:
```bash
git remote add origin ssh://사용자@NAS주소:포트/volume1/git/HERV.git
git push -u origin main
```
## 5. 이동 중 작업 옵션 (참고)
- **노트북 + git clone**: 가장 일반적. 평소처럼 VS Code 편집.
- **브라우저 웹 IDE**: GitLab 도입 시 웹 편집 가능(Git Server 단독은 미지원).
- **VS Code Remote Tunnel**: 집/사무실 PC에 `code tunnel` 켜두고 원격 접속 → 그 PC의 실제 파일·빌드툴·연결된 PBA 보드까지 그대로 사용. (빌드·실보드 시험을 이동 중에도 해야 할 때 유용)
## 6. 주의 / 작업 범위
- 모든 작업은 `D:\project\nuvoton\HERV` 폴더 내부에서만 진행 (외부 `D:\project\C#\` 등은 건드리지 않음).
- 빌드 산출물은 git에 올리지 않음(.gitignore 처리) — 저장소를 소스·문서 위주로 깨끗하게 유지.
## 7. 다음 할 일
- [ ] (오늘/원하면) 로컬 `git init` + `.gitignore` + 첫 커밋
- [ ] (내일) NAS에 Git Server 패키지 설치, bare repo 생성
- [ ] NAS를 remote로 추가하고 push
- [ ] 직원 계정/접근 권한 부여 및 clone 테스트