ブロックチェーン・AI・システム開発の株式会社INDETAIL

ラズパイで手軽に作る!ドアロックセンサーの実現【第一回 AWS IoTの設定】

2016.12.09
tacck

20161126-top

気温もぐっと下がり、札幌では氷点下が当たり前の季節になってきました。
何年経っても、札幌の冬は寒いと感じるtacckです。

突然ですが、皆さんは「家の鍵」の閉め忘れが気になることありませんか?
閉める動作が無意識になってしまって、後で「あれ?」となってしまうことがありますよね。
そんな時でも安心。ご家庭にあるラズパイとセンサーを使って、「鍵の開閉」を検知するシステムをお手軽に作ってみましょう!
防犯やトラブル検知としても、使えると思います。

準備

ハード

今回のシステムでは、「BLE」を手軽に利用でき、豊富なセンサーも載っているTexas Instruments製の「CC2650STK」を利用します。(センサーを使うのは次回)
また、センサーから簡単にデータを取り出せるように、Raspberry Piも「BLE」搭載の3を利用します。

ゴール

最終的には、玄関のドアの「鍵の開閉」をセンサーで検知し、「メール」で自分に通知する(スマホでメールを受信する)、ということにします。

ステップとしては、

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

となります。

今回は、(1)を完了させるところを目指します。

Raspberry PiへNode.jsのインストール

このシリーズでは、Raspberry PiでNode.jsを利用します。
ここでは難しいことを考えず、aptnを使って簡単に環境構築をしてしまいます。

AWS IoTの設定

ここでは、AWSのアカウントは取得済みで、「AWS IoT」と「AWS SNS」以外は利用した経験がある前提とします。

余談ですが、2016年11月24日前後にAWSコンソールのUIが変更され、今回利用する「AWS IoT」のUIも変更されています。
本記事は一度旧UIで執筆していたのですが、それに伴って新UIで再作成を行ないました。

AWS IoTの利用開始

AWSのコンソールから「AWS IoT」を選択し、Get startedボタンを押しましょう。
20161125-001

下記のような画面が表示されます。
20161125-002

ページ左側のConnectをクリックし、Configuring a deviceGet startedをクリックします。
これを選ぶことで、「Thing (今回はRaspberry Pi)」を手軽に「Internet (今回はAWS IoT)」に結びつけるための手続きを開始できます。
20161125-003

では、次に進んでいきましょう。

利用プラットフォームと言語の選択

次に、自分が利用するThing(モノ)のプラットフォーム(OS)と、通信するためのSDK(プログラミング言語)を選択します。
今回は、Raspberry PiにRaspbianを使っているのでプラットフォームはLinux/OSXを選択、SDKはセンサー利用時のプログラムのし易さも考えてNode.jsを選択します。
20161125-004

選択が終わると、これからの流れを説明したページに遷移します。
ここもページ右下のGet startedをクリックして、次に進みます。
20161125-005

Thing(モノ)の登録

では、これから「Thing(モノ)」の名前を登録してみましょう。AWS IoT上の識別名なので、自由につけて良いです。
ここではpi_check_lock_thingとしています。
入力できたら、右下のNext stepをクリックします。
20161125-006

次は、「ポリシーの追加結果」と「Thing」から通信するための情報表示」のページになります。
20161125-007

ページ下部にあるDownload connection kitLinux/OSXボタンをクリックすることで、通信に必要なSSL証明書とテスト接続プログラムであるstart.shをダウンロードできます。
ダウンロードできたら、再度右下のNext stepをクリックします。
20161125-008

このページで、先にダウンロードした接続プログラムを実行して、動作の確認を行なうことができます。
20161125-010

Raspberry Piで実行するために、ダウンロードしたZIPファイルをRaspberry Piへ転送します。
192.168.3.12は、私の環境でのRaspberry PiのIPアドレスです。各自のRaspberry PiのIPに変更して下記実行してください。

転送できたら、Raspberry Pi側でconnect_device_package.zipを展開し、start.shを実行します。

connectと表示されると、AWSコンソール側で{"mode1Proccess": 1}のように表示されます。接続を続けていると、数字がどんどん増えていき、Thing側からメッセージが送信され続けていることがわかります。

同様に、コンソールのテキストボックス内にメッセージを入力してSend messageをクリックすると、Thing側へメッセージが送信されます。
ここではテキストボックスに「hello!」と入力した結果がmessage topic_1 hello!として、Raspberry Piのターミナルへ表示されました。

すべて確認できたら、ページ右下のDoneをクリックしましょう。

20161125-011
これで、AWS IoTの基本的な設定は完了しました!
再度ページ右下のDoneをクリックすることで、AWS IoTのメニューが表示されます。

まとめ

ここまで、AWS IoTに「Thing(モノ)」を登録する手順を見てきました。
最初はやることが多くて戸惑うかもしれません。
しかし、上記の手順に沿うだけでモノとネットワークを繋げて、通信までできてしまいます。
まずは色々と試して、操作に慣れてみてください。

次回は、「Thing(モノ)」から特定のメッセージを送信した場合に、メール通知を行なえるようにします!

tacck Takuya KIHARA

エンジニア (モバイルアプリ、フロントエンド、バックエンド、インフラ) 得意なことは、領域をまたいで考え、開発すること。 ブログでは、主にAnsible、Docker、Raspberry Piのことを書いています。 好きなフィギュアスケートの技は、スプレッド・イーグルです。

「いいね」ボタンを押すと、最新情報をすぐに確認できます。