こんにちは。IoT開発部(仮)の西村です。
犬のしつけ教室に行ったら、先にあなたの子供をしつけてくださいと怒られました。他人任せはダメですね。とほほ。
先日、社内メンバーでランチに行った際に、IoT関連でなんかやってみたいよね。 という話になり、少し前からチラホラと名前を聞いてたRaspberryPiを使ってなんか作ってみようぜ! という事になりました。
何作んの?
さて何を作ろう?!という事で、
オフィスに誰か入ってきた時に、カメラで撮ってslackに流したら社内の動きがわかって便利だよね。
廊下に置いて、お客さま or 大家さんが来たらサッと扉を開けて、最高の笑顔で迎えてみようか?
なんて話になりました。
ということで、「誰かきたかもよ」君を作成しました。
ラズパイ本体と各種パーツ購入
amazonで以下の製品をポチりました。
だいたい次の日には届きました。便利ですね。
ちなみに、ラズパイをカートに入れたらamazonがレコメンドしてくれる [Transcend microSDHCカード 32GB]を買ったんですが、何度やり直してもOSのインストールがうまくいきませんでした。
東芝製のものを買い直したらあっさり成功したので、相性のようなものがあるのかもしれません。あまりお勧めを鵜呑みにするのはよくないですね。
手順1 SDカードにOSをダウンロード・インストール
まずSDカードを
というツールを使ってフォーマットします。
次にraspberrypiサイトから、OSイメージをダウンロードしてきて、SDカードにコピーします。
raspberrypi本体にSDカードを刺して、キーボード・マウスを取り付け、電源としてのMicroUSBを挿したら起動し、インストールが始まります。
本体には電源ボタンとかないんですね。
手順2 各種パーツを取り付ける
OSのインストールが一通り終わったら、一旦電源を落として、センサー等各種パーツを取り付けます。
正直、どこに何をつけたらよいのか知識がなく困ったのですが、Qiitaのcigalecigalesさんの記事 を参考にして取り付けました。
人感センサー部分の設定に関しては、上記記事内でも紹介されてますこちらのサイト を参考にさせてもらいました。
カメラモジュールは本体に刺すだけです。
手順3 無線LANの設定
参考サイトはたくさんあると思いますが、
lsusb
コマンドで無線LANモジュール機器が確認できたら、
- SSID, 暗号キーを設定
- 固定IPの設定
を行い、ネットワーク再起動します。
手順4 プログラムを書く
今回のプログラムの流れとしては、以下のような感じです。
- 1sec毎にループし、人感センサーの反応をチェック
- センサーが反応したら1sec挟んで写真を2枚撮る
- 2枚の画像の差分解析を行う
- 一定以上の差分があれば、SCPで写真を画像公開用のサーバに送る
- slackに、写真のURLとともに「誰かきたかもよ」とメッセージを送る
利用する各種moduleのimport
import os import commands import time import RPi.GPIO as GPIO import slackweb import picamera from paramiko import SSHClient, AutoAddPolicy from datetime import datetime
画像の差分比較(ImageMagickを利用)
ImageMagickをインストール
sudo apt-get install libjpeg-dev imagemagick
os.system('composite -compose difference ' + filepath + ' ' + filepath_check + ' ' + filepath_diff) diff_num = commands.getoutput("identify -format \"%[mean]\" " + filepath_diff)
画像が変化したと判断するための差分値は 1500
以上にしてますが、このあたりは環境等にもよると思います。
slackに通知
Qiitaのsatoshi03さんの記事を参考にWebHookURLを取得して、slackwebモジュールを利用して通知します。
slack.notify(text="誰か来たかもよ.") slack.notify(text="WEBサーバに投稿した画像URL")
手順5 スクリプトをデーモン起動させる
常時起動するために supervisor をインストールします。
sudo apt-get install supervisor
human_sensor.conf を作成し、設定を行ったら
sudo supervisorctl start all
でデーモン起動させました。
設置
さて、この「誰かきたかもよ」君をオフィス内の扉の前に設置しました。
これで誰か来たとき、帰る時に、slackに通知されるようになりました。
カメラの前にいろいろものを置きすぎて鬱陶しいですが、現状こんな感じ。
いたずら
同じものをもう1台作って東京オフィスにも設置してみました。
しばらくはうまく動いてたのですが、誰かがトイレに行く際に、マッハキックをかましたようで、「誰かきたかもよ」君が倒れ、延々と暗い画像を映し続けてました。
そこで不意に、とてもとても怖い写真をslackに投稿してみました。
真夜中にです。
そしたら
という反応を示してくれました。
ちょーびびってる。けけけ。
まとめ
SORACOM Airや、akerun などIoT製品が続々登場し、身近な物になってきました。
最近知った、MaBeee などは、見ててとてもワクワクします。
弊社でも、そんな製品・サービスづくりに積極的にチャレンジしたいと思います。
さてインフラは整ったので、お客さま・大家さんに最高の笑顔をご提供できるように 全メンバー手鏡を持ち、朝から夜中まで自主練をしております。
うーん、もう少しですね。
それでは、私も自主練に戻りますので、失礼致します。