LoginSignup
3
3

More than 3 years have passed since last update.

RaspberryPiとAWS IoTの簡単接続

Last updated at Posted at 2020-04-29

RaspberryPiとAWS IoTの接続設定

基本的な接続方法はAWS IoTの開発ガイドに従うのが簡単だ。
ただし、2つの方法があり、両方試してみた。ここでは、簡単ではるかに早く設定できた「接続ウィザード」を使った方法を説明する。(準備ができていれば所要時間は約30分)

環境

  • RaspberryPi 3B:
    • Raspbian GNU/Linux 10 (buster)
    • Python 2.7.16 (default, Oct 10 2019, 22:02:15)
      • ここでは、AWS IoTのPython SDKを利用するため
    • gitが導入されていること
      • GitHubから、SDK(aws-iot-device-sdk-python)がクーロンされる
    • OpenSSL 1.1.1d 10 Sep 2019
    • インターネットに接続できる環境。(AWSのIoTサービスに接続できる)
  • AWSのアカウントがあること
    • AWS IoTサービスを利用する
  • 下記は2020年4月時点の手順です。

設定手順

  • PCからAWS IoTメニューに入る
    • オンボード選択
      • デバイスをオンボード
        • 開始方法をクリック
          • プラットフォームの選択
            • Linux/OSXを選択する
          • AWS IoT デバイスSDKの選択
            • ここでは、Python を選択する
          • 次へをクリック
          • モノの登録。RaspberryPiの名前を登録する。
          • 接続キットのダウンロード
          • connect_device_package.zipがダウンロードされる スクリーンショット 2020-04-25 18.41.01.png
  • PCにダウンロードしたファイルを解凍する
    • 解凍したディレクトリ名:connect_device_package
    • 以下のファイルがある
      • RaspberryPi_test.cert.pem
      • RaspberryPi_test.private.key
      • RaspberryPi_test.public.key
      • start.sh
    • READMEの記述によると、通信の暗号化はTLSプロトコルでX.509証明書が使用される
  • PCにダウンロードしたファイルをRespberryPiへ転送する
    • RaspberryPiに任意のディレクトリを作成する
    • PCからscpコマンドでディレクトリ毎、RaspberryPiへコピーする
      • PCのコマンドターミナルを開く
      • $ scp -r コピー元ディレクトリ名 ユーザー名@IPアドレス:RaspberryPiのパス
  • RaspberryPiのターミナルからコピーしたシェルを実行する
    • $ sudo ./start.sh
      • 筆者の環境では以下のエラーが発生した
        • start.sh: 19: ./start.sh: pushd: not found
      • start.shの1行目に #!/bin/bashを追加して再度実行する
        • gitからaws-iot-device-sdk-pythonがクーロンされる
    • クラウドと接続され無事MQTTサンプルアプリケーションが実行され接続の確認ができた!
      • 実行されるサンプルアプリケーションのディレクトリ:aws-iot-device-sdk-python/samples/basicPubSub
        • 実行されるサンプルシェル:basicPubSub.py

別の接続方法

  • AWS IoT開発ガイドの「AWS IoT Coreの使用の開始」から一つ一つ進めることも可能だ。
  • RaspberryPiとの接続の観点からは、メニューに「RaspberryPiでのAWS IoT Device SDKの使用」があるのがすばらしい。IoTデバイスまたは学習用として、RaspberryPiが普及しているからだろう。ただし、開発ガイドにPython SDKの解説がないのは残念なところか。今のところ、「RaspberryPiでのAWS IoT Device SDKの使用」メニューには、AWS IoT Device SDK for Embedded Cの使用とAWS IoT Device SDK for JavaScriptおよびNodeを利用するのみ。

以上、接続までの方法でした。2つの方法を試した経験から、「オンボード」メニューから設定する方がはるかに簡単であることがわかった。

考慮点

接続方法をいろいろ試していると、接続時にキーと証明書が合わないエラーが出てきた。opensslコマンドで確認する方法が便利だった。Qiitaリンク
pub/subプログラムによる接続確認は別のQiita記事で記述します。

参考資料

AWS IoTのPython SDKについてはGitHubにスクリプトの解説がある。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3