コンテンツにスキップ

環境制御自動化~

AoTのenv_coordinator(画面上は統合環境制御)は、1つの施設のすべてのアクチュエーター — 換気窓、排気・吸気ファン、ヒーター、冷房機、噴霧器、遮光スクリーン、保温カーテン、 補光照明、CO₂インジェクター — を1つにまとめて協調させる3層制御システムです。

異なる2つの場所で決まる、2つのことがあります。この2つを混同するのが、もっとも よくある混乱の原因です。

  • 何を目指すか — VPD・CO₂・DLIなど — は、その施設で育っている区画の ものです。区画に付いた栽培プログラムを通じて決まります。
  • どう到達するか — どんな設備があるか、越えてはいけない線はどこか、 目標をどれだけ強く追うか — はこの関数のものです。

目標はどこで決まるか~

層 持っているもの 編集する場所
プログラム(GeoProgram) 参照計画: 生育ステージ、目標項目の語彙、目標カーブ、作物の光合成定数 プログラムページ
区画(GeoPlot) 実際の計画: ステージ境界日と、この区画のステージごとの目標値 区画画面(ステージスケジュール)
env_coordinator 到達方法: 設備構成、安全の上下限、優先順位、チューニング、緊急時の挙動 Function設定

区画は選んだプログラムを内在化します。区画画面でステージの目標値を編集すると、 その区画のその項目だけが上書きされ、プログラム本体や同じプログラムを使う他の区画には 影響しません。欄を空にすると、その項目はプログラムの値に戻ります — そのため 「元に戻す」ボタンを別に用意していません。

意図した制約が2つあります。

  • 区画は新しい目標項目を作れません。語彙はプログラムのもの(target_defs) なので、未知のキーは黙って無視されるのではなく拒否されます。
  • カーブが設定されている項目は、数値で上書きできません。カーブが優先され、 区画画面ではその項目が読み取り専用として表示されます。

コーディネーターが毎サイクル読み込むもの~

値 用途
VPD目標(数値またはカーブ) 主制御目標
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下書きしかない、プログラムの種類が区画の種類と合っていない、あるいは今日に 該当するステージがない場合は、単に目標がないだけです — 制御は自分自身の推奨範囲の 中で動き続けます。これはすでに定義された挙動であり、栽培中の作物がない温室でも暖房は 必要だからです。

昼夜の温度と湿度が推奨範囲を決めます~

第一目標は引き続きVPDです。ステージの昼温度・夜温度・湿度は目標ではなく、 VPDを暑すぎて湿った組み合わせや寒すぎて乾いた組み合わせで達成することを防ぐガイドです。 コーディネーターは毎サイクル、自分の推奨範囲を次のものに置き換えます。

範囲
温度 ステージの昼温度(施設の位置での日の出〜日没)または夜温度 ± 5 °C
湿度 ステージの湿度 ± 10 %
  • 幅は固定で、プログラムの設定ではありません — 栽培技術資料の多くは平均値だけを示し、 昼夜の幅は書いていないためです。
  • ステージにその値がない、または施設の位置が分からず日の出・日没が求められない場合、 その項目は機能自身の推奨範囲を使います。
  • ハード上下限(Min/Max Temperature、Min/Max Humidity)が最後に適用されます。
  • 推奨範囲を読むところはすべて追従します: VPDを分けた温度・湿度、VPD目標がないときの 中央値、予報補正、換気の温度上限。
  • 実際に使った範囲は機能設定の区画の下に ガイド範囲 として表示されます。

コーディネーターには自分自身の終了日オプションはありません。 栽培を続けるかどうかは区画が決めます。Functionに日付を持たせると、新しい作物を 植えたあともその日付のせいで施設が止まったままになることがあるためです。

制御の基準 — VPD直接 / 温度優先~

既定はVPD直接です — 上のとおりVPDの目標を追い、温度・湿度はガイドです。高度な設定の 制御の基準を温度優先に変えると、コーディネーターごとに次のように動きます。

  • 温度が第一の目標です。 ステージの昼間・夜間温度(施設位置の日の出・日の入り基準)を 追います。
  • 湿度の目標はVPDの目標から作ります — その温度でVPDの目標になる湿度です(例: 24°Cで VPD 1.0なら約66%)。誘導範囲の外なら範囲の端で切ります。
  • VPDは境界です。 目標より0.4 kPa低くなるか0.8 kPa高くなったときだけ戻す方向に押します。
  • ステージに温度がなければ、温度は追わず、誘導範囲内に保つだけです。

VPDを直接追うと、同じ許容誤差が8°Cでは湿度±9%、35°Cでは±1.8%になり、低温では届かない 湿度を求めることもあります。温度優先にはこの差がありません。

どちらを選んでも、もう一方の「その基準だったら送ったはずの指令」を毎サイクル計算して記録します (制御には使いません)。同じ施設で2つの方式を比べるためです。

スコープ内に区画が2つ以上あるとき~

間作・混作は普通に起こることなので、コーディネーターは推測しません。施設・ベイの スコープ内に区画が2つ以上あるときは、そのことを伝えてこれに従うボタンを 出します。同じ選択は、詳細設定の基準区画にも保存されます。指定した区画が 終了したりスコープの外に出たりしても、値は消えません — 画面が「指定した区画は もうここにありません」と伝え、選択ルールをあらためて適用します。

区画に記録されるプログラムのバージョンは、バージョン番号を固定するだけで 内容までは固定しません。プログラムを編集すると、進行中の区画の解釈も 変わります。


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(設定値)~

上で説明した目標を、このサイクルの設定値へと解決します。Methodに従う目標項目は、 区画の経過週数と施設のローカルタイムゾーンで評価されます。

L2 — SituationReport(評価)~

現在の偏差、制限要因、傾向を評価します。

室内の温度・湿度・VPDは、まずノイズを除きます。 センサーの表示刻み(温度0.1°C、 湿度1%)が上下するだけで窓が動かないようにするためです。指数平滑を使いますが、元の値が 温度0.5°C・湿度3%以上離れたら実際の変化とみなし、すぐに元の値に追従します。VPDを 温度・湿度から計算する施設では、除去後の温度・湿度で計算し直します。安全ゲートと ハード上下限は除去前の元の値で判定します — 保護をフィルターの分だけ遅らせません。

評価項目 説明
偏差 現在値 - 目標値
制限要因 光・CO₂・温度・水分(VPD)のうち、どれが光合成を妨げているか
傾向 値が目標の方向へ動いているか

VPD目標があり、VPDを測定できるとき、温度と湿度は制約に格下げされます — VPDを 分解して得られる範囲であり、越えてはいけない線です。この関数はサーモスタットでは ありません。

