両親から、
「高齢の祖母がベッドから立ち上がった際に、それを感知してメールか何かで送れないかな?」
っていう相談受けました。
すでに、色々なメーカーから、そのような介護製品がでているのですが、
ちょうどいいと思い、RaspberryPiで動作センサを自作してみました。
(信頼性上、購入したメーカー製品が届くまでの繋ぎ程度の物ですけど)
#Webカメラとmotion
RaspberryPiへのWebカメラ導入は以前にやっていました。
今回は、motionというパッケージを利用します。
Webカメラからの映像を監視して、何か動きがあれば検知するっていうソフトウェア。
参考:
[Raspberry Pi]motionでお手軽監視カメラをつくる
Motion の導入手順 ~ 指定した内容、パラメータの意味について
インストール
$ sudo apt-get install motion
設定ファイルを編集
今回は、映像を取ることではなく、検知によりメールを送信することが目的なので
画像、動画保存はしません(容量も取られますし)
動きが検知された際にメール送信のスクリプトを動かします。
$ sudo vi /etc/motion/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サーバを使ってメールを送信する
ruby /home/pi/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
動きました。