Showing
1 changed file
with
54 additions
and
28 deletions
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 | ... | ... |
-
Please register or login to post a comment