Raspberry Piでお部屋の温度・湿度・気圧・照度を記録するには

先日、(例えばテレビの)リモコンの使わないボタンで、別の機器(スピーカー)を操作するため、Raspberry Pi Zeroでリモコンの中継機を作成しました。

使用したIoT拡張ボードは、赤外線の送受信機能の他に、各種センサーが取り付けてあります。

せっかくですので、お部屋の温度や気圧、照度の記録をしてみたいと思います。


Raspberry PiのIoT拡張ボートによる温度・湿度・気圧・照度記録設定

使用する機材

対応するIoT拡張ボードは、こちらを使用させて頂きました。

お部屋の中心に水平に設置致しました。赤外線が届く範囲が広く、問題なく使用させて頂いております。温度や湿度の記録も、お部屋の中心のうほうが変動が少なく、安定するかと思います。


温度・湿度・気圧・照度の取得

RPZ-IR-Sensorホームページから、サンプルプログラム「rpz-sensor」をダウンロードさせて頂きました。

ターミナル上でpiユーザーで実行したところ、問題なく温度などの情報が表示されました。

※18.11.23追記:RPZ-IR-Sensor本体のBME280センサーは、温度が少し高めに記録されます。Raspberry Pi本体の発熱の影響でしょうか。付属の外付けセンサーを取り付けると、お部屋の温度を問題なく記録してくれるようです。


自動記録の設定

crontabで、5分おきにファイルに記録するように設定しました。

次の1行を追加します。

これで温度等の記録が開始されました。

CSVファイルをWindows PCに転送する場合、宜しければこちらの記事を御覧ください。


照度が0の場合異常終了する対策

※18.12.12追記:

お部屋が暗い場合、ゼロで除算エラーがでるようでしたので、スクリプトを少し修正させて頂きました。

106行目付近にif文を追加したところ、輝度が0の場合のエラーは出なくなりました。

スポンサーリンク

フォローする

スポンサーリンク

コメント

  1. usagi_company より:

    crontab -eまではうまくできましたが、次のcrontab -l | tail -1では何も表示されず~$ポジションに戻ってしまいます。自分ではどこが悪いのかわからないです。チェックすべき部分が有れば教えていただけると助かります。

    • hide より:

      usagi_companyさん はじめまして
      コメント頂きまして誠にありがとうございます。

      crontab -e
      を実行して、エディタを起動し、1行追加後
      crontab -l
      を実行しても、追加された行が表示されない状況でしょうか?
      (| tail -1 は、最後の1行を表示する意味になります。)

      rpz_sensor.pyを実行する1行が、うまく保存されていない場合、次をお試し頂くのはいかがでしょうか?

      ①エディタの変更
      select-editor
      もしもnanoの方が使いやすい場合、vimからエディタを変更後、再度crotab -eで編集

      ②管理者権限でcronのジョブを作成
      sudo crontab -e
      sudo crontab -l
      root権限でジョブを作成

  2. usagi_company より:

    早速ご返事ありがとうございます。
    crontab -lでは書き込んだ行は表示されます。
    ただ、| tail -1を加えると~$に戻ってしまい付け加えた行は表示されません。
    お教えいただいた②の方法でも同じです。
    cat rpz-sensor.csvを実行すると「そのようなファイルやディレクトリはありません」となってしまいます。
    大変初歩的な質問で申し訳ありませんが、crontab -lでは表示されるのに | tail -1を加えると表示されない可能性としてはどんなことが考えられますでしょうか。
    お手数ですがご教授いただけると幸いです。

    • hide より:

      usagi_companyさん こんにちは
      コメント頂きありがとうございます

      > crontab -lでは書き込んだ行は表示されます。
      > ただ、| tail -1を加えると~$に戻ってしまい付け加えた行は表示されません。
      > お教えいただいた②の方法でも同じです。

      > 大変初歩的な質問で申し訳ありませんが、crontab -lでは表示されるのに | tail -1を加えると表示されない可能性としてはどんなことが考えられますでしょうか。
      > お手数ですがご教授いただけると幸いです。

      crontab -lの場合、cronに登録された設定すべてが表示されます。
      #の付く行は、コメントとして扱われます。
      crontab -lで登録内容の行が表示されているのでしたら、おそらくcronへの登録は問題無いかと思います。

      | tail -1
      を加えた場合、単純に、cronに登録された設定の、最後の1行を表示する、という意味になります。
      cronに登録された設定の最終行が改行の場合は、何も表示されないかと思います。

      > cat rpz-sensor.csvを実行すると「そのようなファイルやディレクトリはありません」となってしまいます。

      crontabに、記事の内容の通り
      「*/5 * * * * /usr/bin/python3 /home/pi/rpz-sensor/python3/rpz_sensor.py -l ${HOME}/rpz-sensor.csv」
      を登録した場合ですが

      piユーザでcrontabに登録した場合、作成されるファイルは「/home/pi/rpz-sensor.csv」になりますが
      sudo crontab -eの場合、環境により/home/piではなく/root等の別のディレクトリにrpz-sensor.csvができている可能性があります。

      宜しければ、下記のように${HOME}を使わないかたちで、cronに登録されたほうが宜しいかと思います。
      「*/5 * * * * /usr/bin/python3 /home/pi/rpz-sensor/python3/rpz_sensor.py -l /home/pi/rpz-sensor.csv」

      crontabに登録する前に、単純に
      「/usr/bin/python3 /home/pi/rpz-sensor/python3/rpz_sensor.py -l /home/pi/rpz-sensor.csv」
      を実行して頂いて、/home/pi/rpz-sensor.csv ファイルが作成されますでしょうか?

      rpz-sensor.csvが作成されなければ、python3やrpz_sensor.pyのパスの記述が正しいかどうか
      (本当に/usr/bin/python3や/home/pi/rpz-sensor/python3/rpz_sensor.pyのファイルが存在し、実行可能かどうか)

      rpz-sensor.csvが作成されれば、crotabの設定内容が正しいかどうか、そもそもcronのサービスが動いているかどうか等、ご確認頂く流れになると思います。
      (systemctl status cronで、cronサービスが動作しているか確認できるようです)

      どうしてもうまく動かない場合、宜しければ、crontab -lの内容を、コメントにアップロードして頂いて、僭越ながらご確認させて頂く手も御座います。

  3. usagi_company より:

    丁寧なご指導ありがとうございます。
    ちょうど熱波到来の折、子牛達の環境ストレスを計りたくて慣れないITに励んでおります。
    こんなに丁寧に返事をいただき、勇気を出してコメントしてよかったと感激してます。
    動作確認をして結果をお伝えしますので暫くお時間をください。
    よろしくお願いします。

    • hide より:

      usagi_companyさん こんばんは
      コメントにご返信頂き、誠にありがとうございます

      急激に気温が高くなり、子牛さんたちも、さぞご負担ががかかる状況かと思います。

      usagi_companyさんのひたむきな努力を応援しております。

      どうか肩の力を抜いて頂き、焦らずに、お試し頂ければと思います。