ITやAIに関するちょっとしたメモ

AIやIoTをはじめITに関して記録しておきたいことをメモ的に書いていきます。

Raspberry Pi 3 B+ のLinux環境とクラウドのAmazon Web Services(AWS) IoTを接続してみる

 ここまで、Raspberry Pi 3 B+ を購入してLinuxのセットアップを行い、WindowsのPCからコマンド及びGUIで使えるようにしました。また、実際の電子部品の回路と接続してRaspberry PiからPythonで制御するということをやりました。

 ここでは、さらにそこから一歩進んで、そのRaspberry Pi 3 B+ の環境を、クラウドAmazon Web Services(AWS) IoTに接続してみました。ハマったところもあったので、今後の参考になればと思い、そのような点についても書いておきます。

 

1.Raspberry PiのブラウザからAWSの1年間無料アカウントにログイン

 まず、VNCでWindoes PCからラズパイ側へログインします。そして、Raspberry PiLinuxからブラウザ経由でクラウドAWSのサイトにアクセスして1年間無料のアカウントを作ります。既にAWSにアカウントがあるという方は、新たにアカウントを作らなくてもそれを使えばOKです。

 そして、Raspberry PiのブラウザからそのAWSのアカウントへログインし、以下のような「AWSマネージメントコンソール」の画面から「IoTデバイスを接続する」を選びます。

f:id:ColdSnap:20190217144722p:plain

 ちなみに、この画面の表示を見る限り、ここから先のIoTの設定は5分でできることになっています。まあ、既に経験のある人が、何もトラブルなく進められれば、これは嘘ではないかもしれません。。。

 

2.AWS IoTに接続する


 「IoTデバイスを接続する」画面では、まずAWSへ接続する手順について説明があります。ざっと読んでこの流れになることを頭に入れます。

f:id:ColdSnap:20190217145231p:plain

 このまま「開始方法」を選択すればいいのですが、「インタラクティブオーバービューをお試しください」から選べるチュートリアルがよくできているのでちょっと寄り道して紹介しておきます。

 ここから選択できるチュートリアルでは、以下のようにデバイスゲートウェイ、ルールエンジン、ルールアクション、Device Shadow、ソリューションの構築ができるということが、順を追ってビジュアル的にわかりやすく解説されています。

f:id:ColdSnap:20190216223309p:plain

 

 

3.AWS IoT にどのように接続していますか?でLinuxPythonを選択

 さて、さきほどの「AWS IoTに接続する」に戻り、そこから「開始方法」を選んでクリックします。すると、「AWS IoT にどのように接続していますか?」という画面が出てきます。

 今回は、Raspberry PiLinuxからPythonを通じて接続するので、「Linux/OSX」と「Python」を選択して「次へ」をクリックします。

f:id:ColdSnap:20190217150055p:plain

4. モノの登録

 モノの登録を行います。ここの名前は任意です。「次のステップ」を選択します。

f:id:ColdSnap:20190217151945p:plain

5.接続キットのダウンロード

 すると、Raspberry Pi側で実行するキット一式がダウンロードできるようになります。接続キットをダウンロードします。

f:id:ColdSnap:20190217152036p:plain

 

6.Raspberry Pi側でファイルを展開

 今度はRaspberry Pi側です。AWSからダウンロードしたキットをRaspberry PiLinuxのどこに展開するかを決め(もしくは展開先ディレクトリを作り)、ダウンロードしたzip形式のファイルを、unzipコマンドもしくはGUIで展開します。

$ unzip connect_device_package.zip

そのままGUIで展開する場合は以下のような感じです。

f:id:ColdSnap:20190217151312p:plain

7.start.shに実行権限を付与し、実行する

 Linux側で展開した先のディレクトリに移動し、start.shというファイルがあるので、そのファイルに実行権を付与します。

$ chmod +x start.sh

 

 実行権を付与したら、start.shを実行します。

$ ./start.sh

 

8.start.shが途中でエラーになって対処 ~試練その1~

 AWSの説明通りだと、これでメデタシなのです。しかし、私の環境ではこのstart.shが途中でエラーになってしまいました。

 いろいろネットで検索すると、同じようなエラーに直面していた人がいて、試しに以下のようにやってから、start.shを再実行してみました。

$ cd aws-iot-device-sdk-python/
$ sudo python setup.py install

 

9.start.shが途中でエラーになって対処 ~試練その2~

 さあ、これでOKか、と思って再びstart.shを実行してみたら、今度はさらに以下のような別のエラーに直面!

ImportError: No module named AWSIoTPythonSDK.MQTTLib

 

 神が与えた試練を呪いながら、このエラーをコピペして検索。すると、同じような目に遭っている人たちが見つかり、どうやらPythonのライブライを追加すればいいらしいとわかって、試しに実施。

$ sudo pip install AWSIoTPythonSDK

pipで追加のライブラリーがインストされました。

 

10.3度目の正直のstart.sh

 再度、./start.shを実行すると、今度はエラーが発生することなく、ようやくうまくいきました。

AWS

f:id:ColdSnap:20190217154428p:plain

Raspberry Pi

f:id:ColdSnap:20190217154349p:plain

11.AWS IoTでモニターしてみる

 AWS IoTにはダッシュボード機能があり、管理とモニターを行うことができます。こんな感じで、今回試した分もきちんと記録されたようです。

f:id:ColdSnap:20190217182129p:plain

12.最後に

 AWSの最初の画面では、5分ということでしたが、まったく知らない人が、しかもエラーに直面しながらだと5分でここまでやるのはとても厳しい気がします。しかし、5分でできるかはともかく、エラーさえなければ、Raspberry PiAWS IoTの接続は確かに簡単にできます。そういう意味では、なかなかすごい、と思いました。

 今回はAWSのテスト用のkitをダウンロードした接続テストまでですが、次は実際のデバイス制御をクラウド側と連携してやってみたいと思います。

coldsnap.hatenablog.jp