콘텐츠로 이동

환경 제어 자동화~

AoT 의 env_coordinator(화면에서는 통합 환경 제어)는 한 시설의 모든 액추에이터를 하나로 조율하는 3계층 제어 시스템입니다 — 개구부, 배기·흡기팬, 난방기, 냉방기, 분무기, 차광막, 보온커튼, 보광등, CO₂ 주입기.

서로 다른 두 곳에서 정해지는 두 가지가 있고, 이 둘을 섞는 것이 가장 흔한 혼란의 원인입니다.

  • 무엇을 목표로 할지 — VPD·CO₂·DLI 등 — 는 그 시설에서 자라고 있는 구획의 것입니다. 구획에 붙은 재배 프로그램을 통해 정해집니다.
  • 어떻게 달성할지 — 어떤 설비가 있는지, 넘으면 안 되는 선은 어디인지, 목표를 얼마나 바짝 쫓을지 — 는 이 함수의 것입니다.

목표는 어디서 오는가~

계층 갖는 것 편집하는 곳
프로그램(GeoProgram) 참고 계획: 단계, 목표 항목의 어휘, 목표 곡선, 작물의 광합성 상수 프로그램 화면
구획(GeoPlot) 실제 계획: 단계 경계 날짜와 이 구획의 단계별 목표값 구획 화면(단계 일정)
env_coordinator 달성 방법: 설비 구성, 안전 한계, 우선순위, 튜닝, 응급 동작 함수 설정

구획은 고른 프로그램을 내재화합니다. 구획 화면에서 단계 목표를 고치면 그 구획의 그 항목만 덮어쓰고, 프로그램 원본과 같은 프로그램을 쓰는 다른 구획은 그대로입니다. 칸을 비우면 그 항목은 프로그램 값으로 돌아갑니다 — 되돌리기 버튼을 따로 두지 않는 이유가 이것입니다.

의도한 제약이 둘 있습니다.

  • 구획은 새 목표 항목을 만들 수 없습니다. 어휘는 프로그램의 것(target_defs)이라, 모르는 항목은 조용히 무시하지 않고 거절합니다.
  • 곡선이 걸린 항목은 숫자로 덮을 수 없습니다. 곡선이 이기고, 구획 화면에서 그 항목은 읽기 전용으로 보입니다.

코디네이터가 매 사이클 읽는 것~

값 쓰이는 곳
VPD 목표(숫자 또는 곡선) 1차 제어 목표
CO₂ 목표(숫자 또는 곡선) CO₂ 시비. 없으면 CO₂ 제어는 쉽니다
단계 주간 온도 · 야간 온도 · 습도 이번 사이클의 유도 범위
DLI 목표 · 일별 GDD 목표 누적 트래커
T_base GDD 적산
구획 시작일 경과 주차 — 단계형 곡선이 이것으로 진행합니다
광합성 상수(A_max, K_L, K_C, T_opt, T_sigma, VPD_half) Big-Leaf 모델, 그리고 K_L 에서 파생하는 광포화점

목표 항목과 제어 축은 항목 키가 아니라 물리량과 형태로 잇습니다 — 사용자가 "실내 CO₂" 라고 이름 붙인 항목도 물리량이 CO₂ 면 CO₂ 제어에 닿습니다. 물리량을 고르지 않은 항목은 어느 축에도 닿지 않고 화면에 참고 로 표시됩니다.

구획이 없을 때~

코디네이터는 멈추지 않습니다. 구획이 없거나, 프로그램이 없거나, AI 초안이 아직 검토되지 않았거나, 프로그램 종류가 구획 종류와 맞지 않거나, 오늘 날짜에 해당하는 단계가 없으면 목표가 없을 뿐입니다 — 제어는 자기 유도 범위 안에서 계속 돕니다. 이것은 이미 정의된 동작입니다. 비어 있는 온실도 난방은 돌아야 합니다.

주·야간 온도와 습도가 유도 범위를 정합니다~

1차 목표는 계속 VPD입니다. 단계의 주간 온도·야간 온도·습도는 목표가 아니라, VPD를 너무 덥고 습한 조합이나 너무 차고 건조한 조합으로 맞추는 것을 막는 가이드입니다. 코디네이터는 매 사이클 자기 유도 범위를 다음으로 바꿉니다.

범위
온도 단계 주간 온도(시설 위치의 일출~일몰) 또는 야간 온도 ± 5 °C
습도 단계 습도 ± 10 %
  • 폭은 고정이며 프로그램 설정이 아닙니다 — 재배 기술문서는 대부분 평균값만 주고 주·야간 폭을 적지 않습니다.
  • 단계에 그 값이 없거나, 시설 위치를 몰라 일출·일몰을 구할 수 없으면 그 항목은 함수 자신의 유도 범위를 씁니다.
  • 하드 임계(Min/Max Temperature, Min/Max Humidity)가 마지막에 적용됩니다.
  • 유도 범위를 읽는 곳은 모두 따라옵니다: VPD를 나눈 온도·습도, VPD 목표가 없을 때의 중앙값, 예보 보정, 환기 온도 상한.
  • 실제로 쓴 범위는 함수 설정의 구획 아래 가이드 범위로 보입니다.

코디네이터에는 자기 종료일 옵션이 없습니다. 재배를 계속할지는 구획이 정합니다. 함수에 날짜를 따로 두면 새 작물을 심은 뒤에도 그 날짜 때문에 시설이 멈춰 있을 수 있기 때문입니다.

제어 기준 — VPD 직접 / 온도 우선~

기본은 VPD 직접입니다 — 위처럼 VPD 목표를 좇고, 온도·습도는 가이드입니다. 고급 설정의 제어 기준을 온도 우선으로 바꾸면 코디네이터마다 다음처럼 돕니다.

  • 온도가 1차 목표입니다. 단계의 주간·야간 온도(시설 위치의 일출·일몰 기준)를 좇습니다.
  • 습도 목표는 VPD 목표에서 만듭니다 — 그 온도에서 VPD 목표가 되는 습도입니다 (예: 24 °C 에서 VPD 1.0 이면 약 66 %). 유도 범위 밖이면 범위 끝으로 자릅니다.
  • VPD 는 경계입니다. 목표보다 0.4 kPa 낮거나 0.8 kPa 높아질 때만 되돌리는 쪽으로 밉니다.
  • 단계에 온도가 없으면 온도를 좇지 않고 유도 범위 안에 두기만 합니다.

VPD 를 직접 좇으면 같은 허용오차가 8 °C 에서는 습도 ±9 %, 35 °C 에서는 ±1.8 % 가 되고, 저온에서는 닿을 수 없는 습도를 요구하기도 합니다. 온도 우선은 이 차이가 없습니다.

어느 쪽을 고르든 다른 쪽이 "그 기준이었다면 보냈을 명령" 을 매 사이클 함께 계산해 기록합니다 (제어에는 쓰지 않습니다). 두 방식을 같은 시설에서 비교하려는 것입니다.

범위 안에 구획이 둘 이상일 때~

간작·혼작이 정상인 도메인이라 코디네이터는 추측하지 않습니다. 시설·구역 범위 안에 구획이 둘 이상이면 그 사실을 말하고 [이걸로] 버튼을 내놓습니다. 같은 선택이 고급 설정의 기준 구획 에 저장됩니다. 지정한 구획이 끝났거나 범위 밖으로 나가도 값을 지우지 않습니다 — 화면이 "지정한 구획이 여기 없다" 고 말하고, 선택 규칙을 다시 적용합니다.

구획에 기록된 프로그램 버전은 버전 번호를 고정할 뿐 내용을 고정하지 않습니다. 프로그램을 고치면 진행 중인 구획의 해석도 함께 바뀝니다.


VPD (수증기압 포화차)~

VPD는 식물의 증산과 수분 흡수를 결정하는 핵심 지표입니다.

VPD = SVP × (1 - RH/100)
SVP = 0.6108 × exp(17.27T / (T + 237.3))  [kPa]
범위 상태 권장 작물 단계
< 0.4 kPa 너무 낮음 — 곰팡이 위험 —
0.4–0.8 kPa 적정 발아기 / 이식 초기
0.8–1.2 kPa 적정 영양생장기
1.2–1.8 kPa 적정 개화·결실기
> 1.8 kPa 너무 높음 — 수분 스트레스 —

env_coordinator 제어 계층~

L1 — EnvTarget (목표값 설정)~

위에서 설명한 목표를 이번 사이클의 setpoint 로 푼다. Method 를 따르는 항목은 구획의 경과 주차와 시설 현지 시간대로 계산한다.

L2 — SituationReport (상황 평가)~

현재 편차, 제한 인자, 추세를 평가한다.

실내 온도·습도·VPD 는 먼저 잡음을 거릅니다. 센서 눈금(온도 0.1 °C, 습도 1 %)이 오르내리는 것만으로 창이 움직이지 않게 하려는 것입니다. 지수 평활을 쓰되, 원값과 온도 0.5 °C·습도 3 % 이상 벌어지면 실제 변화로 보고 곧바로 원값을 따릅니다. VPD 를 온도·습도로 계산하는 시설은 걸러진 온도·습도로 다시 계산합니다. 안전 게이트와 하드 임계는 거르기 전 원값으로 판정합니다 — 보호를 필터만큼 늦추지 않습니다.

평가 항목 설명
편차 현재값 - 목표값
제한 인자 빛·CO₂·온도·수분(VPD) 중 무엇이 광합성을 막고 있는가
추세 값이 목표 방향으로 이동 중인가

