237_sakuravps2_phpmyadminのインストール

[125]phpmyadminインストール
https://www.server-world.info/query?os=CentOS_6&p=mysql&f=2
参考
# yum –enablerepo=epel -y install phpMyAdmin php-mysql php-mcrypt
(やってないーーーここから)
# vi /etc/httpd/conf.d/phpMyAdmin.conf
# 25行目:アクセス許可IP追記
Allow from 127.0.0.1 10.0.0.0/24
# 42行目:アクセス許可IP追記
Allow from 127.0.0.1 10.0.0.0/24
(やってないーーーここまで)
# /etc/rc.d/init.d/httpd restart
ダメ、アクセス拒否??
手を変えて。。。

MySQL phpMyAdmin インストール


# yum -y install mysql-server
文字がUTF-8かの確認
# mysql -u root -p
# show variables like ‘char%’;
Mysqlのversion確認
# mysqladmin -u root -pAa1234567890 version
ーーーーーーーーーーーーーーー
mysqladmin  Ver 8.42 Distrib 5.1.73, for redhat-linux-gnu on x86_64
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Server version          5.1.73
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 3 hours 17 min 25 sec
Threads: 1  Questions: 50  Slow queries: 0  Opens: 16  Flush tables: 1  Open tables: 9  Queries per second avg: 0.4
ーーーーーーーーーーーーーーー
CentOS6でインストールされるMySQLのバージョンは5.1系ですが、phpMyAdmin4.2系以降はMySQL5.5移行のバージョンを対象としているため利用できません。phpMyAdmin4.0系の最新版の利用を検討して下さい
・・・・なので、
cd /usr/local/src/
wget https://files.phpmyadmin.net/phpMyAdmin/4.0.10.20/phpMyAdmin-4.0.10.20-all-languages.tar.gz
tar zxvf phpMyAdmin-4.0.10.20-all-languages.tar.gz
mv phpMyAdmin-4.0.10.20-all-languages /var/www/phpMyAdmin
chown -R root:apache /var/www/phpMyAdmin/
vi /etc/httpd/conf.d/phpmyadmin.conf
——————————————————
Alias /phpMyAdmin “/var/www/phpMyAdmin”
<Directory “/var/www/phpMyAdmin”>
Order allow,deny
Allow from all
</Directory>
——————————————————
apachectl -t
Syntax OK
/etc/rc.d/init.d/httpd reload
phpMyAdminのインストール
vi /etc/httpd/conf.d/phpmyadmin.conf
mkdir /var/www/phpMyAdmin/config
chmod 777  /var/www/phpMyAdmin/config
http://153.126.154.106/phpMyAdmin/scripts/setup.php
ダメ、アクセスできない。また別で。

CentOS6.4にMySQLとphpMyadminをインストール


を参考
yum –enablerepo=epel install -y  phpMyAdmin php-mysql php-mcrypt
vi /etc/httpd/conf.d/phpMyAdmin.conf

phpMyAdmin.confの設定
root@/root >vi /etc/httpd/conf.d/phpMyAdmin.conf
27行目にAllow from All を追加。(←これで行けた。。。。危ないけど。。)
http://153.126.154.106/phpMyAdmin/
ID:root
Pass:Aa**********
でいけました。

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
でアクセス
以上

235_RasPiで監視カメラの動体検知で電話通知・・asterisk電話発呼OK

続いて、、自動通知(自動電話発呼)
http://qiita.com/hasudon7171/items/c7e408545b2c4b37af01
をやります。
電話通知
Asteriskが自動発信するように自動発信用のファイルを作成するようにします。
motion_tel.py
TOKEN                 = ‘xoxp-169850188932-170503111255-169851330916-e8dfbff8d7561bf686f4fc656083ed2f’
CHANNEL               = ‘C50ET3AGP’
CALLFILE_DIR          = ‘/home/pi/motion/’  # 適当!
CALLFILE_NAME         = ‘auto_call.call’    # 自動発信ファイル名
OUTGOING_DIR          = ‘/var/spool/asterisk/outgoing/’
# 自動発信ファイル生成 -> outgoing
####
def outgoing_call():
    file_str = ”’#
