slackで動体監視を!
まだ途中で動作不安定なので。。
232_RasPi監視カメラ-slackへ転送・・まだNG
234_RasPiで監視カメラの動体検知で電話通知・・slack投稿OK
の再トライになります。
http://qiita.com/kinpira/items/bf1df2c1983ba79ba455
を参考
まだ途中で動作不安定なので。。
232_RasPi監視カメラ-slackへ転送・・まだNG
234_RasPiで監視カメラの動体検知で電話通知・・slack投稿OK
の再トライになります。
http://qiita.com/kinpira/items/bf1df2c1983ba79ba455
を参考
■motionの準備、インストール
$ sudo apt-get install -y motion
■motion.confの設定変更
# vi /etc/motion/motion.conf
<変更内容>
daemon off
ffmpeg_output_movies off
target_dir /tmp/motion
$ sudo apt-get install -y motion
■motion.confの設定変更
# vi /etc/motion/motion.conf
<変更内容>
daemon off
ffmpeg_output_movies off
target_dir /tmp/motion
■Slackの設定
■Slackのアカウント登録(済)
username:h1729708
pass:y********20170416
Group:kuma-team
■SlackToken発行ページからAPI用のTokenを発行
https://api.slack.com/methods/channels.list/test
■Slackのアカウント登録(済)
username:h1729708
pass:y********20170416
Group:kuma-team
■SlackToken発行ページからAPI用のTokenを発行
https://api.slack.com/methods/channels.list/test
URL
https://slack.com/api/channels.list?token=xoxp-169850188932-170503111255-169851330916-e8dfbff8d7561bf686f4fc656083ed2f&pretty=1
https://slack.com/api/channels.list?token=xoxp-169850188932-170503111255-169851330916-e8dfbff8d7561bf686f4fc656083ed2f&pretty=1
{
“ok”: true,
“channels”: [
{
“id”: “C50ET3AGP”,
“name”: “general”,
“is_channel”: true,
“created”: 1492320797
・・・・・
・・・・・
■Slackerをインストール
$ sudo pip install slacker
“ok”: true,
“channels”: [
{
“id”: “C50ET3AGP”,
“name”: “general”,
“is_channel”: true,
“created”: 1492320797
・・・・・
・・・・・
■Slackerをインストール
$ sudo pip install slacker
■インストール後、まずは対話型でTEST
$ python
>>>from slacker import Slacker
>>>token = “xoxp-169850188932-170503111255-169851330916-e8dfbff8d7561bf686f4fc656083ed2f”
>>> slacker = Slacker(token)
>>> channel_name = “#” + “general”
>>> message = ‘API on 2017/05/03 07:42 朝だよ!’
>>> slacker.chat.post_message(channel_name, message)
$ python
>>>from slacker import Slacker
>>>token = “xoxp-169850188932-170503111255-169851330916-e8dfbff8d7561bf686f4fc656083ed2f”
>>> slacker = Slacker(token)
>>> channel_name = “#” + “general”
>>> message = ‘API on 2017/05/03 07:42 朝だよ!’
>>> slacker.chat.post_message(channel_name, message)
(私も)来ました!
(私も)無事Slackに投稿できる事を確認できました。
(私も)無事Slackに投稿できる事を確認できました。
■画像UPLOAD
まずmotionの動き確認、撮影できるか?
motionを実行して、カメラが動体検知して/tmp/motion/に画像ファイルが生成されていれば成功
# motion -c /etc/motion/motion.conf
結果
root@raspberrypi20170226:/tmp/motion# ls -l
合計 136
-rw-r–r– 1 root root 10330 5月 3 08:12 01-20170503081223-01.jpg
-rw-r–r– 1 root root 10720 5月 3 08:12 01-20170503081224-00.jpg
-rw-r–r– 1 root root 10351 5月 3 08:12 01-20170503081224-01.jpg
-rw-r–r– 1 root root 10364 5月 3 08:12 01-20170503081225-00.jpg
-rw-r–r– 1 root root 10858 5月 3 08:12 01-20170503081225-01.jpg
-rw-r–r– 1 root root 11242 5月 3 08:12 01-20170503081226-00.jpg
-rw-r–r– 1 root root 10660 5月 3 08:12 01-20170503081226-01.jpg
-rw-r–r– 1 root root 10740 5月 3 08:12 01-20170503081227-00.jpg
-rw-r–r– 1 root root 10731 5月 3 08:12 01-20170503081227-01.jpg
-rw-r–r– 1 root root 10382 5月 3 08:12 01-20170503081228-00.jpg
-rw-r–r– 1 root root 10706 5月 3 08:12 01-20170503081228-01.jpg
まずmotionの動き確認、撮影できるか?
motionを実行して、カメラが動体検知して/tmp/motion/に画像ファイルが生成されていれば成功
# motion -c /etc/motion/motion.conf
結果
root@raspberrypi20170226:/tmp/motion# ls -l
合計 136
-rw-r–r– 1 root root 10330 5月 3 08:12 01-20170503081223-01.jpg
-rw-r–r– 1 root root 10720 5月 3 08:12 01-20170503081224-00.jpg
-rw-r–r– 1 root root 10351 5月 3 08:12 01-20170503081224-01.jpg
-rw-r–r– 1 root root 10364 5月 3 08:12 01-20170503081225-00.jpg
-rw-r–r– 1 root root 10858 5月 3 08:12 01-20170503081225-01.jpg
-rw-r–r– 1 root root 11242 5月 3 08:12 01-20170503081226-00.jpg
-rw-r–r– 1 root root 10660 5月 3 08:12 01-20170503081226-01.jpg
-rw-r–r– 1 root root 10740 5月 3 08:12 01-20170503081227-00.jpg
-rw-r–r– 1 root root 10731 5月 3 08:12 01-20170503081227-01.jpg
-rw-r–r– 1 root root 10382 5月 3 08:12 01-20170503081228-00.jpg
-rw-r–r– 1 root root 10706 5月 3 08:12 01-20170503081228-01.jpg
(うん、いい感じ。。)
では、画像のUPLOAD
$ python
>>> from slacker import Slacker
>>> token = “xoxp-169850188932-170503111255-169851330916-e8dfbff8d7561bf686f4fc656083ed2f”
>>> slacker = Slacker(token)
>>> channel_name = “#” + “general”
>>> slacker.files.upload(‘/tmp/motion/01-20170503081227-00.jpg’)
$ python
>>> from slacker import Slacker
>>> token = “xoxp-169850188932-170503111255-169851330916-e8dfbff8d7561bf686f4fc656083ed2f”
>>> slacker = Slacker(token)
>>> channel_name = “#” + “general”
>>> slacker.files.upload(‘/tmp/motion/01-20170503081227-00.jpg’)
(あれ?投稿もされとる・・・)
Pinする、、ができてる?そっか、前回もう「ちゃんとチャンネル指定」してたんだー。
Pinする、、ができてる?そっか、前回もう「ちゃんとチャンネル指定」してたんだー。
もう一回チェック。
コマンドだけで動くか?
# motion -c /etc/motion/motion.conf
コマンドだけで動くか?
# motion -c /etc/motion/motion.conf
(うん、いい感じ。。いや、TELのPRGがエラー起こしている、で止まっている。・・・)
memo<これは別件メモ>
print ‘<br />【1】<br />’;
print ‘<br />$ sudo motion -c /etc/motion/motion.conf<br />’;
print ‘<br />で起動<br />’;
print ‘<br />slackでは、最新の記述<br />’;
print ‘<br />call----TEL着信あり<br />’;
print ‘<br />nocallーーーTEL着信なし<br />’;
print ‘<br />を読み取って動作<br />’;
print ‘<br />【2】<br />’;
print ‘<br />$ cd /home/pi/mjpg-streamer<br />’;
print ‘<br />$ sudo sh start_server.sh<br />’;
print ‘<br />で、定点カメラ録画なしが始まる<br />’;
print ‘<br />webでは、URL<br />’;
print ‘<br />http://192.***.***.**:8080(内から)<br />’;
print ‘<br />http://121.***.***.**:8080(外から)<br />’;
print ‘<br />でアクセス動作<br />’;
print ‘<br />$ sudo motion -c /etc/motion/motion.conf<br />’;
print ‘<br />で起動<br />’;
print ‘<br />slackでは、最新の記述<br />’;
print ‘<br />call----TEL着信あり<br />’;
print ‘<br />nocallーーーTEL着信なし<br />’;
print ‘<br />を読み取って動作<br />’;
print ‘<br />【2】<br />’;
print ‘<br />$ cd /home/pi/mjpg-streamer<br />’;
print ‘<br />$ sudo sh start_server.sh<br />’;
print ‘<br />で、定点カメラ録画なしが始まる<br />’;
print ‘<br />webでは、URL<br />’;
print ‘<br />http://192.***.***.**:8080(内から)<br />’;
print ‘<br />http://121.***.***.**:8080(外から)<br />’;
print ‘<br />でアクセス動作<br />’;
<エラー内容>
Traceback (most recent call last):
File “/home/pi/motion/motion.py”, line 120, in <module>
outgoing_call()
File “/home/pi/motion/motion.py”, line 42, in outgoing_call
shutil.move(CALLFILE_DIR + CALLFILE_NAME, OUTGOING_DIR)
File “/usr/lib/python2.7/shutil.py”, line 302, in move
copy2(src, real_dst)
File “/usr/lib/python2.7/shutil.py”, line 130, in copy2
copyfile(src, dst)
File “/usr/lib/python2.7/shutil.py”, line 82, in copyfile
with open(src, ‘rb’) as fsrc:
IOError: [Errno 2] No such file or directory: ‘/home/pi/motion/auto_call.call’
[1] [NTC] [ALL] motion_loop: End of event 1
File “/home/pi/motion/motion.py”, line 120, in <module>
outgoing_call()
File “/home/pi/motion/motion.py”, line 42, in outgoing_call
shutil.move(CALLFILE_DIR + CALLFILE_NAME, OUTGOING_DIR)
File “/usr/lib/python2.7/shutil.py”, line 302, in move
copy2(src, real_dst)
File “/usr/lib/python2.7/shutil.py”, line 130, in copy2
copyfile(src, dst)
File “/usr/lib/python2.7/shutil.py”, line 82, in copyfile
with open(src, ‘rb’) as fsrc:
IOError: [Errno 2] No such file or directory: ‘/home/pi/motion/auto_call.call’
[1] [NTC] [ALL] motion_loop: End of event 1
と、電話のエラーが出るなあ・・・・・
3つのpythonファイルをマージしたから、TEL部分を除いてみるか。。
「motion.py.bak」がのこってたので、これを「motion.py」にして。
再度実行!
「motion.py.bak」がのこってたので、これを「motion.py」にして。
再度実行!
##############################
TOKEN = ‘xoxp-169850188932-170503111255-169851330916-e8dfbff8d7561bf686f4fc656083ed2f’
CHANNEL = ‘C50ET3AGP’
CHANNEL = ‘C50ET3AGP’
# slack API : files.upload
# 参考:https://api.slack.com/methods/files.upload
####
def upload_file(file_path, channel):
# 参考:https://api.slack.com/methods/files.upload
####
def upload_file(file_path, channel):
with open(file_path,’rb’) as f:
param = {‘token’:TOKEN, ‘channels’:CHANNEL,}
r = requests.post(“https://slack.com/api/files.upload”, params=param,files={‘file’:f})
param = {‘token’:TOKEN, ‘channels’:CHANNEL,}
r = requests.post(“https://slack.com/api/files.upload”, params=param,files={‘file’:f})
if __name__ == “__main__”:
arg = sys.argv
file_path = arg[1]
file_path = arg[1]
upload_file(file_path, CHANNEL)
##############################
# motion -c /etc/motion/motion.conf
これは・・だめ!
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
もとに戻し!!!
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
もとに戻し!!!
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
http://qiita.com/kinpira/items/bf1df2c1983ba79ba455
を参考に
motion.conf
に
########20170503 adding########*************************************#
on_picture_save python /home/pi/motion/motion.py %f
########20170503 adding########*************************************#
を設定
を参考に
motion.conf
に
########20170503 adding########*************************************#
on_picture_save python /home/pi/motion/motion.py %f
########20170503 adding########*************************************#
を設定
# su –
# cd /tmp/motion
# motion -c /etc/motion/motion.conf
# cd /tmp/motion
# motion -c /etc/motion/motion.conf
ううーーーーーん、下記のエラーが出るなああ、一応動くようだけど。。。。
Traceback (most recent call last):
File “/home/pi/motion/motion.py”, line 121, in <module>
outgoing_call()
File “/home/pi/motion/motion.py”, line 43, in outgoing_call
shutil.move(CALLFILE_DIR + CALLFILE_NAME, OUTGOING_DIR)
File “/usr/lib/python2.7/shutil.py”, line 292, in move
raise Error, “Destination path ‘%s’ already exists” % real_dst
shutil.Error: Destination path ‘/var/spool/asterisk/outgoing/auto_call.call’ already exists
FALSE
Traceback (most recent call last):
File “/home/pi/motion/motion.py”, line 121, in <module>
outgoing_call()
File “/home/pi/motion/motion.py”, line 43, in outgoing_call
shutil.move(CALLFILE_DIR + CALLFILE_NAME, OUTGOING_DIR)
File “/usr/lib/python2.7/shutil.py”, line 292, in move
raise Error, “Destination path ‘%s’ already exists” % real_dst
shutil.Error: Destination path ‘/var/spool/asterisk/outgoing/auto_call.call’ already exists
^C[1] [NTC] [ALL] motion_loop: End of event 1
Traceback (most recent call last):
File “/home/pi/motion/motion.py”, line 121, in <module>
outgoing_call()
File “/home/pi/motion/motion.py”, line 43, in outgoing_call
shutil.move(CALLFILE_DIR + CALLFILE_NAME, OUTGOING_DIR)
File “/usr/lib/python2.7/shutil.py”, line 292, in move
raise Error, “Destination path ‘%s’ already exists” % real_dst
shutil.Error: Destination path ‘/var/spool/asterisk/outgoing/auto_call.call’ already exists
FALSE
Traceback (most recent call last):
File “/home/pi/motion/motion.py”, line 121, in <module>
outgoing_call()
File “/home/pi/motion/motion.py”, line 43, in outgoing_call
shutil.move(CALLFILE_DIR + CALLFILE_NAME, OUTGOING_DIR)
File “/usr/lib/python2.7/shutil.py”, line 292, in move
raise Error, “Destination path ‘%s’ already exists” % real_dst
shutil.Error: Destination path ‘/var/spool/asterisk/outgoing/auto_call.call’ already exists
^C[1] [NTC] [ALL] motion_loop: End of event 1
(続く・・・)
(解1)
http://stackoverflow.com/questions/31813504/move-and-replace-if-same-file-name-already-existed-in-python
shutil.move(os.path.join(src, filename), os.path.join(dst, filename))
http://stackoverflow.com/questions/31813504/move-and-replace-if-same-file-name-already-existed-in-python
shutil.move(os.path.join(src, filename), os.path.join(dst, filename))