各プログラムの説明

  • wifirouterswitch.pyは、rc.localから起動がかかるプログラムで、モバイルWiFiルーターの電源を入れる機能があります。
  • bootmail.pyは、rc.localから起動がかかるプログラムです。iKakashi起動直後は、モバイルWiFiルーターとRaspberry PiのUSB WiFiドングル間で無線LANを試みようとしています。これが安定するまで、約11分間待ち、その後iKakashiが起動したことをクライアント様にメールでお知らせします。メールの本文中には、現在のiKakashiのクローバルIPアドレスが記述されています。
  • intruderdetect.pyは、rc.localから起動され、常駐プログラムとして動き続けます。
    このプログラムが動き続けている間中Active LED(iKakashiが動作中であることを示すためのLED)を点滅させます。
    人感センサーが侵入者を検出すると、このプログラムに割り込みがかかります。割り込みがかかると、高輝度白色LEDを光らせ、何枚かの写真を撮影し、それらの写真をメールに添付してクライアント様に送信します。
  • get_climate.pyは、crontabにより10分ごとに起動されます。温湿度、気圧、照度センサーからの気象データを収集し、MySQLまたはMariaDBに記録します。
  • wanip.pyは、crontabにより10分ごとに起動されます。iKakashiで使用しているモバイルWiFiルーターには、固定IPアドレスが割り当てられていません。iKakashiのグローバルIPアドレスは、時々変わってしまいます。変わってしまうと、クライアント様はインターネット上からiKakashiを見つけられなくなってしまい、Webサーバーから発信されている気象データのグラフを見ることができなくなってしまいます。そこで、たとえグローバルIPアドレスが変わってしまっても、10ごとにその違いをチェックし、前回チェックしたときと違いがあれば、新しいクローバルIPアドレスをクライアント様にメールでお知らせします。
  • previousip.txtは、テキストファイルで、前回チェックしたときのグローバルIPアドレスが記録されています。
  • defaultgatewayping.pyは、crontabにより20分ごとに起動されます。モバイルWiFiルーターに対してpingを流し、応答があるかどうかをチェックしています。もし応答がない場合、モバイルWiFiルーターの電源を入れます。稼働率を高めるための機能です。
  • SendGmail.pyは、いろいろなプラグラムから呼び出されます。クライアント様にメールでお知らせするときに使われます。テキストメール、CSVファイルの添付メール、写真の添付メールなどをgmailで送信することができます。
  • averagetempetoday.pyは、crontabにより毎時55分に起動されます。積算温度の計算に必要な、その日の平均気温を再計算し、結果をMySQL(データベース)に記録します。
  • loadconfig.pyは、いろいろなプラグラムから呼び出されます。iKakashiごとにある固有の値を、呼び出したプログラムに返します。
  • config.txtは、テキストファイルです。iKakashi ごとにある固有の値が記録されています。たとえは、iKakashiの名前だとか、DefaultgatewayのIPアドレスが保管されています。
  • log_info.pyは、いろいろなプラグラムから呼び出されます。/var/log/syslogファイルにiKakashiの動作履歴を残します。この記録を後から見ることで、プラグラムのデバッグの助けになります。
  • ClimateChart.pyClimateChart1week.pyClimateChart1month.pyは、Webサーバーのapache2から呼び出されます。クライアント様が、Webブラウザーを使ってiKakashiに接続すると、温湿度、気圧、照度の気象データのグラフが表示されます。たとえクライアント様が畑にいなくても、インターネットが接続できる環境であれば、気象データをいつでも、どこからでも確認することができます。
    ClimateChart.pyは24時間の気象データ、ClimateChart1week.pyは1週間の気象テータ、ClimateChart1month.pyは1ヶ月の気象データのグラフを表示します。
  • sekisanondograph.pyは、Webサーバーのapache2から呼び出されます。クライアント様が、Webブラウザーを使ってiKakashiに接続すると、積算温度のグラフが表示されます。
    [積算開始日]、[基準温度]の入力が可能で、[設定]ボタン、[設定 → CSVファイルをメール送信]ボタンをクリックするとsekisanondosetting.pyに起動がかかります。
  • sekisanondosetting.pyは、sekisanondograph.pyから起動され、formのactionとして機能します。
    [積算開始日]、[基準温度]の入力が適切な値かチェックされます。SQLインジェクションを防ぎ、耐セキュリティ性能を高めるためています。それらの値が適切なら、sekisan.txtに記録します。
    また、積算温度のデータをCSVファイルに変換し、クライアント様にメールでお知らせすることもできます。
  • sekisan.txtは、テキストファイルで、クライアント様が設定した[積算開始日]、[基準温度]の値が記録されています。
  • csvexport.pyは、crontabにより毎月1日の10時に起動されます。前月の気象データをMySQLまたはMariaDBから読み出し、CSVファイルに変換してクライアント様のメールでお知らせします。
    また、90日以上前に撮影された写真ファイルを削除します。
  • cameraposition7.pyは、iKakashi設置時に使用するプログラムです。cameraの角度と方向を決めるときに使用します。
  • whiteledon3.pyは、iKakashi設置時に使用するプログラムです。高輝度白色LEDを光らせ、どのくらいの明るさなのか確かめるために使用します。
  • pir8.pyは、iKakashi設置時に使用するプログラムです。人感センサーの感度がどのくらいの距離まで届いているか確かめるために使用します。

ソフトウェア全体図