ラズパイで IoT 出勤チェックシステムを作ってみました

#はじめに

IoT 出勤チェックシステムってなんなの？って思われる方もいると思います。
これを少し書き換えると、出勤時間を記録してくれるシステムと言えます。

よく出勤時間を紙で記録したり、指紋などで出勤時間と退勤時間を記録しますね。しかし、紙で記録するのは正確性が落ちるし、指紋登録はお金がかかります。そこで、簡単に制作できる出勤・退勤管理システムを作ってみました。特別な知識がなくても、Excelで簡単に作成することができますよ！
**このプロジェクトはまた、ペットの動きを見届ける、ペットチェックシステムとしても活用できますので、愛犬人のみんなは要注目！**

###ステップ１：準備するもの

![Screen Shot 2017-02-22 at 4.56.15 PM.png](https://qiita-image-store.s3.amazonaws.com/0/162845/554ebd11-bdf3-1a1d-cab7-2f88b87813b5.png)

* ラズベリーパイ 2, 3 (2000~3500円) // RPi 2の場合はWiFiドングルが必要になります。
* 16GB SD カード(1000円)
* 1 PIR モジュール (300円) [リンク](https://www.amazon.co.jp/%E3%83%8E%E3%83%BC%E3%83%96%E3%83%A9%E3%83%B3%E3%83%89%E5%93%81-STK0114005054-%E3%80%90%E3%83%8E%E3%83%BC%E3%83%96%E3%83%A9%E3%83%B3%E3%83%89%E5%93%81%E3%80%91DYP-ME003-%E7%84%A6%E9%9B%BB%E5%9E%8B-%E8%B5%A4%E5%A4%96%E7%B7%9A-PIR-%E3%83%A2%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3-%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC-%E6%A4%9C%E5%87%BA%E5%99%A8-%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB/dp/B0092KJUJ6/ref=sr_1_14?ie=UTF8&qid=1487671322&sr=8-14&keywords=PIR%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB) + ワイヤー
* 古いウェブカメラ
* Google ドライブアカウント

全体の作成時間は約1時間ほど所用されます。

###ステップ2：プロタパイの設定

まずは自動化をコントロールし、全てのデバイスを一つに繋げるスマートハブを設定しなければなりません。ラズベリーパイ用プロタOSは設置も簡単で、しかも無料で提供されているOSです。簡単にあなたのラズパイをスマートハブに変えてみてください。

![Screen Shot 2017-02-22 at 4.59.10 PM.png](https://qiita-image-store.s3.amazonaws.com/0/162845/aa28a8f6-e6f6-69f5-7035-1f9dbcee5806.png)

OSは[こちら](https://prota.info/prota/pi/)からダウンロードすることができます。ダウンロードが完了したらSDカードに書き込んでください。
プロタパイ設定方法は[こちら](http://docs.prota.info/101-prota-pi/)をご参考ください。


###ステップ3：ウェブカメラとPIRセンサー設定

![Screen Shot 2017-02-22 at 5.00.24 PM.png](https://qiita-image-store.s3.amazonaws.com/0/162845/60213239-2ae3-1abb-c6ef-aabdb40aa0d6.png)

* ラズベリーパイにカメラのUSBケーブルを差し込んでください。
* プロタパイのアプリライブラリーからウェブカメラアプリをインストールしてください。
* アプリを開き、カメラがうまく作動しているか確認してください。

そのあと、PIRセンサーを接続してみます。

![Screen Shot 2017-02-22 at 5.01.36 PM.png](https://qiita-image-store.s3.amazonaws.com/0/162845/1ab48e82-931c-00a2-f484-b9f66b10618f.png)

写真から見えるように、センサーピンの横に小さくそれぞれのピンの役割が書いてあります。:
* Dはデータ
* + は電流接続
* - はグラウンド接続
難しくありません！写真のように設置してください。

![Screen Shot 2017-02-22 at 5.02.57 PM.png](https://qiita-image-store.s3.amazonaws.com/0/162845/c881c80b-fb17-ed16-e98e-ca9bc0bd5a89.png)

短く説明をしますと、赤いケーブルは5Vピン（ピン02）に、黒いケーブルはグラウンドピン（ピン14）に、そして青いケーブルはGPIO18ピン（ピン12）に差しました。
詳しくは以下のマップから確認することができます。

![Screen Shot 2017-02-22 at 5.04.14 PM.png](https://qiita-image-store.s3.amazonaws.com/0/162845/02779541-9540-a22f-e2e6-ec486efcdbfe.png)

* プロタスペースを開けてください。
* まずGPIOアプリをアプリライブラリーからインストールしてください。
* GPIOアプリから、GPIO18をクリックしてください。
* “Interrupt”をクリックし、 “Pull down”を選択したあと “set”を押してください。

![Screen Shot 2017-02-22 at 5.07.37 PM.png](https://qiita-image-store.s3.amazonaws.com/0/162845/cad6d77c-ad10-883e-eeac-53921395de06.png)

センサーの設定が完了しました。
センサーの前で手を振るなどの動作をすると、GPIOアプリページから “rising interrupt”という通知を確認することができます。

###ステップ4：Excel ドキュメント設定
Googleドライブのスプレッドシートを作成して、いつ、何名の職員が出勤したのかを記録してみます。

![Screen Shot 2017-02-22 at 5.11.41 PM.png](https://qiita-image-store.s3.amazonaws.com/0/162845/af11a264-1c42-a151-3ac0-0c1b982612ba.png)

テンプレートは以下からダウンロードしてください。
[テンプレートダウンロード](https://cdn.instructables.com/ORIG/FEI/5DSK/IZ6BFKPG/FEI5DSKIZ6BFKPG.xlsx)

このスプレッドシートを簡単に説明すると:
* 最初のタブはIFTTTアプレットより、PIRセンサーからの全てのレコーディングが記録されます。
* 2番目のタブでは時間情報を日時情報に変換します。
* ここでは従業員が午前11時45分を過ぎて出勤した場合、欠席したとみなしました。 (時間情報で言えば 0.4895833333）
* 3番目のタブでは午前11時45分以前、何名の人が出勤したのかを計算します。別のタイムパンを設定する場合は、B列の機能を変更してください。
このドキュメントを Googleスプレッドシートとしてドライブに保存してください。
例：マイドライブ > IFTTT > プロタ

###ステップ5：アプリ設定

まずはIFTTT アカウントを設定しましょう。
* プロタスベースのアプリライブラリーからIFTTTアプリをダウンロードしてください。
* プロタスペースを使用したデバイスと同じデバイスを利用してIFTTT.comまたはIFTTTアプリに接続し、会員登録またはログインしてください。
* “プロタ”を検索し、IFTTTアカウントに接続するプロタを選択し、接続してください。“Email” を検索し、使用するメールアカウントをIFTTT アカウントに接続してください。
* “Slack”を検索し、IFTTTアカウントとスラックアカウントを接続してください。


![Screen Shot 2017-02-22 at 5.13.49 PM.png](https://qiita-image-store.s3.amazonaws.com/0/162845/39adeb97-2cca-8fec-b2ca-6cab80bff93a.png)

次に、Emailアプリを設定してみます。
アプリライブラリーに移動し、Emailアプリをダウンロードする
アプリを開け、メールアドレスを登録するため＋ボタンをクリックする
さらに詳しくはこちらの[ガイド](http://docs.prota.info/guides/apps/email/)をご覧ください。

###ステップ6：自動化設定(ストリーズ & IFTTT)

![diy time clock.gif](https://qiita-image-store.s3.amazonaws.com/0/162845/cbfbfe12-e21a-5d84-145a-ea9b562327b6.gif)

もう自動化を設定しましょう！

*まず、ストーリーラインを作成します。*

* プロタスペースアプリを開き、＋ボタンをクリックし、”When”をクリックします。
* ”set sensor”（センサー設定） でGPIOを選択してください。次のように作成してください。 “detects a rising interrupt on pin GPIO18”、つまり “動きが検出されたら”という意味ですね。
* 次にトリガーによって実際の実行を行うアクションを設定してみましょう。アクターとしてはウェブカメラを、アクションは”webcam take a snapshot”として設定します。つまり”ウェブカメラがスナップショットを撮る。
NB: 今回の実験ではスナップショットの速度が早過ぎてうまく記録ができませんでした。そのため、“extra option”（エキストラ・オプション）から5秒のDelayを置くことにしました。

* 右上コーナーにある“then” ボタンをクリックしてください。 次にアクションとしてIFTTT を洗濯し、 “run the Prota applet”（アプレット実行）を作成してください。
* “And another actor story”ボタンをクリックし、 “send email to trigger@recipe.ifttt.com file - snapshot“ (trigger@recipe.ifttt.comにメールを送るースナップショット）を作成する。

![Screen Shot 2017-02-22 at 5.20.25 PM.png](https://qiita-image-store.s3.amazonaws.com/0/162845/3ab86962-bad3-1350-b4f4-969519808b3f.png)

次に、必要な2つのアプレットを作成しましょう
1. IF Prota - Execute storyline（プロタがストーリーラインを実行したら）（前に作成したストーリーを選択）
THEN Google Drive - Add a row to spreadsheet (Googleドライブ - スプレッドシートに行を追加する)（スプレッドシート名とフォルダパス(e.g マイドライブ > IFTTT > プロタ)を入力する） 
![Screen Shot 2017-02-22 at 5.21.22 PM.png](https://qiita-image-store.s3.amazonaws.com/0/162845/3abcac91-74a9-3e82-808b-13f57ec4f0e4.png)

2.  IF Email - Send IFTTT any email (trigger@recipe.ifttt.comまでメールが届いたら、）
THEN Slack - Post to channel （スラックの特定チャンネルにポストする）(例えば、自分自身にメッセージするように設定)

![Screen Shot 2017-02-22 at 5.22.21 PM.png](https://qiita-image-store.s3.amazonaws.com/0/162845/4721f46b-3131-67a7-d507-7390a7d82a24.png)

###ステップ7：出勤チェックシステムがうまく作動するか確認!

準備が整いました! 出勤チェックシステムを玄関先に置いて実際どう動くかを確認してみましょう。

![Screen Shot 2017-02-22 at 5.26.57 PM.png](https://qiita-image-store.s3.amazonaws.com/0/162845/b55433c5-cd15-fae9-814e-ec61e0b9425e.png)

[動画で確認！](https://youtu.be/krbLmB8RWZY)

#まとめ

このプロジェクトは主に、ラズベリーパイ、センサー、プロタ OS、ウェブカメラを組み合わせた基本的なアプリケーションを紹介することを目的としています。これらを利用した個人的なプロジェクトの出発点していただいたらいいと思います。IoTには無制限のアプリケーションが存在するため、さらに発展させてみてください。

さらに進んでみたいと思われるあなたのためのいくつかのTIPをご紹介します。:
* PIRセンサの代わりに、レーザモジュールを使用してみてください。セットアップは簡単で、PIRセンサーよりも正確です。
* このプロジェクトは、ペットの動きを外からでも見届けるようなペットチェックシステムに活用することもできます。
* ウェブフック機能を活用すれば、リアルタイムで出勤状態をテレグラムアプリに転送することも可能です。
* このプログラムで利用したウェブカメラ以内にも、プロタパイの”Blue Tag”アプリを使うことも可能。各従業員のスマートフォンの固有Bluetoothをプロタに登録して置けば、誰が、何時にきたのかを記録して置くことができます。

プロジェクトを実行する時の問題点や、質問事項などはいつでもコメントに残してください！
プロタパイを利用したオフィス・ホーム自動化、ぜひ楽しんでください！

PS：[Twitter](https://twitter.com/thenaran_)、[instagram](https://www.instagram.com/naran.inc/)やってますよ！:)