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