モーションでPythonスクリプトを実行中に問題が発生しました。

モーションでPythonスクリプトを実行中に問題が発生しました。

ビデオをGoogleドライブにアップロードするために、CCTVをモーション検出としてラズベリーパイにウェブカメラを設定しようとしています。ジェレミー・ブライスの脚本

モーションが正常に動作して端末でテストされると、Pythonスクリプトが実行されます。

ちなみに、Motion.confのon_movie_endオプションにスクリプトを追加すると、スクリプトは実行されません。

ファイルで使用するスクリプトは次のとおりです。

On_Movie_End /etc/motion/uploader.py /etc/motion/uploader.cfg %f

また、on_movie_endでPythonスクリプトを実行するbashスクリプトを実行しようとしましたが、そのうちの1つも機能しませんでした。私はLinuxに初めて触れたので、私が正しいかどうかは完全にはわかりません。

スクリプトは次のとおりです。

#!/bin/bash
VIDEO=$1 
/etc/motion/uploader.py /etc/motion/uploader.cfg VIDEO

Motion.conf から /etc/motion/uploaderscript.sh %f

答え1

次の点を確認してください。

  1. 私が見たすべての例on_movie_endではOn_Movie_End

  2. 両方のスクリプトに実行権限があることを確認してください。追加されていない場合:

    sudo chmod +x /etc/motion/uploader.py
    sudo chmod +x /etc/motion/uploaderscript.sh
    
  3. Pythonスクリプトのstderrをファイルにリダイレクトします。これはエラーをキャッチするのに役立ちます。これに合わせて.shファイルを編集します(注$VIDEO:これはbashで変数を参照する正しい方法です)。

    #!/bin/bash
    VIDEO=$1 
    /etc/motion/uploader.py /etc/motion/uploader.cfg $VIDEO &> /tmp/on_movie_end.log
    

答え2

モーションでPythonスクリプトを再生する方法はまだわかりません。代わりに、テキストファイルを生成するbashスクリプトを実行します。起動時に実際のPythonスクリプトにテキストファイルが存在することを確認するwhileループを実行し、存在する場合は残りのスクリプトを実行します。

答え3

この構成は私に適しています。

on_movie_end /usr/bin/python /home/myuser/Scripts/MyScript.py

もちろん、スクリプトにはモーションプロセスを実行するための正しい権限が必要です。設定の詳細については、Motionのドキュメントで確認できます。

https://www.lavrsen.dk/foswiki/bin/view/Motion/ConfigFileOptions

答え4

簡単な解決策がありますが、誰かがそれがどのように機能するかを説明する必要があります。キャンペーンをルートで開始します。 /etc/rc.local に 'sudomotion' reboot 行を追加すると、ほとんどのイベントは root、on_event_end sudo... コマンド、またはスクリプトで始まると機能します。

関連情報