VPD 목표가 있고 VPD 를 잴 수 있을 때 온·습도는 제약으로 강등된다 — VPD 를 풀어낼 범위이자 넘지 말아야 할 선이다. 이 함수는 온도 조절기가 아니다.

L3 — Coordinator (액추에이터 명령)~

장치마다 위치형 PI 로 0–100 % 명령을 냅니다. 교과서 PI 와 다른 점이 셋 있습니다.

  • 적분은 누적 오차가 아니라 그 장치의 '기억된 평형 개도(%)' 이고, 늘 0–100 안에 묶입니다. 편차가 작으면 적분이 그대로 남아 직전 개도를 유지합니다.
  • 한 장치가 여러 축에 닿으면 편차를 하나로 합칩니다. 예를 들어 개구부는 온도·습도· CO₂ 에 모두 영향을 줍니다. 축마다 편차를 비례 밴드(허용오차 × 6)로 나눠 같은 척도로 맞추고, 우선도 × 그 장치가 그 축에 주는 효과의 크기 로 가중 평균합니다.
  • 허용오차의 절반 안은 쉬는 구간(데드존) 입니다. 그 밖에서는 데드존만큼을 뺀 값을 쓰므로 경계에서 명령이 계단처럼 튀지 않습니다.
e      = Σ(우선도 × 효과 × 편차/비례밴드) / Σ(우선도 × 효과)
e_eff  = e 에서 데드존(허용오차 × 0.5)을 뺀 값
I      = clamp(I + 0.2 × e_eff, 0, 100)          # 기억된 평형 개도
명령   = clamp(1.0 × e_eff × 100 + I, 0, 100)
  • 확정 순서는 비용 지수 순입니다(싼 장치부터). 같은 도메인 안에서 뒤 장치는 앞 장치가 만들 효과를 뺀 나머지 편차만 봅니다 — 이것이 부하 분담입니다.
  • 움직여도 소용없는 장치는 쉽니다. 100 % 로 돌려도 비례 밴드의 2.5 % 미만밖에 못 움직이거나(예: 실내외 차이가 거의 없는 환기), 파킹 대상이면 사이클마다 안전 위치와의 거리를 60 % 로 줄이며 서서히 안전 위치로 갑니다. 보온커튼은 예외로 제자리에 둡니다 — 안전 위치(걷힘)로 풀면 밤에 안팎 온도차가 작아지는 순간 보온이 풀립니다. 판정에는 이력이 있습니다 — 한 번 일할 수 있다고 본 장치는 그 문턱(2.5 %)의 절반 아래로 내려가야 '쉼'으로 바뀌므로, 문턱 근처에서 흔들리는 효과 때문에 창이 열렸다 닫혔다를 되풀이하지 않습니다(근거 '주작용'↔'무구배').
  • 낮에는 보온커튼을 걷어 둡니다. 효과 모델은 커튼의 열 교환만 알고 빛을 막는다는 것은 모르므로, 시설 위치의 일출부터 일몰까지는 걷어 두고 밤에만 판단합니다. 한파 같은 안전 게이트는 이 규칙보다 우선합니다.
  • 커튼·차광막은 완전히 닫거나 완전히 걷습니다. 서 있는 쪽에서 반대쪽으로 가려면 명령이 60 %(걷기) 또는 40 %(닫기)를 넘어야 합니다 — 50 % 근처에서 끝과 끝을 오가지 않게 합니다. 기록과 화면에도 실제로 보낸 0/100 이 남습니다.
  • 미는 방향이 뒤집히면 이어지는지 보고 따릅니다. 창의 VPD 효과는 식힘과 건조한 외기가 겨룬 합이라, 둘이 비슷하면 실외 습도 몇 %p 로 방향이 사이클마다 바뀝니다. 새 방향이 10분 이상(그리고 2사이클 이상) 이어질 때만 따르고, 그 전에는 제자리에 둡니다. 온도가 유도 상한에 막 닿았을 때 더해지는 온도 항도 넘은 만큼 서서히 무게를 얻습니다 — 선 근처를 오르내릴 때 창이 계단으로 오르내리지 않게 합니다.
  • 측창은 바람을 받는 쪽을 더 엽니다. 바람을 등진 측창은 명령의 최소 20 % 까지 줄입니다. 풍속 0.5 m/s 미만에서는 걸지 않고, 3 m/s 까지 풍압(풍속²)에 비례해 서서히 강해집니다 — 약풍의 불안정한 풍향으로 측창이 사이클마다 깎였다 풀리지 않게 합니다.
  • 목표를 넘어선 채 굳지 않습니다. 데드존 안이라도 "줄여야 한다" 쪽 편차가 3사이클 이어지면, 그 장치는 명령을 사이클마다 60 % 로 줄이며 물러납니다. 보온커튼·차광막도 같습니다 — 효과가 개도에 비례하므로 줄이는 쪽이 곧 효과를 줄이는 쪽입니다.
  • 적분 폭주 방지. 100 % 에 막히면 넘친 만큼 적분을 되돌리고, 0 % 에 막히면 그 사이클의 적분을 멈춥니다. 한쪽 끝에 계속 붙어 있으면 적분을 실제 개도 쪽으로 줄입니다.
  • 변화 속도 제한. 사이클당 최대 20 %p 까지 움직이고, 액션에 전 행정 시간이 있으면 그 장치가 실제로 움직일 수 있는 양이 더 작을 때 그 값을 씁니다. 커튼·차광막은 한 번에 열고 닫으므로 제외입니다. 5 % 미만 명령은 0 으로 보냅니다.

VPD 모드의 온도 상한. VPD 를 직접 제어하면 온도는 제어 목표가 아니지만, 그대로 두면 더워져도 창을 여는 힘이 없습니다. 그래서 다음 판단 시점의 예상 온도(현재 + 상승률 × 주기)가 유도 상한 1 °C 앞에 닿으면 환기 장치에 온도 항을 더하고, 넘은 만큼 비중을 키웁니다. 한 번 켜진 항은 예상 온도가 그 선보다 0.5 °C 더 내려가야 꺼집니다 — 선 위에 걸터앉은 온도 때문에 창이 "식힌다" 와 "쉰다" 사이를 오가지 않게 하는 것입니다. 최고 온도 하드 임계에 닿으면 냉방기에도 걸고, 식히는 방향과 맞서는 다른 축의 항을 뺍니다. 여전히 편차에 비례하는 PI 이며 무엇도 100 % 로 강제하지 않습니다 — 실외가 더 더우면 창은 오히려 닫히는 쪽으로 갑니다.


액추에이터 도메인~

부하 분담은 도메인 안에서 일어나고, 도메인은 장치가 비슷한가가 아니라 에너지의 종착점이 같은가로 가릅니다. 설정 화면도 대체로 같은 축을 따르지만, 보광등만은 예외로 차광막·보온커튼과 함께 빛과 차광에서 설정합니다.

도메인 장치 성질
환기 개구부, 배기팬, 흡기팬 실내를 실외 쪽으로만 민다
냉난방·가습 난방기, 냉방기, 포그 외기와 무관하게 직접 넣고 뺀다
스크린 차광막, 보온커튼 들고 나는 복사를 막는다
보조 CO₂ 주입기, 보광등, 유동팬 각자 자기 축을 맡고, 부하를 나눌 상대가 없다. 다만 창이 열려 있으면 넣은 CO₂ 가 곧장 빠져나가므로, 개구부 평균 개도만큼 주입 효과를 낮춰 봅니다(평균 30 % 에서 0). 효과가 너무 작아지면 주입기는 쉽니다

도메인끼리는 서로가 하는 일을 보지 않으므로, 도메인 간 조율은 암묵적인 효과 누적이 아니라 선언된 인터록이 맡습니다(환기 참조).

천창과 측창은 다르게 움직인다~

둘 다 opening 액추에이터지만, 시설 도면은 천창(ridge)과 측창(side)을 구분하고 효과 모델이 그것을 씁니다.

형태 실내가 실외보다 더울 때 실외가 실내보다 더울 때
천창 부력이 돕는다 — 같은 면적이 열을 더 많이 뺀다 역전 — 더운 외기가 잘 안 내려온다
측창 기준 직접 유입, 그대로 가온이다

도면에 형태가 없으면 천창·측창 구분 없이 같은 모델로 동작합니다(보정 없음).


Function 설정~

AoT UI 에서 Function → 통합 환경 제어 로 이동합니다. 액추에이터 자체는 따로 등록하거나(액추에이터 등록), 연동 시설에서 자동으로 찾습니다.

설정 화면 읽는 법~

아래 표를 읽기 전에 다섯 가지를 알아 두면 좋습니다.

맨 위에 상태 머리말이 있습니다. 시설 선택 칸 아래에서, 제어가 지금 무엇을 하고 있는지 보여 줍니다 — 따라가는 축마다 현재 값과 목표(VPD·온도·습도·CO₂·광량), 장치 종류별 개도(개구부·난방·냉방·분무·차광 …), 마지막 판단이 몇 분 전인지. 다음 줄은 이 시설이 축마다 실제로 무엇을 조절할 수 있는지 말합니다 — 양방향, 올리기만, 내리기만, 보기만, 센서 없음. 그 아래 두 줄 요약이 따르는 구획·단계와 지금 적용 중인 목표를 말합니다. 돌 수 없는 상태는 각각 다른 문장입니다 — 이 시설에 연동된 환경 제어가 없음, 제어 꺼짐(대신 이 시설을 돌리는 제어가 있으면 그 이름까지), 이 코디네이터 자신의 기준 시간을 넘겨 판단이 없음, 아직 한 사이클도 돌지 않음. 시설을 고르기 전에는 머리말이 비어 있습니다 — 고르는 칸이 바로 위에 있기 때문입니다. 구획이 2주 안에 끝나면 그 한 줄이 더 붙습니다.

