Raspberry Piで航空機のADS-Bを受信してみました “状態の定期チェック Postfix cron USB温度計 temper” (8)
“Raspberry Piで航空機のADS-Bを受信してみました “NooElec R820T SDR & DVB-T MESDR Mini dump1090” (1)”
“Raspberry Piで航空機のADS-Bを受信してみました “IPアドレス固定化 ラズパイ環境整備 NTP RealVNC” (2)”
“Raspberry Piで航空機のADS-Bを受信してみました “macOS環境でADS-B信号のフィードにトライ” (3)”
“Raspberry Piで航空機のADS-Bを受信してみました “FR24 Feeder/Decoder フィード自動起動” (4)”
“Raspberry Piで航空機のADS-Bを受信してみました “SDR ADS-B 1090MHz 受信用アンテナ ssmtp mailutils mpack twython” (5)”
“Raspberry Piで航空機のADS-Bを受信してみました “無線LAN拡張 AirMac Express フレキシブルアーム” (6)”
“Raspberry Piで航空機のADS-Bを受信してみました “デバッグ環境 まさかの故障->Raspbian再インストール” (7)“の続きです。
(1) Raspberry PiとFR24 Feeder/Decoderの状態を定期的にチェックできるようにする
上記(5)のTALKで、Raspberry Piの状態をリモートで監視するために必要な準備をいくつか行ってみたので、今回は、その応用編です。
(a) “Postfix”をインストールする
定期的にシェルやスクリプトを実行する方法はいろいろあるみたいですが、初心者なので、”cron”を使うことにします。
で、cronを使うためには、メールを送信できる環境にすることがマスト、ということらしいので、既に”ssmtp”, “mailutils”, “mpack”をインストール済なので、それでいいかなあ、と思ったものの、”cron”の準備を指南してくれているサイトの説明だと、”Postfix”のインストールから、ということでしたので、ここは、その通りやってみることにしました。
“sudo apt-get install postfix”でインストール開始。
インストールを終える直前に、こんな画面が表示されますが、よく分からないので、後で設定することにします。
続いて、”sudo nano /etc/postfix/main.cf “で、postfixの設定ファイルに、以下の内容を記述します。
上記設定ファイルで、”smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd”と設定したので、そのファイルを作って、上記(5)のTALKで既に設定を終えているGoogleのメールアカウントと”2段階認証プロセス“用のパスワードをセットします。
その後、”Postfix”のコマンドで、検索テーブルを作成したり、権限設定したりした後、”Postfix”をリスタートします。
テスト用のメールを送ろうとしたら、”pi”に権限がないよ、というエラーが発生したので、以下のように対処した結果、正常にメールを送れるようになりました。
(b) 毎時毎に実行する監視用スクリプトを用意する
上記(5)のTALKで作成したPythonで書いたスクリプトを流用します。
前半は、既に記述してある内容で、Twitterにツィートするために必要な認証情報、CPUの温度を調べるコマンドと現在時刻の生成など。
後半は、今回追記した内容で、”FR24 Feeder/Decoder”のプロセス番号をまずは取得。プロセス番号が見当たらない場合は、”FR24 Feeder/Decoder”が何らかの理由で停止してしまったので、プロセスを起動し、その旨をツィートするといった流れです。一方、”FR24 Feeder/Decoder”がちゃんと動いていれば、その旨をツィートしておきます。
(c) “cron”に毎時毎に実行する監視用スクリプトをセットする
“cron”のコマンドで思えておくべきものは3種類だけみたいです。
“sudo /etc/init.d/cron start” -> “cron”を起動する
“crontab -l” -> “cron”の設定内容を参照する
“crontab -e” -> “cron”の設定内容を編集する
なので、”crontab -e”を実行して、今回は、60分毎に、”/home/pi/raspberry_report.py”というPythonで書いたスクリプトを実行する、という内容の記述を追記します。”cron”の記述方法については、ネットでいくらでも検索できるので、ご自身で調べてみて下さい。コツさえ掴めば、超簡単です。
で、1時間後、CPU温度と”FR24 Feeder/Decoder”の状態がツィートされました。これは便利だなあ。
(3) リビングルームの温度を定点観測する
CPUの温度監視ができるようになったので、今度は、室内の温度監視にトライしてみることにします。
電子工作的アプローチで、湿温度を測定するんだったら”温湿度センサ モジュール DHT11“等を使うのが常套手段なんだと思いますが、ナマケモノなPOOHとしては、既製のお安い製品があるんだったら時短優先を常としているので、今回は、千円前後で入手できる”USB温度計! USB thermometer-528018“を活用してみることにしました。ちなみに、今回は、ヤフオクで、送料込み 981円(送料が980円)で新品を落札しました。
同封のCD-ROM(こんなに小さいCD-ROMって普通に使えるのかなあ?)を使えば、”DOS”, “Windows”, “Linux”, “MAC”の各プラットフォーム用のセットアップができるみたいなんですが、何と言っても中華製品なので、ちょっとね…
ここは、随分、ネットで検索できる一般的な方法、GitHubで公開されている”temper“を使ったセットアップを進めることにします。それにしても、かなり古くからあるソフトウェアなんですね。
まずは、Raspberry Piの環境を最新の状態にアップデート。
sudo apt-get update
sudo apt-get upgrade
sudo rpi-update
sudo reboot
リブート後、”temper”デバイスをUSBに挿して、”lsusb”で接続状況をチェックしてみます。最初のサンプルはUSB延長ケーブルを介してデバイスを挿したケース。で、次のサンプルがデバイスを直接USBポートに挿したケース。直接挿さないと、デバイスを認識できないみたいですね。
ここから、”temper”と、USBのプログラミングライブラリ”libusb-dev”をインストールしてみます。
mkdir ~/tmp && cd ~/tmp
git clone git://github.com/bitplane/temper.git
cd temper
sudo apt-get install libusb-dev
sudo chmod u+s ./temper
sudo make
sudo make install
インストール後、温度を測定してみます。
“sudo ./temper”
さてっと、ここまで出来たら、やっぱり定期的に室内の温度をツィートするように、下準備をしておきます。
今回は、デバッグ用のRaspberry Piを使っているので、”twython“をインストールと思ったら、既にインストール済みたい。
後は、“sudo pip install requests requests_oauthlib”で、”OAuth“認証用のライブラリをインストールすれば準備完了。
Pythonで書いたスクリプトを用意します。と言っても、前回作ったスクリプトの流用ですけどね。
“nano raspberry_report.py”。
今回、室内温度用に書き換えた部分がこちらです。
スクリプトを実行してみます。
“python raspberry_report.py”
とりあえずは、測定とツィートはできた感じです。でも、Raspberry Piに直接挿しているからなのか、測定温度がかなり高めだなあ。以前、macOSで試した時は、それなりに正確かな?と思える測定温度だったので、デバイス自体の精度が大きく狂っているようなことはないと思うので、実践で使うには、もうちょっと実験的なアプローチが必要かも。
実践力を身につける Pythonの教科書 [ クジラ飛行机 ] |
入門Python 3 [ ビル・ルバノビック ] |
みんなのPython 第4版 [ 柴田 淳 ] |
ホームページ”THE POOH FILES”にも是非お立ち寄り下さい。