1. Download OS PI
https://www.raspberrypi.org/downloads/raspbian/
2. เขียน .img ใส่ SD ด้วย Disk Image Writer
3. แก้ config.txt ให้ออกจอได้
disable_overscan=1
hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=35
hdmi_drive=2
4. เปิด ssh และ camera API ตั้ง Time Zone
- sudo raspi-config
5. ssh เข้าเครื่อง ติดตั้งโปรแกรม และ Config
- sudo apt-get install motion
6. ติดตั้ง bcm2835-v4l2
- sudo modprobe bcm2835-v4l2
แก้ไฟล์ /etc/modules
- nano /etc/modules
เพิ่ม
# camera with v4l2 driver
bcm2835-v4l2
แล้ว Reboot เครื่อง PI
https://raspberrypi.stackexchange.com/questions/10480/raspi-camera-board-and-motion
7. ทดสอบ
- ls /dev/video*
ลองถ่ายรูป
- raspistill -o image.jpg
ถ้าได้รูปแสดงว่ากล้องกับเครื่องต่อกันใช้งานได้แล้ว
8. ตั้งค่า Motion
- nano /etc/motion/motion.conf
แก้
# Start in daemon (background) mode and release terminal (default: off)
daemon on
...
# Restrict stream connections to localhost only (default: on)
stream_localhost off
...
# Target base directory for pictures and films
# Recommended to use absolute path. (Default: current working directory)
target_dir /home/pi/Monitor
The following lines are optimal and should also be changed (we have read them out previously):
v4l2_palette 15 # Nummer aus der Tabelle davor entnehmen, 15 enstpricht YUYV
...
# Image width (pixels). Valid range: Camera dependent, default: 352
width 640
# Image height (pixels). Valid range: Camera dependent, default: 288
height 480 # Maximum number of frames to be captured per second.
# Valid range: 2-100. Default: 100 (almost no limit).
framerate 10
9. กำหนดให้โปรแกรม Motion ทำงานเป็น Daemon Service
- sudo nano /etc/default/motion
start_motion_daemon=yes
10. Start motion
- sudo service motion start
ถ้าไม่ได้
- sudo service motion restart
11. เข้าดูผ่าน IP
http://192.168.0.181:8081
Config เพิ่มเติม
https://tutorials-raspberrypi.com/raspberry-pi-security-camera-livestream-setup/
https://intranet.sci.com/blog.php?u=281&b=1233
////################## Slack #########################/////
ติดตั้ง โปรแกรมเพิ่มเพื่อให้ Run Python
- sudo apt-get install python-picamera python3-picamera python-rpi.gpio
ติดตั้ง Slackclient เพื่อให้ส่งคำสั่งไป Slack ได้
- sudo apt-get install python-pip
- pip install slackclient
Code python Send Post Text To Slack
- nano /home/pi/slack_post.py
from slackclient import SlackClient
sc = SlackClient("xoxb-3713119008-518558293798-egdvc4A1x5M3w8xV1YfFzA5Y")
sc.api_call(
"chat.postMessage",
channel="CF6GEHBDF",
text="Hello from Python! camera :tada:"
)
Send Upload File Command Test.
- curl -F file=@03-20190208171217-00.jpg -F "initial_comment=I play the drums." -F channels=CF6GEHBDF -F thread_ts=1532293503.000001 -H "Authorization: Bearer xoxb-3713119008-518558293798-egdvc4A1x5M3w8xV1YfFzA5Y" https://slack.com/api/files.upload
https://api.slack.com/methods/files.upload
ทดสอบ Run คำสั่ง python
- python /home/pi/slack_post.py
Python upload
from slackclient import SlackClient
#### Upload IMG #####
sc = SlackClient("xoxb-3713119008-518558293798-egdvc4A1x5M3w8xV1YfFzA5Y")
with open('/home/pi/Monitor/14-20190212104004-08.jpg') as file_content:
sc.api_call(
"files.upload",
channels="CF6GEHBDF",
file=file_content,
title="Find movement in room."
)
https://slackapi.github.io/python-slackclient/basic_usage.html
ทดสอบ Run คำสั่ง python
- python /home/pi/slack_post.py
หา Last File .jpg ที่สร้างล่าสุด
import glob
import os
list_of_files = glob.glob('/home/pi/Monitor/*.jpg') # * means all if need specific format then *.csv
latest_file = max(list_of_files, key=os.path.getctime)
print latest_file
https://stackoverflow.com/questions/39327032/how-to-get-the-latest-file-in-a-folder-using-python
แก้ config motion ให้ไปเรียก Python เวลามีการเคลื่อนไหว
- nano /etc/motion/motion.conf
แก้
on_motion_detected python /home/pi/slack_post.py
แล้ว restart service
- /etc/init.d/motion restart
เมื่อมีการเคลื่อนไหว จะไปเรียก py มาทำงาน และส่งรูปไป Slack
Finish Code
- import glob
- import os
- list_of_files = glob.glob('/home/pi/Monitor/*.jpg') # * means all if need specific format then *.csv
- latest_file = max(list_of_files, key=os.path.getctime)
- #print latest_file
- with open(latest_file) as file_content:
- sc.api_call(
- "files.upload",
- channels="CF6GEHBDF",
- file=file_content,
- title="Find movement in room."
- )
################### Backup To Qnap ################
การ mount Qnap เข้าเครื่อง Pi
สร้าง Folders ในเครื่อง Pi ก่อนที่เราจะ mount เข้ามา ใช้คำสั่ง
- sudo mount -t cifs -o username=*******,password=******* //192.168.0.218/backup /ตามด้วย Folders ที่เราสร้างขึ้นในเครื่อง Pi
สร้าง Files ที่ใช้สำหรับเขียนโค๊ตเพื่อสั่งให้เครื่อง Pi ทำไฟล์ให้เป็น .zip แล้ว Backup ไปยังเครื่อง Qnap
- ### backup_camera.sh ###
- #!/bin/bash
- date_2dayago=`date -d "2 day ago 13:00" '+%Y-%m-%d'`
- date_yesterday=`date -d "yesterday 13:00" '+%Y-%m-%d'`
- date_today=`date '+%Y-%m-%d'`
- mkdir $date_yesterday
- find /home/pi/Monitor -type f -name '*.avi' -newermt $date_2dayago ! -newermt $date_today -exec mv -t $date_yesterday {} +
- tar -czf if_$date_yesterday.tar.gz $date_yesterday
- mv if_$date_yesterday.tar.gz /BACKUP/BackupToQnap
- rm -r $date_yesterday
ทดลองใช้งาน File ว่าจะส่งข้อมูลไปยังเครื่อง Qnap ได้ไม่โดยใช้คำสั่ง bash ตามด้วยชื่อไฟล์ ตัวอย่าง
- bash backup_camera.sh
พอเสร็จแล้วให้ตั้ง crontab สั่งให้เครื่อง Pi AutoBackup โดยใช้คำสั่ง
- crontab -e
แล้วตั้งเป็น
- 0 6 * * * bash /home/pi/backup_camera.sh
ไม่มีความคิดเห็น:
แสดงความคิดเห็น