前回、ざっくりした回路を組みましたのでハードは完成です。
今回はこの回路を制御する為のラズパイ側のプログラムを機能別に分割していきます。
分割処理させるメリットとして
- 後で機能を追加したりしやすくなる。
- 温度の取得とか画面の表示とか実行が遅いプログラムの待ち時間を発生させない。
- 後で簡単に使い回しが出来るプログラムになる。
ことが挙げられます。
全部を図に纏めるとこんな感じです。実際には作りながら適宜考えたものですから名前等がテキトーな箇所はご勘弁ください。
プログラムはモジュールとしてのfile_mng.pyを除き、全てデーモンで個別に動作させます。
各プログラムの概要一覧です。
各々のプログラムについては個別にブログに纏めることにします。
データの共用はRAMである/dev/shm/領域内を活用することにしました。
ファイルデータ統括モジュール
file_mng.py
今全てのプログラムから利用するファイル内容を一括で取り次いでくれるプログラム
これをimportするだけで各種ファイルの保存先から保存データを適切に拾ってくれます。
dreamerdream.hateblo.jp
画面表示デーモン
temp_displayd.py
素直に/dev/shm/に保存された表示用テキストをディスプレイに表示させるだけのデーモン
監視ファイルは/dev/shm/以下の
temp,time,row_0,row_1,row_2,row_3,row_4
温度取得デーモン
write_tempd.py
センサー値を読むのが遅いのと℃に直すのが手間なので、画面表示と温度管理のために/dev/shm/にセンサー値を℃に直して保存するだけのデーモン
作成ファイルは
/dev/shm/temp
スタート、ストップデーモン
start_stop_btnd.py
スタート/ストップボタンが押されたら、
ストップ時ならスタートファイルにスタート時間を記録したファイルを作る。
スタート時ならストップ処理としてスタートファイルを消す。
押された確認要にrow_0にSTAR、STOP表示
/dev/shm/にファイルを作るスタートボタン監視デーモン
監視ボタン
「スタート/ストップ」GPIO10
作成ファイルは
/dev/shm/start
/dev/shm/row_0
温度、タイマー設定デーモン
settingd.py
/usr/local/etc/以下の設定ファイルを読み込んで画面表示/dev/shm/row_1,row_2ファイルに設定内容を書き出す。
物理ボタン操作により設定ファイルを書く
監視ボタン
「上」「下」「設定項目」ボタン
作成ファイル
/usr/local/etc/temp
/usr/loca/etc/time
/dev/shm/row_1
/dev/shm/row_2
タイマーデーモン
timerd.py
スタートファイルを読んでタイムカウントするデーモン。
スタートファイルがある時はディスプレイ表示用timeファイルを書き換える
温度が設定温度になったらスタートファイルの日時を書き換えてスタート
設定タイムになったらstartファイルを消してrow_0を「Complete」に書き換えて終了。
監視ファイルは
/dev/shm/start
/dev/shm/temp
/usr/local/etc/set_time
/usr/local/etc/set_temp
作成ファイルは
/dev/shm/time
/dev/shm/row_0
ヒーター制御デーモン
heaterd.py
startファイルが存在すれば、保存された温度ファイルに近づくようにヒーター制御を行なう。
日時を記録したログファイルを残す
監視ファイル
/usr/local/etc/temp
/dev/shm/temp
/dev/shm/start
出力
[ヒーター]
作成ファイル
ログファイル
これらデーモンは各々実行権限を与えてデーモンとして起動時に自動起動するよう設定しています。
<過去記事参考>
実動作試験につづく↓