【raspberry pi】ラズパイで気温の測定 その2


ど〜も。tobiです。
今回もraspberry piを使って勉強をしていきたいと思います。

今回のテーマは、前回に引き続き気温の計測です。今回は1日の気温の変化を計測し、グラフ化することに挑戦してみたいと思います!

IMG_4838


さて、今回はターミナルとシェルスクリプト、Rubyを使って、1日(実際には半日分)の室温の変化を図ってみたいと思います。

【rubyファイルの作成】

まずはみなさん、前回の気温の測定記事で作成したadt7410.rbを覚えていますか?まずは同じものをテキストエディタで作成してみましょう。

みなさん、ご自分で管理しやすい場所に気温測定のフォルダを作成し、「adt7410.rb」として保存しましょう。

 

【シェルスクリプトの作成】

続いては、シェルスクリプトを作成ます。こちらのプリグラムは先ほど作った「adt7410.rb」というプログラムを繰り返し実行するという処理を行わせるために作成します。

新しくテキストエディタを開き、プログラムを書いていきます。

プログラムの解説です。

while trueで無限ループを作成

dateで現在の日時の取得(#dateでコメントアウトすると気温データのみの出力が可能)

ruby adt7410.rbで作成したRubyファイルの実行

sleep 300で300秒間のプログラムの停止。実行間隔はみなさんで調整しえください。

このプログラムを先ほど作成した気温測定のフォルダに「adt7410.sh」という名前で保存します。

 

【terminalでプログラムを実行】

※先ほど作成した気温測定のフォルダがある場所までディレクトリを移動するか、パスを正確に指定してください。

プログラムを停止したい時は「Ctrl  +  C」で停止できます。

「sudo sh./adt7410.sh >> ondo.xlsx」は、実行したシェルスクリプトの結果を「ondo」と名付けたExcelファイルとして書き出すという処理です。ちなみに「.xlsx」の箇所を「.txt」と変更するとテキストファイルとして書き出されます。


上記のことを実行するとこのようなエクセルファイルが書き出されます。

スクリーンショット 2016-08-05 13.50.35

その後は、エクセルを編集し、グラフとして書き出すと完了です。


【エクセルの編集】

現在はA列に測定日時と気温が交互に入っている状態です。

この状態からA列には測定日時、B列には気温という状態を目指します。

step1 : 奇数行・偶数行の分類

空白のc1セルに =MOD(ROW(),2) を代入し、データが入っている最下部までセルを引っ張ります。この処理は、奇数行(日時)と偶数行(気温)の分類をしています。1が奇数行、0が偶数行です。

step2 : フィルター処理(日時)

次にC列全体を選択し、エクセルメニューの「データ」から「フィルター」を選択します。すると、c1セルにフィルターができるので、0のチェックを外し、日時のみの表示させ、A列をコピーします!

スクリーンショット 2016-08-05 20.29.18

step3 : 新規sheetの作成 & 日時の複製

新規sheetを追加し、先ほどコピーした日時をA列に貼り付けます。

 

step4 : フィルター処理(気温)

今度は先ほどのシートに戻り、c1セルのフィルターの1のチェックを外し、0で気温のみを表示させ、A列をコピーします。スクリーンショット 2016-08-05 20.31.03

※ここで注意が必要なのが、C1セルにはフィルタがかかっていないため、フィルタで0を選択してもA1セルには反映されず、1行分ずれてしまいます。A1セルを覗いて気温データをコピーしましょう。

step5 : 気温データの複製

先ほどコピーしたデータを先ほど作成したsheetのB列に貼り付けます。

setp6 : グラフの作成

日時データと気温データのA,B列を選択し、エクセルメニューの「挿入」から「折れ線グラフ」を選択すると、グラフの完成です。

スクリーンショット 2016-08-05 20.36.04


みなさん、いかがでしたでしょうか?

以上が気温データの計測プログラムでした!


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です