L3 — Coordinator(アクチュエーター指令)~

装置ごとに位置形PIで0〜100%の指令を出します。教科書どおりのPIとは3つの点で 異なります。

  • 積分は累積誤差ではなく、その装置の「記憶された平衡開度(%)」で、常に0〜100に 収まります。偏差が小さいときは積分がそのまま残り、直前の開度を保ちます。
  • 1つの装置が複数の軸に効くときは、偏差を1つにまとめます。 たとえば開口部は 温度・湿度・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効果は冷却と乾いた 外気が競り合った合計なので、両者が近いと外気湿度の数%で向きがサイクルごとに変わります。 新しい向きが10分以上(かつ2サイクル以上)続いたときだけ従い、それまではその場に留めます。 室温が誘導上限に届いたときに加わる温度項も、超えた分に応じて徐々に重みを得ます — 線の付近を上下しても換気窓が階段状に上下しないようにします。
  • 側窓は風を受ける側を広く開けます。 風を背にした側窓は指令の最小20%まで絞ります。 風速0.5 m/s未満では適用せず、3 m/sまで風圧(風速²)に比例して徐々に強まります — 弱く不安定な風向で側窓がサイクルごとに絞られたり戻ったりしないようにします。
  • 目標を越えたまま固まりません。 デッドゾーンの中でも「減らすべき」側の偏差が3サイクル 続くと、その装置は指令をサイクルごとに60%に縮めながら退きます。保温カーテン・遮光 スクリーンも同じです — 効果が開度に比例するので、減らす側がそのまま効果を減らす側です。
  • 積分の暴走防止。 100%で頭打ちになると、はみ出した分を積分から戻し、0%で 頭打ちになるとそのサイクルの積分を止めます。一方の端に張り付いたままなら、積分を 実際の開度のほうへ寄せていきます。
  • 変化速度の制限。 1サイクルあたり最大20ポイントまで動きます。Actionに全ストローク 時間があり、その装置が実際に動ける量のほうが小さいときはその値を使います。カーテン・ 遮光スクリーンは一動作で開閉するため対象外です。5%未満の指令は0として送ります。

VPDモードの温度上限。 VPDを直接制御しているとき、温度は制御目標ではありません。 そのままでは暑くなっても換気窓を開ける力が働きません。そこで、次の判断時点の予想温度 (現在値 + 上昇率 × 周期)が推奨上限の1°C手前に届くと、換気装置に温度の項を加え、 超えた分だけ重みを大きくします。一度入った項は、予想温度がその線よりさらに0.5°C 下がるまで切れません — 線の上に留まる温度のせいで換気窓が「冷やす」と「休む」の間を 行き来しないようにするためです。最高温度のハード上限に届くと冷房機にもかけ、冷やす 方向と逆らう他の軸の項を外します。それでも偏差に比例するPIのままで、何も100%に 強制しません — 外気のほうが暑ければ、換気窓はむしろ閉じる方向へ動きます。


アクチュエーターのドメイン~

負荷の分担はドメインの中で起こり、ドメインの区切りは装置の見た目が似ているか ではなく、エネルギーの行き先が同じかで決まります。設定画面もおおむね同じ 区切りですが、補光照明だけは例外で、スクリーンと同じ「光と遮光」で設定します。

ドメイン デバイス 性質
換気 開口部・排気ファン・吸気ファン 室内を室外の方向へしか押し出せない
冷暖房・加湿 ヒーター、冷房機、フォガー 外気とは無関係に直接加える/取り除く
スクリーン 遮光スクリーン、保温カーテン 出入りする放射を遮る
補助 CO₂インジェクター、補光照明、循環ファン それぞれが自分の軸を持ち、負荷を分け合う相手がない。ただし開口部が開いていると入れたCO₂がすぐ抜けるため、開口部の平均開度に応じて注入効果を低く見積もります(平均30%で0)。効果が小さくなりすぎるとインジェクターは休みます

ドメイン同士は互いの仕事を見ないため、ドメイン間の調整は効果の暗黙の積み上げでは なく、明示的なインターロック(換気参照)で行います。

屋根換気口と側面換気口は挙動が違う~

どちらもopeningアクチュエーターですが、施設図面は棟(屋根)窓と側窓を区別し、 効果モデルもそれを使います。

形状 室内が室外より暖かいとき 室外が室内より暖かいとき
屋根(棟) 浮力が助ける — 同じ面積でもより多くの熱を逃がす 逆転する — 暖かい外気は下りてきにくい
側面 基準ケース 直接流入し、そのまま加温になる

図面に形状の指定がない場合は、天窓・側窓を区別せず同じモデルで動作します(補正なし)。


Function設定~

AoT UIでFunction → 統合環境制御に移動します。アクチュエーター自体は別途 登録するか(アクチュエーターの登録参照)、連携施設から自動的に 検出されます。

設定画面の読み方~

以下の表を読む前に知っておくとよいことが5つあります。

画面の最上部にステータスヘッダーがあります。 施設選択欄の下に、制御が今 何をしているかが表示されます — 追従している軸ごとの現在値と目標(VPD・温度・湿度・ CO₂・光量)、デバイスの種類ごとの状態(開口部、冷暖房、加湿、遮光…)、最後に判断して からどれくらい経ったか。次の行は、この施設が軸ごとに実際に何を調整できるかを伝えます — 両方向、上げるだけ、下げるだけ、見るだけ、センサーなし。その下の2行の要約は、 追従している区画・ステージと、現在適用中の目標を伝えます。動かせない状態はそれぞれ 別の文で示されます — この施設に連携された環境制御がない、制御がオフ(代わりにこの 施設を動かしている制御があればその名前まで)、このコーディネーター自身の基準時間を 超えて判断がない、まだ1サイクルも回っていない。施設を選ぶ前はヘッダーは空のままです — 選択欄がすぐ上にあるからです。区画が2週間以内に終了する場合は、その旨の1行が 追加されます。

設定はオプションの種類ではなく、4つの層に並んでいます。

層 内容 表示
接続 施設、ベイ 常に表示
取り決め 温度/湿度の範囲、CO₂許容誤差 常に表示
戦略 換気・冷暖房の連携、夜間閉鎖、噴霧の保護 常に表示(トグルまたは段階スケール)
チューニング それ以外すべて [詳細]の中、および折りたたまれた詳細設定グループの中

中心となる設定は、その詳細を引き連れて動きます。 誰も答えられない数値 (「緊急判定の倍率は3.0にすべきか4.0にすべきか?」)を尋ねる代わりに、答えられる 質問をして複数の値を一度に動かします — ロボット掃除機の静音/標準/強のような やり方です。そうした操作は3つあります: 制御の性格、換気・冷暖房の連携、噴霧の 頻度です。段階の名前そのものは保存されません — 保存されるのは実際の値だけで、 今どの段階かはその値から逆算されます。どの段階とも一致しない場合はカスタムと 表示されます。

