Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

RaspberryPiでWebカメラ使って,人の動作感知してみた

More than 5 years have passed since last update.

両親から、
「高齢の祖母がベッドから立ち上がった際に、それを感知してメールか何かで送れないかな?」
っていう相談受けました。
すでに、色々なメーカーから、そのような介護製品がでているのですが、
ちょうどいいと思い、RaspberryPiで動作センサを自作してみました。
(信頼性上、購入したメーカー製品が届くまでの繋ぎ程度の物ですけど)

Webカメラとmotion

RaspberryPiへのWebカメラ導入は以前にやっていました。

今回は、motionというパッケージを利用します。
Webカメラからの映像を監視して、何か動きがあれば検知するっていうソフトウェア。

参考:
[Raspberry Pi]motionでお手軽監視カメラをつくる
Motion の導入手順 ~ 指定した内容、パラメータの意味について

インストール

$ sudo apt-get install motion

設定ファイルを編集
今回は、映像を取ることではなく、検知によりメールを送信することが目的なので
画像、動画保存はしません(容量も取られますし)
動きが検知された際にメール送信のスクリプトを動かします。

$ sudo vi /etc/motion/motion.conf
motion.conf
# 略
daemon on          # RaspberryPi起動時のmotion起動設定
threshold 3000     # 検知の閾値,値が大きいほど鈍感になるみたいです。
output_normal off  #検知の際の画像保存設定
ffmpeg_cap_new off  #検知の際の動画保存設定
on_event_start /home/pi/sentmail.sh #検知が合った際に、実行されるシェルスクリプトを指定

メール送信用のスクリプト
motion.confではシェルスクリプト指定した方が楽なのかな?(未確認)
メール送信は、後々色々動作を追加するかもしれないので、Rubyで書きました。
なので、シェルスクリプトからRubyスクリプトを起動
参考:
RubyでGmailのSMTPサーバを使ってメールを送信する

sentmail.sh
ruby /home/pi/sentmail.rb
sentmail.rb
require 'mail'

mail = Mail.new

options = { :address              => "smtp.gmail.com",
            :port                 => 587,
            :domain               => "smtp.gmail.com",
            :user_name            => '<username>@gmail.com',
            :password             => '<password>',
            :authentication       => :plain,
            :enable_starttls_auto => true  }        
mail.charset = 'utf-8'
mail.from "from@example.com"
mail.to "to@example.com"    
mail.subject "メールタイトル"
mail.body "メール本文"
mail.delivery_method(:smtp, options)
mail.deliver

動きました。

KTaskn
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away