カメラで検知して自動通知(slack)
http://qiita.com/hasudon7171/items/c7e408545b2c4b37af01
で続き!
http://qiita.com/hasudon7171/items/c7e408545b2c4b37af01
で続き!
電話通知ON/OFF
動体検知時にSlackから get_channel_info を利用して最新の投稿を取得。
投稿のテキストが「call」だったら電話通知ONにします。
投稿のテキストが「nocall」だったら電話通知OFFにします。
電話通知のON/OFF状態はConfigParserで設定ファイルを作成することで保持します。
・・・と。
・・・そのままやらせて頂きます。
動体検知時にSlackから get_channel_info を利用して最新の投稿を取得。
投稿のテキストが「call」だったら電話通知ONにします。
投稿のテキストが「nocall」だったら電話通知OFFにします。
電話通知のON/OFF状態はConfigParserで設定ファイルを作成することで保持します。
・・・と。
・・・そのままやらせて頂きます。
motion_tel_on_off.py
———————————–
# coding:utf-8
# coding:utf-8
import sys
import os
import shutil
import pprint
import urllib
import urllib2
import json
import ConfigParser
import os
import shutil
import pprint
import urllib
import urllib2
import json
import ConfigParser
TOKEN = ‘xoxp-169850188932-170503111255-169851330916-e8dfbff8d7561bf686f4fc656083ed2f’
CHANNEL = ‘C50ET3AGP’
CALL_NOTIFY_START_STR = ‘call’; # 電話通知ON判定文字列
CALL_NOTIFY_END_STR = ‘nocall’; # 電話通知OFF判定文字列
INIFILE_PATH = ‘config.ini’ # 設定ファイル
SECTION = ‘motion notify’
CHANNEL = ‘C50ET3AGP’
CALL_NOTIFY_START_STR = ‘call’; # 電話通知ON判定文字列
CALL_NOTIFY_END_STR = ‘nocall’; # 電話通知OFF判定文字列
INIFILE_PATH = ‘config.ini’ # 設定ファイル
SECTION = ‘motion notify’
# slack API : channels.info
# 参考:https://api.slack.com/methods/channels.info
####
def get_channel_info():
# 参考:https://api.slack.com/methods/channels.info
####
def get_channel_info():
url = “https://slack.com/api/channels.info”
params = {‘token’ : TOKEN,
‘channel’: CHANNEL,
}
‘channel’: CHANNEL,
}
params = urllib.urlencode(params)
req = urllib2.Request(url)
req.add_header(‘Content-Type’, ‘application/x-www-form-urlencoded’)
req.add_header(‘Content-Type’, ‘application/x-www-form-urlencoded’)
req.add_data(params)
res = urllib2.urlopen(req)
body = res.read()
result = json.loads(body)
res = urllib2.urlopen(req)
body = res.read()
result = json.loads(body)
return result
# 電話通知ON/OFF設定
# slack_last_text : slackから受信した最新の投稿のテキスト部分
####
def set_call_notify(slack_last_text):
# slack_last_text : slackから受信した最新の投稿のテキスト部分
####
def set_call_notify(slack_last_text):
config = ConfigParser.SafeConfigParser()
if not config.has_section(SECTION):
config.add_section(SECTION)
config.add_section(SECTION)
# 設定ファイルの内容取得
try :
config.read(INIFILE_PATH)
ini_set = config.get(SECTION,’enable’)
except Exception as e:
ini_set = ‘FALSE’
try :
config.read(INIFILE_PATH)
ini_set = config.get(SECTION,’enable’)
except Exception as e:
ini_set = ‘FALSE’
if slack_last_text == CALL_NOTIFY_START_STR:
config.set(SECTION, ‘enable’, ‘TRUE’)
ini_set = ‘TRUE’
config.set(SECTION, ‘enable’, ‘TRUE’)
ini_set = ‘TRUE’
elif slack_last_text == CALL_NOTIFY_END_STR:
config.set(SECTION, ‘enable’, ‘FALSE’)
ini_set = ‘FALSE’
else:
config.set(SECTION, ‘enable’, ini_set)
config.set(SECTION, ‘enable’, ‘FALSE’)
ini_set = ‘FALSE’
else:
config.set(SECTION, ‘enable’, ini_set)
config.write(open(INIFILE_PATH, ‘w’))
return ini_set
if __name__ == “__main__”:
channnels_info = get_channel_info()
is_call = set_call_notify(channnels_info[‘channel’][‘latest’][‘text’])
print is_call
———————————–
Terminal
# chmod 755 motion_tel_on_off.py
# python motion_tel_on_off.py
# chmod 755 motion_tel_on_off.py
# python motion_tel_on_off.py
で、3つのソースをつなげて同じように起動してみる。。
Terminal
# chmod 755 motion_tel_src.py
# python motion_tel_src.py
# chmod 755 motion_tel_src.py
# python motion_tel_src.py
はい、エラー。
root@raspberrypi20170226:/home/pi/motion# python motion_tel_src.py
File “motion_tel_src.py”, line 17
SyntaxError: Non-ASCII character ‘\xe9’ in file motion_tel_src.py on line 17, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
File “motion_tel_src.py”, line 17
SyntaxError: Non-ASCII character ‘\xe9’ in file motion_tel_src.py on line 17, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
間違えた!
これら3つのマージpythonファイルを「motion.py」にして、
実行
# motion -c /etc/motion/motion.conf
するのね!!
これら3つのマージpythonファイルを「motion.py」にして、
実行
# motion -c /etc/motion/motion.conf
するのね!!
callもslackで入れると、5002に着信します!
slackへの投稿もできました。。
ふーーーん。すごいなあ。。。(作った人ね)
【1】
つまり、
$ sudo motion -c /etc/motion/motion.conf
で起動
slackでは、最新の記述
call----TEL着信あり
nocallーーーTEL着信なし
を読み取って動作
なんですね。。。。
【2】
一方、
$ cd /home/pi/mjpg-streamer
$ sudo sh start_server.sh
で、定点カメラ録画なしが始まる
webでは、URL
http://121.109.154.54:8080
でアクセス
以上