Channel: SIP/5002           # SIP/<通知したい電話番号>@<外線発信するセクション名>
MaxRetries: 0               # コール回数は1回
RetryTime: 60               # 再度コールするまでの待ち時間(秒)
WaitTime: 30                # 30秒間コールする
Context: default            # 適当!
Extension: 300              # 適当!
Priority: 1”’
    file = open(CALLFILE_DIR +CALLFILE_NAME, “w”)
file.writelines(file_str);
file.close()
    os.chmod(CALLFILE_DIR + CALLFILE_NAME, 0755)
shutil.move(CALLFILE_DIR + CALLFILE_NAME, OUTGOING_DIR)
if __name__ == “__main__”:
    outgoing_call()
ソースファイルに実行権限、/var/spool/asterisk/outgoing/ に書き込み権限を与えてファイル実行で電話着信するか確認します。
Terminal (すでに書き込み設定されとるようなので特にやらない。。)
# chmod 755 motion_tel.py
# python motion_tel.py
(おおーーー!勝手に発呼してくるわーーーー!)
以上

234_RasPiで監視カメラの動体検知で電話通知・・slack投稿OK

カメラで検知して自動通知(slack)
http://qiita.com/hasudon7171/items/c7e408545b2c4b37af01
で続き!
# vi /etc/motion/motion.conf
threshold 8000   #写真を撮影するトリガとなるしきい値とりあえず8000そのまま
target_dir /var/lib/motion #撮影した画像の保存先を設定、libにそのまま
on_picture_save python /home/pi/motion/motion.py %f
motionを実行して、カメラが動体検知して/var/lib/motion/に画像ファイルが生成されていれば成功です
# motion -c /etc/motion/motion.conf
(うん、何か保存している)
Slackの設定
SlackのAPIを利用して投稿するため、トークンとチャンネルIDを確認します。
https://api.slack.com/methods/channels.list/test
URL
https://slack.com/api/channels.list?token=xoxp-169850188932-170503111255-169851330916-e8dfbff8d7561bf686f4fc656083ed2f
{
“ok”: true,
“channels”: [
{
“id”: “C50ET3AGP”,
“name”: “general”,
“is_channel”: true,
“created”: 1492320797,
“creator”: “U50ET397H”,
“is_archived”: false,
“is_general”: true,
“name_normalized”: “general”,
“is_shared”: false,
“is_org_shared”: false,
“is_member”: true,
“members”: [
“U50ET397H”
],
“topic”: {
“value”: “Company-wide announcements and work-based matters”,
“creator”: “”,
“last_set”: 0
},
“purpose”: {
“value”: “This channel is for team-wide communication and announcements. All team members are in this channel.”,
“creator”: “”,
“last_set”: 0
},
“previous_names”: [],
“num_members”: 1
},
{
“id”: “C50EEK970”,
“name”: “random”,
“is_channel”: true,
“created”: 1492320797,
“creator”: “U50ET397H”,
“is_archived”: false,
“is_general”: false,
“name_normalized”: “random”,
“is_shared”: false,
“is_org_shared”: false,
“is_member”: true,
“members”: [
“U50ET397H”
],
“topic”: {
“value”: “Non-work banter and water cooler conversation”,
“creator”: “”,
“last_set”: 0
},
“purpose”: {
“value”: “A place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber you’d prefer to keep out of more focused work-related channels.”,
“creator”: “”,
“last_set”: 0
},
“previous_names”: [],
“num_members”: 1
}
]
}
画像のアップロード
SlackのAPIを利用して動体検知時にSlackへ自動的に画像投稿します。
まずはSlackへ投稿する箇所をつくります。
motion.py
TOKEN      = ‘xoxp-169850188932-170503111255-169851330916-e8dfbff8d7561bf686f4fc656083ed2f’
CHANNEL    = ‘C50ET3AGP’
# slack API : files.upload
# 参考: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})
if __name__ == “__main__”:
    arg     = sys.argv
file_path = arg[1]
    upload_file(file_path, CHANNEL)