설정은 옵션 종류가 아니라 네 층으로 놓입니다.

층 무엇 표시
연결 시설, 구역 항상
약속 온·습도 범위, CO₂ 허용오차 항상
전략 환기와 냉난방 조율, 야간 닫기, 분무 보호 항상(토글 또는 눈금)
튜닝 나머지 전부 [고급] 안, 그리고 접힌 [고급 설정] 묶음 안

핵심 옵션 하나가 세부를 데리고 다닙니다. 아무도 답할 수 없는 숫자("긴급 판정 배수를 3.0 으로 할까 4.0 으로 할까?")를 묻는 대신, 답할 수 있는 질문을 하고 값 여러 개를 함께 움직입니다 — 로봇청소기의 조용히/중간/강하게 와 같습니다. 그런 조작기가 셋 있습니다: 제어 성향, 환기와 냉난방 조율, 분무 빈도. 단계 이름 자체는 저장하지 않습니다 — 저장되는 것은 실제 값뿐이고, 지금 어느 단계인지는 그 값들에서 되짚습니다. 어느 단계와도 안 맞으면 직접 지정 으로 보입니다.

범위는 손잡이 둘인 밴드로 묻습니다. 온도와 습도는 질문이 하나입니다 — 몇 도에서 몇 도로 기를 것인가. 손잡이를 끌면 넘으면 안 되는 선이 고정 여유(±5 °C, ±5 %RH)로 따라 움직입니다. 끌지 않으면 하드 한계는 출하값(5–35 °C, 30–90 %) 그대로입니다. 밴드로는 하드 한계를 유도 범위보다 좁게 둘 수 없으므로 "12~32 °C 에서 기르되 30 °C 는 넘기지 마라" 는 표현할 수 없습니다 — 그 조합이 난방기와 냉방기를 서로 맞서게 하던 설정입니다. [고급] 에서 숫자를 직접 적어 그렇게 되면, 저장하는 그 자리에서 알려 줍니다 — 어느 축인지, 두 범위가 무엇인지, 실제로는 어느 범위 안에서만 목표를 세우는지 까지. 그 축의 네 값 중 하나라도 이번에 함께 저장했을 때 나옵니다. 그런 뒤 코디네이터는 유도 범위를 하드 한계 안으로 좁혀 쓰고 그 사실을 로그에 남깁니다.

[고급] 스위치 하나가 모든 숫자 칸을 엽니다. 눈금마다 숫자 칸이 함께 붙고, 고급 전용 행이 전부 드러나며, 접힌 묶음도 한 번에 펼쳐집니다. 이 스위치는 브라우저에만 있습니다 — 설정으로 저장하지 않으므로, 같은 함수를 두 사람이 다르게 보는 일이 없습니다. 상위 토글이 꺼진 설정은 비활성이 아니라 감춰집니다. 그래서 저장된 값이 계속 제출되고, 토글을 껐다 켜도 사라지지 않습니다.

어떤 설정은 특정 조건에서만 읽힙니다 — 직접 설정 구동 주기는 프로파일이 직접 지정 일 때만, 야간 시각 칸은 야간 기준이 고정 시각일 때만. 입력했는데 안 쓰이는 값이 있으면 화면이 그것을 알려 줍니다. 그러지 않으면 조용히 아무 일도 안 하기 때문입니다.

명령~

명령 동작
액추에이터 다시 불러오기 Actions 표와 이 함수 자신의 설정을 다시 읽고 액추에이터 프로필을 재구성합니다 — 재시작이 필요 없습니다.
지금 실행 현재 센서값으로 조율 사이클을 즉시 1회 실행합니다. 긴급 정지가 아직 제어를 붙잡고 있는 동안에는 무시하고, 남은 초를 응답으로 알려 줍니다.
긴급 정지 모든 액추에이터를 안전 기본 위치로 보내고 60초간 제어를 정지합니다.

앞의 두 명령 뒤에는 다음 사이클을 한 번만 긴급으로 처리합니다 — 개구부가 구동 프로필의 간격을 기다리지 않고 움직일 수 있습니다.

시설 설정~

항목 기본값 설명
연동 시설 (없음) 이 코디네이터가 맡을 시설. 액추에이터와 센서가 여기서 옵니다 — 외피, 측창·천창, 커튼, 팬, 실내외 센서. 방위·면적·열관류율 같은 GIS 값이 각 액추에이터 프로필에 붙어 풍향과 시설 형상을 계산에 쓸 수 있습니다. 이것을 정하지 않으면 나머지 설정은 대상이 없습니다.
동 범위 (선택사항) (비움) 시설의 한 동만 맡게 합니다. 그 동 안의 센서·액추에이터만 쓰고 — 어느 한 동에 속하지 않는 장치는 빠져서 시설 전체를 맡는 코디네이터 몫으로 남습니다 — 시설 부피·외피·환기 면적도 모든 동 폭을 합한 값에서 그 동이 차지하는 비율만큼 줄여 잡습니다(폭을 알 수 없으면 경고를 남기고 동 개수로 나눕니다). 비우면 시설 전체이고, 여러 동을 독립 제어하려면 동마다 코디네이터를 만듭니다. 비워 둔 코디네이터는 같은 시설의 다른 코디네이터가 이미 맡은 동을 비켜 갑니다 — 한 장치가 두 곳에서 명령을 받지 않게 하려는 것입니다. 연동 시설의 구역 목록에서 고르는 드롭다운입니다 — 시설에 더 이상 없는 저장값은 조용히 지우지 않고 표시를 붙여 남깁니다. 없는 동을 가리키는 동안 이 코디네이터는 시설 전체로 넓히지 않고 아무 장치도 맡지 않습니다.
자동 제어 대상 장치 (제외 없음) 시설 설정 바로 아래 접힌 상자가 연동 시설의 액추에이터를 전부 토글과 함께 보여 줍니다. 하나를 끄면 그 장치는 자동 제어에서 통째로 빠집니다 — 명령도 나가지 않고 안전 게이트도 그 장치를 강제하지 않습니다. 수리 중이거나 손으로 잡아 둔 장치에 필요한 상태입니다. 제외 목록이라, 나중에 시설에 넣은 장치는 처음부터 제어됩니다. 끈 장치가 뒤에 시설에서 사라져도 끈 상태는 그대로 남습니다. 목록을 읽지 못하면 상자가 그 사실을 알리고, 저장된 설정은 빈 값으로 덮어쓰지 않고 그대로 둡니다.

제어를 돌리는 시간대~

토글을 켜야 나머지가 나옵니다. 이것은 시간대별 제어가 아니라 스위치입니다. 창 밖 시간에는 목표 추종(L1~L3)이 통째로 멈춥니다 — 난방·냉방도 포함입니다. 그래도 보호는 계속됩니다.

  • 사전 안전 게이트(강우·강풍·폭염·한파 등)는 매 사이클 평가됩니다. 게이트가 서면 그 강제 명령을 보냅니다. 강풍 때 바람 맞는 쪽 창만 닫는 부분 게이트도 같습니다.
  • 온·습도 하드 임계의 막는 쪽도 그대로입니다. 예를 들어 실내가 최저 온도 아래로 내려가면 창과 보온커튼을 닫고 냉방을 막습니다. 하드 임계는 원래 장치를 구동하지 않으므로(난방기를 켜지는 않습니다) 시간대 밖에서도 "정지" 와 부딪히지 않습니다. 광량 임계는 보광등을 켜는 구동이라 시간대 밖에서는 쓰지 않습니다.
  • 위 보호 명령을 받지 않은 장치에는 각자의 종료 동작을 보냅니다. 시각은 시설 현지 시간대로 판정하고, 시설 시간대를 모르면 서버 시각을 씁니다.
항목 기본값 설명
시간대 제한 사용 꺼짐 켜면 시작~종료 시각 사이에만 목표 추종이 돕니다.
시작 시간 (HH:MM) 06:00 매일 코디네이터가 일을 시작하는 시각.
종료 시간 (HH:MM) 20:00 멈추는 시각. 종료 시각이 시작 시각보다 이르면 자정을 넘는 시간대로 봅니다. 창 밖에서 각 장치가 무엇을 할지는 그 장치의 Action(시간창 종료 시 동작)에서 정합니다.
광주기 메서드 (없음) 고정 시각 대신 일장 곡선으로 창을 정합니다. 주의: 일장이 짧으면 코디네이터도 그 시간만 돌아서 밤새 난방이 되지 않습니다.
광주기 기준 시각 (HH:MM) 12:00 태양남중에 해당하는 시각 — 창이 이 시각을 중심으로 잡힙니다.

목표와 성향~

항목 기본값 설명
온도 범위 12–32 °C 기를 범위. 한계를 넘으면 잘못된 방향으로 미는 것을 멈춥니다 — 너무 더우면 난방을 끄고 차광막을 치고, 너무 추우면 냉방을 끄고 개구부·보온커튼을 닫습니다. 무엇도 최대로 몰아붙이지 않습니다.
습도 범위 40–85 % 습도도 같은 규칙 — 너무 습하면 분무를 끄고, 너무 건조하면 배기팬을 끕니다.
CO₂ 허용 오차 (ppm) 100 목표에서 이 값의 절반 안이면 CO₂ 주입을 그대로 둡니다. 이 값은 반응 세기의 기준도 되어, 6배 벗어나면 최대로 반응합니다(L3). 일반적으로 50–150 ppm.
제어 성향 표준 목표를 얼마나 바짝 쫓을지. 한 칸을 고르면 사이클 주기·환기창 구동 프로파일·VPD 허용오차·긴급 판정 둘이 함께 움직입니다. 새로 추가한 함수의 출하값은 표준 단계 그대로이고, 그중 하나를 어느 단계에도 없는 값으로 직접 고치면 직접 지정 으로 보이며 [고급] 을 보라는 줄이 함께 나옵니다.

