AWS IoT と MQTT で (ESP8266 準備編)

前回で PCと AWS IoT が MQTT で接続されて、 パブリッシュ、サブスクライブ できるようになりました。 今回は Universal ESPduino を使って ESP8266 がMQTT で AWS IoT に 接続できるようにします。

これまでの方法で分かる通り、 AWS IoT で MQTT に接続する場合、 TLS1.2 での認証が必須となります。

また、今回のやり方は MQTT over WebSocket で接続するため、 署名プロセスは SigV4 となります。
Direct MQTT で接続するメリットや方法について分かれば教えて欲しいです。

 


IAMユーザーの作成

まず、SigV4 のためにIoT:MQTT の Pub/Sub 権限を持った IAMユーザーの作成を行います。

AWS コンソールへアクセスし、セキュリティ項目から [IAM] のページを開きます。

[ユーザー] のページから [ユーザーの追加] をクリックします。

ユーザー名をユニークに指定し、AWSアクセスの種類として、[プログラムによるアクセス] を選択し、[次のステップ:アクセス権源] をクリックして進めます。

ユーザーに権限を持たせる方法は2種類あり、グループに所属させてグループにポリシーをアタッチする方法と、ユーザーに直接ポリシーをアタッチする方法があります。
ここでは簡単にするため、ユーザーに直接ポリシーをアタッチします。

[既存のポリシーを直接アタッチ] を選択し、 ポリシータイプに [ AWSIoTFullAccess ] を選択して、[次のステップ:確認] をクリックして次に進みます。
※問題が発生しないよう、権限は適切に設定しましょう。

ユーザー詳細を確認し、 右下の [ユーザーの作成] をクリックします。

これで IAMユーザーが作成されました。 アクセスキーID と シークレットアクセスキー を表示させて 大切に保存しておきます。
なお、これらは後から表示させることができませんので、失敗したらアクセスキーの作り直しが必要です。
[.csv のダウンロード] をしておいても良いと思います。


Universal ESPduino (ESP8266 : WROOM-02) の Arduino IDE 側の設定

今回の方法はこちらのライブラリを使用しました。

Library Link
aws-mqtt-websockets https://github.com/odelot/aws-mqtt-websockets

このライブラリは 3つの別のライブラリを使用しているため、 合わせて4つのライブラリをインストールする必要があります。

Library Link
aws-sdk-arduino https://github.com/odelot/aws-sdk-arduino
arduinoWebSockets https://github.com/Links2004/arduinoWebSockets
Paho MQTT for Arduino https://projects.eclipse.org/projects/technology.paho/downloads

aws-mqtt-websocket と Paho MQTT for Arduino (Arduino Crlient Library)は ダウンロードして libraries ディレクトリ (Windows の場合は マイドキュメント\Arduino\libraries ディレクトリです) に展開します。

aws-sdk-arduino は 同じくlibraries ディレクトリに保存しますが、 その後 src/common と src/esp8266 を aws-sdk-arduino のディレクトリに上書きコピーします。

 

WebSocket for Arduino は Arduino IDE のメニューから [スケッチ] > [ライブラリのインクルード] > [ライブラリの管理] を開き、 WebSocket for Arduino (Server + Client) を探して最新バージョンをインストールします。

これで Arduino IDE へのライブラリインストールが完了です。

次は実際に Universal EDPduino (ESP8266 : WROOM-02) を使って AWS IoT と MQTT 通信をしてみます。

コメントを残す