Terminal
# chmod 755 motion.py
# python motion.py /var/lib/motion/01-20170422154935-00.jpg
(だめ、エラー・・・・)
Traceback (most recent call last):
File “motion.py”, line 30, in <module>
upload_file(file_path, CHANNEL)
File “motion.py”, line 22, in upload_file
r = requests.post(“https://slack.com/api/files.upload”, params=param,files={‘file’:f})
NameError: global name ‘requests’ is not defined
でGoogle先生に聞くと、、、
install requests
# pip install requests
で、コードも
import requests
を追加!!
# python motion.py /var/lib/motion/01-20170422154935-00.jpg
# python motion.py /var/lib/motion/01-20170422154933-01.jpg
(あれ!エラー消えた!!)
おおーー怪しいオレがアップされとる!!!よっしゃー!!
以上(次は、電話通知)

233_RasPiで監視カメラの動体検知で電話通知・・NG

Raspberry Piで監視カメラの動体検知時に電話通知
http://qiita.com/hasudon7171/items/c7e408545b2c4b37af01
やってみる!
仕様
motionを利用して動体検知を行う
動体検知時に撮影してSlackへ自動投稿
Slackへ投稿するついでに指定番号に電話をかけて知らせる
Slackに着信ON/OFFとなる投稿。電話で通知してほしい時に着信させる
用途としては・・
ベランダに鳥が来た!!を動体検知して電話着信。

「お?電話がきた」。Slackで鳥の姿を確認

着信OFFをSlackに投稿して動体検知しても着信させない
motionの設定
motionをインストールします
# apt-get install -y motion
motion.confを変更します
# vi /etc/motion/motion.conf
motion.conf
# Threshold for number of changed pixels in an image that
# triggers motion detection (default: 1500)
#threshold 1500
threshold 8000   #写真を撮影するトリガとなるしきい値を上げます
# Target base directory for pictures and films
# Recommended to use absolute path. (Default: current working directory)
target_dir /tmp/motion #撮影した画像の保存先を設定します
#撮影時にmotion.pyファイルを実行します。パラメータの%fは撮影したファイルPATH
#on_picture_save python /home/hasuo/motion/motion.py %f を参考にして、、、、
on_picture_save python /home/pi/motion/motion.py %f
とした。
motionを実行して、カメラが動体検知して/home/tmp/に画像ファイルが生成されていれば成功です
Terminal
motion -c /etc/motion/motion.conf
なんか、/tmp/motionにじゃがじゃが保存しているみたいだけど。。。。OKか??
Slackの設定
Slackでアカウントを発行します。
SlackのAPIを利用して投稿するため、トークンとチャンネルIDを確認します。
https://api.slack.com/methods/channels.list/test
URL
https://slack.com/api/channels.list?token=xoxp-169850188932-170503111255-169851330916-e8dfbff8d7561bf686f4fc656083ed2f&pretty=1
channels.list実行結果
{
“ok”: true,
“channels”: [
{
“id”: “<チャンネルID>”,
“name”: “general”,
“is_channel”: true,
:
ーーーーーここから実際結果ーーーーーーー
{
“ok”: true,
“channels”: [
{
“id”: “C50ET3AGP”,
“name”: “general”,
“is_channel”: true,
“created”: 1492320797,
“creator”: “U50ET397H”,
“is_archived”: false,
“is_general”: true,
“name_normalized”: “general”,
“is_shared”: false,
“is_org_shared”: false,
“is_member”: true,
“members”: [
“U50ET397H”
],
“topic”: {
“value”: “Company-wide announcements and work-based matters”,
“creator”: “”,
“last_set”: 0
},
“purpose”: {
“value”: “This channel is for team-wide communication and announcements. All team members are in this channel.”,
“creator”: “”,
“last_set”: 0
},
“previous_names”: [],
“num_members”: 1
},
{
“id”: “C50EEK970”,
“name”: “random”,
“is_channel”: true,
“created”: 1492320797,
“creator”: “U50ET397H”,
“is_archived”: false,
“is_general”: false,
“name_normalized”: “random”,
“is_shared”: false,
“is_org_shared”: false,
“is_member”: true,
“members”: [
“U50ET397H”
],
“topic”: {
“value”: “Non-work banter and water cooler conversation”,
“creator”: “”,
“last_set”: 0
},
“purpose”: {
“value”: “A place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber you’d prefer to keep out of more focused work-related channels.”,
“creator”: “”,
“last_set”: 0
},
“previous_names”: [],
“num_members”: 1
}
]
}
ーーーーーここまで実際結果ーーーーーーー
★★ここまでやった。。。。4/18 21:50
画像のアップロード
SlackのAPIを利用して動体検知時にSlackへ自動的に画像投稿します。
まずはSlackへ投稿する箇所をつくります。
motion.py
TOKEN      = ‘<トークン>’
CHANNEL    = ‘<チャンネルID>’
# slack API : files.upload
# 参考: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})
if __name__ == “__main__”:
    arg     = sys.argv
file_path = arg[1]
    upload_file(file_path, CHANNEL)

(・・・未成功・・・まだ続く・・・・)

232_RasPi監視カメラ-slackへ転送・・まだNG

http://qiita.com/kinpira/items/bf1df2c1983ba79ba455
で復習
対話型でslackerがうまく行くか??
■メッセージ
from slacker import Slacker
token = “xoxp-169850188932-170503111255-169851330916-e8dfbff8d7561bf686f4fc656083ed2f”
slacker = Slacker(token)
channel_name = “#” + “general”
message = ‘APIだよ(2017/04/19 22:30)’
slacker.chat.post_message(channel_name, message)
<slacker.Response object at 0x76b2f930>
■画像
from slacker import Slacker
token = “xoxp-169850188932-170503111255-169851330916-e8dfbff8d7561bf686f4fc656083ed2f”
slacker = Slacker(token)
channel_name = “#” + “general”
slacker.files.upload(‘/var/lib/motion/01-20170419214221-00.jpg’)
<slacker.Response object at 0x76a84930>
result = slacker.files.upload(‘/var/lib/motion/01-20170419214216-01.jpg’, channels=[‘C50ET3AGP’])
slacker.pins.add(channel=’C50ET3AGP’, file_=result.body[‘file’][‘id’])
<slacker.Response object at 0x76c2c9b0>
おーーうまく投稿された!!
(ここまでOKみたい、pinでスマホ画面だと投稿がテキスト表題でされとる・・・・)
motion連携
次にmotionで検知したら、slackに投稿するために、motion側にイベント処理を指定していきます。
どうやって指定するかというと、motionにはイベント時に意図したスクリプトを指定し、実行させる為の下記optionが存在します。
今回はon_picture_saveを利用して、Slackに投稿させる事にします。
/home/pi/slackbot/slack_bot.py
================================
# -*- coding: utf-8 -*-
import sys
from private import TOKEN
from slacker import Slacker
class Slack(object):
    __slacker = None
    def __init__(self, token):
self.__slacker = Slacker(token)def get_channnel_list(self):
“””
Slackチーム内のチャンネルID、チャンネル名一覧を取得する。
“””
# bodyで取得することで、[{チャンネル1},{チャンネル2},…,]の形式で取得できる。
raw_data = self.__slacker.channels.list().body
        channnels = []
for data in raw_data[“channels”]:
channnels.append(dict(channel_id=data[“id”], channel_name=data[“name”]))
return channnels
    def post_to_file(self, file_path, channel):
result = self.__slacker.files.upload(file_path, channels=[channel])
self.__slacker.pins.add(channel=channel, file_=result.body[‘file’][‘id’])
if __name__ == “__main__”:
    param = sys.argv
file_path = param[1]
    slack = Slack(TOKEN)
channnels = slack.get_channnel_list()
slack.post_to_file(file_path, channnels[0][“channel_id”])=================================
実行権限の付与を忘れずに。
# chmod a+x slackbot/slack_bot.py
ではmotionを起動します!
# sudo motion -c /etc/motion/motion.conf
写真がsaveされていく。・・・・いや行かない。。。。ダメか?!!

231_asterisk_音声ガイダンス

/var/lib/asterisk/sounds/en

*****.gsm
がたくさんあるので、
/etc/asterisk

extensions.conf
に追加
exten => 9003,1,Playback(queue-callswaiting)
exten => 9004,1,Playback(please-try-again)
exten => 9005,1,Playback(queue-holdtime)
exten => 9006,1,Playback(queue-thereare)
exten => 9007,1,Playback(queue-reporthold)
exten => 9008,1,Playback(queue-periodic-announce)
exten => 9009,1,Playback(invalid)
以上

230_RaspberryPi監視カメラ-再び2ーコマンド無しはNG

いちいちコマンドしないでカメラ見れるようにしたい。。

昨日失敗しので、トライ!!!

これをコピー??なのかな???

/etc/rc.local ファイルを以下のように修正します。

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
 
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi
 
#ここから追加
sh /home/user/mjpg-streamer/start_server.sh &amp;
#ここまで追加
 
exit 0

ここで指定する起動用のスクリプトはmjpegの実行パスを絶対パスに修正しておきます。なので、、、

$ /home/pi/mjpg-streamer

$ vi start_server.sh

#!/bin/sh
  
PORT="8080" #ポート番号
ID="user" #ID
PW="passwd" #パスワード
SIZE="320x240" #画面サイズ
FRAMERATE="2" #フレームレート
MJPEGDIR=/home/user/mjpg-streamer
export LD_LIBRARY_PATH=/usr/local/lib
$MJPEGDIR/mjpg_streamer \
    -i "input_uvc.so -f $FRAMERATE -r $SIZE -d /dev/video0 -y -n" \
    -o "output_http.so -w /usr/local/www -p $PORT -c $ID:$PW"

これで、Raspberry Pi(Linux)を再起動すると、Mjpegが自動起動します。

本当かな????

やってみるかーーーーーー。

# reboot

・・・・・

・・・・・

・・・・・うーーーーん、ダメ。。。なぜかしらーーーーー??

(もとに戻しておこう)

以上

 

229_RaspberryPi監視カメラ-再び1

RaspberryPi監視カメラ再び!!
http://make.bcde.jp/raspberry-pi/usb%E3%82%AB%E3%83%A1%E3%83%A9%E3%81%A7%E7%9B%A3%E8%A6%96%E3%82%AB%E3%83%A1%E3%83%A9/
USBカメラを接続する
root@raspberrypi20170226:~# lsusb
Bus 001 Device 004: ID 046d:0825 Logitech, Inc. Webcam C270
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
IPの確認
inetアドレス:192.168.0.12
MJPG-streamer
$ sudo apt-get update
$ sudo apt-get install -y subversion libjpeg-dev imagemagick
Subversionをインストールしたら、「MJPG-streamer」を取得して、インストールします。
$ svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer mjpg-streamer
$ cd mjpg-streamer
$ make
$ sudo make install
ストリーミングサーバーの起動
MJPG-streamerを起動するためのスクリプトを編集します。
外部に公開する場合は、簡単ですがユーザー名とパスワードが必要な設定にします。
以下のように、アクセスするのに必要となる任意のIDとPWを設定して、スクリプトを実行する。
mjpg-streamerのフォルダ内に以のファイルを作成し、編集します。
$ vi start_server.sh
ファイル内に以下のスクリプトを追加します。
PORTでポート番号の変更、ID,PWでアクセス時に要求されるユーザ名とパスワードを変更することができます。
#!/bin/shPORT=”8080″ #ポート番号
ID=”raspai” #ID
PW=”Aa123456″ #パスワード
SIZE=”320×240″ #画面サイズ
FRAMERATE=”2″ #フレームレート
export LD_LIBRARY_PATH=/usr/local/lib
./mjpg_streamer \
-i “input_uvc.so -f $FRAMERATE -r $SIZE -d /dev/video0 -y -n” \
-o “output_http.so -w /usr/local/www -p $PORT -c $ID:$PW”
以下のスクリプトを実行すると、ストリーミングサーバが立ち上がります。
$ sudo sh start_server.sh
アクセスして動作確認する
ブラウザでhttp://[IPアドレス]:[ポート番号]をURL欄に入力して、ページを表示します。
ローカルIPでRaspberry Piにアクセスすると、下のようにMJPG-streamerが用意する画面が表示され、USBカメラが撮影した画像を見ることができます。
上記までの例の場合は、「http://192.168.0.12:8080」を入力します。ユーザー名とパスワードを求められるため、起動スクリプトで設定したID,PWを入力します。
ID:raspai
pass:Aa123456
外部アクセスできるようにする
・・・・した!!!
・・・けど、、、まだ不安定・・・・・・??????
$ cd /home/pi/mjpg-streamer
$ sudo sh start_server.sh
以上

228_RaspberryPi監視カメラ3(motion連携)–★まだNG★

http://qiita.com/kinpira/items/bf1df2c1983ba79ba455
で引き続き。。
どうやら、このFilesに上がった画像をPin(Share)しないと投稿はされない様です。。。から。
(ここから続き!!ちと疲れたな・・)
Pinする
pinする為には、対象となるfile情報が必要になります。
チャンネル指定して、UploadとPinを行う必要があるらしい。
(下記の、’C0G0XXXXX’の部分を、
>>> slacker.channels.list().body
で見て、
>>> slacker.channels.list().body
{u’channels’: [{u’name’: u’general’, u’id’: u’C0G0XXXXX’….}, ….
のid部分を書かないとアップされないらしい。。。面倒やな・・)
(図1)
>>> result = slacker.files.upload(‘/var/lib/motion/01-20151206004057-02.jpg’, channels=[‘C0G0XXXXX’])
>>> slacker.pins.add(channel=’C0G0XXXXX’, file_=result.body[‘file’][‘id’])
<slacker.Response object at 0xb64ee6b0>
できました!(私も!)
これで、APIの確認は完了したので、いよいよmotionと連携。
■motion連携
次にmotionで検知したら、slackに投稿するために、motion側にイベント処理を指定していきます。
どうやって指定するかというと、motionにはイベント時に意図したスクリプトを指定し、実行させる為の下記optionが存在します。
on_event_start
動体検知時に起動するスクリプトを指定できます
on_event_end
動体検知終了時に起動するスクリプトを指定できます
on_picture_save
写真をsaveする度に起動するスクリプトを指定できます
on_movie_start
動画の撮影開始時に起動するスクリプトを指定できます
on_movie_end
動画の撮影終了時に起動するスクリプトを指定できます
今回はon_picture_saveを利用して、Slackに投稿させる事にします。。。かあ。。
オレにできるかな??
ちなみにどうやって、ファイルパスを指定するのか調べたところ、
こちらのサイトに引数でファイル情報が渡されるとありました。
ちなみにon_picture_saveの場合、引数には撮影したファイルのpathが渡されます。
それをふまえて、Pythonスクリプトを作成。
(そのまま、、、、ですみません。。。。。)
★★★・・・・この辺りから変数、ディレクトリ、、ファイル名、、、など心配。そのままコピーで大丈夫かしら????★★★
ではconfに指定。(そのまま・・・)
$ sudo vi /etc/motion/motion.conf
ではconfに指定します。
# Command to be executed when a picture (.ppm|.jpg) is saved (default: none)
# To give the filename as an argument to a command append it with %f
#; on_picture_save value
on_picture_save python /home/pi/slackbot/slack_bot.py %f
次に実行権限の付与を忘れずに。
$ chmod a+x slackbot/slack_bot.py
ではmotionを起動します!
$ sudo motion
ううーーーん。
/var/lib/motion
には貯まるけど、、、スマホ(slack)には転送蓄積されない。。。。
TOKEN = ”
xoxp-169850188932-170503111255-169851330916-e8dfbff8d7561bf686f4fc656083ed2f”
を入れてみるか。。
ダメ・・・・「写真がsaveされていく。」にならない。。。
今日はここまで。。。。残念
★★引継ぎ書★★
★★pythonがまだエラーあり、修正必要★★
$ sudo motion
で走らせると、まだエラーが出る。一応動きを検知したら、
/var/lib/motion
にjpgファイルが格納はされている。
修正すべきpythonコードは、
/home/pi/slackbot/slack_bot.py
/home/pi/slackbot/slack_bot.py1,/home/pi/slackbot/slack_bot.py2
はバックアップ。
★★★★★★★★★★★★★★★★★★★★