라즈베리 파이 3에서 컴퓨터 비전으로 SmartThings 모션 센서 만들기
PiCamera가 장착된 라즈베리 파이 3에 컴퓨터 비전 기반 모션 센서를 배포하세요. 이 장치는 사람 얼굴을 감지하고 로컬 네트워크에서 UPnP를 통해 SmartThings에 존재 정보를 전송합니다.
라즈베리 파이 3에 작동하는 카메라와 OpenCV가 설치되어 있다고 가정합니다. 그렇지 않다면 이 튜토리얼을 추천합니다 🙂
커스텀 SmartThings 기기 핸들러 만들기
SmartThings IDE에서 우리 컴퓨터 비전 모션 센서용 새 기기 핸들러를 만드세요.
"My Device Handler" 섹션으로 가서 오른쪽 상단의 "+ Create New Device Handler"를 클릭하세요.
이 경우 코드에서 생성합니다. 두 번째 탭 "From Code"를 클릭하고 첨부된 Device Handler 코드를 붙여넣고 "Create"를 클릭하세요.
다음 페이지에서 "Publish"를 클릭해 기기를 본인에게 사용 가능하게 만드세요.
SmartThings 앱 작성
마찬가지로 SmartApp을 만드세요. "My SmartApps" 섹션에서 오른쪽 상단의 "+ Create New SmartApps"를 클릭하세요.
코드에서 생성하고 첨부된 SmartApp 코드를 붙여넣고 "Create"를 클릭하세요. 그런 다음 게시하세요.
라즈베리 파이 준비
이미지를 캡처하고 얼굴을 감지해 상태를 SmartThings에 보고하는 파이썬 스크립트가 필요합니다.
필수 라이브러리 설치:
pip install imutils
sudo apt-get install python3-twisted-web
스크립트 보관용 디렉터리 생성:
mkdir -p /home/pi/camera
cd /home/pi/camera
스크립트 파일 생성:
sudo nano ssdpcamera.py
첨부된 Camera Python Script를 붙여넣고 저장하세요.
python3 ssdpcamera.py로 테스트하세요 – 카메라 초기화와 얼굴 감지 이벤트를 나타내는 로그 출력이 보여야 합니다.
라즈베리 파이 3 검색 및 페어링
SmartThings 모바일 앱에서 Marketplace → SmartApps로 이동한 뒤 "+ My Apps" 아래 "Computer Vision (Connect)"를 찾으세요.
라즈베리 파이의 전원이 켜져 있고 파이썬 스크립트가 실행 중인지 확인하세요. SmartApp이 검색을 시작하고 장치가 나타나면 선택하고 "Done"을 누르세요.
페어링 후 장치가 SmartThings 계정에 존재 업데이트를 보고하기 시작합니다.
자동 시작 설정
부팅 시 스크립트가 자동 실행되게 하려면 /etc/rc.local을 편집해 exit 0 줄 앞에 다음을 추가하세요:
(sleep 10; python3 /home/pi/camera/ssdpcamera.py)&
괄호는 짧은 지연 후 백그라운드에서 명령을 실행합니다.
코드 개요
아래는 파이썬 스크립트의 핵심 구성요소 간략 발췌입니다. 전체 소스 파일은 첨부파일에 제공됩니다.
#!/usr/bin/python3
import cv2
from picamera import PiCamera
from twisted.web import server, resource
# 카메라 초기화
camera = PiCamera()
camera.resolution = (640, 480)
camera.framerate = 32
# 얼굴 검출기
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# SSDP와 HTTP 서버를 설정해 SmartThings 검색과 상태 폴링 허용.
스크립트는 지속적으로 프레임을 캡처하고 하르 캐스케이드 얼굴 감지를 실행하며 사람이 감지되거나 장면이 비면 SmartThings 허브에 알립니다.