fix: 260618 내부댐퍼·스마트수면·쾌적조리 동작 수정

- 내부댐퍼: 모드전환 중 명령경로(CTRL_FAN)가 팬 감속에 끼어들어 댐퍼가
  간헐적으로 안 움직이던 문제 수정 (Fan_Speed_process 게이트 보호)
- 명령경로 즉시 팬설정(My_Homenet/My_Hood) 모드변경분 주석 — 마스터 정렬
- 스마트수면: 거실(room1) CO2 무관 항상 CLOSE (사양 8p)
- 대시보드: 쾌적조리 버튼 강조=ComfortCook(연동 Enable),
  활성=후드/시나리오 무관 항상 토글 (사양 9p 3.1 독립 토글)
- doc/260618 수정 정리 + 개발사양서 갱신

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-18 18:48:41 +09:00
parent 82caac3872
commit c5e4c48d24
7 changed files with 206 additions and 10 deletions
+9
View File
@@ -1158,6 +1158,15 @@ PASS1:
}
else
{
/* [모드전환 댐퍼게이트 보호] 모드전환 진행중(Damper_wait_time==5)에는
명령경로(대시보드 CTRL_FAN 등)가 풍량을 올려도 무시하고 팬을 0으로 강제.
팬이 0까지 내려가야 Damper_Mode 가 실행되어 내부댐퍼가 이동한다.
(CTRL_FAN 이 감속창에 간헐적으로 끼어들어 댐퍼가 안 움직이던 문제 수정) */
if(Damper_wait_time == 5)
{
Target_Fan1_Speed = 0;
Target_Fan2_Speed = 0;
}
Diffuser_Damper_process(Run_Mode);
}
+8 -4
View File
@@ -256,7 +256,10 @@ static void hn_apply_cmd(uint8_t cmd, uint8_t *pl, uint8_t len)
/* 전원 ON : 환기 모드 + 풍량 1단 (ERVSimulator HomeNetProtocol 와 동일) */
Set_Run_Mode = Run_Mode = MODE_VENTILATION;
Set_Fan_Mode = Fan_Mode = 1;
Fan_Speed_Setting(Run_Mode, Fan_Mode); /* 즉시 반영 (모드전환과 동일) */
/* [모드변경댐퍼테스트] 마스터 정렬 : 모드변경 시 명령경로 즉시 팬설정 제거.
팬이 0까지 감속해야 Fan_Speed_process 가 Damper_Mode 를 호출(내부댐퍼 이동).
팬 복원은 Fan_Speed_process wait==1 에서 수행. */
//Fan_Speed_Setting(Run_Mode, Fan_Mode); /* 즉시 반영 (모드전환과 동일) */
}
/* 전원 토글 시 수동 댐퍼/LED 해제 → 자동 추종 복귀 */
for(i = 1; i <= 4; i++) { Diffuser_Damper_Manual[i] = 0; Diffuser_Led_Manual[i] = 0; }
@@ -288,9 +291,10 @@ static void hn_apply_cmd(uint8_t cmd, uint8_t *pl, uint8_t len)
{
Set_Fan_Mode = Fan_Mode = 1;
Command_request_type |= TYPE_FAN_SPEED;
/* 즉시 반영 : 풍량 단수(Total_Air_Volume)가 안 바뀌는 모드전환
(예: 환기1단→공청1단)에서도 새 모드 VSP가 걸리도록 CTRL_FAN 과 동일하게 직접 호출 */
Fan_Speed_Setting(Run_Mode, Fan_Mode);
/* [모드변경댐퍼테스트] 마스터 정렬 : 모드변경 시 명령경로 즉시 팬설정 제거.
팬이 0까지 감속해야 Fan_Speed_process 가 Damper_Mode 를 호출(내부댐퍼 이동).
새 모드 VSP 복원은 Fan_Speed_process wait==1 에서 수행. */
//Fan_Speed_Setting(Run_Mode, Fan_Mode);
}
}
}
+6 -2
View File
@@ -189,7 +189,9 @@ uint8_t Hood_process(void)//200ms
}
Command_request_type |= (TYPE_MODE|TYPE_FAN_SPEED);
Fan_Speed_Setting(Run_Mode, Fan_Mode); /* 즉시 반영(룸컨 echo 대기 없이 — CTRL_FAN 동일) */
/* [모드변경댐퍼테스트] 마스터 정렬 : 모드변경(→환기) 시 명령경로 즉시 팬설정 제거.
팬 복원은 Fan_Speed_process wait==1 에서 수행. */
//Fan_Speed_Setting(Run_Mode, Fan_Mode); /* 즉시 반영(룸컨 echo 대기 없이 — CTRL_FAN 동일) */
Tx_Yeundong_Delay = 30;
}
else if(Hood_Status == 0) // 후드 OFF : 즉시 원래 모드/풍량 복귀 (메이크업 유지는 후드측 담당, 사양 260613 9p 3.3)
@@ -204,7 +206,9 @@ uint8_t Hood_process(void)//200ms
}
Command_request_type |= (TYPE_MODE|TYPE_FAN_SPEED|TYPE_HOOD_STATE);
if(Run_Mode != MODE_AUTO) Fan_Speed_Setting(Run_Mode, Fan_Mode); /* 즉시 복귀 반영 */
/* [모드변경댐퍼테스트] 마스터 정렬 : 모드복귀 시 명령경로 즉시 팬설정 제거.
팬 복원은 Fan_Speed_process wait==1 에서 수행. */
//if(Run_Mode != MODE_AUTO) Fan_Speed_Setting(Run_Mode, Fan_Mode); /* 즉시 복귀 반영 */
Hood_Yeundong_flag = 0;
Hood_Warming_up_Timer = 0;
Tx_Yeundong_Delay = 0;
+6 -2
View File
@@ -912,8 +912,12 @@ uint8_t Air_Quality_damper_process(void)
Pre_Ext_Select_Room = Ext_Select_Room;
}
/* 매 틱 : 실별 CO2 히스테리시스. CO2 >= 1000 OPEN, <= 800 CLOSE, 그 사이(데드존)는 현재 상태 유지 */
for(Room_Num = 1; Room_Num < 5; Room_Num++)
/* 거실(room1)은 사양상 CO2 무관하게 항상 CLOSE → 매 틱 강제 닫음 */
Memory_Diffuser_Dmp_Ang_SA[1] = 0; Memory_Diffuser_Dmp_Ang_RA[1] = 0;
Diffuser_Air_quality[1] = 0;//OFF
/* 매 틱 : 침실1~3(room2~4) 만 CO2 히스테리시스. CO2 >= 1000 OPEN, <= 800 CLOSE, 그 사이(데드존)는 현재 상태 유지 */
for(Room_Num = 2; Room_Num < 5; Room_Num++)
{
if(SEN66_CO2_value[Room_Num] >= 1000)
{ Memory_Diffuser_Dmp_Ang_SA[Room_Num] = 110; Memory_Diffuser_Dmp_Ang_RA[Room_Num] = 110; }