今回は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」をインストールする。
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」をクリックします。
②Firmataのスケッチが表示されますので、それをそのままArduinoに書き込みます。
動作確認
Arduinoから光センサのデータをAWS IoTへ送信してみる
では、いよいよArduinoから光センサのデータをAWS IoTへ送信してみたいと思います。
①コマンドプロンプトを起動し、以下のコマンドでプログラムを実行します。
1 |
ruby val.rb |
②自分のメールの受信ボックスで少し待っていると、Arduinoからの光センサのデータが送信されてきていることが分かります。
以上、今回はAWS IoTでArduinoからのセンサのデータをメールで通知する方法についてご紹介させていただきました!
AWSの他のサービスを使用したら他の機能も色々と構築できそうです!
コメントを残す