fix: 260618 룸컨 동기·쾌적조리·시나리오·그래프DB 등 수정

펌웨어(SOURCE/HECO2/User):
- My_Hood.c: 후드 전원 OFF 시 쾌적조리 토글 자동 해제 (6)
- My_RJ2.c/My_Homenet.c/My_define.h: 룸컨 전용 pending(RoomCtrl_Push) 도입
  → 전원 ON 간헐 미동작·전원 OFF 후 룸컨 옛모드(공청) 표시 해소 (11)(12)
  (공유 Command_request_type 레이스 + 716 equalize 조기클리어 + 분배기 wipe 회피)

대시보드(TestProgram/PCDashBoard):
- 쾌적조리 미선택+후드 ON 시 다른 시나리오 버튼 선택 가능 (7)
- 시나리오 버튼 항상 선택 가능 + 상호배타 로직 삭제 (8)(9)
- 데모 루틴 전체 삭제 (DemoStatus.cs 포함) (9)
- 전원 OFF 시 풍량 버튼(0 포함) 비활성 (13)
- 그래프 DB(HERV_Log.db)를 임시폴더가 아닌 exe 폴더에 저장 (14)

문서/메모리: doc/260618_*.md 정리, command-request-type-shared-race 메모리 추가

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-18 23:41:34 +09:00
parent 6934f09b2a
commit b18d9c84bf
11 changed files with 271 additions and 168 deletions
+4
View File
@@ -265,6 +265,10 @@ static void hn_apply_cmd(uint8_t cmd, uint8_t *pl, uint8_t len)
for(i = 1; i <= 4; i++) { Diffuser_Damper_Manual[i] = 0; Diffuser_Led_Manual[i] = 0; }
/* 각실분배기 : 전원 비트(TYPE_POWER) + 모드/풍량. 룸컨(RJ2)도 Command_request_type 로 푸시 */
Command_request_type |= (TYPE_POWER | TYPE_MODE | TYPE_FAN_SPEED);
/* [룸컨푸시] 전원 ON/OFF 는 룸컨 전용 pending 으로도 표시 → 분배기(My_bunbaegi L522 Command_request_type=0)나
My_RJ2 L716(전원OFF는 모터정지 위해 Set==현재 equalize 강제 → TYPE_*_조기클리어)로 룸컨 푸시가 유실되어
룸컨이 옛 모드(예: 공청)를 계속 표시하던 문제 해소. RJ2 ack(echo) 시 자동 해제. */
RoomCtrl_Push = 1;
} else result = 1;
break;
case 0x02: /* CTRL_RUNMODE [mode] 0off/1환기/2자동/3공청/4바이패스 */
+5
View File
@@ -212,6 +212,11 @@ uint8_t Hood_process(void)//200ms
Hood_Yeundong_flag = 0;
Hood_Warming_up_Timer = 0;
Tx_Yeundong_Delay = 0;
/* [쾌적조리자동해제] 후드 전원 OFF(단수 0) → 쾌적조리 토글 자동 해제.
사장님 요청(2026-06-18) : 후드 OFF 후 대시보드 쾌적조리 버튼이 저절로 꺼지게.
Enable=0 이면 STATUS byte4 bit1/byte5 bit0 모두 0 → 대시보드 _state.ComfortCook 자동 해제.
(기존 사양 9p 3.3 'armed 유지'와 반대 — 본 요청으로 변경) */
Hood_YeunDong_Enable = 0;
}
else // 후드 단수 변경(1~5) : 메이크업 풍량 단수 추종 갱신
{
+6 -3
View File
@@ -140,6 +140,7 @@ uint8_t Filter_Reset_Flag = 0;
uint8_t EEP_Save_Flag = 0;
uint8_t Command_request_type = 0;
uint8_t RoomCtrl_Push = 0; /* [룸컨푸시] 대시보드 전원변경의 룸컨 전용 pending. 분배기(My_bunbaegi L522 Command_request_type=0)·716 equalize 조기클리어와 무관하게 룸컨에 푸시 보장, RJ2 ack 로만 해제 */
uint8_t Roomcon_Filter_Error = 0; // 2021.5.31
@@ -329,7 +330,7 @@ void roomcon_parsing(void)
Err_Code &= ~(ERROR_FILTER_CLEAN|ERROR_FILTER_CHANGE|ERROR_SOJA_CHANGE|ERROR_PROTECT|ERROR_SOMETIME);
Err_Code |= Rx_roomcon232_buffer[7]&(ERROR_FILTER_CLEAN|ERROR_FILTER_CHANGE|ERROR_SOJA_CHANGE|ERROR_PROTECT|ERROR_SOMETIME);
if(Command_request_type & (TYPE_MODE|TYPE_FAN_SPEED|TYPE_RESERVATION) )
if((Command_request_type & (TYPE_MODE|TYPE_FAN_SPEED|TYPE_RESERVATION)) || RoomCtrl_Push) /* [룸컨푸시] 전용 pending 도 푸시 트리거 */
{
if((Hood_Yeundong_flag == 1)&&(Tx_Yeundong_Delay == 0))
{
@@ -398,6 +399,7 @@ void roomcon_parsing(void)
{
Command_request_type = 0;
Command_request_type &= ~TYPE_SEND_FLAG;
RoomCtrl_Push = 0; /* [룸컨푸시] 룸컨 ack(echo) → 전용 pending 해제 */
Run_Mode = Rx_roomcon232_buffer[2];
if(Run_Mode != MODE_AUTO)
{
@@ -406,7 +408,7 @@ void roomcon_parsing(void)
//if(Run_Mode != MODE_AUTO)Fan_Mode = Rx_roomcon232_buffer[3];//DEMO
//else Fan_Mode = Set_Fan_Mode;
}
else
else if(!RoomCtrl_Push && !(Command_request_type & (TYPE_MODE|TYPE_FAN_SPEED))) /* [룸컨푸시] 명령 푸시 대기중엔 룸컨 자기보고로 Set_* 를 덮지 않음 */
{
Set_Run_Mode = Run_Mode = Rx_roomcon232_buffer[2];
@@ -689,13 +691,14 @@ void roomcon_parsing(void)
if(Command_request_type & TYPE_SEND_FLAG)
{
Command_request_type &= ~TYPE_SEND_FLAG;
RoomCtrl_Push = 0; /* [룸컨푸시] 룸컨 ack(echo) → 전용 pending 해제 */
Run_Mode = Rx_roomcon232_buffer[2];
if(Run_Mode != MODE_AUTO)
{
Fan_Mode = Rx_roomcon232_buffer[3];///////////////// DEMO
}
}
else
else if(!RoomCtrl_Push && !(Command_request_type & (TYPE_MODE|TYPE_FAN_SPEED))) /* [룸컨푸시] 명령 푸시 대기중엔 룸컨 자기보고로 Set_* 를 덮지 않음 */
{
Set_Run_Mode = Run_Mode = Rx_roomcon232_buffer[2];
if(Run_Mode != MODE_AUTO)
+1
View File
@@ -371,6 +371,7 @@ extern uint8_t BlackOut_Run_Mode;
extern uint8_t BlackOut_Fan_Mode;
extern uint8_t Command_request_type;
extern uint8_t RoomCtrl_Push; /* [룸컨푸시] 대시보드 전원변경의 룸컨(RJ2) 전용 pending. 분배기와 공유 안 함, RJ2 ack(echo)로만 클리어 */
uint16_t Diffuser_Damper_process(uint8_t mode);//100ms