Sensor Gerak SmartThings dengan Penglihatan Komputer di Raspberry Pi 3
Deploy sensor gerak yang dikomputerisasi dengan penglihatan komputer pada Raspberry Pi 3 yang dilengkapi dengan PiCamera. Perangkat mendeteksi wajah manusia dan mengirimkan informasi kehadiran melalui UPnP melalui jaringan lokal ke SmartThings.
Saya akan mulai dengan asumsi bahwa Anda memiliki Raspberry Pi 3 dengan kamera yang berfungsi dan Open CV yang terinstal di dalamnya. Jika tidak, saya merekomendasikan tutorial ini 🙂
Membuat Device Handler Kustom SmartThings
Di IDE SmartThings, buat device handler baru untuk sensor gerak penglihatan komputer kami.
Pergi ke bagian “My Device Handler” dan klik “+ Create New Device Handler” di pojok kanan atas.
Dalam kasus ini kita akan membuatnya dari kode. Klik tab kedua “From Code”, tempel kode Device Handler yang dilampirkan dan klik “Create”.
Pada halaman berikutnya klik “Publish” untuk membuat perangkat tersedia bagi Anda.
Menulis SmartApp
Secara serupa, buat SmartApp. Di bagian “My SmartApps” klik “+ Create New SmartApps” di pojok kanan atas.
Buat dari kode, tempel kode SmartApp yang dilampirkan, dan klik “Create”. Lalu publikasikan.
Menyiapkan Raspberry Pi
Kami sekarang membutuhkan skrip Python yang menangkap gambar, mendeteksi wajah, dan melaporkan status ke SmartThings.
Tanda kurung menjalankan perintah di latar belakang setelah jeda singkat.
Ringkasan Kode
Di bawah ini adalah cuplikan ringkas komponen kunci dalam skrip Python. Kode sumber lengkap disediakan dalam lampiran.
#!/usr/bin/python3 import cv2 from picamera import PiCamera from twisted.web import server, resource # Inisialisasi kamera camera = PiCamera() camera.resolution = (640, 480) camera.framerate = 32 # Detektor wajah face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') # Server SSDP dan HTTP diatur untuk memungkinkan penemuan dan polling status SmartThings.
Skrip secara terus-menerus menangkap frame, menjalankan deteksi wajah Haar-cascade, dan memberi tahu hub SmartThings setiap kali seseorang terdeteksi atau scene menjadi kosong.