[고급] 을 켜면 각 범위 밴드가 뒤에 있는 숫자 넷(유도 T 하한/상한, 최저/최고 온도, 그리고 습도의 짝)을 함께 보이고, 제어 성향은 멤버를 보입니다.

멤버 느긋하게 표준 민감하게
주기 (초) 600 120 60
환기창 구동 프로파일 완만 (600초) 표준 (180초) 민감 (60초)
VPD 허용 오차 (kPa) 0.15 0.1 0.05
긴급 판정 편차 임계값 (허용오차 배수) 4.0 3.0 2.0
긴급 판정 변화율 임계값 (°C / 10분) 3.0 2.0 1.5

같은 자리에 있지만 단계가 정하지 않는 멤버가 둘 더 있습니다. 같은 축의 미세 조정이기 때문입니다: 직접 설정 구동 주기 (초) — 프로파일이 직접 지정 일 때만 쓰입니다 — 와 긴급 시 최소 간격 (초), 기본 60. 뒤엣것은 긴급 상황에서도 두 번의 개구부 명령 사이에 두는 하한입니다.

구동 프로파일은 측창·천창이 실제로 움직이는 간격만 정합니다. 감지와 계산은 매 사이클 주기마다 그대로 돌고, 커튼·차광막은 한 번에 열고 닫으므로 해당이 없습니다. 안전 게이트의 강제 명령(강우·강풍 폐쇄 등)은 이 값과 무관하게 그 장치에만 즉시 나가고, 강제받지 않은 다른 창은 이 간격을 그대로 지킵니다. 이 간격을 통째로 건너뛰는 긴급은 실내 온도가 급변할 때와, 편차가 긴급 판정 임계값을 넘은 채 계속 벌어지고 있을 때뿐입니다 — 목표에서 멀리 떨어진 채 머무는 것만으로는 긴급이 아닙니다.

환기~

항목 기본값 설명
환기와 냉난방 조율 고성능 환기와 냉난방이 서로를 방해하지 않게 합니다. 세 단계는 아래에 설명합니다.
야간에 닫아 두기 꺼짐 밤새 창을 닫고 냉난방·제습이 부하를 지게 합니다. 개구부만 파킹하고 냉난방·제습은 그대로 돕니다.
강풍 임계값 (m/s) 12 이 풍속을 넘으면 개구부를 강제로 닫습니다. [고급]

환기와 냉난방 조율은 토글 셋을 한 번에 움직입니다.

단계 환기로 못 갈 때 창 닫기 환기로 닿으면 냉난방 쉬기 냉난방 가동 중 창 닫아 두기
고성능 (기본) 켬 끔 끔
표준 켬 켬 끔
절전 켬 켬 켬
  • 환기로 못 갈 때 창 닫기 — 환기는 실내를 실외 쪽으로만 밉니다. 목표가 실외의 반대편에 있으면 아무리 열어도 멀어질 뿐입니다. 대표적인 경우가 야간 제습으로, 실외가 실내보다 습할 때입니다. 켜 두면 개구부와 배기·흡기팬이 밤새 반쯤 열린 채 있는 대신 닫힌 채 파킹합니다.
  • 환기로 닿으면 냉난방 쉬기 — 실외 공기가 이미 목표 너머에 있으면 환기만으로 닿을 수 있고, 그때 냉난방을 함께 돌리는 것은 바깥 공기가 공짜로 할 일을 돈 주고 하는 것입니다. 조건 셋을 모두 만족해야 합니다: 실외가 목표를 허용오차보다 더 지나 있고, 제어 대상 변수가 전부 그러하며, 환기에 여력이 남아 있어야 합니다(직전 사이클의 최대 개도가 90 % 미만). 실외가 목표까지의 일부만 메울 수 있으면 냉난방은 그 몫을 뺀 나머지 편차만큼만 돕니다. 15분이 지나도 목표에 못 닿으면 전부 냉난방에 넘깁니다 — 예측이 틀렸다는 뜻이기 때문입니다. 강우·풍속 값을 잃어 개구부를 더 열 수 없는 동안에는 이 판정 자체가 꺼집니다 — 더 열 수 없는 창의 도움을 믿고 냉난방이 물러나면 안 되기 때문입니다.
  • 냉난방 가동 중 창 닫아 두기 — 돌고 있는 기계 옆에서 환기하면 그 열이나 냉기를 그대로 밖으로 버립니다. 다만 실외가 목표 쪽으로 도와줄 수 있는 계절에는 그 도움까지 버리게 됩니다.

가동 감지에는 근거가 필요하고, 근거는 둘뿐입니다 — 이 코디네이터가 그 기계를 직접 명령하거나, 기계가 돌 때 값이 오르는 측정을 신호 칸에 지정하거나. 실내 온도로 추측하지 않습니다. 햇빛이 강한 낮에는 냉방기가 없어도 실내가 실외보다 서늘해질 때가 있어, "실내가 실외보다 서늘하면 냉방 중" 이라는 판정은 여유를 두어도 자주 틀립니다.

항목 (인터록을 켜면 나옵니다) 기본값 설명
냉·난방 가동 감지 신호 (없음) 이 코디네이터가 직접 켜지 않는 기계 전용입니다. 그 기계가 돌 때 값이 오르는 측정이면 무엇이든 됩니다 — 전력을 보고하는 스마트 플러그, 전류계, 보조 접점. 코디네이터가 직접 명령하는 기계면 비워 둡니다.
가동 판정 문턱값 0.5 이 값 이상이면 가동 중으로 봅니다. on/off 접점이면 0.5 그대로 두고, 와트·암페어면 대기전력보다 높게 잡습니다.

신호에 자기 유효시간이 없으면 그 측정의 주기(×2, 하한 300초)로 판정합니다. 만료된 신호는 가동 중이 아님 으로 보고, 그 사실을 로그에 남깁니다.

야간 닫기가 있는 이유는 밤에 습도가 오르고 이슬이 맺히기 때문입니다. 해질 무렵 쓸모 있어 보이던 개구도 아침까지 작물을 젖은 채로 둘 수 있습니다. 하위 설정은 토글을 켜야 나옵니다.

닫아 두는 것이 오히려 위험해지면 스스로 풉니다. 온도·습도 하드 임계를 넘었을 때, 그리고 결로가 임박했는데 환기가 그것을 덜어 줄 때입니다. 결로 임박은 실내 온도와 이슬점의 차가 2 °C 보다 작은 것이고, "덜어 준다" 는 외기를 조금 섞었을 때 그 차가 벌어지는 것입니다. 차고 습한 외기는 실내를 식혀 오히려 결로를 부를 수 있어, 실외가 건조하다는 것만으로는 열지 않습니다. 풀린 뒤에는 차가 3 °C 로 회복되거나 환기가 더는 도움이 안 될 때 다시 닫습니다. 실외 값을 모르면 풀지 않습니다.

항목 (야간에 닫아 두기를 켜면 나옵니다) 기본값 설명
야간 기준 일몰~일출 밤을 일몰~일출로 잴지, 고정 시각으로 잴지.
일몰 몇 분 전에 닫을지 (분) 0 일몰 이 분 전부터 닫기 시작합니다. 음수는 잘라냅니다 — 일몰 뒤에 닫히는 지연이야말로 이 옵션이 없애려는 것입니다.
야간 시작 / 종료 (HH:MM) 18:00 / 06:00 야간 기준이 고정 시각일 때만 쓰입니다.

세 가지가 보장됩니다. 안전 게이트가 이깁니다(여름밤 고온이면 창은 그래도 열립니다), 온·습도 하드 임계를 넘으면 파킹이 풀리고, 태양시를 구할 좌표가 없으면 아예 파킹하지 않습니다. 이와 별개로 야간 닫기에 국한되지 않는 네 번째 규칙이 있습니다 — 실외 값 자체를 모르면(캐시가 비어 실외=실내로 가정한 합성값만 있을 때) 애초에 창을 닫지 않고 지금 위치를 그대로 유지합니다. 이번 판정에서 이 규칙이든 다른 규칙이든 이미 내린 닫기 결정도 이 유지가 덮어씁니다(다만 비·강풍 같은 비상 안전 게이트는 이 유지보다 우선해 창을 닫을 수 있습니다). 지어낸 실외=실내 값을 근거로 닫아 버리면, 기상대가 죽었을 때 한여름 낮에도 창이 닫힌 채로 남을 수 있기 때문입니다. 시각은 서버가 아니라 시설 현지 시간대로 읽습니다. 시설 팝업에서 이 옵션으로 닫힌 장치는 밤이라 닫아 둠 — 냉난방이 대신합니다 로 표시되며, 지금 이 장치가 바꿀 수 있는 것이 없음 과 구분됩니다.

냉난방·가습~

