今回はAWS IoTを利用してArduinoからのセンサのデータをメールで通知する方法をご紹介したいと思います。

今回の概要図を描いてみました。イメージとしてはこんな感じです。

以下、目次の順序で説明していきます。

AWS SNSの設定

トピックの作成「mqtt_test」

まずはAWS SNSでトピックを作成します。
①AWS SNSのページにアクセスし、メニューからTopicsをクリックします。

②「Create new topic」をクリックします。

③Topic nameに「mqtt_test」と入力し、「Cleate topic」をクリックします。

④Topicsのページに移動するとトピックが追加されたことが確認できます。

アクションの作成「Email」

①上記で作成したトピックにチェックを入れます。

②Actionsのプルダウンで「Subscribe to topic」を選択します。

③Protocolで「Email」を選択します。

④Endpointに自分のEmailアドレスを入力し、「Create subscription」をクリックします。

⑤自分のアドレスに以下のようなメールが届くので、リンクをクリックします。

⑥Subscriptionsのページにいくと、アクションが追加されたことが確認できます。

AWS IoTの設定

モノの作成「Arduino」

①メニューから「登録」→「モノ」を選択し、「作成」をクリックします。

②モノの名前に「Arduino」と入力し、「モノの作成」をクリックします。

③以下の画面でモノが追加されたことが確認できました。

ルールの作成「sendEmail」→「mqtt_test」

①メニューから「ルール」を選択し、「ルールを作成する」をクリックします。

②ルールの名前に「sendEmail」と入力します。

③属性に「*」、トピックフィルターに「topic/test」と入力し、「アクションの追加」をクリックします。

④SNSを選択し、「アクションの設定」をクリックします。

⑤SNSターゲットで「mqtt_test」を選択します。

⑥「新しいロールの作成」をクリックします。

⑦ロール名に「mqtt_test_role」と入力し、「新しいロールの作成」をクリックします。

⑧「アクションの追加」をクリックします。

⑨以下の画面でSNSが設定されていることを確認し、「ルールを作成する」をクリックします。

⑩ルールが追加されたこと確認します。

セキュリティポリシーの作成

①「セキュリティ」→「ポリシー」を選択し、「作成」をクリックします。

②ポリシーの名前に「mqtt_policy」と入力します。アクションに「iot*」、「リソースARN」に「*」、効果で「許可」をチェックし、「作成」をクリックします。

③ポリシーが追加されたことを確認します。

セキュリティ証明書の作成

①「セキュリティ」→「証明書」を選択し、「作成」をクリックします。

②「証明書の作成」をクリックします。

③「このモノの証明書」と「プライベートキー」をダウンロードしておきます。
④「有効化」をクリックします。
⑤「ルート」ダウンロードしておきます。

⑤「ポリシーのアタッチ」をクリックします。

⑦「証明書に権限を追加する」の「mqtt_policy」にチェックを入れ、「完了」をクリックします。

これで、【AWS SNS】と【AWS IoT】の設定は完了しました!

回路とプログラムの用意

回路を作成

回路は以下の写真のように組みます。

Rubyのプログラムを用意

今回はRubyからArduinoの光センサの値を読み込むようにするため、それようのプログラムを書き込みます。
①Rubyに「arduino_firmata」と「mqtt」をインストールする。

②Rubyのファイルに以下を書き込みます。

ArduinoにFirmataのスケッチを書き込み

次に、ArduinoのほうにはFirmataのスケッチを書き込んでおきます。
①Arduino IDEを起動し、「ファイル」→「スケッチの例」→「Filmata」→「StandardFilmata」をクリックします。

②Firmataのスケッチが表示されますので、それをそのままArduinoに書き込みます。

動作確認

Arduinoから光センサのデータをAWS IoTへ送信してみる

では、いよいよArduinoから光センサのデータをAWS IoTへ送信してみたいと思います。
①コマンドプロンプトを起動し、以下のコマンドでプログラムを実行します。

②自分のメールの受信ボックスで少し待っていると、Arduinoからの光センサのデータが送信されてきていることが分かります。

以上、今回はAWS IoTでArduinoからのセンサのデータをメールで通知する方法についてご紹介させていただきました!
AWSの他のサービスを使用したら他の機能も色々と構築できそうです!