raspberry pi zero W にRPi-Cam-Web-Interfaceで監視カメラ製作


前々回セットアップしたraspberry pi zero Wにwebカメラを装着します。動かすソフトはraspberry piに特化したRPi Cam Web Interface (現在 version 6.3.3)を使います。

URL: http://elinux.org/RPi-Cam-Web-Interface

特徴です(webサイトより)

  • 高いフレームレートでの表示,センサーの全エリア使用可能
  • カメラの明るさややコントラスト等を調節可能
  • mp4形式でフルHDビデオ画像をSDカードに保存
  • 静止画およびコマ撮り静止画をSDカードに保存
  • SDカードに保存した動画や静止画をプレビュー可能、サムネイルを指定してダウンロード,zip形式で一括ダウンロード可能
  • 動体検知して録画をする機能、スクリプトを実行する機能
  • 録画動作のスケージュール機能
  • 古くなった録画ファイルの自動削除等々

とても高機能です。カメラからの動画をブラウザ等でモニタできて、それと同時にSDカードに記録できます。動体検知して静止画やコマ撮り静止画、動画いずれかを書込み可能です。同時にスクリプトも実行可能なので、以前失敗したメール送信なども再びチャレンジできそうですね。

また、時間に応じてカメラの設定、録画方式等を変えるなどのスケージュール機能も備えています。経度、緯度を指定して日の出、日没を算出するユニークな機能も備えています。

このソフトはRasiperry Piカメラのみに対応していてUSBカメラには対応していないみたいです。

■ インストール作業
Raspian Jessie Liteをインストールした後に、上記サイトのBasic Installationに書かれているとおりに作業して問題なくインストールできました。ただ、サイトの最後の方にコマ撮り録画をスムーズにするためにgstreamerをインストールした方が良いと書いてあります。sudo apt-get install gstreamer1.0 コマンドでインストールできますが、しばし時間がかかります。

新規インストールするならばFullパッケージのインストールをお勧めすると書かれていたので、Lite ではなくRASPBIAN JESSIE WITH PIXELをインストールする方法を改めて試してみました。前回の記事に書いたように、wpa_supplicant.confを作成し、sshを自動起動させるようにすると、すべてSSH経由で作業できます。

etcher

etcher


[インストールしたOS]
2017-03-02-raspbian-jessie.img
RASPBIAN JESSIE WITH PIXEL 
Image with PIXEL desktop based on Debian Jessie
Version:March 2017
Release date:2017-03-02
Kernel version:4.4
Release notes:Link

■ OS をEtcherなどでSDカードに書き込み後、セットして電源を入れます 

・パスワードを変更します
$ passwd

・不要なパッケージを削除します
$ sudo apt-get remove --purge wolfram-engine scratch minecraft-pi sonic-pi dillo gpicview penguinspuzzle oracle-java8-jdk openjdk-7-jre oracle-java7-jdk openjdk-8-jre
$ sudo apt-get clean
$ sudo apt-get autoremove

・パッケージを最新にします
$ sudo apt-get update
$ sudo apt-get dist-upgrade

raspi-configを起動します
$ sudo raspi-config

・タイムゾーン設定
4 Localisation Options> I2 Change Timezone > Asia > Tokyo

・テキストログインへ変更&自動ログインを禁止
3 Boot Options > B1 Desktop / CLI > B1 Console

・カメラサポートを有効にします
5 Interfacein Options > P1 Camera > Yes

・github リポジトリをクローンしてRPi_Cam_Web_Interfaceをインストールします

$ git clone https://github.com/silvanmelchior/RPi_Cam_Web_Interface.git
$ cd RPi_Cam_Web_Interface
$ chmod u+x *.sh
$ ./install.sh

途中、オプション選択画面になります。Webサーバは3種類の中からお好みで選択できますが、なるべく軽い方が良いかと思い,初めて使うlighttpdにしました。インストール後別のwebサーバにする時はクリーンインストールからやり直すことを勧めています。
また、Webの管理画面にBasic認証をかけるときはUser Passwordを入力します。
(※2018/01/21追記※ コメント欄で教えて頂いたのですが、現時点では認証動作を設定しても機能しないみたいです。)
webcam インストール

AutoStartを選ぶと電源投入後自動起動します。またRPi_Cam_Web_Interfaceフォルダの中のstart.sh stop.shでプログラムのスタート・ストップ可能です。update.shでプログラムのアップデート,remove.shでプログラムの削除となります。

■ カメラを接続します
わたしが購入したのはHD 1080P Camera Module Board 5.0MP Wide Angle Fish Eye For Raspberry Pi A/Bこちらです。(後で気付きましたが赤外線カメラでした)

5MP(2592×1944pixel)画素で 1080p/30fps 720p/60fps 640×480/90 のVideoを配信できます。さらに魚眼レンズ付きといううたい文句でした。どんな映像がとれるのか楽しみです。付属のカメラケーブルではzeroに取り付けられないので、あらかじめPiromoni社からZero用のカメラケーブルを仕入れておきました。ところが…

一瞬目がくらみました


やってしまいました!!カメラケーブル取り付けの時にプラスチック製の留め具を破損してしました。賢明な皆様はこのようなドジはしないと思いますが、お気をつけください。留め具は1mm~2mmぐらいしか動く範囲がありません。取り扱いはソフトにお願いいたします。

