IoTに挑戦

【IoTに挑戦】一定の時間でデータを採取するしくみをつくる

OS

おはようございます。じぇいかわさきです。

スポンサーリンク

 

さて、PythonでDHT11からデータを取得する方法も確立した。

 

Pythonが記録するCSVファイルもMariaDBへ取り込むことも出来た。

 

いよいよ次のステップは、DHT11のデータを取得するプログラムを自動で動かすことだ。

 

現段階では、Runしたときのみデータを採取するので、所定の時間、または間隔でこのプログラムをRunさせてあげればよい事になる。

 

簡単なようで、やはり落とし穴がところどころに散らばっていた。

 

OS

 

 

 

ラズパイに自動運転をさせるには

まず、プログラムを自動で運転させる仕組みが必要になる。Windowsで言うとATコマンドの様なものだ。

 

ラズパイは基本OSはLinuxなので、Linuxの場合と言うかUnix系のOSでプログラムの自動運転をするには、cronと言うコマンドを使用して自動運転をさせることになる。

 

このcronであるが、ラズパイの場合は初期値では使えないような設定になっているらしい。

 

まず、この初期設定を使用できるように変更する必要がある。

 

方法としては以下の通り。

 

まず、/etc/rsyslog.confと言うファイルを開いて内容を確認する。このファイルの中でcronの設定がコメントアウトされているようであれば、このコメントを削除すればよいことになる。

 

ファイルを開いてみると、やはりcronの前に#がついてコメントされている。この#を取り除けばよい事になる。

rsyslog.conf

[ads]

 

rsyslog.conf

このようにして、保存すれば完了。しかし、このままではcronは未だ起動していないので、cronを起動させるためrsyslogを再起動する。

sudo /etc/init.d/rsyslog restart

 

rsyslog restart

 

次に、cronが動いたときに動作状態をログに記録させるように、cronのログレベル設定をしてあげる。

 

設定ファイルは/etc/default/cronになるので、このファイルを開いて、「EXTRA_OPT=””」となっている部分があるので、その部分を「EXTRA_OPT=”-L 15″」に修正する。

 

最後に、cronを再起動させて、今修正した設定ファイルを反映させる。

sudo /etc/init.d/cron restart

 

ここまでで、ラズパイのcronを起動させる設定が完了しました。いろいろとメンドクサイですね。

 

 

所定の時間でプログラムを動かすようにする

cronが起動しただけでは、cronは何を実行すればよいのかが、分からないので、cronが自動運転をするような設定をしてあげなければいけない。

 

cronに自動運転をさせたい内容は、10分毎にrasptemp.pyと言うプログラムを実行させる事。

 

まず、cronにこのプログラムを実行させるためにはcrontabと言うファイルに実行内容を書き込まなければいけない。

 

そのためには、以下のコマンドを実行してcrontabを編集モードで書き込む。

crontab -e

 

 

crontab設定

 

一番最初に立ち上げた時、crontabの編集にどのエディターを使用するのか聞いてくる。自分の好みにすればよいので、自分は使い慣れたvimを指定した。

 

crontab編集

[ads]

 

まずは、10分毎に指定したパスにあるプログラムを動かすと言うことから、以下のように設定した。

 

《設定抜粋》

/10 * * * * ‘/home/pi/rasptemp/rasptemp.py’

crontab設定

 

そして、cronを再起動すれば完了となる。

cron再起動

 

 

動いていると思っていたが

crontab設定を実施して、cronを再起動したので問題なければ10分毎にデータを取得しているはず。

 

cronをrestartしてから1時間程度して、実際にデータが取得されているのかを確認するために、CSVファイルの中身を開き確認してみた。

 

しかし、そのCSVファイルは全く更新されておらず、以前に見慣れたデータのみが記述されていた。

 

結果、cronは動いていないと言うふうに見える。

 

データ改

 

cronの状態を確認するには、cron statusと言うコマンドで確認することができるらしい。今回設定した内容ではcronが動いていないのか、実際にコマンドを使い確認してみた。

sudo /etc/init.d/cron status

 

cronの状態は以下のように表示された。

cron状態表示

 

この状態表示から読み取れることは、Active:と言う場所が、active(running)となっているので、このcronはちゃんと動いていることになる。

 

また何か記述方法か、設定が間違っていると言うことになる。

 

またまたトラブルシュートをしなければ。

 

 

まとめ

今回はPythonで書いたプログラムを、cronを使用して自動運転させる方法を考えて、挑戦してみた。

 

しかしながら、また最後の最後で躓いたようである。

 

そもそも、Linux自体をよく理解していない事もあるのだが、それにしても毎回詰めの部分で躓くパターンが増えている。

 

まあ一筋縄でいかないから、楽しくもあるんですがね。

 

とりあえず、crontabの設定さえすれば自動運転ができることまでは確認できている。あとは本当に動くか実証すればよいだけである。

 

もう一度記述方法を確認して、完全に動くようにしよう。

 

多分、今回も記述方法じゃないかな。

 

 

[twt]

ABOUT ME
じぇいかわさき
進撃の社畜/弱小プロブロガー 本ブログは、還暦で定年の世代の筆者が、まだまだやれるという事を証明するために新たな事に挑戦した事を情報発信しているブログです。同世代の人達に対して、まだまだいろいろと頑張れる、第二の人生を楽しく生きていく為に現状維持は退化、失敗の反対は行動しないことを座右の銘とし、思い立ったことにチャレンジした記録です。また、せっかく稼いだ収益を騙し取られないように、毎日来る迷惑メールなどのネットリテラシーについても情報発信をしています。 このブログは ネットリテラシー ブログ 働くこと について書いており、第二の人生で頑張る同世代の心に刺さる記事を目指してます。人生100年、まだまだがんばれます。 >> Twitterをフォローする