温湿度露点ロガー(S0100-0) 7
前回、SQLite 簡易サーバーに記録する部分を作成しましたが、テーブルのデータ型をTEXT で作成していたため、データを読み出してグラフを表示する際に型変換を要して処理が遅くなると考え、修正しました。
REAL 8byte に対して使用範囲の温度は TEXT 4byte なので、お得と考えたのですが、素直にREAL型にします。
また、2台目も使ってデバッグ可能になったので、カラムを増やして2台のサーバーアクセスが同時刻に重ならないよう、IDx2秒の遅延時間を確保していることを確認し、アラーム機能を追加して動作確認を行いました。
テーブルのデータ型変更
修正後のデータ型は以下の通りです。
'date' INTEGER
'time' INTEGER
'T00' REAL
'H00' REAL
'D00' REAL
'T01' REAL
'H02' REAL
'D03' REAL
旧テーブルを削除して新たに作りました。
時刻 'time' について、以前は 12:15 のように表現していましたが、今回からは時間の100倍で 1225 (12.25時間)のように変更しました。
IDによるUPDATE遅延
ID番号x2秒の遅延時間を設けて2台を動作させました。
SQLite 簡易サーバーとして使ているRaspberry Pi 3B に、データベース用ストレージとしてUSBメモリーがあります。このUSBメモリーのアクセスランプが2秒程の間に2回点灯することを目視確認して動作確認OKとしました。
アラーム機能
設定用テキストファイルの記述に従って、LEDへのアラーム表示とブザー鳴動を確認しました。
アラーム範囲に無い間は緑色LEDが点灯し、アラーム範囲に入ると緑色が消灯して赤色LEDが点灯します。タクトスイッチでアラム解除操作をするまでアラーム表示を続けます。(解除後もアラーム範囲であれば再びアラーム表示)
赤色LEDが点灯している間はブザーが短鳴動を繰り返します。
設定用テキストファイルでブザーをOFFにすることが出来ます。
アラーム範囲を「28℃より高温」に設定し、センサーを指で摘まんで動作確認しました。低温側、湿度、露点温度も含めると幾つもの実験を要しますが、プログラムの構造上、他もOKとします。
終了機能
最終的に電源ONでアプリが自動起動し、電源OFFで終了する使い方を想定していますが、デバッグ中や使用環境によってはタクトスイッチでアプリ終了出来た方が親切だろうと考えて、2つのボタンを同時に押すことで終了することにしました。
何故か反応が悪く、何度か試さないと終了しないことがあります。
気にしながら暫く様子を見ます。
今後の予定
一通り出来上がったつもりですが、既に修正案があります。(以下)
1.動作中を示す青色LEDの点滅が割込み処理
この割込み処理はメインレベルがエラー停止しても動き続ける為、何等か対策が必要である。
2.自機のIDを表示出来ていない
作業抜けです。当初予定通り表示するようにします。
3.ID番号01の記録が欠落することがある
ID毎の遅延時間2秒→4秒に変更してIDの範囲を00~14とする。
4.ボタン操作による終了動作が不安定
SW1, SW3 を同時に押すことで終了する動作が不安定で、数回試してやっと終了する。原因調査と対策を行う。
少し、時間をかけて様子を見ながら修正案を加筆し、修正を終えたら最終動作確認を予定しています。
以上、今後とも宜しくお願い致します。