항목 기본값 설명
가습에 미니스프링클러 사용 켜짐 잎을 적시는 분무기를 습도에도 씁니다. 같은 노즐이 관수 설비를 겸하면 끕니다 — 관수용으로 고른 스프링클러는 짧게 한 번만 틀어도 잎에 물막을 남깁니다. 끄면 그 분무기는 자동 환경 제어에서 통째로 빠집니다 — 명령을 아예 보내지 않으므로, 별도 관수 제어가 그 장치를 그대로 씁니다.
일소·저녁 보호 사용 꺼짐 강한 빛에서 습윤형 분무를 막고(물방울이 렌즈가 되어 볕을 모읍니다), 설정하면 일몰 전에도 막습니다. 분무를 얼마나 자주 하는가와는 별개입니다.
분무 빈도 자주 분무가 얼마나 자주 도는가 — 1회 작동 시간과 다음까지의 간격.

분무 밸브는 거의 전부 on/off 라 물살을 줄일 방법이 없습니다. 조절할 수 있는 것은 한 번에 몇 초 켜느냐와 다음까지 얼마나 기다리느냐뿐이고, 이 눈금이 그것을 정합니다.

단계 1회 최대 분무 시간 (초) 강제 건조 간격 (초)
드물게 5 1200
보통 10 900
자주 20 600
아주 자주 30 450

일소 보호는 빈도와 별개의 결정입니다 — 둘을 따로 두어야 "자주 뿌리되 강한 볕에는 잠가 달라" 같은 조합을 정할 수 있습니다.

항목 (보호를 켜면 나옵니다) 기본값 설명
햇빛 강도에 따른 분무 조절 150–250 W/m² 손잡이 둘인 밴드입니다. 아래 값보다 어두우면 분무가 자유롭게 돌고, 위 값보다 밝으면 멈추며, 사이에서는 선형으로 줄어듭니다. 둘 사이를 벌려 두는 것은 구름이 지날 때 분무가 켜졌다 꺼졌다 하지 않게 하려는 것입니다. 잎을 적시는 분무에만 적용됩니다 — 안개형은 강한 볕에도 돕니다. 판정은 추정 실내 광량이라 차광막을 치면 잠금이 완화됩니다. 광량 측정이 아예 없으면 태양 위치로 어림한 맑은날 일사가 대신 쓰이므로, 광센서가 없는 시설에서도 보호가 걸립니다. 분무 원수가 기본값(지하수)이면 실제로는 100–150 W/m² 로 내려 씁니다.
일몰 전 분무 허용 켜짐 끄면 밤새 잎이 마른 채로 남습니다. 엽면 습윤이 길수록 잿빛곰팡이·노균병 위험이 커집니다.
일몰 전 분무 중단 시간 (분) 120 일몰 이 분 전에 분무를 멈춥니다. 차단은 다음 일출까지 이어집니다. 설치 위치 좌표를 모르면 일몰을 구할 수 없어 저녁 차단이 걸리지 않습니다.
분무 원수 지하수 (미처리) 처리 안 한 지하수는 대개 경도가 높고 찹니다 — 마르는 물방울이 미네랄 자국을 남기고 볕 받는 잎에 냉해를 줄 수 있습니다. 이것이 선택돼 있으면(기본값) 잠금·해제 임계가 자동으로 내려갑니다(각각 최대 150/100 W/m²).

보호 여부와 무관하게 습윤형 분무기는 연속 변조가 아니라 펄스로 도징됩니다 — 연속 변조는 잎이 마를 틈을 주지 않기 때문입니다. 1회 시간과 간격은 분무 빈도 눈금의 값을 쓰고(출하값 자주: 1회 최대 20초, 건조 간격 600초), 값이 비어 있을 때만 30초/180초로 돕니다.

습윤형 분무는 최고 습도 하드 임계보다 앞에서도 잠깁니다. 습도가 이번 사이클의 습도 기준(VPD 목표에서 나눈 습도, 유도 범위 안) + 5 % 를 넘으면 잠그고, 습도를 모를 때도 잠급니다. 이미 젖은 공기에서 잎을 더 적시지 않기 위해서입니다. 안개형(고압 미세포그)은 해당하지 않습니다.

빛과 차광~

항목 기본값 설명
차광·보광 기준 0–800 W/m² 안에 머무르라는 범위가 아니라 기준선 둘입니다. 밴드보다 어두우면 보광등이 켜지고 차광막이 열립니다. 밝으면 차광막이 닫힙니다. 밴드 안에서는 아무 일도 일어나지 않습니다. 기준은 작물이 실제로 받는 광량입니다 — 실외 일사에 피복재와 차광막의 투과율을 반영한 값입니다.

양 끝을 각각 끌 수 있고, "끔" 의 뜻은 두 끝에서 반대입니다. 아래 손잡이가 0 이면 보광 안 함, 위 손잡이를 끄면 차광 안 함 입니다. 시설에 차광막이나 보광등이 등록돼 있지 않으면, 아무 일도 못 하는 손잡이를 내놓는 대신 화면이 그렇게 말합니다.

차광 쪽 기준선은 닫힌 막 아래의 광량이 아니라 막을 걷었을 때 얼마나 밝은가로 판정합니다 — 그러지 않으면 닫는 순간 어두워져 판정이 풀리고, 다음 사이클에 다시 걷습니다. 실외 광량을 모르면(실내 센서만 있는 설치) 지금 값으로 판정합니다. 차광이 걸려 있는 동안에는 보광과 개방을 동시에 강제하지 않습니다. 두 기준선을 함께 만족시킬 수 없으면 — 막을 닫으면 보광 기준선보다 어두워지는 설정 — 차광을 우선하고, 그 모순을 로그에 한 번만 남겨 사람이 고칠 수 있게 합니다.

실제 값은 최소 광량 임계값 (보광)(기본 0)와 최대 광량 임계값(기본 800)이고, 둘 다 [고급] 에서 보입니다.

관련된 값 셋은 이 화면에 없습니다.

  • 차광막 투과율은 시설의 것이고, 시설 편집기의 차광 커튼 아래에 있습니다. 실내 광센서가 없을 때만 쓰입니다 — 그때는 실외 일사와 차광 개도로 실내 광량을 어림합니다. 값이 없거나 범위 밖이면 0.50 으로 돌아가고, 차광막이 없다고 선언한 시설에서는 1.0 입니다. 천이 다른 차광막 하나는 자기 Action 에서 따로 지정할 수 있습니다.
  • 피복재 투과율은 외피 자재에서 자동으로 나옵니다(유리 0.85 · 2중 비닐 0.78 · 부직포 0.50 등). 차광막이 없어도 지붕은 늘 빛을 깎으므로 실내 광량 추정에 함께 곱합니다. 그래서 광량 상·하한은 실내 기준입니다. 같은 250 이라도 유리온실과 부직포 하우스에서 작물이 받는 빛은 두 배 가까이 다릅니다.
  • 광포화점은 차광 임계가 아니라 프로그램의 작물 K_L 에서 파생합니다. 둘을 한 값으로 두면 차광을 일찍 하려고 임계를 낮추는 순간 광합성 모델이 "빛은 이미 충분하다" 고 판정해, 강한 햇빛 아래에서도 광 제한을 보지 못하게 됩니다. K_L 이 없으면 시스템 기본 600 W/m² 를 씁니다.

고급 설정~

기본으로 접혀 있고, 재배자가 아니라 이 함수를 시험하는 사람을 위한 묶음입니다.

항목 기본값 설명
최대 센서 유효 시간 (초) 0 이보다 오래된 센서값은 버립니다. 센서(Input)에 자기 최대 경과시간이 지정돼 있으면 그 값이 이 옵션보다 우선합니다. 0 은 '제한 없음' 이 아니라 '안 정했다' 입니다 — 그때는 센서마다 자기 갱신 주기 × 2(최소 300초)로 판정합니다. 공급원의 주기보다 짧은 고정값은 만족될 수 없습니다: 300초마다 값을 내는 기상대를 120초 상한으로 재면 유효한 값이 하나도 남지 않습니다.
제어 기준 VPD VPD: VPD 목표를 직접 좇습니다. 온도 우선: 단계 온도를 좇고 VPD 목표를 습도 목표로 바꿉니다(제어 기준).
광합성 지향 제어 사용 꺼짐 매 사이클 Big-Leaf 모델이 지금 무엇이 발목을 잡는지(빛·CO₂·온도·VPD) 가려내고 그 변수의 우선순위를 높입니다. 광센서가 필요하고, 작물 상수는 구획의 프로그램에서 옵니다.
기준 구획 (선택) (비움) 범위 안에서 둘 이상이 자랄 때 이 코디네이터가 따를 구획. 하나뿐이면 비워 둡니다.
온도 가중치 (0–1) 0.6 VPD 목표를 온도·습도 보조 목표로 나눌 때 온도 쪽에 둘 비율(나머지는 습도). VPD 를 잴 수 있으면 제어하는 것은 VPD 자체이고, 이 값은 보조 목표 — 넘지 말아야 할 선과 습윤형 분무 잠금의 기준 — 의 모양만 정합니다.
VPD 중요도 1.2 한 장치가 여러 축에 닿을 때 편차를 합치는 가중치 — 높을수록 그 축의 편차가 명령에 크게 반영됩니다. 장치를 정하는 순서는 중요도가 아니라 비용 지수입니다(L3).
CO₂ 중요도 0.8 CO₂ 의 같은 가중치. 시비는 부차적이라 VPD 보다 낮습니다.
DLI / GDD 트래커 사용 꺼짐 일적산광량과 적산온도를 추적하고 시설 현지 자정에 롤오버합니다. 광량은 센서 단위에 따라 PPFD 로 환산합니다. 목표는 구획의 프로그램에서 오고, DLI 에는 광센서가 필요합니다. 하루 끝에 목표와의 차이는 부족·과잉 어느 쪽이든 보상 제안으로 기록합니다 — 하루에 얼마씩 3일에 걸쳐 되찾을지, 지금 있는 장치로 낼 수 있는지까지 적습니다.

