raspberry Pi 入門③(防犯カメラ作成)
防犯カメラを作成します。
要件としては、以下です。
①人感センサーで人の動作があるかチェックする。
②人の動作がある場合、写真撮影する。
ファイル名は、「YYmmdd HH:MM:SS.jpg」とする
③slackのプロジェクトに画像をアップする。
今回記載するのは、②と③ついて記載します。
なお、カメラモジュールの動作確認などは、以下にまとめてあります。
Raspberry Pi 入門-カメラホルダーの組み立て方法- - yamadaTarouの日記
【部品】
raspberry Pi Zero WH
ラズパイ用のカメラモジュール
https://www.amazon.co.jp/gp/product/B07PSFFF47/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1
写真撮影プログラム
take_picture.py
# -*- coding: utf-8 -*-
import picamera
import datetime
# 定数
PATH = '/home/pi/Desktop/Test/pictureData/'
FILE_TYPE = '.jpg'
# ファイル名生成(フルパス)
now = datetime.datetime.now()
file_name = 'test' + '{0:%y%m%d_%H:%M:%S}'.format(now)
full_path = PATH + file_name + FILE_TYPE
# 撮影ファンクション
def taking_picture_function(file_name):
camera = picamera.PiCamera()
camera.capture(file_name)
taking_picture_function(full_path)
こんな感じです。
これで、以下のコマンドで写真が取れれば、OKです。
$ python take_picture.py
slackのプロジェクトに画像をアップする
プログラム自体はあまり難しくないですが、slackのアプリを使いこなすことが難しいです。
私は参考サイトでなんとかできましたが、改めて勉強が必要だと感じています。
以下のサイトが非常に丁寧に記載されておりましたので、こちらを参考に進めるのがいいです。
ただ、POSTでslackのAPIを呼び出す際にchannelIdを指定する必要があるようだったのですが、channelIdを指定するとinvalid_channelとなってしまいました。
そのため、channelIdは指定せずに記載しています。
また、tokenは以下のページから確認できます。
Slack API: Applications | Slack
写真撮影とslackへのアップロードを合わせると、以下のようなコードとなりました。
# -*- coding: utf-8 -*-
import picamera
import datetime
import requests
# 定数
PATH = '/home/pi/Desktop/Test/testCamera/'
FILE_TYPE = '.jpg'
SLACK_URL = 'https://slack.com/api/files.upload'
ACCESS_TOKEN = 'xxxxxx'
# ファイル名生成(フルパス)
now = datetime.datetime.now()
file_name = 'test' + '{0:%y%m%d_%H:%M:%S}'.format(now)
full_path = PATH + file_name + FILE_TYPE
# 撮影ファンクション
def taking_picture_function(file_name):
camera = picamera.PiCamera()
camera.capture(file_name)
# 写真転送ファンクション
def send_picture_function(file_name):
files = {'file': open(file_name, 'rb')}
param = {'token': ACCESS_TOKEN}
post_result = requests.post(url="https://slack.com/api/files.upload", params=param, files= files)
print(post_result)
taking_picture_function(full_path)
send_picture_function(full_path)
print('end')
参考
Ubuntu 18.04 LTS : Samba : フルアクセスの共有フォルダ作成 : Server World
Raspberry Pi 3B+とSlackbotで遠隔から写真撮影 - Qiita