ここまで、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年間無料アカウントにログイン
- 2.AWS IoTに接続する
- 3.AWS IoT にどのように接続していますか?でLinuxとPythonを選択
- 4. モノの登録
- 5.接続キットのダウンロード
- 6.Raspberry Pi側でファイルを展開
- 7.start.shに実行権限を付与し、実行する
- 8.start.shが途中でエラーになって対処 ~試練その1~
- 9.start.shが途中でエラーになって対処 ~試練その2~
- 10.3度目の正直のstart.sh
- 11.AWS IoTでモニターしてみる
- 12.最後に
1.Raspberry PiのブラウザからAWSの1年間無料アカウントにログイン
まず、VNCでWindoes PCからラズパイ側へログインします。そして、Raspberry PiのLinuxからブラウザ経由でクラウドのAWSのサイトにアクセスして1年間無料のアカウントを作ります。既にAWSにアカウントがあるという方は、新たにアカウントを作らなくてもそれを使えばOKです。
そして、Raspberry PiのブラウザからそのAWSのアカウントへログインし、以下のような「AWSマネージメントコンソール」の画面から「IoTデバイスを接続する」を選びます。
ちなみに、この画面の表示を見る限り、ここから先のIoTの設定は5分でできることになっています。まあ、既に経験のある人が、何もトラブルなく進められれば、これは嘘ではないかもしれません。。。
2.AWS IoTに接続する
「IoTデバイスを接続する」画面では、まずAWSへ接続する手順について説明があります。ざっと読んでこの流れになることを頭に入れます。
このまま「開始方法」を選択すればいいのですが、「インタラクティブオーバービューをお試しください」から選べるチュートリアルがよくできているのでちょっと寄り道して紹介しておきます。
ここから選択できるチュートリアルでは、以下のようにデバイスゲートウェイ、ルールエンジン、ルールアクション、Device Shadow、ソリューションの構築ができるということが、順を追ってビジュアル的にわかりやすく解説されています。
3.AWS IoT にどのように接続していますか?でLinuxとPythonを選択
さて、さきほどの「AWS IoTに接続する」に戻り、そこから「開始方法」を選んでクリックします。すると、「AWS IoT にどのように接続していますか?」という画面が出てきます。
今回は、Raspberry PiのLinuxからPythonを通じて接続するので、「Linux/OSX」と「Python」を選択して「次へ」をクリックします。
4. モノの登録
モノの登録を行います。ここの名前は任意です。「次のステップ」を選択します。
5.接続キットのダウンロード
すると、Raspberry Pi側で実行するキット一式がダウンロードできるようになります。接続キットをダウンロードします。
6.Raspberry Pi側でファイルを展開
今度はRaspberry Pi側です。AWSからダウンロードしたキットをRaspberry PiのLinuxのどこに展開するかを決め(もしくは展開先ディレクトリを作り)、ダウンロードしたzip形式のファイルを、unzipコマンドもしくはGUIで展開します。
$ unzip connect_device_package.zip
そのままGUIで展開する場合は以下のような感じです。
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側
11.AWS IoTでモニターしてみる
AWS IoTにはダッシュボード機能があり、管理とモニターを行うことができます。こんな感じで、今回試した分もきちんと記録されたようです。
12.最後に
AWSの最初の画面では、5分ということでしたが、まったく知らない人が、しかもエラーに直面しながらだと5分でここまでやるのはとても厳しい気がします。しかし、5分でできるかはともかく、エラーさえなければ、Raspberry PiとAWS IoTの接続は確かに簡単にできます。そういう意味では、なかなかすごい、と思いました。
今回はAWSのテスト用のkitをダウンロードした接続テストまでですが、次は実際のデバイス制御をクラウド側と連携してやってみたいと思います。