範囲はハンドルが2つの帯として尋ねられます。 温度と湿度には質問が1つだけ あります — どの範囲で育てるか。ハンドルをドラッグすると、越えてはいけない線が固定の 余裕(±5°C、±5%RH)でいっしょに動きます。ドラッグしなければ、ハード上下限は出荷時の値 (5〜35°C、30〜90%)のままです。帯ではハード上下限を推奨範囲より狭くできないため、 「12~32°Cで育てるが30°Cは絶対に超えない」という表現はできません — この組み合わせが、 ヒーターと冷房機を互いに逆らわせる設定です。[詳細]で数値を直接入力してそうなった 場合、保存したその場で知らせます — どの軸か、2つの範囲は何か、実際にはどの範囲の 内側でしか目標を立てないかまで。その軸の4つの値のいずれかを今回いっしょに保存した ときに表示されます。そのうえでコーディネーターは推奨範囲をハード上下限の内側に 狭めて使い、そのことをログに残します。

[詳細]スイッチ1つで、すべての数値欄が開きます。 段階スケールごとにその 数値入力欄が併記され、詳細専用の行がすべて現れ、折りたたまれたグループも一度に 展開されます。このスイッチはブラウザ内だけのもので、保存される設定の一部ではない ため、同じFunctionを2人が別の見え方で見ることはありません。親トグルがオフの 設定は無効化されるのではなく非表示になります。 そのため保存済みの値は そのまま送信され続け、トグルをオフ/オンしても消えません。

一部の設定は特定の条件下でのみ読まれます — カスタム駆動周期はプロファイルが カスタムのときだけ、夜間の時刻欄は夜間を固定時刻で判定しているときだけ 使われます。入力されているのに使われていない値がある場合、画面はそれを 知らせます。そうしないと、黙って何も起きないだけになってしまうからです。

コマンド~

コマンド 効果
アクチュエーターを再読み込み Actionsテーブルとこのファンクション自身の設定を再読み込みし、アクチュエータープロファイルを再構築します — 再起動は不要です。
今すぐ実行 現在のセンサー値を使用して、協調サイクルを即座に1回実行します。緊急停止の保留が残っている間は無視され、残り秒数を応答で知らせます。
緊急停止 すべてのアクチュエーターを安全時デフォルト位置に設定し、60秒間制御を一時停止します。

上の2つのコマンドのあとは、次のサイクルを1回だけ緊急として扱います — 換気窓が 駆動プロファイルの間隔を待たずに動くことがあります。

施設設定~

項目 既定値 説明
連携施設 (なし) このコーディネーターが担当する施設。アクチュエーターとセンサーはここから取得します — 外皮、側面/屋根の換気口、カーテン、ファン、屋内外センサー。方位・面積・熱貫流率などのGISメタデータが各アクチュエータープロファイルに付与され、風向と施設の形状を計算に反映できます。これを設定しないと、残りの設定には対象がありません。
ベイ範囲(任意) (空) このコーディネーターを1つのベイに限定します。そのベイの中のセンサー・アクチュエーターだけが使われ — どのベイにも属さない装置は除外され、施設全体を担当するコーディネーターの担当として残ります — 施設の容積・外皮・換気面積も、全ベイの幅の合計に対するそのベイの割合に応じて縮小されます(幅が分からないときは警告を残してベイの数で割ります)。空欄なら施設全体が対象です。複数のベイを独立して制御したい場合は、ベイごとにコーディネーターを作成します。空欄のままのコーディネーターは、同じ施設でベイを指定した別のコーディネーターがすでに担当しているベイを避けます — 1つの装置が2か所から指令を受けないようにするためです。連携施設のベイ一覧から選ぶドロップダウンです — 施設にもう存在しない保存済みの値は、黙って消されるのではなく印を付けて残されます。存在しないベイを指している間、このコーディネーターは施設全体に広げるのではなくどの装置も担当しません。
自動制御の対象デバイス (除外なし) 施設設定のすぐ下にある折りたたみの枠が、連携施設のアクチュエーターをすべてトグル付きで表示します。1つをオフにすると、その装置は自動制御から完全に外れます — 指令も出ず、安全ゲートもその装置を強制しません。修理中や手動で押さえている装置に必要な状態です。除外リストなので、あとから施設に追加した装置は最初から制御されます。オフにした装置がのちに施設から消えても、オフの状態はそのまま残ります。一覧を読み取れない場合は枠がそのことを伝え、保存済みの設定は空の値で上書きせずそのまま保ちます。

稼働時間~

