「直線補間」タグアーカイブ

日長周期、月長周期に対応

LongPeriodSchedule

ITBOXは、今まで、1日、24時間を単位に動作していました。LongPeriodScheduleを使うことで、24時間を超えて、温度プログラムを設定できるようになりました。例えば、20℃一定を30時間、その後、30℃一定を60時間とする周期で温度を制御できました。しかし、アイティプランターの動作は変更できませんでした。また、温度を徐々に変えていここともできませんでした。

そこで、 新機能のLongPeriodControlを開発しました。 LongPeriodScheduleの上位番となりますが、互換性はありません。LongPeriodScheduleでできることは、LongPeriodControlでもできます。

使い方

ここでは、LongPeriodControlの機能や使い方を説明します。

LongPeriodControlのアイコンをクリックすると、LongPeriodControlが起動して、以下のようなメニュー画面になります。

制御項目は、追加して増やすことができます。

開始日と終了日を設定します。これは、長期間栽培の中では、停電などのトラブルで、ITBOXが停止することがあるからです。もし、ITBOXが停止して、再起動すれば、最初からやり直しになって、数カ月分の実験が無駄になってしまうかもしれません。しかし、開始日と終了日を設定しておけば、終了日前に再起動できれば、LongPeriodControlは、続きを実行してくれます。終了日を過ぎれば、最後の設定値のままで動作が継続します。

補間機能

LongPeriodControlは、開始日と終了日の間は、補間を行います。この補間機能により、日長周期、月長周期を作り出せます。

日長周期は、1日24時間内の温度や日射量の変化のことです。これは、cultivationPrgやtempScheduleで設定できます。開始日と終了日の1日の温度や日射量の変化を設定します。丸印が設定点です。設定点が無い時間は、前後の設定点から直線補間を行います。これにより、朝日が登って、周囲が徐々に明るくなり、夕方、徐々に暗くなるといった日射量変化が実現できます。日射量の時間的な変化は、レタスの結球化や開花時期など、植物の状態に影響を与えます。

月長周期は、1ヶ月毎の日射量や温度の変化です。上のグラフの日射量を実現するには、毎月の開始日、終了日を入れてもいいですし、毎年の1月と6月の開始日、終了日を入れても実現できます。

開始日と終了日の間の時間は、開始日設定値と終了日設定値とで直線補間を行います。

開始日の日射量(点灯時間、照度)から始まり、終了日の日射量(点灯時間、照度)に変化していきます。これにより、徐々に短日化したり、徐々に長日化することができます。

設定方法

まず、栽培プログラムと温度プログラムを設定します。栽培プログラムは、アイティプランターの1日の照明制御や給水制御を行うものです。具体的には、点灯時刻、消灯時刻、光強度(PWM値)、ポンプ動作時刻、ポンプ動作時間(秒)が設定できます。温度プログラムは、1日の温度の変化を設定します。

次に、栽培プログラムと温度プログラムを開始日と終了日に対して割り当てます。これにより、1日を超えた動作の設定ができます。

より正確には、開始日の0:0:0から始まり、終了日の0:0:0に終わります。つまり、開始日 2018/09/03 とし、終了日 2018/0904とすると、2018/09/03の1日だけの動作が設定できます。開始日と終了日が同じ場合には何もしません。また、現在日が、終了日よりも進んでいる場合にも、何もしません。動作させるには、終了日は、必ず、現在日よりも進んでいなければなりません。

また、温度や照明時間の補間は、開始日と終了日の間で直線補間されます。開始日と終了日では、温度や照明時間は、設定値と同じですが、開始日と終了日の中間では、保管された値になります。LongPeriodControlによって、補間される値は、設定温度、PID値、点灯時間、消灯時間です。光強度(Duty)は、PWM値(0%から100%)で変わります。点灯時間と消灯時間の間の光強度は、itplanterControl.jsにより、設定値が補間された値に変わります。

cultivationPrgで、Dutyの設定を、

7:00     0
12:00  90
19:00   0

とした場合、補間がなければ、12時にPWM 90%で点灯し、19:00に消灯します。補間があった場合には、7:00から徐々に明るくなり、12時で最大のPWM 90%の明るさになり、その後、徐々に暗くなり、19:00で消灯します。補間があった場合には、従来とは動作が異なるのでご注意ください。

上のグラフは、15時点灯、15時30分にPWM90%、16時に消灯の実行結果です。直線的に、照度が変化していることがわかります。

従来と同じような動作にするには、

6:59     0
7:00     90
12:00  90
18:59   90
19:00   0

とします。これで、7時から19時まで、PWM 90%で点灯します。itplanterControl.jsの更新が10分毎なので、最大10分の誤差が生じます。

温度は、開始日の温度設定から、終了日の温度設定へと、徐々に変化していきます。また、開始日の栽培プログラムから終了日の栽培プログラムへと徐々に変化していきます。また、アイティプランターのLEDの明るさは、1日を通して、10分毎に、徐々に変化します。10分毎に変化するというのは、~/Node/itplanterControlで、10分毎に、アイティプランターの設定を書き換えているからです。

これにより、春夏秋冬の温度や日照時間、夏至、冬至を再現できます。温度プログラムと栽培プログラムが分離しているので、夏至の日長周期で、冬場の温度環境を再現するようなこともできます。

Raspberry Piの設定

アイティプランターの照度の補間変化は、 longPeriodControlが行っています。longPeriodControlは、Raspberry Piで実行しているJavaScriptです。

pi@ITBOX-SW:~/src/ITBOX $ cat /etc/systemd/system/longPeriodControl.service
[Unit]
Decription=The longPeriodCOntroller

[Service]
Type=simple
Environment=LANG=C
ExecStart=/home/pi/src/ITBOX/longPeriodControl.js
ExecStop=/bin/kill -WINCH ${MAINPID}
KillSignal=SIGINT
PrivateTmp=true
Restart = always

[Install]
WantedBy=multi-user.targe

アイティプランターの照度の補間変化を行わない場合には、以下のオプションを設定してください。

ExecStart=/home/pi/src/ITBOX/longPeriodControl.js -ni

システムの仕組み

coderのLongPeriodControlで設定した情報は、

/home/coder/coder-dist/coder-base/LongPeriodControl/saveLongPeriodControl.txt

に書き込まれます。このファイルが書き換わった時に、常駐デーモンの longPeriodControl.js がファイルを読み込み、以下の2種類のファイルを更新します。

(1)栽培プログラム設定用のファイル( /home/coder/coder-dist/coder-base/config/saveITPController.txt )を書き換えます。

このファイルが書き換わると、常駐デーモンのitplanterControl.js が、情報をアイティプランターに送信します。

(2)温度プログマム設定用のファイル( /home/coder/coder-dist/coder-base/config/saveTempController.txt )を書き換えます。

このファイルが書き換わると、常駐デーモンのtempController.jsが、温度制御を更新します。

上記、2種類のデーモンが動作しているかどうかは、CoderのserverCheckで見ることができます。

roorから始まる1行(プロセス)が表示されていない場合には、常駐デーモンが停止しています。Startボタンを押すと開始され、プロセスが表示されます。どうしても、動作しない場合には、ITBOXを再起動してみてください。