ケースは余裕をもたせTAKACHIのプラスチックケース SW-100にしました。電源ですがmicro-usbとGPIOの+5V,Gndどちらに接続しても同じらしいです。今回はGPIOの方にに給電しますが、くれぐれも結線間違いしないようにせねばなりません。+-を逆にしたり他のGPIOピンに電圧をかけたりすると壊れてしまいます。また、未確認ですが電源は3.3Vの電圧でも動作可能らしいです。
ケースに取り付け
さて、カメラとZero Wを結線して電源を入れます。ブラウザでアクセスするアドレスはhttp://ipAddress:port/subfolderとサイトに書かれています。macとwindows10ではipアドレスだけではなくホスト名.localでもアクセスできます。デフォルトの80番でインストールしたならば:portも不要です。

ただ、上記の記述に反し、意外にも今回私のインストール作業では http://raspberrypi.local/ (サブディレクトリなし)が管理画面になっていました。webサーバにlighttpdを選んだ時だけみたいです。インストーラーのバグでしょう。webサーバにapach,nginxを選んでデフォルトでインストールしたときは、マニュアル通りhttp://raspberrypi.local/html/が管理画面になります。

また、http://raspberrypi.local/min.php へアクセスするとコントロールボタン等は表示されず、カメラ画像だけが表示されまます。

ちなみにchrome v59.0 ,IE11,opera v44.0,firefox v51.0ではホスト名でアクセスできるのですが、なぜかMS Edge 38.14393 ではIPアドレスでしかアクセスできませんでした。

アクセスした画面にエラー表示が出るときは,カメラケーブルの接続が悪いか又はraspi-configでカメラを有効にしていない可能性があります。再起動で回避できることもあります。

RPi-Cam-Web-Interface管理画面です

■ 使い方
設定できるパラメータがたくさんあって、私は全部の内容を理解できていません。わかるところを簡単にご説明します。設定した値は System > reset Setting で元に戻すことができるので色々トライされることをお勧めします。(注 : schedule settingsはリセットされません)

[record video start/stop] 現在のカメラ画像の動画録画をスタート・ストップ
[record image] 現在のカメラ画像の静止画をキャプチャー
[tamelapse start/stop]  現在のカメラ画像のコマ撮りをスタート・ストップ
[motion detection start/stop] 動体検知録画をスタート・ストップ(Camera Settingで Motion detect modeをInternalにする必要があります)

※ 4/3 追記 設定項目は多数ありますが、とりあえず Camera Setting > Motion detect mode : Internal 次にmotion detection start だけで動体検知-動画(Video)録画することが可能です。ただ、このままだとSDフラッシュカードがいずれ満杯になってしまいますので、古くなったファイルの削除(後述)だけは、設定しておいた方が良いでしょう。

[Camera Setting]
Camera Setting

Resolutions: Video及び静止画,解像度等を設定します
Timelapse-Interval (0.1…3200): コマ撮りの間隔(秒)
Video Split : 動画を分割します(秒)
Annotation (max 127 characters): アノテーション デフォルトで日時が表示されています
Buffer (1000… ms), default 0: 動体検知して録画されるまでにタイムラグがあるので画像のバッファリングを予めおこないます(ms)
Sharpness: シャープネス
Contrast : コントラスト
Brightness : 照度
Saturation : 彩度
ISO : ISO感度
Exposure Mode : 露光モード
White Balance : ホワイトバランス
Image Effect : 画像にイフェクトをかけることができます 
Rotation : 90度単位で画像を回転させます
Sensor Region : 画像センサーの使う範囲を指定
MP4 Boxing mode : h264動画をmp4に変換するモード
Motion detect mode : 動体検出モード

MP4 Boxing mode は動画ファイルのmp4変換作業の選択で、backgroundにするとブラウザで動画を再生することができますが、CPU処理を消費してしまい反応が遅くなります。offにするとブラウザでは見ることができずダウンロードしてからVLCメディアプレーヤーなどで再生することになります。その場合でもサムネイルは作成されます。

Motion detect mode : Internalにすると Motion Settingsのボタンが出現して動体検出の設定ができるようになります。

アノテーションはデフォルトで日時が表示されますが、スクリプトを組んで他の情報も表示させることが出来るみたいです。

[Motion Settings]
Motion Settings

動体検知のセッティングです。風で木の枝が動いたことなどで録画スイッチが入ってしまうとか、細かく考えると動体検知の調整は少々めんどうです。ただ、デフォルトのままでも動体検知しますので詳細にセットしたい時だけ値を変更するのが良いと思います。

Noise level : ノイズと動きを区別するために画像をフィルタします
Threshold : 画像変化の検知基準をpixl数でセットします
Clipping factor : Thresholdで変化のあったフレームを何個で有効とするかの値
MasK Image: 不検知部分のファイルを作成して、動体検知の範囲を絞ります。ファイル形式はPGMで画像と同じ幅,高さでなければいけません。
Changes Frames to start : スタートとなる動体検知のフレーム数
Still Frames to stop : ストップとなる動体不検知のフレーム数

