Raspberry Pi 3でコンピュータビジョン搭載SmartThingsモーションセンサー
PiCameraを搭載したRaspberry Pi 3に、コンピュータビジョン対応モーションセンサーを導入。デバイスは人の顔を検出し、ローカルネットワーク経由でUPnPを介してSmartThingsに存在情報を送信します。
Raspberry Pi 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」をクリック。その後「Publish」。
Raspberry Piの準備
画像を撮影し、顔を検出し、ステータスをSmartThingsに報告するPythonスクリプトが必要です。
必要ライブラリをインストール:
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、+ My Appsの下にある「Computer Vision (Connect)」を探す。
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カスケード顔検出を実行、人が検出されるかシーンが空になるたびにSmartThingsハブに通知します。
製造プロセス
- Home Assistant on Raspberry Piで安全なホーム監視 – モーション、アラーム、ビデオ撮影
- Raspberry Pi用DIY赤外線モーションセンサー構築 - ステップバイステップガイド
- Raspberry PiでPIRモーションセンサーとLEDを制御
- Raspberry Piガイガーカウンター構築 - オープンハードウェア放射線センサーチュートリアル
- Raspberry Pi GPIOマスター:PIRモーションセンサーをB+/Model 2でインターフェース
- 18世紀製粉所でのワイヤレスセンサーネットワーク導入
- HC-SR501 PIRモーションセンサーをRaspberry Piで接続・調整・プログラミングする方法
- Raspberry Pi で障害物回避ロボットを自作 – 初心者ガイド
- コンピュータビジョンが効率化とコスト削減を実現する7つの実証済み方法
- インダストリー4.0を革新する:コンピュータビジョンがスマート製造をどう推進するか
- STMicroelectronics LSM6DSOX:機械学習搭載慣性センサで精密・省電力アクティビティトラッキング