236_RasPiで監視カメラの動体検知で電話通知・・最終slack投稿&電話発呼OK

カメラで検知して自動通知(slack)
http://qiita.com/hasudon7171/items/c7e408545b2c4b37af01
で続き!
電話通知ON/OFF
動体検知時にSlackから get_channel_info を利用して最新の投稿を取得。
投稿のテキストが「call」だったら電話通知ONにします。
投稿のテキストが「nocall」だったら電話通知OFFにします。
電話通知のON/OFF状態はConfigParserで設定ファイルを作成することで保持します。
・・・と。
・・・そのままやらせて頂きます。
motion_tel_on_off.py
———————————–
# coding:utf-8
import sys
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’
# slack API : channels.info
# 参考:https://api.slack.com/methods/channels.info
####
def get_channel_info():
    url = “https://slack.com/api/channels.info”
    params = {‘token’  : TOKEN,
‘channel’: CHANNEL,
}
    params = urllib.urlencode(params)
    req    = urllib2.Request(url)
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)
    return result
# 電話通知ON/OFF設定
# slack_last_text : slackから受信した最新の投稿のテキスト部分
####
def set_call_notify(slack_last_text):
    config = ConfigParser.SafeConfigParser()
    if not config.has_section(SECTION):
config.add_section(SECTION)
    # 設定ファイルの内容取得
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’
    elif slack_last_text == CALL_NOTIFY_END_STR:
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
で、3つのソースをつなげて同じように起動してみる。。
Terminal
# 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
間違えた!
これら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
でアクセス
以上