Showing
5 changed files
with
92 additions
and
9 deletions
... | @@ -32,4 +32,4 @@ class Record(models.Model) : | ... | @@ -32,4 +32,4 @@ class Record(models.Model) : |
32 | 32 | ||
33 | class AddDevice(models.Model) : | 33 | class AddDevice(models.Model) : |
34 | id = models.IntegerField(primary_key = True) | 34 | id = models.IntegerField(primary_key = True) |
35 | - add = models.BooleanField(default = False) | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
35 | + state = models.BooleanField(default = False) | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -10,12 +10,12 @@ django.setup() | ... | @@ -10,12 +10,12 @@ django.setup() |
10 | from django.core import serializers | 10 | from django.core import serializers |
11 | from api.models import Video, Record | 11 | from api.models import Video, Record |
12 | from api.serializers import VideoSerializer, RecordSerializer | 12 | from api.serializers import VideoSerializer, RecordSerializer |
13 | -''' | 13 | + |
14 | from boto3.session import Session | 14 | from boto3.session import Session |
15 | from src.settings import AWS_REGION, S3_ACCESS_URL, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_STORAGE_BUCKET_NAME | 15 | from src.settings import AWS_REGION, S3_ACCESS_URL, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_STORAGE_BUCKET_NAME |
16 | import RPi.GPIO as GPIO | 16 | import RPi.GPIO as GPIO |
17 | from picamera import PiCamera | 17 | from picamera import PiCamera |
18 | -''' | 18 | + |
19 | 19 | ||
20 | def record() : | 20 | def record() : |
21 | path = '/home/pi/recorded' # save path | 21 | path = '/home/pi/recorded' # save path |
... | @@ -61,7 +61,6 @@ def record() : | ... | @@ -61,7 +61,6 @@ def record() : |
61 | vid_time = time.strftime("%M:%S", time.gmtime(time.time()-start_time)) | 61 | vid_time = time.strftime("%M:%S", time.gmtime(time.time()-start_time)) |
62 | 62 | ||
63 | # s3 upload | 63 | # s3 upload |
64 | - ''' | ||
65 | s3 = boto3.client('s3', region_name = 'ap-northeast-2') | 64 | s3 = boto3.client('s3', region_name = 'ap-northeast-2') |
66 | s3.upload_file(Filename = vid_path, Bucket = S3_STORAGE_BUCKET_NAME, Key = vid_name) | 65 | s3.upload_file(Filename = vid_path, Bucket = S3_STORAGE_BUCKET_NAME, Key = vid_name) |
67 | s3.upload_file(Filename = thumbnail_path, Bucket = S3_STORAGE_BUCKET_NAME, Key = vid_name + '_thumb') | 66 | s3.upload_file(Filename = thumbnail_path, Bucket = S3_STORAGE_BUCKET_NAME, Key = vid_name + '_thumb') |
... | @@ -73,7 +72,6 @@ def record() : | ... | @@ -73,7 +72,6 @@ def record() : |
73 | uploadVideo['thumb'] = S3_ACCESS_URL + vid_name + '_thumb' | 72 | uploadVideo['thumb'] = S3_ACCESS_URL + vid_name + '_thumb' |
74 | serializer = VideoSerializer(data = uploadVideo) | 73 | serializer = VideoSerializer(data = uploadVideo) |
75 | serializer.save() | 74 | serializer.save() |
76 | - ''' | ||
77 | print(vid_path, "upload success") | 75 | print(vid_path, "upload success") |
78 | os.remove(vid_path) | 76 | os.remove(vid_path) |
79 | else: | 77 | else: | ... | ... |
... | @@ -17,12 +17,11 @@ from rest_framework.request import Request | ... | @@ -17,12 +17,11 @@ from rest_framework.request import Request |
17 | from rest_framework.response import Response | 17 | from rest_framework.response import Response |
18 | from rest_framework.authtoken.models import Token | 18 | from rest_framework.authtoken.models import Token |
19 | 19 | ||
20 | -""" | ||
21 | from boto3.session import Session | 20 | from boto3.session import Session |
22 | from src.settings import AWS_REGION | 21 | from src.settings import AWS_REGION |
23 | from src.settings import S3_ACCESS_URL | 22 | from src.settings import S3_ACCESS_URL |
24 | from src.settings import S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_STORAGE_BUCKET_NAME | 23 | from src.settings import S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_STORAGE_BUCKET_NAME |
25 | -""" | 24 | + |
26 | import time | 25 | import time |
27 | from datetime import datetime, timedelta | 26 | from datetime import datetime, timedelta |
28 | import json | 27 | import json | ... | ... |
... | @@ -124,7 +124,7 @@ USE_TZ = True | ... | @@ -124,7 +124,7 @@ USE_TZ = True |
124 | # https://docs.djangoproject.com/en/3.1/howto/static-files/ | 124 | # https://docs.djangoproject.com/en/3.1/howto/static-files/ |
125 | 125 | ||
126 | STATIC_URL = '/static/' | 126 | STATIC_URL = '/static/' |
127 | -""" | 127 | + |
128 | AWS_REGION = 'ap-northeast-2' | 128 | AWS_REGION = 'ap-northeast-2' |
129 | AWS_SETTINGS = os.path.join(BASE_DIR, '.aws_key.json') | 129 | AWS_SETTINGS = os.path.join(BASE_DIR, '.aws_key.json') |
130 | awskey = json.loads(open(AWS_SETTINGS).read()) | 130 | awskey = json.loads(open(AWS_SETTINGS).read()) |
... | @@ -133,4 +133,3 @@ S3_ACCESS_KEY_ID = awskey['aws']['access_key_id'] | ... | @@ -133,4 +133,3 @@ S3_ACCESS_KEY_ID = awskey['aws']['access_key_id'] |
133 | S3_SECRET_ACCESS_KEY = awskey['aws']['secret_access_key'] | 133 | S3_SECRET_ACCESS_KEY = awskey['aws']['secret_access_key'] |
134 | S3_STORAGE_BUCKET_NAME = awskey['aws']['s3_bucket_name'] | 134 | S3_STORAGE_BUCKET_NAME = awskey['aws']['s3_bucket_name'] |
135 | S3_ACCESS_URL = awskey['aws']['s3_access_url'] | 135 | S3_ACCESS_URL = awskey['aws']['s3_access_url'] |
136 | -""" | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
videorecord.py
0 → 100644
1 | +import os | ||
2 | +import boto3 | ||
3 | +import botocore | ||
4 | +import time | ||
5 | +import datetime | ||
6 | +import django | ||
7 | + | ||
8 | +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'src.settings') | ||
9 | +django.setup() | ||
10 | +from django.core import serializers | ||
11 | +from api.models import Video, Record | ||
12 | +from api.serializers import VideoSerializer, RecordSerializer | ||
13 | +''' | ||
14 | +from boto3.session import Session | ||
15 | +from src.settings import AWS_REGION, S3_ACCESS_URL, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_STORAGE_BUCKET_NAME | ||
16 | +import RPi.GPIO as GPIO | ||
17 | +from picamera import PiCamera | ||
18 | +''' | ||
19 | + | ||
20 | +def record() : | ||
21 | + path = '/home/pi/recorded' # save path | ||
22 | + | ||
23 | + target = Record.objects.get(id = 1) | ||
24 | + serializer = RecordSerializer(target, many = False) | ||
25 | + state = serializer.data['recording'] | ||
26 | + #''' | ||
27 | + # rpi setting | ||
28 | + GPIO.setmode(GPIO.BCM) | ||
29 | + pir_pin = 7 | ||
30 | + GPIO.setup(pir_pin, GPIO.IN) | ||
31 | + camera = PiCamera() | ||
32 | + #''' | ||
33 | + | ||
34 | + try: | ||
35 | + while state : | ||
36 | + target = Record.objects.get(id = 1) | ||
37 | + serializer = RecordSerializer(target, many = False) | ||
38 | + state = serializer.data['recording'] | ||
39 | + | ||
40 | + if GPIO.input(pir_pin): # motion detected | ||
41 | + # take a video | ||
42 | + camera.resolution = [320, 240] | ||
43 | + camera.start_preview() | ||
44 | + | ||
45 | + now = datetime.datetime.now() | ||
46 | + start_time = time.time() | ||
47 | + | ||
48 | + vid_name = now.strftime('%Y%m%d-%H%M%S') | ||
49 | + vid_path = path + '/' + vid_name + '.h264' | ||
50 | + thumbnail_path = path + '/' + vid_name + '.jpg' | ||
51 | + | ||
52 | + camera.start_recording(output=vid_path) | ||
53 | + time.sleep(1) | ||
54 | + camera.capture(thumbnail_path) | ||
55 | + while GPIO.input(pir_pin) : | ||
56 | + print("recoring..") | ||
57 | + time.sleep(2) | ||
58 | + camera.stop_recording() | ||
59 | + camera.stop_preview() | ||
60 | + | ||
61 | + vid_time = time.strftime("%M:%S", time.gmtime(time.time()-start_time)) | ||
62 | + | ||
63 | + # s3 upload | ||
64 | + ''' | ||
65 | + s3 = boto3.client('s3', region_name = 'ap-northeast-2') | ||
66 | + s3.upload_file(Filename = vid_path, Bucket = S3_STORAGE_BUCKET_NAME, Key = vid_name) | ||
67 | + s3.upload_file(Filename = thumbnail_path, Bucket = S3_STORAGE_BUCKET_NAME, Key = vid_name + '_thumb') | ||
68 | + | ||
69 | + uploadVideo = {} | ||
70 | + uploadVideo['vid_name'] = vid_name | ||
71 | + uploadVideo['created'] = now | ||
72 | + uploadVideo['vid_time'] = vid_time | ||
73 | + uploadVideo['thumb'] = S3_ACCESS_URL + vid_name + '_thumb' | ||
74 | + serializer = VideoSerializer(data = uploadVideo) | ||
75 | + serializer.save() | ||
76 | + ''' | ||
77 | + print(vid_path, "upload success") | ||
78 | + os.remove(vid_path) | ||
79 | + else: | ||
80 | + camera.stop_preview() | ||
81 | + except KeyboardInterrupt: | ||
82 | + print("quit") | ||
83 | + GPIO.cleanup() | ||
84 | + | ||
85 | + | ||
86 | +if __name__ == '__main__': | ||
87 | + record() |
-
Please register or login to post a comment