김유현

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
20 - while state : 28 + try:
21 - target = Record.objects.get(id = 1) 29 + while state :
22 - serializer = RecordSerializer(target, many = False) 30 + #target = Record.objects.get(id = 1)
23 - state = serializer.data['recording'] 31 + #serializer = RecordSerializer(target, many = False)
24 - with picamera.Picamera() as camera : 32 + #state = serializer.data['recording']
25 - camera.resolution = [320,240] 33 + if GPIO.input(PIR_PIN): # motion detected
26 - now = datetime.datetime.now() 34 + # take a video
27 - vid_name = now.strftime('%Y%m%d-%H%M%S') 35 + camera.resolution = [320,240]
28 - 36 + camera.start_preview()
29 - vid_path = path + '/' + vid_name + '.h264' 37 + now = datetime.datetime.now()
30 - camera.start_recording(output = vid_path) 38 + vid_name = now.strftime('%Y%m%d-%H%M%S')
31 - camera.wait_recording(10) 39 + vid_path = path + '/' + vid_name + '.h264'
32 - camera.stop_recording() 40 + thumbnail_path = path + '/' + vid_name + '.jpg'
41 + camera.start_recording(output = vid_path)
42 + time.sleep(1)
43 + camera.capture(thumbnail_path)
44 + time.sleep(5)
45 + camera.stop_recording()
46 + camera.stop_preview()
47 +
48 + # s3 upload
49 + '''
50 + s3 = boto3.client('s3', region_name = 'ap-northeast-2')
51 + s3.upload_file(Filename = vid_path, Bucket = S3_STORAGE_BUCKET_NAME, Key = vid_name)
33 52
34 - s3 = boto3.client('s3', region_name = 'ap-northeast-2') 53 + uploadVideo = {}
35 - s3.upload_file(Filename = vid_path, Bucket = S3_STORAGE_BUCKET_NAME, Key = vid_name) 54 + uploadVideo['vid_name'] = vid_name
55 + uploadVideo['created'] = now
56 + serializer = VideoSerializer(data = uploadVideo)
57 + serializer.save()
58 + '''
59 + print(vid_path, "upload success")
60 + os.remove(vid_path)
61 + else:
62 + camera.stop_preview()
63 + except KeyboardInterrupt:
64 + print("quit")
65 + GPIO.cleanup()
36 66
37 - uploadVideo = {}
38 - uploadVideo['vid_name'] = vid_name
39 - uploadVideo['created'] = now
40 - serializer = VideoSerializer(data = uploadVideo)
41 - serializer.save()
42 67
43 - os.remove(vid_path)
...\ No newline at end of file ...\ No newline at end of file
68 +if __name__ == '__main__':
69 + record()
...\ No newline at end of file ...\ No newline at end of file
......