自分の理解ではスレッショルドを超えたフレーム数が(Changes Frames to start)×(Clipping factor)個になった時にスタートとなるのではないかと思います。誤っていたらすみません。

[System]

シャットダウンやリブート、[Camera Setting]と[Motion Settings]パラメータのリセットができます。Default Stream とMJPEG Streamの切り替えもありますが、何が違うのか私にはわかりません。

[Edit schedule settings]
Edit schedule settings
指定した時間にカメラの感度等などの設定や記録する方式を変更するなど、コマンドを実行することができます。Command referenceのボタンを押すと実行できるコマンドの説明が出てきます。デフォルトは24時間休みなく動体検知したときに動画を記録する設定になっています。管理画面トップのmotion detection start ボタンをクリックすると動体検知録画がはじまります。起動と同時に動体検知する場合はこの画面のPeriod Start欄に md 1を書き込みます。

MOtion Start Stopの欄ですが、コマ撮りをしたいときはca 1をtl1 ,ca 0 を tl 0 に変更します。同様に静止画1枚を撮りたいときときはca 1を
imに変更します。

Days Su-Sa 欄のチェックは日曜日から土曜日に対応して、曜日による動作指定です。チェックがない曜日はその右にかかれている動作を行いません。

● 録画した画像ファイルがSDカード容量を超えてしまうのを防ぐためにファイル削除機能があります。2通りの設定方法があります。
1. PurgeVideo_Hours PurgeLapse_Hours PurgeImage_Hours それぞれ動画、コマ撮り静止画、静止画が指定時間以上古いファイルを消去します。48を指定すると2日以上たったファイルは消去されます。
2. ファイルの最大の記録スペースを指定して、それを超えた時に古いファイルから消去する方法。
PurgeSpace_ModeExを下記のいずれかで選んで値を PurgeSpace_Levelに設定します。
Min Space % (書込み可能ファイル容量の最小値 パーセント)
Max Usage % (使用済ファイル容量の最大値 パーセント)
Min Space GB (書込み可能ファイル容量の最小値 ギガバイト)
Max Usage GB (使用済ファイル容量の最大値 ギガバイト)

このファイル削除作業はManagement_Interval に設定された秒数(デフォルトでは1時間)ごとに行います。
同時に実行させたいスクリプトがもしあれば、Management_Command を指定します。このスクリプトはインストールしたサブディレクトリ下にあるmacroディレクトリに保存されていて、実行可能でなければなりません。

● DayModeはAll Day(全日)の他に Sun Based (日の出、日の入りの時間を基準) Fixd Time(特定の時間指定)があります。

Sun Based DayMode

Sun Based DayMode

Sun Based DayMode は一日をDawn(明け方),Day(日中),Dusk(夕暮れ),Night(夜中)の4つに区切ります。日の出を基準にDawnStart_Minutes(負の値) DayStart_Minutes を設定して明け方の時間を定めます、日の入りを基準にDayEnd_Minutes DuskEnd_Minutes を設定して夕方の時間を定めると、4つの時間帯が定まります。

日の出、日の入りの時刻は自動的に計算されますが、そのために Latitude(緯度) Longtitude(経度) GMT時間との差を指定します。東京の例をとるとLatitude=35,Longtitude=139,GMTOffset=9 になると思います。

Period Start欄にその時間が来たら実行させたいコマンドを設定します。

Fixed Times DayMode

Fixed Times DayMode

Fixed Times は時間固定で指定です。

●またログファイルの操作もここで行うことが出来ます。

[Download Videos and Images]Download Videos and Images

録画したファイルのサムネイルが表示されます。プレビューをしたり、必要なファイルのダウンロードを行います。先ほど述べたようにMP4 Boxing modeがBbackgroundになっていないと、動画のプレビューはできません。

■ 感想
とても使いやすく、動体検知録画もできるので非常に便利です。以前作ったESP-WROOM-02+Arducamではパワーが足りませんでしたが、今回はとってもいい感じです。まだ、長時間使っていませんが、Zeroのスペックでデータの通信がwifiでも十分実用になりそうです。素晴らしいソフトを作ってくださった作者の方に感謝します。

■ またもや失敗談
夜、蛍光灯の下で撮影する時は問題なかったのですが、昼間日光の元で撮影すると全く色合いがおかしいことに気付きました。最初は理由がわからず、一生懸命色彩の調整を行い無駄な努力をしていましたが、このカメラはナイトビジョンだったのですね。他の方の記事を読んで、ようやく理解できました。自然光では色が変で、画像もぼけた感じになってしまいます。写る角度(範囲)は広いですが、選択間違いでした。とりあえず映像はわかりますので、しばらく使ってみたいと思います。

自然光では色が変です

部屋を暗くして赤外線LEDライトをあててみました

