Showing
4 changed files
with
36 additions
and
54 deletions
... | @@ -77,8 +77,6 @@ class Devices(APIView) : | ... | @@ -77,8 +77,6 @@ class Devices(APIView) : |
77 | # 기기 목록 조회 | 77 | # 기기 목록 조회 |
78 | def get(self, request, format = None) : | 78 | def get(self, request, format = None) : |
79 | try : | 79 | try : |
80 | - if request.auth == None : | ||
81 | - raise PermissionDenied | ||
82 | queryset = Device.objects.all() | 80 | queryset = Device.objects.all() |
83 | serializer = DeviceSerializer(queryset, many = True) | 81 | serializer = DeviceSerializer(queryset, many = True) |
84 | res = { | 82 | res = { |
... | @@ -90,19 +88,12 @@ class Devices(APIView) : | ... | @@ -90,19 +88,12 @@ class Devices(APIView) : |
90 | 'error' : "FieldDoesNotExist ", | 88 | 'error' : "FieldDoesNotExist ", |
91 | 'date' : datetime.now() | 89 | 'date' : datetime.now() |
92 | }, status = status.HTTP_400_BAD_REQUEST) | 90 | }, status = status.HTTP_400_BAD_REQUEST) |
93 | - except PermissionDenied as error : | ||
94 | - return Response({ | ||
95 | - 'error' : "PermissionDenied", | ||
96 | - 'date' : datetime.now() | ||
97 | - }, status = status.HTTP_400_BAD_REQUEST) | ||
98 | 91 | ||
99 | # 기기 추가 요청 | 92 | # 기기 추가 요청 |
100 | - def put(self, request, device_id, format = None) : | 93 | + def put(self, request, format = None) : |
101 | try : | 94 | try : |
102 | if request.auth == None : | 95 | if request.auth == None : |
103 | raise PermissionDenied | 96 | raise PermissionDenied |
104 | - if device_id != "request" : | ||
105 | - raise FieldDoesNotExist | ||
106 | print(request.body) | 97 | print(request.body) |
107 | target = AddDevice.objects.get(id=1) | 98 | target = AddDevice.objects.get(id=1) |
108 | serializer = AddDeviceSerializer(target, many=False) | 99 | serializer = AddDeviceSerializer(target, many=False) |
... | @@ -114,11 +105,6 @@ class Devices(APIView) : | ... | @@ -114,11 +105,6 @@ class Devices(APIView) : |
114 | return Response({ | 105 | return Response({ |
115 | 'msg' : 'changed state successfully' | 106 | 'msg' : 'changed state successfully' |
116 | }, status = status.HTTP_200_OK) | 107 | }, status = status.HTTP_200_OK) |
117 | - except FieldDoesNotExist as error : | ||
118 | - return Response({ | ||
119 | - 'error' : "FieldDoesNotExist ", | ||
120 | - 'date' : datetime.now() | ||
121 | - }, status = status.HTTP_400_BAD_REQUEST) | ||
122 | except PermissionDenied as error : | 108 | except PermissionDenied as error : |
123 | return Response({ | 109 | return Response({ |
124 | 'error' : "PermissionDenied", | 110 | 'error' : "PermissionDenied", |
... | @@ -128,8 +114,6 @@ class Devices(APIView) : | ... | @@ -128,8 +114,6 @@ class Devices(APIView) : |
128 | # 기기 추가 | 114 | # 기기 추가 |
129 | def post(self, request, format = None) : # request body에 rfid_id 포함되어있음 | 115 | def post(self, request, format = None) : # request body에 rfid_id 포함되어있음 |
130 | try : | 116 | try : |
131 | - if request.auth == None : | ||
132 | - raise PermissionDenied | ||
133 | print(request.data) | 117 | print(request.data) |
134 | request_id = request.data.get('rfid_id', None) | 118 | request_id = request.data.get('rfid_id', None) |
135 | if request_id == None : | 119 | if request_id == None : |
... | @@ -152,11 +136,6 @@ class Devices(APIView) : | ... | @@ -152,11 +136,6 @@ class Devices(APIView) : |
152 | 'error' : "FieldDoesNotExist ", | 136 | 'error' : "FieldDoesNotExist ", |
153 | 'date' : datetime.now() | 137 | 'date' : datetime.now() |
154 | }, status = status.HTTP_400_BAD_REQUEST) | 138 | }, status = status.HTTP_400_BAD_REQUEST) |
155 | - except PermissionDenied as error : | ||
156 | - return Response({ | ||
157 | - 'error' : "PermissionDenied", | ||
158 | - 'date' : datetime.now() | ||
159 | - }, status = status.HTTP_400_BAD_REQUEST) | ||
160 | 139 | ||
161 | 140 | ||
162 | 141 | ... | ... |
asset/beep.wav
0 → 100644
No preview for this file type
asset/dingdongdang.wav
0 → 100644
No preview for this file type
... | @@ -9,6 +9,7 @@ import os | ... | @@ -9,6 +9,7 @@ import os |
9 | import django | 9 | import django |
10 | import datetime | 10 | import datetime |
11 | import sys | 11 | import sys |
12 | +import subprocess | ||
12 | 13 | ||
13 | sys.path.append('/home/pi/Desktop/smartdoorlock-backend') | 14 | sys.path.append('/home/pi/Desktop/smartdoorlock-backend') |
14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'src.settings') | 15 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'src.settings') |
... | @@ -22,38 +23,41 @@ from api.serializers import LockSerializer, AddDeviceSerializer, DeviceSerialize | ... | @@ -22,38 +23,41 @@ from api.serializers import LockSerializer, AddDeviceSerializer, DeviceSerialize |
22 | GPIO.setmode(GPIO.BCM) | 23 | GPIO.setmode(GPIO.BCM) |
23 | MFIAREReader = mfrc522.MFRC522() # RFID Reader | 24 | MFIAREReader = mfrc522.MFRC522() # RFID Reader |
24 | BASE_URL = "http://127.0.0.1:8000" | 25 | BASE_URL = "http://127.0.0.1:8000" |
25 | -PIN = { | 26 | +PIN = 18 |
26 | - 'Motor_MT_N': 12, | ||
27 | - 'Motor_MT_P': 6 | ||
28 | -} | ||
29 | 27 | ||
30 | 28 | ||
31 | -class Motor: | 29 | +class Sound: |
32 | - LEFT = 0 | 30 | + def __init__(self): |
33 | - RIGHT = 1 | 31 | + self.right_sound = "asset/dingdongdang.wav" |
32 | + self.wrong_sound = "asset/beep.wav" | ||
33 | + | ||
34 | + def print_right_sound(self): | ||
35 | + print("딩동댕 ~ 완료하였습니다") | ||
36 | + result = subprocess.check_output("sudo aplay {}".format(self.right_sound), shell=True) | ||
37 | + | ||
38 | + def print_wrong_sound(self): | ||
39 | + print("경고음 삑 -!") | ||
40 | + result = subprocess.check_output("sudo aplay {}".format(self.wrong_sound), shell=True) | ||
34 | 41 | ||
42 | + | ||
43 | +class Motor: | ||
35 | def __init__(self): | 44 | def __init__(self): |
36 | - self.pwmN = GPIO.PWM(PIN['Motor_MT_N'], 100) | 45 | + self.p = GPIO.PWM(PIN, 50) |
37 | - self.pwmP = GPIO.PWM(PIN['Motor_MT_P'], 100) | 46 | + self.p.start(0) |
38 | - self.pwmN.start(0) | 47 | + |
39 | - self.pwmP.start(0) | 48 | + def rotate(self, command): |
40 | - | 49 | + if command == "open": |
41 | - def rotate(self, direction): | 50 | + self.p.ChangeDutyCycle(12.5) |
42 | - if direction == Motor.LEFT: | ||
43 | - GPIO.output(PIN['Motor_MT_N'], GPIO.HIGH) | ||
44 | - GPIO.output(PIN['Motor_MT_P'], GPIO.LOW) | ||
45 | - self.pwmN.ChangeDutyCycle(50) | ||
46 | else: | 51 | else: |
47 | - GPIO.output(PIN['Motor_MT_N'], GPIO.LOW) | 52 | + self.p.ChangeDutyCycle(2.5) |
48 | - GPIO.output(PIN['Motor_MT_P'], GPIO.HIGH) | ||
49 | - self.pwmP.ChangeDutyCycle(50) | ||
50 | 53 | ||
51 | def stop(self): | 54 | def stop(self): |
52 | - self.pwmP.ChangeDutyCycle(0) | 55 | + self.p.ChangeDutyCycle(0) |
53 | - self.pwmN.ChangeDutyCycle(0) | 56 | + |
54 | 57 | ||
55 | 58 | ||
56 | def RFIDProcess(signalQueue): | 59 | def RFIDProcess(signalQueue): |
60 | + sound = Sound() | ||
57 | while True: | 61 | while True: |
58 | success = False | 62 | success = False |
59 | try: | 63 | try: |
... | @@ -94,10 +98,10 @@ def RFIDProcess(signalQueue): | ... | @@ -94,10 +98,10 @@ def RFIDProcess(signalQueue): |
94 | else: | 98 | else: |
95 | # callApi(POST /api/device, {rfid_id:deviceId}) # 기기 추가 | 99 | # callApi(POST /api/device, {rfid_id:deviceId}) # 기기 추가 |
96 | requests.post(BASE_URL+"/api/device", data={"rfid_id": deviceId}) | 100 | requests.post(BASE_URL+"/api/device", data={"rfid_id": deviceId}) |
97 | - print("딩동댕 ~ 완료하였습니다") # 소리 출력 | 101 | + sound.print_right_sound() |
98 | pass | 102 | pass |
99 | except: | 103 | except: |
100 | - print("경고음 삑 -!") | 104 | + sound.print_wrong_sound() |
101 | pass | 105 | pass |
102 | finally: # setToIPC(기기 추가 여부, 기기 추가 아님) | 106 | finally: # setToIPC(기기 추가 여부, 기기 추가 아님) |
103 | target.state = False | 107 | target.state = False |
... | @@ -111,7 +115,7 @@ def RFIDProcess(signalQueue): | ... | @@ -111,7 +115,7 @@ def RFIDProcess(signalQueue): |
111 | else: | 115 | else: |
112 | success = True | 116 | success = True |
113 | except: | 117 | except: |
114 | - print("경고음 삑 -!") # 소리 출력 | 118 | + sound.print_wrong_sound() |
115 | pass | 119 | pass |
116 | 120 | ||
117 | if success: | 121 | if success: |
... | @@ -146,27 +150,26 @@ def signalProcess(signalQueue): | ... | @@ -146,27 +150,26 @@ def signalProcess(signalQueue): |
146 | 150 | ||
147 | 151 | ||
148 | def doorProcess(doorQueue): | 152 | def doorProcess(doorQueue): |
149 | - # motor = Motor() | 153 | + motor = Motor() |
150 | while True: | 154 | while True: |
151 | signal = doorQueue.get() | 155 | signal = doorQueue.get() |
152 | print("{} 신호를 받아 문 열기 동작 수행 시작".format(signal)) | 156 | print("{} 신호를 받아 문 열기 동작 수행 시작".format(signal)) |
153 | if signal is not None: | 157 | if signal is not None: |
154 | print("문 열림") | 158 | print("문 열림") |
155 | - #motor.rotate(Motor.LEFT) | 159 | + motor.rotate("open") |
156 | time.sleep(0.5) | 160 | time.sleep(0.5) |
157 | - #motor.stop() | 161 | + motor.stop() |
158 | time.sleep(5) # 열린 후 5초 지나면 닫힘 | 162 | time.sleep(5) # 열린 후 5초 지나면 닫힘 |
159 | print("문 닫힘") | 163 | print("문 닫힘") |
160 | - #motor.rotate(Motor.RIGHT) | 164 | + motor.rotate("close") |
161 | time.sleep(0.5) | 165 | time.sleep(0.5) |
162 | - #motor.stop() | 166 | + motor.stop() |
163 | 167 | ||
164 | 168 | ||
165 | if __name__ == '__main__': | 169 | if __name__ == '__main__': |
166 | try: | 170 | try: |
167 | GPIO.setmode(GPIO.BCM) | 171 | GPIO.setmode(GPIO.BCM) |
168 | - #GPIO.setup(PIN['Motor_MT_N'], GPIO.OUT, initial=GPIO.LOW) | 172 | + GPIO.setup(PIN, GPIO.OUT) |
169 | - #GPIO.setup(PIN['Motor_MT_P'], GPIO.OUT, initial=GPIO.LOW) | ||
170 | 173 | ||
171 | signalQueue = Queue() | 174 | signalQueue = Queue() |
172 | pid = os.fork() | 175 | pid = os.fork() | ... | ... |
-
Please register or login to post a comment