효과 캘리브레이션~

항목 기본값 설명
효과 엔진 Legacy Legacy: 내장 K_* 상수(기본, 안전). Shadow: 그레이박스 모델을 나란히 돌려 기록만 하고 제어는 그대로. MPC 가 제어했다면 보냈을 명령과 그 예측도 함께 기록합니다. Grey-box: 물리 모델이 제어. 매 사이클 MPC(몇 단계 앞을 내다보는 최적화)를 먼저 시도하고, 안 되면 물리 모델 PI, 그다음 Legacy 로 물러납니다. MPC 는 앞으로의 실외를 이렇게 봅니다. 일사는 태양 위치로 계산한 맑은 날 일사에 지금의 맑음 정도를 곱해 봅니다(시설 좌표가 있으면 어느 나라든). 외기 온도·습도는 기상청 단기예보가 있고 발표 6시간 이내이며 시설 시간대가 같으면 예보가 말하는 변화량만큼 지금 실측에서 움직이고, 아니면 지금 값 그대로 둡니다. 예보 값 자체가 아니라 변화량을 쓰는 것은 예보(넓은 격자 평균)와 이 시설 기상대의 차이를 지우기 위해서입니다. MPC 도 PI 와 같은 판정을 지킵니다 — 야간 닫기, 실외로는 목표에 못 가는 환기, 냉난방 가동 중 개구부 잠금, 환기 우선, 온도가 원하는 방향의 반대편 냉·난방. 이 판정이 선 장치는 MPC 가 열거나 켜지 않습니다. MPC 는 창과 팬을 풍량으로 봅니다(창 면적, 팬 정격 풍량). 같은 환기량이면 실내가 더울 때는 천창부터, 실외가 더 더울 때는 측창부터 엽니다. 팬 풍량이 창보다 크면 팬으로 내고 창은 닫아 둡니다(창이 열리면 벽면 팬은 공기를 빼지 못합니다). 차광막과 보온커튼은 MPC 가 움직이지 않고 지금 위치를 예측에 반영합니다 — 보온커튼을 치면 외피 열손실이 줄어드는 것까지 계산합니다. 권장 순서는 Shadow 다음 Grey-box. 쌓인 데이터와 성적은 앱·데몬을 다시 시작해도 이어집니다(주기를 바꾸거나 일주일 넘게 멈춰 있었으면 처음부터 다시 쌓습니다). 물리 모델은 Shadow 로 쌓인 데이터로 학습하고, 10사이클 앞을 예측해 "지금 값 그대로" 라는 단순 예측보다 나을 때만 Grey-box 제어가 켜집니다. 이 비교는 기상 구간(더운 낮·온화한 낮·일출·일몰·밤 등)마다 따로 하며, 표본이 충분히 모인 모든 구간에서 나아야 하고 그런 구간이 2개 이상이어야 합니다 — 그 전에는 Legacy 로 돕니다. 모델의 물리식이 바뀌는 업데이트 뒤에는 이 학습과 검증을 새 식으로 다시 합니다. Shadow 나 Grey-box 를 고른 동안에는 이 나란한 계산이 계속 돌아야 그 학습이 진행됩니다 — 3사이클 연속 실패하면 로그에 적고, 그 뒤에는 60사이클마다 한 번 더 적습니다. 멈춘 것을 모르고 지나치지 않게 하기 위해서입니다. 시험 중이 아니면 바꿀 이유가 없습니다.
RLS 캘리브레이션 사용 꺼짐 장치마다, 내장 모델이 예측한 것보다 실제로 각 값(온도·습도·CO₂)을 얼마나 세게 움직이는지를 배율로 배웁니다(1.0 = 모델 그대로). 모델의 조건 계산(실내외 차·풍속·면적)은 그대로 두고 크기만 고칩니다. 그 장치만 명령이 바뀐 사이클에서만 배웁니다 — 다른 장치가 같이 움직이면 누구 몫인지 가를 수 없기 때문입니다. 며칠 치 데이터가 필요하고, 그때까지는 모델을 그대로 씁니다.
능동 프로빙 사용 꺼짐 캘리브레이션 식별성을 높이려고 주기적으로 한 액추에이터를 ±10 % 흔듭니다. 부하가 낮고 안전 게이트가 없을 때만 발동하며, 순환팬은 대상으로 고르지 않습니다. RLS 캘리브레이션이 필요합니다.
프로빙 간격 (초) 3600 프로빙 사이 최소 간격. 단계: 자주(1800) / 표준(3600) / 드물게(10800).

예보 피드포워드~

항목 기본값 설명
예보 피드포워드 사용 꺼짐 단기 기상 예보로 온·습도 setpoint 를 악천후가 닿기 전에 미리 옮깁니다. 예보가 지금 실내 온도보다 3 °C 이상 높으면 온도 목표를 1.5 °C 내리고, 3 °C 이상 낮으면 1.0 °C 올리고, 예보 습도가 85 %RH 를 넘으면 습도 목표를 5 %RH 내립니다. 옮긴 목표도 정해 둔 범위 안에 머뭅니다. 예보의 비·강풍은 판단 요약에 함께 표시되지만 그것만으로 개구부를 닫지는 않습니다 — 닫는 것은 실측 풍속·강우입니다.
예보 선행 시간 (시간) 3 몇 시간 앞까지 볼지. 단계: 짧게(1) / 표준(3) / 길게(6). 길수록 일찍 알지만 과보정할 수 있습니다. 시간은 지금부터 셉니다 — 예보 파일이 늦게 갱신돼도 이미 지난 시간대의 예보는 보지 않고, 앞으로 올 시간이 파일에 없으면 보정하지 않습니다. 시설에 자기 예보 공급원이 연결돼 있으면 그 공급원의 예보를 그대로 쓰고 이 값은 쓰지 않습니다.

디버그 로깅은 더 이상 별도 옵션이 아닙니다. 프레임워크의 디버그 스위치와 같은 스위치가 둘이던 상태였고, 이 옵션이 감싸던 것은 거의 전부 DEBUG 레벨이라 혼자서는 아무것도 출력하지 않았습니다. 이제 함수 고급 설정의 스위치 하나가 둘 다 합니다. 중요 사건 — 안전 게이트, 디스패치 실패, 런타임 상태 오류 — 은 이 값과 무관하게 항상 기록됩니다.


액추에이터 등록~

연동 시설 도면에 그려진 액추에이터는 자동으로 찾습니다. 그 밖의 장치는 이 함수에 환경 제어(Environment Control) 액션으로 등록하고, 장치마다 액션을 하나씩 추가합니다. 수동 액션은 시설에서 찾은 목록과 병합됩니다.

액션 옵션 기본값 설명
Output 채널 — 제어할 Output 채널.
액추에이터 종류 — 개구부 · 냉방기 · 난방기 · 분무기/가습기 · CO₂ 주입기 · 차광막 · 보온커튼 · 보광등 · 유동팬 · 배기팬 · 흡기팬.
비용 지수 5.0 낮을수록 우선(1 = 공짜인 자연 환기, 10 = 비싼 장치). 여기에 장치의 에너지 비용(kW × 개도)이 더해집니다. kW 는 출력 채널의 전기소모량(A) × 시스템 사용 전압을 먼저 쓰고, 없으면 시설 도면의 정격, 그것도 없으면 종류별 기본값을 씁니다. 사용 전압은 시스템 설정에 있고 기본이 120 V 라, 220 V 설치는 맞춰 두어야 합니다.
시간창 종료 시 동작 아무것도 안 함 제어 시간창이 끝날 때 이 액추에이터가 할 일: 아무것도 안 함 / 끄기 / 켜기 / 개도 % 지정(개구부 전용).
종료 개도 % 0 그 순간의 목표 개도(개구부 전용).
차광포 투과율 개별 지정 (0–1, 차광막 전용) 0 이 차광막의 천이 다른 것과 다를 때만. 0 으로 두면 연동 시설 값을 씁니다. 실내 광 센서가 없을 때 쓰는 값입니다 — 그때는 실외 일사와 차광막 위치로 실내 광량을 추정합니다.
효과 계수 개별 지정 (K_*) 0 0 = 기본값 사용. 실측 데이터로 보정할 때만 입력합니다.
전 행정 시간 (초) 0 이 액추에이터가 0→100 % 를 이동하는 데 걸리는 초. 사이클당 명령 변화량을 제한해 물리적으로 불가능한 명령을 보내지 않게 합니다. 10분 걸리는 환기창 모터면 600.
최소 반복 간격 (초) 0 목표값이 그대로여도 같은 액추에이터에 명령을 반복하는 최소 간격. 0 = 시스템 기본(600초 워치독). 느린 전동 액추에이터는 릴레이 수명을 위해 늘립니다.

디바이스 타입별 자동 변환~

명령은 언제나 0–100 % 로 산출됩니다. 어댑터는 Output 모듈의 메타데이터에서 정해지고 별도 설정이 없습니다.

