라즈베리파이 카메라 : UV4L를 이용한 스트리밍(4) – 웹 프레임워크 Flask 설치하고 안드로이드앱과 통신하기

안드로이드 앱에서 라즈베리 파이에 뭔가를 요청하거나 하려면 라즈베리 파이와 통신을 해야 한다. 파이슨을 사용해 소켓 서버를 만드는 방법 등, 여러가지 방법이 있을 것 같지만, 여기에서는 Flask를 이용해 보자. Flask는 쉽게 사용할 수 있는 웹 프레임워크이다. 가상 환경에서 사용하면 좋다고 하니, 이에 앞서 구글 어시스턴트 할 때 설치해 둔 가상 환경을 그대로 이용하기로 하자.가상 환경에 들어가자.

>

우선 Flask를 설치해야 한다. 설치는 간단하다.sudo apt-get install python3-flask

>

이미 설치되어 있다구. 에~ 기본설치 되어있어? 계속 해보자.예제를 만들어 실행해 보면 에러가 난다.설치가 잘못된 것 같다. 파이슨 3를 이용할 때는 아래와 같이 flask를 설치해야 한다. pip3 install flask 간단하게 예제를 만들어 보자. 파일명은 “app.py”로 하자.

실행해보자 python app.py

>

실행되었다.빨간줄안내문이보이는데이부분은좀알아봐야할사항이다. 공개용 프로그램 개발에는 WSGI를 사용하라는 안내문 같은데… 개인적으로 쉽게 사용할때는 문제가 되지않는 사항이라고 생각해웹브라우저로 접속해보자://라즈베리 파이어드레스:5000

화면에 Helloworld가 찍힌 것을 확인할 수 있다. 우선, 제대로 동작하고 있는 것을 확인할 수 있다. 그럼 안드로이드 앱으로, 라즈베리 파이의 UV4L스트리밍을 중지하거나 켜는 동작을 실현해 보자.

>

토글 버튼 하나 추가했어. 본래 목적은 카메라 모듈을 켜거나 끌 때 사용하려고 추가했는데 일단 테스트를 위해 라즈베리 파이에 연결된 LED를 조작해 보기로 하자.

우선 Flask 서버 파일의 코들 위화처럼 LED를 조작하도록 route를 추가해 준다. 안드로이드 앱까지 갈 것 없이 그냥 웹브라우저에서 ://라즈베리 파이 주소:5000/on://라즈베리 파이 주소:5000/off로 접속해 보면 LED가 동작하는 것을 확인할 수 있다. LED는 각자 자신의 연결 상황에 맞게 고치면 된다. 마지막으로 안드로이드 앱에서 주소대로 요청을 건너뛰면 될 것 같다.Ok Http를 이용하자.

gradle에 위 라인을 추가해 준다.

토글바큰에 request 코드를 추가해 준다. 일단 테스트를 위해 같은 코드를 on off에 비효율적으로 넣었는데 정리해야 한다.  리턴된 값을 토글 버튼에 표시할 때까지 실행하는 코드이다. 제대로 동작하는지 실행해 보자.

원하는 대로 LED 조명이 켜지고 꺼져 있는 것을 확인할 수 있다. 이 복잡하게 해놓은 저 코드를 정리해야 해.  최종 목적은 카메라 모듈을 켜고 끄는 것이다.