トグルをオンにするまでは、それ以外の項目は表示されません。これは時間帯別の 制御ではなくスイッチです。時間帯の外では、目標追従(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。
制御の性格 標準 目標をどれだけ強く追うか。1つの段階を選ぶと、サイクル周期・換気窓の駆動プロファイル・VPD許容誤差・2つの緊急しきい値がまとめて動きます。新規に追加したFunctionの出荷時の値は標準の段階そのもので、そのうちどれかをどの段階にもない値に手で変えるとカスタムと表示され、[詳細]を見るよう促す一行が付きます。

[詳細]を開くと、各範囲帯の裏にある4つの数値(推奨最小/最大温度、 最小/最大温度、および湿度の対応する値)が表示され、制御の性格はそのメンバーを 表示します。

メンバー ゆったり 標準 敏感に
周期(秒) 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

同じ場所にさらに2つのメンバーがありますが、これらは段階では設定されません — 同じ軸の上での微調整だからです。カスタム駆動周期(秒) — プロファイルが カスタムのときだけ使われます — と、緊急時の最小間隔(秒)(既定60)で、 緊急時であっても2回の換気窓指令の間に空ける最小の間隔です。

駆動プロファイルが左右するのは、側面/屋根の換気窓が動くことを許す頻度だけです。 センシングと計算は毎サイクル周期で常に実行され、カーテンや遮光スクリーンは 影響を受けません(一動作で開閉するため)。安全ゲートの強制指令(降雨・強風時の閉鎖など)は この設定に関係なくその装置にだけ即座に送られ、強制を受けていない他の換気窓はこの 間隔を守ります。この間隔をまるごと飛ばす緊急は、室内温度が急変したときと、偏差が緊急 判定しきい値を超えたうえでなお広がり続けているときだけです — 目標から離れたまま 留まっているだけでは緊急ではありません。

換気~

項目 既定値 説明
換気と冷暖房の連携 高性能 換気と冷暖房が互いに邪魔しないようにします。3段階あり、下で説明します。
夜間は閉じておく オフ 夜間は換気窓を閉じ、暖房・冷房・除湿に負荷を任せます。閉じるのは開口部だけで、暖房・冷房・除湿はそのまま動き続けます。
強風しきい値(m/s) 12 この風速を超えると、開口部を強制的に閉じます。[詳細]

換気と冷暖房の連携は、3つのトグルを一度に動かします。

段階 換気で助けられないときは開口部を閉じる 換気で目標に届くときは冷暖房を休ませる 冷暖房が動いている間は開口部を閉じたままにする
高性能(既定) オン オフ オフ
標準 オン オン オフ
省エネ オン オン オン
  • 換気で目標に届かないときは開口部を閉じる — 換気は室内を室外の方向にしか 引っ張れません。目標が外気の反対側にあるとき、開口部を開けば開くほど目標から 遠ざかります。典型例は夜間の除湿で、外気が室内より湿っている場合です。これを オンにすると、開口部と排気・吸気ファンは、一晩中中途半端に開けておくのでは なく、閉じたままパーキングされます。
  • 換気で目標に届くときは冷暖房を休ませる — 外気がすでに目標を超えている とき、換気だけで到達でき、そこで冷暖房を一緒に動かすのは外気がタダでやって くれることに料金を払うようなものです。3つの条件がすべて成り立つ必要があります — 外気の値が許容誤差を超えて目標を上回っている、制御対象の変数のすべてが そうなっている、そして開口部にまだ余裕がある(直近サイクルの最大開度が90% 未満)。外気が目標までの一部しか埋められないときは、冷暖房はその分を差し引いた 残りの偏差だけ働きます。15分経っても目標に届かない場合は、すべてが暖房・ 冷房へ戻されます — 予測が外れたということです。降雨・風速の値が途絶えて開口部を それ以上開けられない間は、この判定そのものがオフになります — それ以上開けられない 窓の助けを当てにして冷暖房が引き下がってはいけないからです。
  • 冷暖房が動いている間は開口部を閉じたままにする — 稼働中の機器に逆らって 換気すると、その熱や冷気をそのまま外へ捨てることになります。外気が目標に 近づくのを助けてくれる季節であっても、この設定はその助けも一緒に捨てて しまいます。

稼働中の機器を検知するには根拠が必要で、その情報源は2つしかありません — このコーディネーター自身がその機器に指令を出しているか、稼働すると値が上がる 測定値を信号として指定しているかです。室内温度は意図的に使いません。 日射の強い 昼間は冷房機がなくても室内が室外より涼しくなることがあり、「室内が室外より涼しければ 冷房が動いている」という判定は、余裕を持たせてもしばしば外れます。

項目(インターロックがオンのとき表示) 既定値 説明
冷暖房の稼働検知信号 (なし) このコーディネーター自身が切り替えない機器にのみ必要です。稼働すると上がる測定値を選んでください — スマートプラグのワット数、クランプメーターの電流、補助接点のオン/オフなど。このコーディネーターが直接指令する機器なら空欄のままにしてください。
稼働判定のしきい値 0.5 この値以上で、信号は稼働中とみなされます。オン/オフ接点なら0.5のままにしてください。ワット数や電流であれば、その機器の待機電力より上に設定してください。

信号自身に鮮度の上限がない場合、その信号自身の測定周期(×2、下限300秒)で 判定されます。期限切れの信号は稼働していないとみなされ、その旨が記録されます。

夜間閉鎖があるのは、夜になると湿度が上がり結露するためです — 夕方には 役に立っていた開口部が、朝には作物を濡らしたままにしてしまうことがあります。 そのサブ設定は、トグルがオンのときだけ現れます。

閉じておくほうがかえって危険になると、自分で解除します。温度・湿度のハード上下限を 超えたとき、そして結露が迫っていて、換気がそれを和らげるときです。結露が迫るとは 室内温度と露点の差が2°C未満であること、和らげるとは外気を少し混ぜたときにその差が 広がることです。冷たく湿った外気は室内を冷やしてかえって結露を招くことがあるため、 外が乾いているというだけでは開けません。解除後は、差が3°Cまで回復するか換気が役に 立たなくなったときに再び閉じます。外気の値が分からなければ解除しません。

項目(夜間は閉じておくがオンのとき表示) 既定値 説明
夜間の基準 日没~日の出 夜を日没から日の出までとするか、固定時刻で判定するか。
日没の何分前に閉じるか(分) 0 日没のこの分数だけ前から閉じ始めます。負の値は無視されます — 日没後の遅延を取り除くのがこのオプションの目的だからです。
夜間の開始/終了(HH:MM) 18:00 / 06:00 夜間を固定時刻で判定する場合にのみ使われます。

3つの保証が成り立ちます — 安全ゲートが優先します(真夏の夜の熱でも換気窓は 開きます)、ハードな温度/湿度の上下限がパーキングを解除します、そして太陽時刻を 計算できる座標がない場合は何もパーキングされません。これとは別に、夜間閉鎖に 限らない4つ目の規則があります — 外気の値そのものが分からないとき(キャッシュが 空で、外気=室内と仮定した合成値しかないとき)は、そもそも通気口を閉じず、今の 位置をそのまま保持します。このサイクルで他のどのルールがすでに下した閉鎖判定も、 この保持が上書きします(ただし降雨・強風などの非常用安全ゲートはこの保持よりも優先され、閉じることがあります)。作り物の外気=室内の値を根拠に閉じてしまうと、気象データ 源が止まった際に真夏の日中でも通気口が閉じたままになりかねないためです。時刻は 施設のローカル タイムゾーンで読み取られ、サーバーのものではありません。施設のポップアップでは、 このオプションでパーキングされたデバイスは夜間のため閉じ、冷暖房で管理して いますと表示され、このデバイスが今できることは何もありませんとは区別されます。

冷暖房・加湿~

項目 既定値 説明
加湿にミニスプリンクラーを使う オン 湿式の噴霧器を加湿にも使います。同じノズルをかん水にも使っている場合はオフにしてください — かん水向けに口径を決めたスプリンクラーは、短い一噴きでも葉に水膜を残します。オフにすると、その噴霧器は自動環境制御から丸ごと外れます — 命令をいっさい送らないので、別のかん水制御がそのまま使えます。
日焼け・夜間保護を有効化 オフ 強い光の中での湿式噴霧を遮断し(水滴が太陽光をレンズのように集めて葉を焦がすことがあります)、任意で日没前も遮断します。噴霧の頻度設定とは独立しています。
噴霧の頻度 ひんぱんに 噴霧をどれくらいの頻度で作動させるか — 1回の作動時間と、次の作動までの間隔。

噴霧バルブはほとんどの場合オン/オフしかできないため、流量を絞る手段はありません — 調整できるのは、1回の作動がどれだけ続くかと、次までどれだけ待つかだけです。 この段階スケールが設定するのはそれです。

段階 1回の噴霧最大時間(秒) 強制乾燥間隔(秒)
まれに 5 1200
ふつう 10 900
ひんぱんに 20 600
かなりひんぱんに 30 450

日焼け保護は頻度とは別の判断です — 2つを分けておくことで、 「頻繁に噴霧しつつ強い日差しでは遮断する」という組み合わせを指定できます。

項目(保護がオンのとき表示) 既定値 説明
日差しの強さによる噴霧調節 150–250 W/m² ハンドルが2つの帯です。下の値より暗ければ噴霧は自由に作動し、上の値より明るければ停止し、その間では直線的に弱まります。この間隔があることで、雲が通過するたびに噴霧が入切を繰り返すのを防ぎます。葉をぬらす噴霧にのみ適用されます — 霧タイプの噴霧は強い日差しの中でも作動します。推定された室内光量が基準に使われるため、遮光スクリーンを閉じると遮断が緩和されます。光量の測定がまったくない場合は、太陽高度から求めた晴天時日射の概算が代わりに使われるので、光センサーのない施設でも保護が働きます。噴霧原水が既定値(地下水)の場合、実際には100–150 W/m²に下げて使います。
日没前の噴霧を許可 オン オフにすると、夜通し葉を乾いたままにします。葉が濡れている時間が長いほど、灰色かび病やべと病のリスクが高まります。
日没前の噴霧停止時間(分) 120 日没の何分前に噴霧を止めるか。遮断は翌朝の日の出まで続きます。設置場所の座標が分からない場合は日没を求められないため、夜間の遮断はかかりません。
噴霧原水 地下水(未処理) 未処理の地下水は硬度が高く冷たいことが多く、乾く水滴がミネラルの跡を残したり、日の当たる葉を冷やしたりします。これが選ばれている間(既定値)は、遮断/解除のしきい値が自動的に下がります(最大でも150/100 W/m²まで)。

保護の有無にかかわらず、湿式噴霧器は連続変調ではなくパルス投与されます — 連続的な 変調では葉が乾く暇がないためです。1回の時間と間隔は噴霧の頻度スケールの値を使い (出荷時のひんぱんに: 1回最大20秒、乾燥間隔600秒)、値が空のときだけ30秒/180秒で 動きます。

湿式噴霧は最高湿度のハード上限より手前でも遮断されます。湿度がこのサイクルの湿度の 基準(VPD目標から分けた湿度、推奨範囲内)+ 5% を超えると遮断し、湿度が分からない ときも遮断します。すでに湿った空気の中で葉をさらに濡らさないためです。霧タイプ (高圧ミスト)は対象外です。

光と遮光~

項目 既定値 説明
遮光・補光の基準 0–800 W/m² とどまるべき範囲ではなく、2本の基準線です。帯より暗ければ: 補光灯が点き、遮光スクリーンが開きます。明るければ: 遮光スクリーンが閉じます。帯の中では何も起きません。基準は作物が実際に受ける光量です — 屋外日射に被覆材と遮光スクリーンの透過率を反映した値です。

どちらの端もオフにでき、オフの意味は両端で異なります — 下側のハンドルを0にすると 補光しない、上側のハンドルをオフにすると遮光しないです。施設に遮光スクリーンや 補光照明が登録されていない場合、画面は何もしないハンドルを出す代わりにその旨を 伝えます。

遮光側の基準線は、閉じたスクリーンの下の光量ではなくスクリーンを開けたらどれだけ 明るいかで判定します — そうしないと、閉じた瞬間に暗くなって判定が解け、次のサイクルで また開いてしまいます。屋外の光量が分からない場合(室内センサーのみの設置)は、現在の 値で判定します。遮光が効いている間は、補光と開放を同時に強制しません。2本の基準線を 同時に満たせないとき — スクリーンを閉じると補光の基準線より暗くなる設定 — は遮光を 優先し、その矛盾をログに一度だけ書き出して、人が直せるようにします。

裏にある実際の値は最小光量しきい値(補光)(既定0)と最大光量しきい値 (既定800)で、どちらも[詳細]の下に表示されます。

関連する3つの値はこの画面にはありません。

  • 遮光生地の透過率は施設側の設定で、施設エディターの遮光カーテンの下に あります。室内の光センサーがないときにのみ使われ、そのときは屋外日射と 開度から室内の光量を推定します。未設定または範囲外の値は0.50にフォール バックし、施設が遮光カーテンを持たないと宣言している場合は1.0が使われます。 1画面だけ生地が異なる場合は、そのActionで個別に上書きできます。
  • 被覆材の透過率は外皮の資材から自動的に決まります(ガラス0.85・二重フィルム0.78・ 不織布0.50など)。遮光スクリーンがなくても屋根は常に光を減らすため、 室内光量の推定にあわせて掛けています。そのため光量の上下限は室内基準です。同じ250でも、 ガラス温室と不織布ハウスでは作物が受ける光が2倍近く違います。
  • 光飽和点は遮光しきい値ではなく、プログラムにある作物のK_Lから導かれます。 この2つを1つの値にすると、遮光しきい値を下げた途端に光合成モデルが「もう十分な 光がある」と判断し、強い日射の下でも光制限を検出できなくなります。K_Lがない場合は、 システムの既定値600 W/m²が使われます。

詳細設定~

このグループは既定で折りたたまれており、Functionを試験するエンジニア向けで、 生産者向けではありません。

項目 既定値 説明
センサーデータの最大有効時間(秒) 0 これより古いセンサー値を拒否します。センサー(Input)に独自の最大有効時間が設定されていれば、その値がこのオプションより優先されます。0は「未設定」を意味し、「無制限」ではありません — その場合、各センサーは自身の更新周期 × 2(最低300秒)で判定されます。ソース自身の周期より短い固定値は絶対に満たせません — 300秒ごとに発信する屋外気象台を120秒の上限で判定すると、有効な値が1つも残りません。
制御の基準 VPD VPD: VPDの目標を直接追います。温度優先: ステージの温度を追い、VPDの目標を湿度の目標に変えます(制御の基準)。
光合成指向制御を有効化 オフ 毎サイクル、Big-Leafモデルが現在の制限要因(光・CO₂・温度・VPD)を特定し、その変数の優先度を上げます。光センサーが必要で、作物定数は区画のプログラムから取得します。
基準区画(任意) (空) スコープ内で複数の区画が育っているとき、このコーディネーターがどれに従うか。1つしかないときは空欄のままにしてください。
温度ウェイト(0–1) 0.6 VPD目標を温度・湿度の補助目標に分けるとき、温度側に置く割合(残りは湿度)。VPDを測定できるときに制御するのはVPDそのもので、この値は補助目標 — 越えてはいけない線と湿式噴霧の遮断の基準 — の形だけを決めます。
VPD優先度 1.2 1つの装置が複数の軸に効くとき、偏差をまとめる重み — 大きいほどその軸の偏差が指令に強く反映されます。装置を決める順序は優先度ではなくコスト指数です(L3)。
CO₂優先度 0.8 CO₂についての同じ重みで、CO₂の補充は副次的なため、VPDより低い値です。
DLI / GDDトラッカーを有効化 オフ 日積算光量と有効積算温度を追跡し、施設ローカルの深夜0時にロールオーバーします。光量はセンサー単位に応じてPPFDに変換されます。目標は区画のプログラムから取得し、DLIには光センサーが必要です。1日の終わりに、目標との差は不足・超過いずれも補償提案として記録します — 1日あたりどれだけを3日に分けて取り戻すか、今ある装置で可能かまで記します。

効果キャリブレーション~

項目 既定値 説明
効果エンジン レガシー レガシー: 内蔵のK_定数(既定、安全)。シャドウ: グレーボックスモデルを記録目的だけで並行実行します — 制御は変わりません。MPCが制御していたら送ったはずの指令とその予測も記録します。グレーボックス: 物理モデルによる制御。毎サイクル、まずMPC(数ステップ先を見通す最適化)を試し、うまくいかなければ物理モデルのPI、次にレガシーへ戻ります。MPCはこれからの外気を次のように見ます。日射は、太陽の位置から計算した晴天時の日射に今の晴れ具合を掛けて見ます(施設の座標があればどの国でも)。外気の温度・湿度は、気象庁(韓国)の短期予報があり、発表から6時間以内で、施設と同じタイムゾーンのときは、今の実測から予報が示す変化分だけ動かし、そうでなければ今の値のままにします。予報の値そのものではなく変化分を使うのは、予報(広い格子の平均)とこの施設の気象計との差を消すためです。MPCもPIと同じ判定に従います — 夜間閉鎖、外気では目標に届かない換気、冷暖房運転中の開口部ロック、換気優先、温度が求める方向と逆の冷暖房。これらの判定がかかった装置は、MPCが開けたり入れたりしません。MPCは窓とファンを風量で扱います(窓の面積、ファンの定格風量)。同じ換気量なら、室内のほうが暑いときは天窓から、外のほうが暑いときは側窓から開けます。ファンの風量が窓より大きければファンで換気し、窓は閉じておきます(窓が開くと壁のファンは空気を抜けません)。遮光カーテンと保温カーテンはMPCが動かさず、今の位置を予測に入れます — 保温カーテンを閉じると外皮からの熱損失が減ることも計算します。推奨の流れ: まずシャドウ、次にグレーボックス。集めたデータと成績は、アプリやデーモンを再起動しても引き継がれます(制御周期を変えたときや、1週間を超えて止まっていたときは最初から集め直します)。物理モデルはシャドウで集めたデータで学習し、10サイクル先の予測が「今の値のまま」という単純な予測より良いときだけ*グレーボックス制御が有効になります。この比較は気象区分(暑い昼・穏やかな昼・日の出/日の入り・夜など)ごとに行い、標本が十分に集まったすべての区分で上回る必要があり、そうした区分が2つ以上必要です — それまではレガシーで動きます。モデルの物理式が変わる更新のあとは、この学習と検証を新しい式でやり直します。シャドウまたはグレーボックスを選んでいる間は、この並行計算が動き続けないとその学習は進みません — 3サイクル連続で失敗するとログに記録し、その後は60サイクルごとにもう一度記録します。止まっているのに気づかないままにならないようにするためです。試験中以外は変更しないでください。
RLSキャリブレーションを有効化 オフ 装置ごとに、内蔵モデルの予測と比べて実際に各値(温度・湿度・CO₂)をどれだけ強く動かすかを倍率として学習します(1.0 = モデルどおり)。モデルの条件計算(室内外の差・風速・面積)はそのままで、大きさだけを補正します。その装置だけ指令が変わったサイクルからのみ学習します — 複数が同時に動くと、それぞれの寄与を分けられないためです。数日分のデータが必要で、それまではモデルをそのまま使います。
アクティブプロービングを有効化 オフ アクチュエーターを1つ選んで定期的に±10%摂動させ、キャリブレーションの識別性を高めます。負荷が低く、安全ゲートが作動していないときのみ実行され、循環ファンは対象に選びません。RLSキャリブレーションが必要です。
プロービング間隔(秒) 3600 プロービングイベント間の最小間隔。段階: 頻繁に(1800) / 標準(3600) / まれに(10800)。

予報フィードフォワード~

項目 既定値 説明
予報フィードフォワードを有効化 オフ 短期天気予報を使って、悪天候の到来前に温度/湿度の設定値を先行的に調整します。予報が現在の室内温度より3 °C以上高ければ温度目標を1.5 °C下げ、3 °C以上低ければ1.0 °C上げ、予報湿度が85 %RHを超えれば湿度目標を5 %RH下げます。調整後の目標も、設定した範囲の内側にとどまります。予報の雨・強風は判断の要約に表示されますが、それだけで換気窓を閉じることはありません — 窓を閉じるのは実測の風速・降雨です。
予報先読み時間(時間) 3 どれだけ先まで確認するか。段階: 短め(1) / 標準(3) / 長め(6)。先読みが長いほど早く警告できますが、過剰補正になる場合があります。時間は今から数えます — 予報ファイルの更新が遅れても、すでに過ぎた時間帯の予報は見ず、これからの時間がファイルになければ補正しません。施設に独自の予報ソースが連携されている場合は、そのソースの予報をそのまま使い、この値は使いません。

デバッグログはもう独立したオプションではありません。 これはフレームワーク 自身のデバッグスイッチと重複しており、それが守っていたもののほとんどはDEBUG レベルで書き出されていたため、単独では何も出力していませんでした。Functionの 詳細設定にある1つのスイッチが、今では両方を兼ねています。重大なイベント — 安全ゲート、送信失敗、実行状態のエラー — は、この設定に関係なく常に記録 されます。


アクチュエーターの登録~

連携施設の図面に描かれたアクチュエーターは自動的に検出されます。それ以外は このFunctionに環境制御アクションを登録します — デバイス1台につき1回、この アクションを追加してください。手動登録は、施設から検出されたリストとマージ されます。

アクションのオプション 既定値 説明
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種類 アダプター 変換
ペアアクチュエーターモジュール ペア 正転/逆転ペア変換(モジュール内部で処理)
vol / volume(容積式ポンプ) 容積式 vol_ml = flow_lpm × on_sec / 60 × 1000
pwm PWM duty = pct
on_offリレー 時間比例 on_sec = cycle_sec × pct/100。5%未満はOFF
それ以外 値 0~100%をそのまま渡す(DAC、ステッパーなど)
指令(%) on/offリレー(60秒周期) PWM 容積式ポンプ(1.5 L/min)
0 OFF duty 0 OFF
30 18秒間ON duty 30 450 mL/周期
100 60秒間ON(連続) duty 100 1,500 mL/周期

湿式噴霧器は、さらにパルス投与でラップされます — 1回の噴霧は最大作動時間で 打ち切られ、乾燥間隔が経過するまでは一切噴霧しません。

かんがいの流量は施設図面から集計されます — あるレイヤー下のすべてのエミッターが そのアクチュエーターのflow_lpmに合算され、容積式アダプターがそれをそのまま 使います。フォールバックの順序は、アクチュエーターごとの流量、次に施設全体の 合計、それもなければ1.0 L/minです。

噴霧器の効果モデルは別の流量を使います — そのアクチュエーターのドリップ以外の 噴霧ノズルの流量だけを見て、フォールバックしません。投与量には根へ向かうドリップが 含まれますが、空気中へ蒸発する量には含まれないからです。そのため図面にノズル情報が ない噴霧器は、施設全体の合計を引き継ぐのではなく、冷却・加湿の効果がまったくない ものとして計算されます。

測定のない軸、装置のない軸~

施設ごとに備えている装置は違います。測定はできても動かす手段がない軸、逆に動かせても 測定する手段がない軸は、どちらも普通の構成です。コーディネーターはその組み合わせを 見て、自分で動き方を変えます。

状況 コーディネーターがすること
測定はできるが、その軸を動かす装置がない その値は参考値です。制御対象から外れ(外気の値があれば、その軸の目標を外気の値に置き換えます)、光合成の判定や他の軸の計算にはそのまま使われます。目標から外れたままなら、施設のポップアップが動かせる装置がありませんと伝えます。
片方向しかない(ヒーターはあるが冷房機はない) 正常です。その方向の要求が来れば働き、逆方向なら0%で休みます。
装置はあるが、その軸を測定できない その装置が動かす別の軸を測定できれば、その軸で制御を続けます(たとえば湿度は測れないが温度は測れる開口部)。動かす軸を1つも測定できないときだけ、その場にとどまります。偏差が分からないのに動かすのは根拠なく設備を使うことであり、閉じることも開けることも1つの判断だからです。
室内の温度・湿度を測定できない その軸はまるごと制御から外れます。ない値を0と作り出すことはしません — そうすると「室内0°C」と読まれ、暖房が全開になります。葉をぬらす噴霧は、湿度が分からない間は遮断されます。

関数設定のいちばん上にある調整可能の行が、この組み合わせを軸ごとに一語で示します (温度・湿度・VPD・CO₂・光量)。装置の構成と直近のサイクルで測った値からコーディネーターが 計算したもので、語にマウスを重ねると、その軸を動かす装置の名前が表示されます。

表示 意味
両方向 測定でき、上げる装置と下げる装置の両方があります。
上げるのみ / 下げるのみ 測定でき、片方向の装置だけがあります。
見るだけ 測定はできますが、動かす装置がありません(参考値)。
センサーなし その軸を直接動かす装置はありますが、測定できません。

装置もセンサーもない軸は表示しません。開口部がCO₂を少し下げるような、副次的な効果 だけで動く軸も、センサーがなければ表示しません。VPDは温度と湿度の両方の装置を 合わせて見ます — 加湿の噴霧はVPDを下げ、換気は外気が乾いていればVPDを上げます。 この行は今のところ表示専用で、制御は上の表の規則どおりに動きます。

安全ゲートも同じ規則です。 室内の値が途絶えると、ゲートはその事実に名前を付けて 画面とログに残しますが、強制指令は作りません。 すべての装置を安全時デフォルト 位置へ動かすこと(開口部は閉じ、スクリーンは開く)は、根拠がないという理由で 設備を動かすことになるためです。外気の値が途絶えたときと同じ判断であり、制御を まるごと止めることもしません。CO₂や光量のように、まだ測定できる軸は制御を続けます。

降雨・強風のように外気だけで判断できる危険は、そのまま防ぎます。 逆に、高温緊急・ 低温緊急は室内温度が分からないときは判定しません — これらのゲートはすべての装置を 一方向へ動かすため、根拠が確かなときだけ作動するべきだからです。

食い違った組み合わせはヘルスチェックも知らせます:

python3 -m aot.scripts.check_env_coordinator_health

目標はあるのに測定がない場合、目標はあるのに装置がない場合、装置はあるのにその装置が 動かす軸を1つも測定できない場合を設定チェックに報告します。測定だけがあり、目標も 装置もない軸は報告しません — それこそが参考値だからです。

安全時デフォルト位置~

各アクチュエーターには、安全ゲートが作動したとき、緊急停止時、または外部からの force_safe_state()呼び出し時に移動する安全な位置があります。この位置はデバイスの 種類に従います — 保温カーテンと遮光スクリーンは100%でパーキングし、それ以外は 0(オフ)です。施設図面から検出されたアクチュエーターでも、アクションで登録した ものでも同じです。


Method(設定値カーブ)~

Methodは、設定値が時間とともにどう変わるかを定義します。Methodはこの Functionではなく、プログラム側の目標項目に付けられます — カーブが設定された 項目は区画画面でカーブに従うと表示され、数値で上書きできません。

  • Daily — 時刻(HH:MM)ごとの設定値
  • Duration — 開始からの経過時間ごとの設定値
  • Daily Bezier — なめらかな日周カーブ
  • Repeating — 繰り返しパターン

生育週で進行するカーブは、区画の開始日から評価され、施設のローカルタイム ゾーンの深夜0時に読み取られ、区画画面や区画の日誌が使うのと同じ経過週数から 計算されます。

作物ステージスケジュールの例(トマト):

日数 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秒はアクティブなままです (急速なオン/オフの繰り返しを防ぐため)。ゲートが解除されると、ゲートが動かした装置は ゲートが置いた位置から平衡を探し直します。ゲート前の平衡開度へすぐ戻ることは しません — その間に条件が変わっている可能性があるためです。ゲートの強制指令は駆動周期を 待たずに直ちに送られ、ゲートが立っている間は毎サイクル送り直されます。ゲートが強制 しなかった装置は通常の駆動周期をそのまま守ります — 1つの装置にゲートが立っていても、 施設の残りが速くなることはありません。

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秒の保持もかけません。この2つだけが作動しているときは L1~L3が通常どおり実行されます。根拠がないという理由で設備を動かさないという規則で あり、動かすかどうかはコーディネーターが軸ごとに判断します。

降雨・高温・低温のしきい値はコードに固定されています — 強風だけが Functionのオプションとして公開されています。複数のゲートが同時に作動する こともあり(例: 降雨+強風)、その場合は方向にかかわらず開口部は無条件に 閉じます。

ゲートが作動したサイクルも、サイクルであることに変わりありません。 ゲートが サイクルを早期に終わらせると、簡略化されたサマリーが書き込まれ、サイクルには タイムスタンプが付きます — そのため施設ウィジェットは、コーディネーターが 応答不能になったと報告するのではなく、実際に何が起きたかを表示し続けます。この 簡略化されたサマリーにも、そのサイクルで実際に測った環境値はそのまま載ります — ゲートが作動していてもセンサーは測り続けているからです。省かれるのはL1~L3が 作り出したはずの値(目標や偏差など)だけです。デバイスもゲートが強制したものだけで なくすべて一覧に残ります — 触れていないデバイスには0%ではなく、指令自体が 記録されません。

Post-Gate(L3の後、送信前に確認)~

チェック 動作
非有限な指令値(NaN/Inf) アクチュエーターは安全時デフォルト位置にフォールバックします。
範囲外の指令値 [0, 100]にクランプされます。
手動ロック中 ロックされた値で上書きされます。
冷房機とヒーターが同時にON(どちらも5%超) 許可されません。ハード上下限への対応まですべて終わった最後に確認し、指令の出どころが強いほうを残します — 安全ゲート > 手動ロック > 通常の制御。出どころが同じなら、コスト指数が低いほうを残し、もう一方を0に強制します。L3も温度の要求と逆側(暑いときはヒーター、寒いときは冷房機)をあらかじめ休ませるため、このチェックまで来ることはまれです。

緊急停止と安全状態~

起点 説明
Functionコマンド → 緊急停止 UI上のボタン。
Conditional / Trigger → force_safe_state 外部の自動化からの即時発動。
RPC output_off 個別のOutputだけを止めるバイパス経路。

緊急停止のあと、次のサイクルは60秒遅延します。直後にアクチュエーターが 動かないのはこの遅延であり、故障ではありません。


トラブルシューティング~

症状 確認すること
画面に目標が表示されない この施設/ベイで区画が育っているか、その区画にプログラムが付いているか、そのプログラムが確認済みか。これらのいずれかがないと、コーディネーターは自身の推奨範囲だけで動きます — これは正常であり、故障ではありません。
目標はあるのに1つの軸だけ無視される その目標項目に測定値が選ばれていない可能性があります。その場合は参考のみとして扱われます。カーブに従う項目は、区画画面に入力された数値をすべて無視します。
アクチュエーターが動かない Actionが登録されていて、Outputが有効か。Actionや施設を変更したあとはアクチュエーターを再読み込みを使ってください。
on/offリレーがごく短時間だけオンになる 指令がおそらく5%未満で、時間比例アダプターがそこでオフになる範囲です。
ポンプが常に1.0 L/minで計算される 施設のエミッターの流量がゼロでないこと、かんがいレイヤーがそのポンプのOutputを指していることを確認してください。
強風でも開口部が閉じない 強風しきい値と、この施設の屋外風センサーの設定を確認してください。
夜間、開口部が閉じたままになる 夜間は閉じておくがオンのときの想定どおりの動作です — 施設のポップアップに夜間のため閉じと表示されます。ハードな温度/湿度の上下限と安全ゲートは、それでも優先して解除します。
屋外の測定値が「なし」と表示される センサーデータの最大有効時間が、そのソース自身の周期より短い可能性があります。各センサーが自身の周期で判定するよう、0のままにしてください。
冷暖房が両方動いた 送信直前のインターロックがそれを禁止しています(Post-Gate)。推奨範囲がハード上下限より広い設定の場合、保存画面はブロックせず警告だけを出し、コーディネーターは推奨範囲をハード上下限の内側に狭めて使います。
ある設定が無視されているように見える 条件付きの可能性があります — カスタム駆動周期はカスタムプロファイルのときだけ、夜間の時刻欄は夜間を固定時刻で判定しているときだけ適用されます。画面は、入力されているのに使われていない値を知らせます。
すべての装置がその場で止まっている 室内の測定値が消えた可能性があります。温度・湿度を測定できないとその軸は制御から外れ、測定できる軸が1つも残らない装置は何もしません — 閉じも開けもしません。施設のポップアップに今は測定できないためそのままと表示され、ログにも1回記録されます。センサーの接続とセンサーデータの最大有効時間を確認してください。
図面に描いた装置が制御に現れない 制御が扱う種類ではない可能性があります(開口部・遮光スクリーン・保温カーテン・冷暖房・噴霧・CO₂・補光・ファン)。そうした設備は登録から外れ、そのことがログに1回記録されます — 施設エディターで種類を変えれば取り込まれます。
施設を変更しても反映されない アクチュエーターを再読み込みを実行するか、Functionを無効化してから再度有効化してください。
ウォッチドッグが長時間の停止を報告する 稼働時間の時間帯の外にいる、またはアクチュエーターが1つも登録されていない、といった意図的な休止は、故障ではなく休止として報告されます。本当の停止であれば、それでも警告されます。

AI連携~

AoTのAIチャットと、MCPで接続したAIは、次のツールでこのコーディネーターを扱います。 書き込みツールはすべて人の承認を経ます。

ツール すること
get_control_state 読み取り。コーディネーターごとの目標・許容誤差・優先度・安全範囲・稼働時間帯と、直近のサイクルが実際に使った目標・制限要因・安全ゲートの状態・装置ごとの指令とその理由。制御について助言する前に最初に読む値です。
get_cumulative_status 読み取り。DLI・GDDの日別累積と不足分(DLI / GDDトラッカーがオンの場合)。
get_function_detail 読み取り。Functionの設定全体。
modify_function_options 書き込み。このFunctionのオプションを変更し、再読み込みします。
activate_function / deactivate_function 書き込み。Functionをオン/オフします。

目標はこのFunctionではなく、区画のステージ計画にあります。1つの区画の目標だけを 変えるには、区画画面で編集します。AIはプログラムを編集するツール(modify_program)で ステージの目標を変えることもできますが、そのプログラムを使うすべての区画に適用されます。