raspberry pi zero W にRPi-Cam-Web-Interfaceで監視カメラ製作」への28件のフィードバック

  1. ピンバック: Pi Zero WとPiカメラで超小型なWiFi対応暗視カメラ監視システムを作ってみた(STLデータ公開有り) | きっと何かに役立つでしょ!?

  2. 私もRpi Cam Web Interfaceというものを見つけて試してみました。
    表示、動体検知録画など一連の動作はもんだいないのですが、1つ問題があります。
    それは、ユーザー、パスワードをinstall.shで設定ぢてインストールしてもアクセスしたときに何も聞かれず、そのまま表示されてしまうことです。
    初心者ではありますが、update.shでパスワードなどを変えてインストールしてみて、ファイルの日付などでどのファイルが書き換えられたかなど調べたりしたのですが、根本的に変わってないので、原因はわからないです。

    RaspberryPi ZeroWでJesseiでRpi Cam Web Interfaceは6.4.14です。
    install.shの時になにかテクニックがあるのか、OS自体に何か設定があるのでしょうか。
    ちなみにmjpg-streamerは宇ユーザー、パスワードを聞いてきます。
    どうか助言いただけないでしょうか。

    • takkunさんこんばんは、記事をご覧いただきありがとうございます。

      私のところではインターネット側からのアクセスは不要で、認証は設定しなかったので分からなかったのですが、どうやらinstall.shに不具合があるみたいですね。
      webサーバは何を選択されたでしょうか。確信はありませんがapacheを選択するとうまくいくかもしれません。ただ、当方では既に所定の場所にRPi-Camを設置してしまっているので、再インストールして確かめることができません、間違っていたらごめんなさい。

      また、設定ファイルを直接書き直してユーザ認証を追加する方法もあります。私はlighttpdを選択したのですが、試しにSSHで接続して下記の記事を参考に設定したらユーザー認証が正しく動作しました。

      ■lighttpdでユーザー認証を行うには(Basic認証編)
      http://www.atmarkit.co.jp/flinux/rensai/linuxtips/847lighttpdbasic.html

      ただ上記に記載されている内容で注意すべき点は、lighttpdを選択するとhtpasswdコマンドがインストールされないようなので、スーパーユーザーにて
      # apt-get install apache2-util
      でhtpasswdコマンドをインストールする必要がある事と、htppasswdを作成するユーザ名、lighttpd.confに記載する「認証が必要なディレクトリ」を適切に指定する事が必要です。apacheやnginxでも同様にウェブから設定方法を探すことができると思います。

  3. お忙しい中、ありがとうございました。
    残念ながら、素人すぎてうまくいかず・・・今書き込みをさせていただいてます。
    Rpi Camはapacheでも・・3種類とも同じくダメでした。
    それ以外にユーザー、パスワードの文字数や数字などの制限があるのかとも思い何パターンかやってはおりますが、ダメです。

    先ほどご返信をいただいたので、教えていただいたurlを参考にやってみました。
    lighttpdにしてます。

    1.最初のhtpasswd -c ・・・というのはうまくパスワードができました。
    エラーは出なかったのですが、secretというのを希望のユーザー名にすればいいのですよね?
    仮にabcdとしました。

    2.次のlighttpd.confの編集ですが、現状
    pi@raspizw:~ $ cat /etc/lighttpd/lighttpd.conf
    server.modules = (
    “mod_access”,
    “mod_alias”,
    “mod_compress”,
    “mod_redirect”,
    )
    でしたので、”mod_auth”,を追記しました
    (関係ないかもしれませんが位置はmod_aliasの下に追記)

    3.次にそのlighttpd.confの最終行に
    auth.backend = “htpasswd”
    auth.backend.htpasswd.userfile = “/etc/lighttpd/lighttpd.user.htpasswd”
    auth.require = ( “/abcd/” =>
    (
    “method” => “basic”,
    “realm” => “Secret Zone”,
    “require” => “valid-user”
    )
    )
    をコピーして貼り付けました。
    ユーザー認証が必要なディレクトリとコメントがありましたが、secretのところにそのディレクトリをいれるのか?
    =>の後に”?????”のように?にディレクトリを入れるのかなどわかりませんでした。
    そもそも認証が必要なディレクトリというのが今回であればどこなのかもわかりませんが。

    4.最後にservice lighttpd restartとして何か聞いてきたのでpiの1を選びパスワードを入力するのですが、以下のエラーになります。
    pi@raspizw:~ $ service lighttpd restart
    ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
    Authentication is required to restart ‘lighttpd.service’.
    Multiple identities can be used for authentication:
    1. ,,, (pi)
    2. root
    Choose identity to authenticate as (1-2): 1
    Password:
    polkit-agent-helper-1: pam_authenticate failed: Authentication failure
    ==== AUTHENTICATION FAILED ===
    Failed to restart lighttpd.service: Access denied
    See system logs and ‘systemctl status lighttpd.service’ for details.

    このエラーはいった何なのでしょうか?
    私なりにいろいろlighttpd.confをいじったりしているのですが・・・同じエラーがでます。

    ただ、やりながらわからないのが、私の上記のような操作でRPi Cam Web Interfade(以下RPi Cam)との関連性が・・・・?
    そもそも関連性といっても実際カメラ画像をブラウザに表示する際、まずどこにアクセスしているかもよくわかっていないのですが。
    (/var/wwwかな~??となんとなく思ってはおりますが、あくまで勘です)
    教えていただいたurlには最後のほうにWebブラウザでsecretディレクトリにアクセスすると・・・と書いてありますが、secretディレクトリとは?
    今回の場合abcdディレクトリということになると思いますが・・・abcdはユーザー名のはず・・・?
    と、いうぐあいに????だらけで困っております。
    もっと勉強してから出直してこいといわれれば確かにそうなのですが、何か助言をいただけないでしょうか?

    • takkunさんおはようございます。apacheでもダメでしたか。お手数をおかけして申し訳ありませんでした。

      lighttpdにユーザー認証追加の件ですが

      >1.最初のhtpasswd -c ・・・というのはうまくパスワードができました。
      >エラーは出なかったのですが、secretというのを希望のユーザー名にすればいいのですよね?

      ユーザー名は他の設定とのからみでraspbianのユーザー名と同じでなければならないと思います。デフォルトから追加してなければsecretをpiにします。

      >2.次のlighttpd.confの編集ですが、現状

      これはOKだと思います

      >3.次にそのlighttpd.confの最終行に
      >auth.backend = “htpasswd”
      >auth.backend.htpasswd.userfile = “/etc/lighttpd/lighttpd.user.htpasswd”
      >auth.require = ( “/abcd/” =>
      > (
      > “method” => “basic”,

      takkunさんと私の環境が同じかどうかわからないのですが、ブラウザにipアドレスだけでRPi-Camの画面にアクセスできるのであれば上記の”/abcd/”の所を”/”にしてみてください。

      >そもそも関連性といっても実際カメラ画像をブラウザに表示する際、まずどこにアクセス
      >しているかもよくわかっていないのですが。

      /var/www/html/ をアクセスしていると思います。上記の”/”はドキュメントルート(/var/www/html/ )を示しています。(1/21追記 @ITの記事とraspbianのlighttpdは設定が少し異なっているみたいです)

      上記の修正で大丈夫だと思います

  4. 何度もありがとうございます。
    結果的におかげさまでうまくいきました!!

    教えていただいたように修正したところ、service lighttpd restartではあいかわらず同じエラーがでるのですが、認証画面がでました。
    なんのエラーなのかさっぱりわかりませんが、目的は達成できましたので、感謝しております
    本当にありがとうございました。

  5. 同じエラーが出る件ですが、
    sudo service lighttpd restart
    のようにsudoでやればエラーは出ないことがわかりました!

    • 認証動作成功おめでとうございます。お役に立つ事ができて良かったです。

      sudoの件ですが、記事中の
      # service lighttpd restart
      “#”プロンプトはスーパーユーザーでコマンドを実行している事を示していますので、覚えておくと便利ですよ。

      • そうなんですね!
        #と$は気分?みたいなものかと勝手に思ってました。
        覚えておきます!
        大変お世話になりました。

  6. 大変貴重な情報をありがとうございます。
    非常に勉強になりました。

    他の記事も含め全て拝読させて頂きました。

    RPi-camについてお聞きしたいですが、現在、動体検知モードの時に動体の周りに、良くある緑色の認識線を表示させる様な事は可能でしょうか。

    また、カメラの画角内に動体が入った場合アナウンスを流す様な事も出来たらなぁーと思い色々な他のネット方の情報も拝見したのですが、見つけられず。。。

    やはり他のどのブログよりも、筆者様が書いた内容が1番分かりやすく、非常に参考になり、何とか動かせたので、不躾ながらご質問させていただきました。

    何卒、よろしくお願い致します。

    • ポポドンさんこんにちは。記事をご覧いただきありがとうございました。お褒めの言葉ありがとうございます。早速ご質問の件ですが、

      >現在、動体検知モードの時に動体の周りに、良くある緑色の認識線を表示させる様な事は可能でしょうか。

      この事を実現するような機能は残念ながら無いと思います。

      また、「カメラの画角内に動体が入った場合アナウンス」という事ですが、

      私はまだ試した事は無いのですが、本家のRPi-Cam-Web-Interfaceの説明に下記の記述があります。( https://elinux.org/RPi-Cam-Web-Interface#Basic_usage )

      Monitor Mode
      Motion detection will also trigger the macro motion_event.sh if set up (within /var/www/html/macros/)

      と書かれていますので、/www/html/macros/ フォルダに motion_event.shという名前のシェルスクリプトを作製しておくと、動体検知をしたときに実行されるみたいです。

      また、同様に

      Example: Send an email when motion is detected
      If you want the email sent when a capture is done then use the job macro facilities. For example, a completed video capture will trigger end_box.sh ….

      こちらの記述から同じく/www/html/macros/ フォルダに作った end_box.shという名前のシェルスクリプトを動画キャプチャ後、動作させる事ができるみたいです。いずれのシェルスクリプトも、www-dataユーザが実行できるパーミッションが必要で、オーナーもwww-dataが好ましいと書かれています。

      以上ご参考まで。ポポドンさんの構想が実現することを願っております。

  7. こんにちは
    今年1月に初心者の私に親切に教えていただき、ありがとうございました。
    おかげ様で、今日も動いております(^^
    ただ、1つ問題がありアドバイスをいただけないかと思っております。

    現在RaspiWとRaspi3で動態検知で録画をしております。
    が、1,2週間すると止まってしまっております。
    ブラウザでアクセスすると映像がリアルタイムで表示されるのですが、それが止まっているのです。
    RPi Camがフリーズしたような感じで動態検知も動いておらず、下の方にあるSYSTEMの中のRebootでいつもRaspiを再起動させております。
    bufferを4000から2000msに減らしたり空き容量を8GB取るようにしたりと
    なるべく負荷がかからないようにして試しますが、ほとんど同じです。
    風の強い日などエンコード等がおいつかずそうなってしまう感じですが、知らない間に止まってしまうので困ってます。

    Raspiにはソフトウェアのウオッチドックタイマーを入れており、数か月に1回くらい何らかの理由により自動で再起動がかかっているようです。
    RPi Webも自分のプロセスが正常ではない場合、再起動させるようなことは可能なのでしょうか。
    もちろん、他の方法でもかまわないのですが、思いつきません。

    • takkun さんこんにちは。書き込み頂いたのを見落としていました。返事が遅れてすみません。

      >現在RaspiWとRaspi3で動態検知で録画をしております。が、1,2週間すると止まってしまっております。

      私のところの RaspiWは幸運にも連続無休で動作していますが、過去一度だけ記録スペースが無くなり動作を停止していました。その時は[Edit schedule settings]の下記項目の設定を「15分間隔でチェック」「空き容量を全体の10%(=800MB 私の場合8GBメモリ使用なので)」に設定して以降問題なしでした。

      Management_Interval 900
      PurgeSpace_ModeEx Select Mode Min Space %
      PurgeSpace_Level 10

      今回takkunさんの場合は空き容量が十分すぎるほどの8GBなので、原因が別なのでしょう。ただ、管理画面からRebootできるのであれば、Raspi全体がフリーズしているわけではないようです。

      >RPi Webも自分のプロセスが正常ではない場合、再起動させるようなことは可能なのでしょうか。

      残念ながらこのようなことは可能か否かわかりません。代替案として一日一度差し支えが無いと思われる時刻に、強制的に再起動させるのはいかがでしょうか?失われてしまう画像もあるでしょうが最小限の損失で済むと思います。

      具体的にはcron と呼ばれるソフトに再起動のスケジュールを登録します。スーパーユーザーになって次のように作業します。

      # crontab -e

      ※一番最初は下記のように使用するエディタを聞かれますのでいずれかを選びます。

      no crontab for root ? using an empty one

      Select an editor. To change later, run ‘select-editor’.
      1. /bin/ed
      2. /bin/nano <---- easiest
      3. /usr/bin/vim.tiny

      ※続いて最下行に実行する時間と再起動コマンドを書き込みます。
       
      0 12 * * * shutdown -r now

      ※この例は毎日正午に再起動を行うコマンドになります。

      記述の方法はhttps://www.server-memo.net/tips/crontab.html
      こちらなどに詳しく書いてあります。

  8. お忙しい中、貴重な内容ありがとうございます。
    私の場合、原因が不明で、空き容量も2GBから現状8GBにだんだん増やしていきましたが、2GBよりかはましかも?っていう程度です。
    あと止まる原因の1つはバッファが関係あるような気がしてます。
    確か、4000msにしていたのを1000msにすると頻度が少なくなってたような気もします。
    Rapi WなのでCPUパワーが不足していてエンコード(デコード?)している時にモーション検知されると止まるような感じです。
    (が、Rapsi3でも同様な症状がでるので、よくわかりません)
    ちなみに止まってるときは必ず録画動画サムネイルがBusyのままです。

    いずれにせよ原因が分かったとしても私では解決できないので、ご返信いただいたような方法であれば万が一止まっても最大1日だけなので、良い方法だと感動しました!
    そのようなことは全く思いつかず(やり方も知りません)、ありがとうございます。
    今日の時点では正常に動いているようなので、次回止まった時、試してみたいと思います。

    • 本家のRPi-Cam-Web-Interfaceを拙い私の英語読解力をもって読み直してみました。間違っているかもしれませんが
      Frequently Asked Questions - How do I record video all day?の項目に「カメラストリーミングがフリーズした時にワッチドッグリセットがかかる」と書かれているようでした。この機能不全が今回の問題ですね。

      takkunさんが指摘されているようにエンコードにCPUの能力が追いつかないのが原因かもしれませんね。

      同じ項目に 「Camera Settings」 の「Video Split」に秒数を書き込み、1ファイルの最長時間(例として1800)を制限するように書かれていますが、これは有効かもしれません。

      また、風の日にフリーズするとのことですが、木の枝等が揺れて録画のトリガとなっているのであれば、少し大変ですがマスクファイルを設定して不要な録画を行わないのも一つの方法かと思います。

      後は他の問題が生じてしまいそうですが、解像度を下げる事も選択肢になるのかな、と思います。

      ついですが、リセットを行うと/var/www/html/media/ ディレクトリにmp4に変換されない*.h264ファイルが溜まっていくので必要に応じて削除等の作業がいるみたいです。でも、お使いになっている大容量のSDメモリーカードなら、あまり気になくても良いですね。

  9. 調べてくださり、感謝の思いです。ありがとうございます。
    標準でウォッチドッグ機能があったとはうれしいですが・・・私の環境では動いていないということですね。
    最近台風がよく来るため枝や葉っぱが揺れるので、録画が終わったと同時にまたすぐトリガがかかってしまう感じで忙しそうです。

    よく考えてみると、録画の一覧を表示した時いくつかBusyがありますが、たいがいは止まらずに次のトリガーで録画が正常にされていっております。
    その時は正常にウォッチドッグが正常にかかったのかもしれませんね。
    同じBusyでも止まったりそのファイルをスキップするように次の録画がされるのはなぜだろうと思っておりましたが、ウォッチドッグタイマーが正常に働いたと考えれば納得です。
    そして、何らかの理由によって正常に働かないときはBusyで止まってしまう。
    その際、おっしゃる通り*h264ファイルが溜まるので削除しておりました。

    マスクは以前挑戦しまいたが、うまくいきませんでした・・・。
    初めて見る拡張子がpgmの・・・そもそも英文でやり方がよくかわらですが、あれこれやってそれらしいマスク画像をいくつか作ってみたのですが、マスク画像の有無でトリガの変化はなかったです(涙
    フォーマットが違うのか・・・・そもそも全く違っているのか・・・??

    設定ですが、Video Splitはインストール時のままで1800sでした。
    (録画動画は殆どが30秒以内でたまに3分くらいあります)
    解像度はインストール時FHDはパワー的に厳しそうだったので、1296×972の15fpsの設定で使ってきました。
    画角が狭くならなければ良いのですが、もっと下げてみるのは良い方法ですね。
    原因がCPU負荷でるのであれば解像度を下げれば緩和されるはずなので、原因を明確にするためにも試したいとこです。

    • 1296×972の15fps ですか、私のところは1280×720 25fpsですが、問題なく動作しています。原因はどこなのでしょうね。

      マスクがうまく動作しなかったとのことでしたので、私も設定してみました。注意すべきところがあって、結構「はまって」しまいました。備忘録をかねて作業報告をいたします。

      本家 RPi-Cam-Web-Interface Tutorials – How to make a motion mask image こちらに書かれている方法で作業しました。

      (1) 管理画面Top – [Edit schedule settings] -[Show Log] と進み width=xx height=YYの行を探します。私の所のRpi Camは解像度が 1280*720なのですが、width=81 height=45でした。概ね1/16になっていました。

      (2-1) 管理画面Top – [Camera Settings] と進み Resolutions(解像度)の項目にて Imageの解像度がVideoと同じになっているのを確認してから[record image]ボタンで現在の画像を1枚撮ります。

      (2-2) 管理画面Top – [Download Videos and Imades] に進み、先程撮った画像を表示させ コピーして手元のPCに取り込みます。

      (3) PGM形式を扱うことのできるドローソフトで取り込んだ画像ファイルを修正します。私はphotshopで作業しました

      (4) 画像を(1)で調べたxx * yy (ピクセル)に縮小します。

      (5)動態感知させたくない部分を「黒」動態感知させる部分を「白」で画像を塗りつぶします。今回は実験なので全て黒で塗りつぶしました。

      (6)読み込んだ画像はカラーモードなのでグレースケールにモードを変更します。

      (7)適当な名前を付けてpgm形式で画像を保存します。ここでは仮にzzz.pgmとします。私の場合作成したファイルのサイズは約3.5KBでした。

      (8)保存したファイルzzz.pgmをRpi Camの好きなディレクトリにコピーします。sambaがインストールされていれば簡単ですが、私はscpを使ってコピーしました。

      (9)管理画面Top – [Change motion settings]と進みMask Imageの項目でコピーしたファイルを指定します。私はホームディレクトリにコピーしましたので”/home/hogehoge/zzz.pgm”と入力しました。

      (10) SSHでRpi Camへアクセスして先程upしたファイルのアクセス権を変更します。

      $ chmod +r /home/hogehoge/zzz.pgm

      (11)再起動します。

      私のハマりどころは(6)と(10)を忘れてしまったことと(4)画像縮小時 xx*yyの値の入れ間違いでした。以上ご参考まで

  10. さすがです!
    私は挫折しました・・・
    ちょっと昼休憩に再チャレンジ・・・進めていくと以前のことを少し思い出してきました。
    最終的に出来上がったファイルはP2(テキスト)でしょうかP5(バイナリ)でしょうか?
    今作成したpgmファイルは大きく15kBくらいあります!?
    テキストのP2なので見てみると中身は以下のような感じです。
    (解像度は1280*960にしてます)
    P2
    80 60
    255
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
      ・
      ・
    どうも15kBと大きいのは、8ビットのグレースケールになっているのが原因で、255を15にテキストエディタで置換すれば良いものか・・・?
    それともバイナリのpgmファイルなのでしょうか?

    ちなみに以前作ったpgmファイルは調べてみると4.75kBで、P5のバイナリでした。
    しかも(10)のアクセス権の変更など夢にも思っていなかったので実行していませんでした。

    いずれにしてもP2とP5のどちらなのでしょうか?
    教えていただけないでしょうか。
    あと、黒がマスクで白が反応部分ということも教えていただき、やる気がでているところですが・・・ファイルの大きさでつまずきました。。。

    • こんにちは

      >最終的に出来上がったファイルはP2(テキスト)でしょうかP5(バイナリ)でしょうか?

      P2とP5の区別を私は理解できていないのですが、出来上がった私のpgmファイルはバイナリでした。

      形式ですが、本家に

      6) Set image to be Grayscale (e.g. 8bits per pixel monochrome).

      この様に書かれているので、8ビットのグレースケールで良いと思います。

      ファイルサイズの件ですが、今回新たに黒と白を適当に塗り分けて作ってみるとサイズは11KBでした。前回は全て黒で塗りつぶして作成したので少なかったのかも知れません。不確かな情報をUPしてしまい、すみませんでした。

  11. pgmファイルって私にはなじみが無く、ややこしいですね。
    (バイナリのpgmもテキストエディタで開くと最初の行にP2などと書いてあるようです)
    白がモーションで黒はマスクということも教えていただいたので、昨晩、バイナリで作成しました。
    ・・・本家によくみるとバイナリと書いてありました(すみません)。
    ファイルは4.8kBとなりました!?
    11kBと比べると少ないようにも思いますが、とりあえずこれでやってみます。
    以前はPhotoshopのCS??でpgmを作った記憶がありますが、おかしくなってしまい、今はかなり古いPhotoshopはCSで作成しようかと思いましたが、pgm保存できませんでした。。。?
    なのでPhotophopで白黒のbmpを作り、Gimpとかいうものでpgmにしました。
    ファイルが5kBしかないのはそれが原因なのかどうかは不明ですが、schduleのログを見ると・・・.pgm loadedとなっているので、読み込みはされているようです。

    昨夜から先程までモーションでの録画はいくつかされておりました。
    希望のマスクが機能しているかは不明ですが、悪くはなっていないようです。
    うまくいくことを祈って様子をみることにします。

    いつもいつも本当にありがとうございます。

  12. 貴重な情報ありがとうございます。お一つお聞きしたいことがあります。タイムラプス画像をずっと取っていると、多分容量が大きくなりすぎて、ZIPでのダウンロードができなくなります。ビデオの場合は、スプリット機能があるのですが、タイムラプスの場合は、どのようにしたら、全ファイルを取り出せるのでしょうか?よろしくお願いいたします。

    • はえさんこんにちは。記事を読んでいただきありがとうございます。本家のサイトをもう一度見てみました。断言はできないのですが、タイムラプス画像の分割設定は無いみたいですね。ファイルのダウンロードですが、LAN内にRPi CAMを設置されているのであればsamba(ファイル共有)を設定してファイルマネージャー(エクスポーラ)で持ってくるのはいかでしょうか。私は設定したことはないのですが、本家webの“CIFS / Samba / Windows Share”こちらに設定方法が書かれています。LAN外のリモートに設置してあるのであればSCPコマンドなどでコピーでしょうか。

      • 管理人様、ご返事ありがとうございました。そして、いろいろと調べてくださり、感謝でいっぱいです。こちらmacを使っていまして、ネットで調べたところ、Netatalkというのを導入しまして、macでraspberyypiのOSのホームディレクトリにつなげることができました。ただ、タイムラプス画像が/var/www/html/mediaにあったので、mediaフォルダをラズパイのホームディレクトリの画像フォルダにコピペして、macの方でとりだすことができました。多分、素人ですので、スマートじゃない方法だと思いますが、とりあえずできた次第です。この度はとても参考になりました。ありがとうございました。

        • こんにちは。macのnetatalkは使ったことがないので良くわからないのですが、スーパユーザーになってraspberyypi の/var/www/html/media とホームディレクトリにシンボリックリンクを貼るとコピー不要で直接アクセスできるような気がします。

          一例ですが下記のコマンドでホームディレクトリのgazouからアクセスできるかもしれません。
          # ln -s /var/www/html/media /home/ユーザー名/gazou

          • 管理人様、ありがとうございます。試行錯誤して、bind mountというやり方でリンクできました。

          • それはよかったです。RPi-CamはSDメモリーカードの空き容量にさえ気をつければ、とても安定して動きますよ。

  13. こんにちは。年甲斐(70代)もなくパイカメラに興味を持っているものですが、Rpi Cam Web Interfaceのインストールに失敗してパイカメラ画面がモニターに出なくなり困っており、このサイトにたどりつきました。
    エラー内容は、mmal_vc_port_enable——などの文字が出るのですが内容が理解できません。また~/RPi_Cam_Web_Interface $ ./stop.shを実行すると表示する時があるのですが原因がわかりません?
    解決方法をご教示いただければ幸いです。

    • くまさんさんこんにちは。投稿いただいたコメントを見落としてしまい、返信が大変遅れてしまいました。申し訳ありませんでした。
      Rpi Cam Web Interfaceを再インストールされたと言うことですね。いま本家のwebを改めて見てみましたら、一部インストール方法が変わっていました。OSが現在のBusterより前の場合、stretchなどでは下記の操作でインストールするそうです。

      # git clone https://github.com/silvanmelchior/RPi_Cam_Web_Interface.git
      # cd RPi_Cam_Web_Interface
      # mv raspimjpeg raspimjpeg-buster
      # mv raspimjpeg-stretch raspimjpeg
      # cd ..
      # ./install.sh

      もしOSのバージョンが上記に該当するようでしたら、再度インストールされてみてはいかがでしょうか。

管理人 へ返信する コメントをキャンセル

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください