김유현

edit videorecord (add pir sensor)

1 import os 1 import os
2 -import boto3 2 +#import boto3
3 -import botocore 3 +#import botocore
4 import time 4 import time
5 import datetime 5 import datetime
6 -from django.core import serializers 6 +#from django.core import serializers
7 7
8 -from api.models import Video, Record 8 +#from api.models import Video, Record
9 -from api.serializers import VideoSerializer, RecordSerializer 9 +#from api.serializers import VideoSerializer, RecordSerializer
10 ''' 10 '''
11 -import picamera
12 from boto3.session import Session 11 from boto3.session import Session
13 from src.settings import AWS_REGION, S3_ACCESS_URL, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_STORAGE_BUCKET_NAME 12 from src.settings import AWS_REGION, S3_ACCESS_URL, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_STORAGE_BUCKET_NAME
14 ''' 13 '''
14 +import RPi.GPIO as GPIO
15 +from picamera import PiCamera
16 +
15 17
16 def record() : 18 def record() :
17 - path = '/home/pi/recorded' # 저장할 경로 19 + path = '/home/pi/recorded' # save path
18 state = True 20 state = True
21 + #'''
22 + GPIO.setmode(GPIO.BCM)
23 + PIR_PIN = 7
24 + GPIO.setup(PIR_PIN, GPIO.IN)
25 + camera = PiCamera()
26 + #'''
19 27
28 + try:
20 while state : 29 while state :
21 - target = Record.objects.get(id = 1) 30 + #target = Record.objects.get(id = 1)
22 - serializer = RecordSerializer(target, many = False) 31 + #serializer = RecordSerializer(target, many = False)
23 - state = serializer.data['recording'] 32 + #state = serializer.data['recording']
24 - with picamera.Picamera() as camera : 33 + if GPIO.input(PIR_PIN): # motion detected
34 + # take a video
25 camera.resolution = [320,240] 35 camera.resolution = [320,240]
36 + camera.start_preview()
26 now = datetime.datetime.now() 37 now = datetime.datetime.now()
27 vid_name = now.strftime('%Y%m%d-%H%M%S') 38 vid_name = now.strftime('%Y%m%d-%H%M%S')
28 -
29 vid_path = path + '/' + vid_name + '.h264' 39 vid_path = path + '/' + vid_name + '.h264'
40 + thumbnail_path = path + '/' + vid_name + '.jpg'
30 camera.start_recording(output = vid_path) 41 camera.start_recording(output = vid_path)
31 - camera.wait_recording(10) 42 + time.sleep(1)
43 + camera.capture(thumbnail_path)
44 + time.sleep(5)
32 camera.stop_recording() 45 camera.stop_recording()
46 + camera.stop_preview()
33 47
48 + # s3 upload
49 + '''
34 s3 = boto3.client('s3', region_name = 'ap-northeast-2') 50 s3 = boto3.client('s3', region_name = 'ap-northeast-2')
35 s3.upload_file(Filename = vid_path, Bucket = S3_STORAGE_BUCKET_NAME, Key = vid_name) 51 s3.upload_file(Filename = vid_path, Bucket = S3_STORAGE_BUCKET_NAME, Key = vid_name)
36 52
...@@ -39,5 +55,15 @@ def record() : ...@@ -39,5 +55,15 @@ def record() :
39 uploadVideo['created'] = now 55 uploadVideo['created'] = now
40 serializer = VideoSerializer(data = uploadVideo) 56 serializer = VideoSerializer(data = uploadVideo)
41 serializer.save() 57 serializer.save()
42 - 58 + '''
59 + print(vid_path, "upload success")
43 os.remove(vid_path) 60 os.remove(vid_path)
61 + else:
62 + camera.stop_preview()
63 + except KeyboardInterrupt:
64 + print("quit")
65 + GPIO.cleanup()
66 +
67 +
68 +if __name__ == '__main__':
69 + record()
...\ No newline at end of file ...\ No newline at end of file
......