今回はAWS IoTを利用してArduinoからのセンサのデータをメールで通知する方法をご紹介したいと思います。
今回の概要図を描いてみました。イメージとしてはこんな感じです。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_041.jpg)
以下、目次の順序で説明していきます。
AWS SNSの設定
トピックの作成「mqtt_test」
まずはAWS SNSでトピックを作成します。
①AWS SNSのページにアクセスし、メニューからTopicsをクリックします。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_001.jpg)
②「Create new topic」をクリックします。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_002-1.jpg)
③Topic nameに「mqtt_test」と入力し、「Cleate topic」をクリックします。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_003.jpg)
④Topicsのページに移動するとトピックが追加されたことが確認できます。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_004.jpg)
アクションの作成「Email」
①上記で作成したトピックにチェックを入れます。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_005.jpg)
②Actionsのプルダウンで「Subscribe to topic」を選択します。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_006.jpg)
③Protocolで「Email」を選択します。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_007.jpg)
④Endpointに自分のEmailアドレスを入力し、「Create subscription」をクリックします。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_008.jpg)
⑤自分のアドレスに以下のようなメールが届くので、リンクをクリックします。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_009.jpg)
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_010-1.jpg)
⑥Subscriptionsのページにいくと、アクションが追加されたことが確認できます。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_011.jpg)
AWS IoTの設定
モノの作成「Arduino」
①メニューから「登録」→「モノ」を選択し、「作成」をクリックします。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_012.jpg)
②モノの名前に「Arduino」と入力し、「モノの作成」をクリックします。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_013.jpg)
③以下の画面でモノが追加されたことが確認できました。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_014.jpg)
ルールの作成「sendEmail」→「mqtt_test」
①メニューから「ルール」を選択し、「ルールを作成する」をクリックします。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_015.jpg)
②ルールの名前に「sendEmail」と入力します。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_016.jpg)
③属性に「*」、トピックフィルターに「topic/test」と入力し、「アクションの追加」をクリックします。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_017.jpg)
④SNSを選択し、「アクションの設定」をクリックします。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_018.jpg)
⑤SNSターゲットで「mqtt_test」を選択します。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_019.jpg)
⑥「新しいロールの作成」をクリックします。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_020.jpg)
⑦ロール名に「mqtt_test_role」と入力し、「新しいロールの作成」をクリックします。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_021.jpg)
⑧「アクションの追加」をクリックします。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_022.jpg)
⑨以下の画面でSNSが設定されていることを確認し、「ルールを作成する」をクリックします。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_023.jpg)
⑩ルールが追加されたこと確認します。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_024.jpg)
セキュリティポリシーの作成
①「セキュリティ」→「ポリシー」を選択し、「作成」をクリックします。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_025-1.jpg)
②ポリシーの名前に「mqtt_policy」と入力します。アクションに「iot*」、「リソースARN」に「*」、効果で「許可」をチェックし、「作成」をクリックします。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_026.jpg)
③ポリシーが追加されたことを確認します。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_027-1.jpg)
セキュリティ証明書の作成
①「セキュリティ」→「証明書」を選択し、「作成」をクリックします。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_028-1.jpg)
②「証明書の作成」をクリックします。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_029.jpg)
③「このモノの証明書」と「プライベートキー」をダウンロードしておきます。
④「有効化」をクリックします。
⑤「ルート」ダウンロードしておきます。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_030-1.jpg)
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_032.jpg)
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_033.jpg)
⑤「ポリシーのアタッチ」をクリックします。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_034.jpg)
⑦「証明書に権限を追加する」の「mqtt_policy」にチェックを入れ、「完了」をクリックします。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_036.jpg)
これで、【AWS SNS】と【AWS IoT】の設定は完了しました!
回路とプログラムの用意
回路を作成
回路は以下の写真のように組みます。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_038.jpg)
Rubyのプログラムを用意
今回はRubyからArduinoの光センサの値を読み込むようにするため、それようのプログラムを書き込みます。
①Rubyに「arduino_firmata」と「mqtt」をインストールする。
1 2 |
gem install arduino_firmata gem install mqtt |
②Rubyのファイルに以下を書き込みます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
require 'rubygems' require 'arduino_firmata' require 'mqtt' arduino = ArduinoFirmata.connect "COM6" client = MQTT::Client.connect( host: '****************************.amazonaws.com', port: 8883, ssl: true, cert_file: 'certificate.pem.crt', key_file: 'private.pem.key', ca_file: 'rootCA.pem') while true val = arduino.analog_read 0 val = val / 4 client.publish('topic/test', "val = #{val}") sleep 5 end arduino.close |
ArduinoにFirmataのスケッチを書き込み
次に、ArduinoのほうにはFirmataのスケッチを書き込んでおきます。
①Arduino IDEを起動し、「ファイル」→「スケッチの例」→「Filmata」→「StandardFilmata」をクリックします。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Using_Ruby_gem_arduino_firmata_Arduino_L_Chika_007.jpg)
②Firmataのスケッチが表示されますので、それをそのままArduinoに書き込みます。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Using_Ruby_gem_arduino_firmata_Arduino_L_Chika_001.jpg)
動作確認
Arduinoから光センサのデータをAWS IoTへ送信してみる
では、いよいよArduinoから光センサのデータをAWS IoTへ送信してみたいと思います。
①コマンドプロンプトを起動し、以下のコマンドでプログラムを実行します。
1 |
ruby val.rb |
②自分のメールの受信ボックスで少し待っていると、Arduinoからの光センサのデータが送信されてきていることが分かります。
![](https://kazuki-room.com/wp-content/uploads/2017/10/Notify_by_e-mail_of_sensor_data_from_Arduino_with_AWS_IoT_040.jpg)
以上、今回はAWS IoTでArduinoからのセンサのデータをメールで通知する方法についてご紹介させていただきました!
AWSの他のサービスを使用したら他の機能も色々と構築できそうです!
コメントを残す