4.GoogleスプレッドシートとSlackを用いた情報の可視化
この節では、作成した機器からGoogleスプレッドシートやSlackにデータを送信するプログラムファイルの設置や、設置したプログラムを実行する為の設定、また正常にデータの送信が可能かの確認を行います。
作業時間:30分
ため池の緯度・経度情報の取得
使用する赤外線カメラモジュールは、日中と夜間でシャッタースピードや輝度等の各パラメータを調整する必要があります。その為、日の出日の入時刻を算出する為に、ため池の緯度・経度情報が必要となります。
ため池の緯度・経度情報はGoogleマップより取得します。
まず、こちらのリンクをクリックし、Googleマップを開きます。その後、設置するため池に移動後、クリックし、緯度・経度情報を表示します。
表示した緯度・経度情報を、ため池監視重要情報エクセルファイル、設置するため池の場所、緯度・経度欄に入力します。
※こちらの緯度・経度情報では、34.694630が緯度、135.757908が経度になります。

プログラムのダウンロードと展開
下記「ダウンロード」ボタンをクリックし、プログラムが入っている圧縮ファイルのダウンロードを行います。
ダウンロード完了後、ダウンロードフォルダを開き、ダウンロードした「app.zip」ファイルを右クリックし、「すべて展開(T)…」メニューをクリックします。

展開先の選択とファイルの展開ウィンドウが表示されますので、「展開(E)」ボタンをクリックします。

展開したappフォルダが開きますので、「app」フォルダをダブルクリックし、appフォルダを開きます。

appフォルダ内に、下記のプログラムファイルが入っています。
| ファイル名 | 説明 |
| cameraCmd.py | 赤外線カメラモジュールから、 撮影をするプログラムファイル |
| cronSetting.txt | プログラムを定期的に実行する為の、 設定が入っているテキストファイル |
| googleSheetPost.py | Googleスプレッドシートに、 情報を送信するプログラムファイル |
| hosei.txt | 水位の補正値が入る、 テキストファイル |
| netWorkCheck.sh | ネットワークの確認をする、 プログラムファイル |
| slackImgPost.py | Slackに、 情報を送信するプログラムファイル |
| tameikeI2CProcess.py | 回路基板から情報を取得する、 プログラムファイル |
| testフォルダ内、 i2cTest.py | 回路基板から情報の取得をテストする、 プログラムファイル |
開いたappフォルダに、ダウンロードフォルダ内にある「tameikeGoogleAuth.json」(第六章:情報の可視化(Google スプレッドシートの使用準備)で作成したもの)をドラッグ&ドロップし、appフォルダに移動します。

プログラムの書き換え
Raspberry PiのDBのパスワードや、Googleスプレッドシート、Slackの情報等をプログラムに入力する必要がある為、プログラムの書き換えを行います。まず、メモ帳アプリを起動します。メモ帳アプリの起動方法は、「スタート」ボタンをクリックし、「Windows アクセサリ」フォルダをクリック、「メモ帳」をクリックすると起動します。
または、「スタート」ボタンをクリックし、「メモ帳」と入力後、「メモ帳」をクリックすると起動します。

「cameraCmd.py」ファイルをメモ帳にドラッグ&ドロップし、開きます。

ため池監視重要情報エクセルファイル、設置するため池の場所、緯度・経度欄の情報を入力します。
※左側が緯度、右側が経度になります。

「ファイル」メニュー「上書き保存(S)」をクリックし、保存します。

保存完了後、「googleSheetPost.py」をメモ帳にドラッグ&ドロップし、開きます。

ため池監視重要情報エクセルファイル、Raspberry Pi DBパスワードをdbPWに、Google Sheets keyをSPSKeyに入力後、「ファイル」メニュー「上書き保存(S)」をクリックし、保存します。

保存完了後、「slackImgPost.py」をメモ帳にドラッグ&ドロップし、開きます。

ため池監視重要情報エクセルファイル、Raspberry Pi DBパスワードをdbPWに、Slack channelをSlackChannelに、Slack API Oauth Access TokenをSlackTokenに入力後、「ファイル」メニュー「上書き保存(S)」をクリックし、保存します。

保存完了後、「tameikeI2CProcess.py」をメモ帳にドラッグ&ドロップし、開きます。

ため池監視重要情報エクセルファイル、Raspberry Pi DBパスワードをdbPWに入力後、「ファイル」メニュー「上書き保存(S)」をクリックし、保存します。

以上でプログラムの書き換えは完了です。メモ帳を閉じます。
プログラムファイルの設置・設定
Raspberry Piにプログラムファイルの設置及び設定を行います。
まず、ダウンロード右側「app」をクリックします。

USBフラッシュメモリ(第五章で使用したもの)をPCに挿入後、appフォルダをフラッシュメモリに移動します。その後、USBフラッシュメモリをPCから抜きます。

Raspberry PiのACアダプターをコンセントに接続し、Raspberr Piを起動します。
起動完了後、USBフラッシュメモリを挿入します。

挿入後、リムバーブルメディアの挿入ウィンドウが開くので、「OK(O)」ボタンをクリックし、ファイルマネージャを開きます。

ファイルマネージャが開いた後、画面左上「ファイルマネージャ」をクリックし、piフォルダを開きます。

