よくある話、では済まなかった
ラズパイで定点観測カメラ、よくある話だと思っていたのですが、実際に長期運用してみると問題がありました。定期的なスチル撮影の場合について、克服したと思われるのでまとめておきます。
USB接続のウェブカメラ、いわゆるUVC (USB Video Class)のものをつないだ時、少なくともRaspberry Pi 3B / Rasbian Stretchでfswebcamコマンドを使う場合、問題がありました。Busterでは問題無くなっていると良いのですが。
どんな問題だったか、そして、解決方法は
長期運用、と言っても数時間から1日ほどで発生する高頻度で、しばしばカメラがコマンドを受け付けなくなりました。しかも、時々システム再起動するぐらいでは回避できない。
解決方法は、ドライバーモジュールのunload / reloadという、原始的な対処療法。しかも、撮影後にキレイにしとく、程度ではダメで、毎回の撮影前に行う必要あり。カメラの型番、メーカーが変わっても同じ。問題発生時にもシステム全体的には特別におかしなことは起きておらず、ドライバーとカメラの接続だけがおかしい状況。
実際のスクリプト、キモの部分。
これを撮影前に毎回行う。fswebcamコマンドが悪いのか、UCVドライバーが悪いのか。根本的な原因は不明のまま。世界的にも解決はされていないと思われる。
sudo /sbin/rmmod uvcvideo
sudo /sbin/modprobe uvcvideo
システム概要
- 5分毎に撮影。 日の出 - 日の入りの時間帯には、毎分撮影。
- 日の出 - 日の入りの撮影前にシステム再起動、撮影後にタイプラプスムービーを作成、サーバーにアップロード。
- 1日撮影後にタイプラプスムービーを作成、サーバーにアップロード。再起動。
- タイミングごとにメール送信も行う。
詳細は他の記事に掲載予定
- 「ラプスムービーの作り方」ffmpegコマンドを使う。
- crontabによってスクリプト起動や再起動をして、上記スケジュールを実現。「crontabの使い方」
- メールサーバーを立てずにメール送信。「ラズパイからメールサーバーを立てずにメール送信」
- アップロードはncftpputコマンドを使い、ブックマークを活用、パスワードをスクリプトに書かなくても良い。「ncftpputでラズパイからレンタルサーバーにアップロード」
- アップロード先ではjsでブラウジングを可能に。lightbox-plus-jquery.js
- 撮影はfswebcamコマンドを使い、上下反転やタイトル設定、サムネール生成など。「fswebcamコマンドの使い方」