logo header
logo header
logo header
logo header
  • 2017.01.11
  • 技術ブログ

ラズパイで手軽に作る!ドアロックセンサーの実現【第三回/最終回 ドアロックセンサー実現】

みなさま、新年あけましておめでとうございます。tacckです。
今年も、面白いことをブログに書いていきたい気持ちでいっぱいです。

今回は、ラズパイでドアロックセンサー作成の最終回です。

このシリーズの目次

(1) AWS IoTの設定
(2) Raspberry PiからAWS IoTへメッセージを送信しそれをメールで通知 (前回)
(3) センサーからデータを取得しAWS IoTへメッセージ送信 (今回)

今回は、(3)を完了させてドアロックセンサーの完成を目指します。

復習

ハード

ようやくセンサーを利用します!
基本的な利用方法は、上記リンクからも確認できます。

ここでは、すでにSensorTagを利用できる状態である前提とします。

前回やったこと

前回はAWS Iotが受信したメッセージの内容を基に、登録したメールアドレスへメールを送信する、というところをやりました。
前回までで、「メッセージを受け取った後」の処理は完成していることになります。

Thing(モノ)でセンサーから情報を取得しメッセージを送信する

今回は、Thing(モノ)であるRaspberry PiとSensorTagを接続し、
「ドアのロックが解除された」という情報を得られたらメッセージを送信する、というところを実現していきます。

センサーからデータを受信

センサーからデータを受信できるようにしていきます。
まずは、SensorTagを操作するためのライブラリをインストールします。

上記実行するとnode_modules/sensortag/test.jsが使えるようになるので、これを参考にして下記のようなプログラムを作成します。

上記を実行し、実際にドアの鍵を開閉してデータを確認したところ、以下のようになりました。(一部抜粋)

16:21:47から16:21:53の間が解錠した状態でした。(背景色が黄色の箇所)
数値の二番目(プログラム上ではy)の値の変化が顕著なので、これを使って鍵が「開いている」「閉まっている」という状態を判別してみます。
ものすごく大雑把ですが、yの値が前回の値と比べて

  • 40より小さくなった: 鍵が開いている(解錠 status: 0)
  • 40より大きくなった: 鍵が閉まっている(施錠 status: 1)

と定義します。

ちなみに、前回の記事では「施錠」のルールを作成していますが、「解錠」のルールがまだありません。
このタイミングで、ルールを追加しておきましょう。
(追加方法は、前回の記事を参考にしてください。)

データを使って状態を実現

上記の定義を、先ほどのプログラムに実装します。対応すると、下記のようになります。(対応行のみ抜粋)
背景色が黄色の行を追加・修正しています。

これで、「解錠」と「施錠」のイベントが発生する、という状態を作成できました。

状態に応じてメッセージ送信

前回作成したプログラムをこのプログラムにうまく取り込むことで、状態に応じたメッセージを送信できるようにします。
取り込んだ結果は、下記のようになります。

動作確認

では、実際に動作を見てみましょう!

まず、SensorTagは下記のような形でドアの鍵のところに設置します。
プロトタイプ感があって良いですね。

では、実際に鍵を開けたり閉めたりしてみましょう。

鍵の動きに合わせて、メール受信通知をiPhoneで受け取れています!

まとめ

いかがでしたでしょうか。
全3回にわたって、センサーの結果を手軽にスマホで受け取る、というソリューションのプロトタイピングを行なってきました。

ここで注意点が一つ。
SensorTagですが「プロトタイピング」向けのためか、連続運用向きでは無いようです。
今回のプログラムの動作確認では、2日程度で電池切れが発生したりしていました。
また、電池とSensorTag個体の相性でセンサーの一部がうまく使えない場合もあるようです。

そのため実際は、SensorTagで取得したデータで目的にあうことを確認し、専用のセンサーに切り替えて本番対応する、というやり方がよさそうです。

では、今年も引き続き色々と作っていきたいと思います!

ともに世界をアップグレードできる、そんな日を夢見て。
Upgrade the World!