Output 타입 어댑터 변환
페어(정/역) 액추에이터 모듈 Paired 정/역 페어 변환, 모듈 내부에서 처리
vol / volume (용량형 펌프) Volumetric vol_ml = flow_lpm × on_sec / 60 × 1000
pwm PWM duty = pct
on_off 릴레이 시간 비례 on_sec = cycle_sec × pct/100, 5 % 미만은 OFF
그 밖 Value 0–100 % 직접 전달(DAC, 스텝모터)
명령 (%) on/off 릴레이 (60초 사이클) PWM 용량형 펌프 (1.5 L/min)
0 OFF duty 0 OFF
30 ON 18초 duty 30 450 mL/사이클
100 ON 60초 (상시) duty 100 1,500 mL/사이클

습윤형 분무기는 여기에 펄스 도징이 한 겹 더 씌워집니다 — 1회 분무를 최대 작동 시간에서 끊고, 건조 간격이 지나기 전까지는 아무 명령이 와도 뿌리지 않습니다.

관수 유량은 시설 도면에서 집계합니다 — 한 레이어에 딸린 모든 emitter 유량을 합해 그 액추에이터의 flow_lpm 으로 두고, 용량형 어댑터가 그 값을 그대로 씁니다. 없을 때의 우선순위는 액추에이터별 유량 → 시설 전체 합계 → 1.0 L/min 입니다.

포그 효과 모델은 다른 유량을 씁니다 — 그 액추에이터의 드립이 아닌 분사 노즐 유량만 보고, 폴백하지 않습니다. 투여량에는 뿌리로 가는 드립이 들어가야 하지만, 공기 중으로 증발하는 양에는 들어가지 않기 때문입니다. 그래서 도면에 노즐 정보가 없는 분무기는 시설 합계를 물려받는 대신 냉각·가습 효과가 아예 없는 것으로 계산됩니다.

측정이 없는 축, 장치가 없는 축~

시설마다 갖춘 장치가 다릅니다. 잴 수는 있는데 움직일 수단이 없는 축, 반대로 움직일 수는 있는데 잴 수단이 없는 축이 모두 정상 구성입니다. 코디네이터는 그 조합을 보고 스스로 다르게 움직입니다.

상황 코디네이터가 하는 일
잴 수는 있는데 그 축을 움직일 장치가 없다 그 값은 참고값입니다. 제어 대상에서 빠지고(실외값이 있으면 그 축의 목표를 실외값으로 바꿔 둡니다), 광합성 판정이나 다른 축의 계산에는 그대로 쓰입니다. 목표를 벗어난 채 머물면 시설 팝업이 움직일 장치가 없습니다 라고 말합니다.
한 방향만 있다 (난방만 있고 냉방은 없다) 정상입니다. 그 방향의 요구가 오면 일하고, 반대 방향이면 0 % 로 쉽니다.
장치는 있는데 그 축을 잴 수 없다 그 장치가 미는 다른 축을 잴 수 있으면 그 축으로 계속 제어합니다(예: 습도는 못 재도 온도는 재는 개구부). 미는 축을 하나도 잴 수 없을 때만 제자리에 섭니다. 편차를 모르는데 움직이면 근거 없이 장비를 쓰는 것이고, 닫거나 여는 것도 결정이기 때문입니다.
실내 온도·습도를 잴 수 없다 그 축이 통째로 제어에서 빠집니다. 없는 값을 0 으로 지어내지 않습니다 — 그러면 "실내 0 °C" 로 읽혀 난방이 최대로 돕니다. 잎을 적시는 분무는 습도를 모르는 동안 잠깁니다.

함수 설정 맨 위의 조절 가능 줄이 이 조합을 축마다 한 단어로 보여 줍니다 (온도·습도·VPD·CO₂·광량). 장치 구성과 이번 사이클에 잰 값으로 코디네이터가 계산한 것이고, 단어에 마우스를 올리면 그 축을 움직이는 장치 이름이 보입니다.

표시 뜻
양방향 잴 수 있고, 올리는 장치와 내리는 장치가 모두 있습니다.
올리기만 / 내리기만 잴 수 있고, 한 방향 장치만 있습니다.
보기만 잴 수는 있는데 움직일 장치가 없습니다(참고값).
센서 없음 그 축을 직접 움직이는 장치는 있는데 잴 수 없습니다.

장치도 센서도 없는 축은 표시하지 않습니다. 창이 CO₂ 를 조금 내리는 것처럼 부수 효과로만 움직이는 축은, 센서가 없으면 역시 표시하지 않습니다. VPD 는 온도와 습도 양쪽 장치를 함께 봅니다 — 가습 분무는 VPD 를 내리고, 환기는 실외가 건조하면 VPD 를 올립니다. 이 줄은 지금은 표시 전용이고, 제어는 위 표의 규칙대로 돕니다.

안전 게이트도 같은 규칙입니다. 실내 값을 잃으면 게이트가 그 사실에 이름을 붙여 화면과 로그에 남기지만, 강제 명령은 만들지 않습니다. 모든 장치를 안전 기본 위치로 모는 것(개구부는 닫히고 스크린은 걷힘)은 근거가 없다는 이유로 장비를 움직이는 것이기 때문입니다. 실외 값을 잃었을 때와 같은 판단이고, 제어를 통째로 멈추지도 않습니다: CO₂ 나 광량처럼 아직 잴 수 있는 축은 계속 제어합니다.

⚠ 비바람처럼 실외만으로 판단할 수 있는 위험은 그대로 막습니다. 반대로 폭염·한파는 실내 온도를 모르면 판정하지 않습니다 — 그 게이트는 전 장비를 한쪽으로 몰기 때문에 근거가 확실할 때만 서야 합니다.

어긋난 조합은 건강 점검이 함께 알려 줍니다:

python3 -m aot.scripts.check_env_coordinator_health

목표는 있는데 측정이 없는 경우, 목표는 있는데 장치가 없는 경우, 장치는 있는데 그 장치가 미는 축을 하나도 못 재는 경우를 설정 점검에 보고합니다. 측정만 있고 목표도 장치도 없는 축은 보고하지 않습니다 — 그것이 곧 참고값입니다.

안전 기본 위치~

각 액추에이터에는 안전 게이트 발동, 긴급 정지, 외부 force_safe_state() 호출 시 이동할 안전 위치가 있습니다. 이 위치는 장치 종류를 따릅니다 — 보온커튼과 차광막은 100 % 로 파킹하고, 나머지는 0(끔)입니다. 시설 도면에서 찾은 액추에이터든 액션으로 등록한 액추에이터든 같습니다.


Method (제어 곡선)~

Method 는 setpoint 가 시간에 따라 어떻게 변하는지 정의합니다. Method 는 이 함수가 아니라 프로그램의 목표 항목에 붙습니다 — 곡선이 걸린 항목은 구획 화면에 곡선을 따름 으로 표시되고 숫자로 덮을 수 없습니다.

  • Daily — 시각(HH:MM)별 setpoint
  • Duration — 시작 후 경과 시간(h)별
  • Daily Bezier — 부드러운 일주 곡선
  • Repeating — 반복 패턴

생육 주차로 진행하는 곡선은 구획 시작일을 기준으로 계산합니다. 날짜만 있는 값은 시설 현지 시간대의 자정으로 읽고, 주차는 구획 화면·구획 일지와 같은 계산을 씁니다.

작물 단계 스케줄 예시(토마토):

일차 VPD 목표 CO₂ 목표
파종~7일 0.6 kPa 800 ppm
8~21일 0.8 kPa 900 ppm
22~42일 1.0 kPa 1000 ppm
43일~ 1.3 kPa 1000 ppm

SEED: 로 시작하는 Method 는 시드 프리셋이라 읽기 전용입니다. 편집하려면 복제한 뒤 수정하세요.


안전 게이트~

안전은 L1~L3 조율 알고리즘 밖에서 돕니다 — 매 사이클 L1~L3 앞에서 평가하는 Pre-Gate 와, L3 결과를 내보내기 직전에 검증하는 Post-Gate 입니다. 한 번 발동한 Pre-Gate 는 마지막 발동 후 최소 300초 동안 유지됩니다(빠른 on/off 반복 방지). 게이트가 풀리면, 게이트가 움직인 장치는 게이트가 둔 위치에서 평형을 다시 찾습니다. 게이트 전의 평형 개도로 곧장 돌아가지 않습니다 — 그사이 조건이 바뀌었을 수 있기 때문입니다. 게이트의 강제 명령은 구동 주기를 기다리지 않고 즉시 나가며, 게이트가 서 있는 동안 매 사이클 다시 보냅니다. 게이트가 강제하지 않은 장치는 평소 구동 주기를 그대로 지킵니다 — 한 장치에 게이트가 서 있다고 시설 나머지가 빨라지지 않습니다.

Pre-Gate (L1~L3 진입 전 평가)~

