이 시스템에서 네 곳에 필요하다 — 조도 판정(§6.3.2), Ambient 밝기(§6.4.3), Fan 단계(§6.4.2), Digital Key 근접(§6.4.1).
왜 필요한가
§6.3.2 의 조도 판정이 두 문장으로 나뉜 이유가 이것이다.
외부 조도가 정의된 기준 이하 → 조명 점등 필요 상태
외부 조도가 정의된 기준 이상 → 조명 소등 가능 상태
"이하"와 "이상"이 같은 값이면 경계에서 채터링한다. 조도가 기준값 근처에서 흔들리면 조명이 깜빡거린다. 터널 진입부, 가로수 그늘, 구름 이동에서 실제로 발생한다.
조도
소등기준 ├────────── ← 이 위로 올라가야 소등 (예: 120 lux)
│ ↕ 밴드
점등기준 ├────────── ← 이 아래로 내려가야 점등 (예: 80 lux)
구현의 핵심 — 현재 상태에 따라 비교 기준이 바뀐다
if (state == LIGHT_OFF_OK) {
if (lux <= LUX_ON_THRESHOLD) state = LIGHT_ON_NEEDED;
} else {
if (lux >= LUX_OFF_THRESHOLD) state = LIGHT_OFF_OK; /* OFF 기준 > ON 기준 */
}
if (lux < TH) 하나로는 채터링을 못 막는다.
크기 축과 시간 축은 다른 문제다
히스테리시스는 크기 축 노이즈를 막지만, 밴드를 크게 넘나드는 저주파 변동(구름 이동)은 못 막는다. 그때는 시간 축 필터(이동 평균·디바운스)를 얹는다. 둘은 상호 보완적이고, TBD-011 이 임계값과 히스테리시스를 함께 확정 항목으로 둔 이유다.
밴드가 넓으면 반응이 늦다
터널에 들어갔는데 조명이 3초 뒤에 켜지면 그것대로 문제다. 벤치 시험 항목인 이유.