Датчик движения SmartThings на компьютерном зрении с Raspberry Pi 3
Разверните датчик движения с компьютерным зрением на Raspberry Pi 3 с PiCamera. Устройство детектирует человеческие лица и передаёт информацию о присутствии через UPnP по локальной сети в SmartThings.
Начну с предположения, что у вас есть Raspberry Pi 3 с рабочей камерой и установленным OpenCV. Если нет, рекомендую этот туториал 🙂
Создание кастомного Device Handler для SmartThings
В SmartThings IDE создайте новый device handler для нашего компьютерного зрения датчика движения.
Перейдите в секцию «My Device Handler» и нажмите «+ Create New Device Handler» в правом верхнем углу.
В этом случае создадим из кода. Нажмите вторую вкладку «From Code», вставьте прикреплённый код Device Handler и нажмите «Create».
На следующей странице нажмите «Publish», чтобы сделать устройство доступным для вас.
Написание SmartThings App
Аналогично создайте SmartApp. В секции «My SmartApps» нажмите «+ Create New SmartApps» в правом верхнем углу.
Создайте из кода, вставьте прикреплённый код SmartApp, нажмите «Create». Затем опубликуйте.
Подготовка Raspberry Pi
Теперь нужен Python-скрипт, захватывающий изображения, детектирующий лица и репортящий статус в 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 — должны появиться логи инициализации камеры и событий детекции лиц.
Обнаружение и паринг Raspberry Pi
В мобильном приложении SmartThings перейдите в Marketplace → SmartApps, найдите «Computer Vision (Connect)» под «+ My Apps».
Убедитесь, что Raspberry Pi включен и Python-скрипт запущен. SmartApp начнёт обнаружение; когда устройство появится, выберите его и нажмите «Done».
После паринг устройство начнёт отправлять обновления присутствия в ваш SmartThings аккаунт.
Автозапуск
Для автоматического запуска скрипта при загрузке отредактируйте /etc/rc.local и добавьте перед строкой exit 0:
(sleep 10; python3 /home/pi/camera/ssdpcamera.py)&
Скобки запускают команду в фоне после небольшой задержки.
Обзор кода
Ниже краткий фрагмент ключевых компонентов Python-скрипта. Полные исходники в прикреплённых файлах.
#!/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 и опроса статуса.
Скрипт непрерывно захватывает кадры, запускает Haar-cascade детекцию лиц и уведомляет SmartThings хаб при обнаружении человека или когда сцена становится пустой.
Производственный процесс
- STMicroelectronics LSM6DSOX: инерциальный датчик с машинным обучением для точного, энергоэффективного трекинга активност…
- Надёжный домашний мониторинг с Home Assistant на Raspberry Pi: движение, алермы и видеозахват
- Построение DIY инфракрасного датчика движения для Raspberry Pi — пошаговое руководство
- Управление светодиодом с PIR-датчиком движения на Raspberry Pi
- Создание счетчика Гейгера на Raspberry Pi — туториал по открытому датчику радиации
- Мастерство GPIO Raspberry Pi: подключение PIR-датчика движения на B+/Model 2
- Развертывание беспроводной сети датчиков на мельнице XVIII века
- Подключение, калибровка и программирование PIR-датчика HC‑SR501 с Raspberry Pi
- Создание робота, избегающего препятствия, на Raspberry Pi — руководство для начинающих
- Семь проверенных способов, как компьютерное зрение повышает эффективность и экономит затраты