게이트 발동 조건 동작
강우 강우량 ≥ 0.5 mm/hr (고정, 사용자 설정 불가) 측창·천창을 닫습니다. 커튼·차광막은 실내 설비라 건드리지 않습니다.
강풍 풍속 ≥ 강풍 임계 옵션(기본 12 m/s) 개구부를 닫습니다. 강풍이 유일한 활성 게이트이고(값 끊김도 없음), 풍향을 알고, 모든 개구부에 방위가 있으면 풍상측(±60° 이내) 개구부만 강제로 닫고 풍하측은 정상 제어를 이어 갑니다.
폭염 비상 실외 ≥ 45 °C 그리고 실내 ≥ 35 °C (둘 다 고정). 해제는 둘 중 하나가 2 °C 이상 내려갔을 때 개구부 전개, 차광막 폐쇄, 냉방기 100 % 강제.
한파 비상 실외 ≤ −5 °C 그리고 실내 ≤ 5 °C (둘 다 고정). 해제는 둘 중 하나가 2 °C 이상 올라갔을 때 개구부 폐쇄, 보온커튼 폐쇄, 난방기 100 % 강제.
폭염·한파 판정 불가 실내 온도를 모름 비상 게이트가 서지 않습니다 — 전 장비를 한쪽으로 모는 조치라 근거가 확실할 때만 발동합니다.
실내 값 끊김 실내 온·습도가 오지 않음(센서마다 자기 신선도 규칙으로 판정 — 별도의 120초 시계는 없습니다) 아무것도 강제하지 않습니다. 편차를 잴 수 없으므로 그 축이 제어에서 빠지고, 근거를 잃은 장치는 제자리에 섭니다. 잴 수 있는 축(CO₂·광량)은 계속 제어하고, 값이 돌아오면 바로 재개합니다(300초 유지 없음).
실외 비·바람 끊김 받던 강우·풍속 값이 더 오지 않음(센서마다 자기 신선도 규칙으로 판정 — 별도의 300초 시계는 없습니다). 원래 없던 센서는 해당하지 않습니다. 마지막 값이 비·강풍이었으면 강우·강풍 게이트가 새 값이 올 때까지 개구부를 닫은 채 둡니다. 아니면 개구부는 제자리에 있거나 닫힐 수는 있어도 더 열리지 않습니다 — 오래된 "비 안 옴" 은 여는 근거가 못 됩니다. 예외: 최고 온도 하드 임계 위에서는 열 수 있습니다. 차광막과 나머지 장치는 정상 제어를 이어 갑니다.
분무 잠금 강한 빛, 또는 저녁 차단 시각 (일소·저녁 보호가 켜져 있을 때) 습윤형 분무기만 잠급니다. 국소 잠금이라 나머지 제어를 얼리지 않고 300초 유지도 하지 않습니다.

값을 잃은 것은 비상이 아니라 제약입니다. 실내 값 끊김과 실외 비·바람 끊김은 둘 다 강제 명령을 만들지 않고, 300초 유지도 걸지 않으며, 이 둘만 서 있으면 L1~L3 가 정상 실행됩니다. 근거가 없다는 이유로 장비를 움직이지 않는다는 규칙이고, 움직일지 말지는 코디네이터가 축별로 판단합니다.

강우·폭염·한파 임계는 코드에 고정돼 있고, 함수 옵션으로 노출된 것은 강풍 임계 하나뿐입니다. 여러 게이트가 동시에 활성일 수 있으며(예: 강우 + 강풍), 그때 개구부는 풍향과 무관하게 무조건 닫힙니다.

게이트가 걸린 사이클도 사이클입니다. 게이트가 사이클을 일찍 끝내면 축소 요약을 남기고 사이클 도장을 찍습니다. 그래서 시설 위젯이 무슨 일이 있었는지 계속 보여 주고, 코디네이터가 무응답인 것처럼 보고하지 않습니다. 축소 요약에도 이번 사이클에 실제로 잰 환경 값은 그대로 실립니다 — 게이트가 걸려 있어도 센서는 계속 재고 있기 때문입니다. 빠지는 것은 L1~L3 가 만들었을 값(목표·편차 등)뿐입니다. 장치도 게이트가 강제한 것만이 아니라 전부 목록에 남습니다 — 건드리지 않은 장치는 0 % 가 아니라 명령 자체가 없습니다.

Post-Gate (L3 이후, 디스패치 직전 검증)~

검증 동작
비유한 명령(NaN/Inf) 해당 액추에이터를 안전 기본 위치로 되돌립니다.
범위 초과 명령 [0, 100] 으로 클램프합니다.
Manual Lock 활성 잠긴 값으로 덮어씁니다.
냉방기와 난방기 동시 ON (둘 다 5 % 초과) 허용하지 않습니다. 하드 임계 대응까지 모두 끝난 마지막에 검사하고, 명령의 출처가 센 쪽을 남깁니다 — 안전 게이트 > 수동 잠금 > 일반 제어. 출처가 같으면 비용 지수가 낮은 쪽을 남기고, 다른 쪽을 0 으로 강제합니다. L3 도 온도 요구의 반대편(더울 때 난방기, 추울 때 냉방기)을 미리 쉬게 하므로 이 검사까지 오는 일은 드뭅니다.

긴급 정지와 안전 상태~

진입점 설명
Function Command → 긴급 정지 화면 버튼.
Conditional / Trigger → force_safe_state 외부 자동화에서 즉시 진입.
RPC output_off 우회 경로 — 개별 Output 하나만 정지합니다.

긴급 정지 후 60초 동안 다음 사이클이 지연됩니다. 그 직후 액추에이터가 움직이지 않는 것은 고장이 아니라 이 지연입니다.


트러블슈팅~

증상 점검 항목
화면에 목표가 없다 이 시설·구역에서 자라는 구획이 있는지, 그 구획에 프로그램이 있는지, 그 프로그램이 검토됐는지. 하나라도 없으면 코디네이터는 유도 범위로만 돕니다 — 고장이 아니라 정상입니다.
목표는 있는데 한 축이 무시된다 그 목표 항목에 물리량이 지정되지 않았을 수 있습니다(그러면 참고 일 뿐입니다). 곡선이 걸린 항목은 구획에 적은 숫자를 무시합니다.
액추에이터가 작동하지 않는다 액션이 등록됐는지, Output 이 활성인지. 액션이나 시설을 바꿨으면 액추에이터 다시 불러오기 를 실행합니다.
on/off 릴레이가 너무 짧게 켜진다 명령값이 5 % 미만일 가능성이 큽니다 — 시간 비례 어댑터가 그 아래에서는 끕니다.
펌프가 항상 1.0 L/min 으로 계산된다 시설의 emitter 유량이 0 이 아닌지, 관수 레이어가 그 펌프 Output 을 가리키는지 확인합니다.
강풍에 환기창이 닫히지 않는다 강풍 임계와 시설의 실외 풍속 센서 바인딩을 확인합니다.
밤에 창이 계속 닫혀 있다 야간에 닫아 두기 를 켰다면 정상입니다 — 시설 팝업이 밤이라 닫아 둠 이라고 말합니다. 온·습도 하드 임계와 안전 게이트는 그래도 파킹을 풉니다.
실외값이 없다고 나온다 최대 센서 유효 시간이 공급원의 주기보다 짧을 수 있습니다. 0 으로 두어 센서마다 자기 주기로 판정하게 하세요.
난방기와 냉방기가 함께 돌았다 디스패치 직전 인터록이 금지합니다(Post-Gate). 유도 범위가 하드 임계보다 넓은 설정이면 저장하는 자리에서 막지 않고 경고하며, 코디네이터는 유도 범위를 하드 임계 안으로 좁혀 씁니다.
설정한 값이 무시되는 것 같다 조건부 옵션일 수 있습니다 — 직접 설정 구동 주기는 프로파일이 직접 지정 일 때만, 야간 시각 칸은 야간 기준이 고정 시각일 때만 쓰입니다. 입력했는데 안 쓰이는 값은 화면이 알려 줍니다.
모든 장치가 제자리에 서 있다 실내 측정이 사라졌을 수 있습니다. 온도·습도를 잴 수 없으면 그 축은 제어에서 빠지고, 잴 수 있는 축이 하나도 남지 않은 장치는 아무것도 하지 않습니다 — 닫지도 열지도 않습니다. 시설 팝업이 지금 잴 수 없어 제자리 라고 말하고, 로그에도 한 번 남습니다. 센서 연결과 최대 센서 유효 시간을 확인하세요.
도면에 그린 장치가 제어에 안 나타난다 제어가 다루는 종류가 아닐 수 있습니다(개구부·차광막·보온커튼·냉난방·분무·CO₂·보광·팬). 그런 설비는 등록에서 빠지고 그 사실이 로그에 한 번 남습니다 — 시설 편집기에서 종류를 바꾸면 들어옵니다.
시설 변경이 반영되지 않는다 액추에이터 다시 불러오기 를 실행하거나, 함수를 비활성화했다 활성화합니다.
워치독이 장시간 정지를 보고한다 의도된 정지 — 시간창 밖이거나 등록된 액추에이터가 없는 경우 — 는 고장이 아니라 정지로 보고합니다. 진짜 정지는 그대로 경고합니다.

AI와의 연동~

AoT 의 AI 채팅과 MCP 로 연결한 AI 는 다음 도구로 이 코디네이터를 봅니다. 쓰기 도구는 모두 사람의 승인을 거칩니다.

도구 하는 일
get_control_state 읽기. 코디네이터별 목표·허용오차·우선도·안전 범위·운전 시간대와, 마지막 사이클이 실제로 쓴 목표·제한 인자·안전 게이트 상태·장치별 명령과 그 사유. 제어에 대해 조언하기 전에 먼저 읽는 값입니다.
get_cumulative_status 읽기. DLI·GDD 일별 누적과 부족분(DLI / GDD 트래커를 켠 경우).
get_function_detail 읽기. 함수 설정 전체.
modify_function_options 쓰기. 이 함수의 옵션을 바꾸고 다시 읽힙니다.
activate_function / deactivate_function 쓰기. 함수를 켜거나 끕니다.

목표는 이 함수가 아니라 구획의 단계 계획에 있습니다. 한 구획의 목표만 바꾸려면 구획 화면에서 고칩니다. AI 가 프로그램을 고치는 도구(modify_program)로 단계 목표를 바꿀 수도 있지만, 그 프로그램을 쓰는 모든 구획에 적용됩니다.