リムーバブルメディア(USBフラッシュメモリ)内の、appフォルダをpiフォルダにドラッグ&ドロップし、appフォルダを移動します。

移動完了後、画面右上の「取り出し」アイコンをクリック後、挿入しているUSBフラッシュメモリをクリックし、取り出す状態にします。デスクトップ上のUSBフラッシュメモリアイコンが消えたことを確認後、USBフラッシュメモリを抜きます。

appフォルダをダブルクリックしフォルダを開きます。

appフォルダ内、「cronSetting.txt」をダブルクリックし、テキストファイルを開きます。

テキストファイルが開いたら、画面左上の「LXTerminal」アイコンをクリックします。

LXTerminalが開いたら、回路基板の情報を取得可能かテストプログラムを実行します。テキストファイル内、
sudo /usr/local/bin/python3 /home/pi/app/test/i2cTest.pyをコピーし、LXTerminalに貼り付け、「エンターキー」を入力し実行します。
実行後、下記画像のように水位、水温、雨量情報が正常に表示されているか確認します。

回路基板の情報を取得後、Raspberry Piのデータベースに保存可能かテストを行います。テキストファイル内、
sudo /usr/local/bin/python3 /home/pi/app/tameikeI2CProcess.pyをコピーし、LXTerminalに貼り付け、「エンターキー」を入力し実行します。
実行後、下記画像のようにエラーの発生が無く、水位、水温、雨量情報が正常に表示されているか確認します。

赤外線カメラモジュールの撮影テストを行います。テキストファイル内、
sudo /usr/local/bin/python3 /home/pi/app/cameraCmd.pyをコピーし、LXTerminalに貼り付け、「エンターキー」を入力し実行します。
実行後、下記画像のようにエラーの発生が無く、日の出の1時間前と、日の入の1時間後の時刻が、正常に表示されているか確認します。

画面左上「ファイルマネージャ」をクリックし、piフォルダを開きます。

ファイルマネージャー左側を下にスクロールし、「tmp」フォルダをクリックします。tmpフォルダが表示されますので、「photo.jpg」ファイルをダブルクリックし、画像ファイルを開きます。

正常に撮影がされているか確認し、「×」ボタンをクリックし、閉じます。
※下記画像はため池が映っていますが、通常は撮影したものが映ります。また、夜間の場合は真っ白の画像が表示されます。これは、夜間でも撮影できるように、シャッタースピードや感度等を調整しているためおこります。

以上でプログラムのテストは終了です。
次に、GoogleスプレッドシートやSlackへデータを送信するプログラムを、定期的に実行する為の設定を行います。
LXTerminalに「sudo crontab -e」と入力し、「エンターキー」を入力します。※crontab は、プログラムを定期的に実行する為の設定になります。
エディターの選択が表示されますので、「/usr/bin/vim.basic」の番号を確認後(ここでは2番)、番号を入力し、「エンターキー」を入力します。

テキストエディタに切り替わるので、「i」キーを入力してモードを挿入モードへ変更します。
その後、「↓」キーを入力し続け一番下にカーソルを移動後、「→」キーを入力し続け一番右にカーソルを移動します。
移動後、「エンター」キーを入力し改行します。

開いているテキストファイルの下記部分を選択後、右クリックし、コピーメニューをクリックし、コピーします。
05 * * * * /bin/bash /home/pi/app/netWorkCheck.sh
*/10 * * * * /usr/local/bin/python3 /home/pi/app/tameikeI2CProcess.py
8-58/10 * * * * /usr/local/bin/python3 /home/pi/app/cameraCmd.py
02 * * * * /usr/local/bin/python3 /home/pi/app/googleSheetPost.py
03 * * * * /usr/local/bin/python3 /home/pi/app/slackImgPost.pyLXTerminal内をクリックし、「Shift」+「Ctrl」+「v」キーを同時に入力し貼り付けます。
※必ず「Shift」+「Ctrl」+「v」キーを同時に入力すること。

入力後「ESC」キーを入力し挿入モードを終了し、「:wq」を入力後「Enter」キーを入力し、保存します。

※もし誤って入力した場合、「ESC」キーを入力し挿入モードを終了し、「:q!」を入力後「Enter」キーを入力すると、保存せずに終了します。再度コマンド入力からやり直して下さい。

以上でプログラムファイルの設置・設定は完了です。
GoogleスプレッドシートとSlackへの送信確認
プログラムのテスト完了後、機器の電源を2時間程度つけたまま放置します。※自動的にGoogleスプレッドシートと、Slackに情報が送信されます。
2時間経過後、ため池監視システム重要情報エクセルファイル内、Google Sheets URLをコピーし、ブラウザに貼り付けGoogleスプレッドシートを開きます。スプレッドシートに、正常に情報が入っているか確認します。

同様に、Slack URLをコピーし、ブラウザに貼り付けSlackを開きます。Slackに、正常に情報が入っているか確認します。

以上でGoogleスプレッドシートとSlackへの送信確認は完了です。Raspberry Piのシャットダウンを行います。画面左上「Raspberry Piアイコン」をクリックし、「ログアウト」メニューをクリックします。

Shutdown optionsウィンドウが表示されますので、「Shutdown」ボタンをクリックします。

Raspberry Piのシャットダウンが行われますので、シャットダウン後、コンセントからACアダプターを抜きます。
次の節では、ため池監視用Webサイトを構築する為の準備を行います。