Raspberry Pi または別のデバイスを接続する - AWS IoT Core

Raspberry Pi または別のデバイスを接続する

このセクションでは、AWS IoT で使用する Raspberry Pi を設定します。接続したい別のデバイスがある場合、Raspberry Pi の手順には、これらの指示をデバイスに合わせて適用するのに役立つ参照先が含まれています。

通常、この処理には約 20 分かかりますが、システムソフトウェアのアップグレードが多数ある場合は、インストールにより長い時間を要する場合があります。

重要

これらの指示を他のデバイスやオペレーティングシステムに合わせて適用するのが難しい場合があります。これらの指示を解釈してご利用のデバイスに適用するには、そのデバイスを十分に理解する必要があります。

AWS IoT 用にデバイスを設定する際に問題が発生した場合、当社では、このセクションの手順の範囲を超えるサポートを提供することはできません。ただし、Amazon EC2 を使用して仮想デバイスを作成する または Windows もしくは Linux PC、または Mac を AWS IoT デバイスとして使用する など、代わりに他のいずれかのデバイスを試すことはできます。

デバイスをセットアップする

このステップの目的は、オペレーティングシステム (OS) を起動し、インターネットに接続し、コマンドラインインターフェイスでデバイスを操作できるようにデバイスを設定するために必要なものを用意することです。

このチュートリアルを完了するには、以下が必要です。

  • AWS アカウント。アカウントをお持ちではない場合、続行する前に、AWS アカウント のセットアップ に記載されている手順を完了してください。

  • Raspberry Pi 3 モデル B 以降の最新のモデル。これは、Raspberry Pi の以前のバージョンで動作する可能性がありますが、テストされていません。

  • Raspberry Pi OS (32 ビット)または、それ以降。Raspberry Pi OS の最新バージョンを使用することをお勧めします。以前のバージョンの OS は動作する可能性がありますが、テストされていません。

    この例を実行するために、グラフィカルユーザーインターフェイス (GUI) でデスクトップをインストールする必要はありません。ただし、Raspberry Pi を初めて使用し、Raspberry Pi ハードウェアがサポートしている場合は、デスクトップを GUI で使用する方が簡単です。

  • イーサネットまたは Wi-Fi 接続。

  • キーボード、マウス、モニタ、ケーブル、電源装置、およびデバイスに必要なその他のハードウェア。

重要

次のステップに進む前に、デバイスにオペレーティングシステムがインストール、設定、および実行されている必要があります。デバイスはインターネットに接続されていなければなりません。また、コマンドラインインターフェイスを使用してデバイスにアクセスできる必要があります。コマンドラインアクセスは、直接接続されたキーボード、マウス、モニタを介して、または SSH ターミナルリモートインターフェイスを使用して行うことができます。

グラフィカルユーザーインターフェイス (GUI) を備えた Raspberry Pi 上でオペレーティングシステムを実行している場合は、デバイス上でターミナルウィンドウを開き、そのウィンドウで以下の手順を実行します。それ以外の場合であって、PuTTY などのリモートターミナルを使用してデバイスに接続するときは、デバイスへのリモートターミナルを開いてそれを使用します。

AWS IoT Device SDK に必要なツールとライブラリをインストールする

AWS IoT Device SDK とサンプルコードをインストールする前に、システムが最新であり、SDK をインストールするために必要なツールとライブラリがあることを確認してください。

  1. オペレーティングシステムを更新し、必要なライブラリをインストールします。

    AWS IoT Device SDK をインストールする前に、デバイスのターミナルウィンドウでこれらのコマンドを実行して、オペレーティングシステムを更新し、必要なライブラリをインストールします。

    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get install cmake
    sudo apt-get install libssl-dev
  2. Git をインストールします。

    ご使用のデバイスのオペレーティングシステムに Git がインストールされていない場合は、AWS IoT Device SDK for JavaScript をインストールするために Git をインストールする必要があります。

    1. Git が既にインストールされているかどうかを確認するために、このコマンドを実行してテストします。

      git --version
    2. 前のコマンドで Git バージョンが返された場合、Git は既にインストールされており、ステップ 3 に進むことができます。

    3. git コマンドを実行するとエラーが表示される場合は、このコマンドを実行して Git をインストールします。

      sudo apt-get install git
    4. このコマンドを実行して、Git がインストールされているかどうかをもう一度テストします。

      git --version
    5. Git がインストール済みである場合は、次のセクションに進みます。インストールされていない場合は、トラブルシューティングを行い、エラーを修正してから続行します。AWS IoT Device SDK for JavaScript をインストールするには Git が必要です。

AWS IoT Device SDK のインストール

AWS IoT Device SDK をインストールします。

Python

このセクションでは、Python、その開発ツール、AWS IoT Device SDK for Python をデバイスにインストールします。これらの手順は、最新の Raspberry Pi OS を実行する Raspberry Pi を対象としています。別のデバイスをお持ちの場合、または別のオペレーティングシステムを使用している場合は、これらの手順をデバイスに合わせて調整する必要があります。

  1. Python およびその開発ツールをインストールする

    AWS IoT Device SDK for Python では、Python v3.5 以降が Raspberry Pi にインストールされている必要があります。

    デバイスのターミナルウィンドウで、次のコマンドを実行します。

    1. このコマンドを実行して、デバイスにインストールされている Python のバージョンを確認します。

      python3 --version

      Python がインストールされている場合は、そのバージョンが表示されます。

    2. 表示されているバージョンが Python 3.5 以降の場合は、ステップ 2 にスキップできます。

    3. 表示されたバージョンが Python 3.5 よりも前の場合は、このコマンドを実行して正しいバージョンをインストールできます。

      sudo apt install python3
    4. このコマンドを実行して、正しいバージョンの Python がインストールされていることを確認します。

      python3 --version
  2. pip3 をテストする

    デバイスのターミナルウィンドウで、次のコマンドを実行します。

    1. このコマンドを実行して、pip3 がインストールされているかどうかを確認します。

      pip3 --version
    2. コマンドがバージョン番号を返す場合、pip3 はインストールされており、ステップ 3 にスキップできます。

    3. 前のコマンドがエラーを返す場合は、このコマンドを実行して pip3 をインストールします。

      sudo apt install python3-pip
    4. このコマンドを実行して、pip3 がインストールされているかどうかを確認します。

      pip3 --version
  3. 現在の AWS IoT Device SDK for Python をインストールします。

    AWS IoT Device SDK for Python をインストールし、サンプルアプリケーションをデバイスにダウンロードします。

    デバイスで、次のコマンドを実行します。

    cd ~ python3 -m pip install awsiotsdk
    git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
JavaScript

このセクションでは、Node.js、npm パッケージマネージャー、および AWS IoT Device SDK for JavaScript をデバイスにインストールします。これらの手順は、Raspberry Pi OS を実行している Raspberry Pi を対象としています。別のデバイスをお持ちの場合、または別のオペレーティングシステムを使用している場合は、これらの手順をデバイスに合わせて調整する必要があります。

  1. Node.js の最新バージョンをインストールする

    AWS IoT Device SDK for JavaScript では、Node.js と npm パッケージマネージャーが Raspberry Pi にインストールされている必要があります。

    1. このコマンドを入力して、ノードリポジトリの最新バージョンをダウンロードします。

      cd ~ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
    2. Node と npm をインストールします。

      sudo apt-get install -y nodejs
    3. Node のインストールを確認します。

      node -v

      コマンドが Node のバージョンを表示することを確認します。このチュートリアルでは Node v10.0 以降が必要です。Node のバージョンが表示されない場合は、Node リポジトリを再度ダウンロードしてみてください。

    4. npm のインストールを確認します。

      npm -v

      コマンドが npm バージョンを表示することを確認します。npm のバージョンが表示されない場合は、Node と npm をもう一度インストールしてみてください。

    5. デバイスを再起動します。

      sudo shutdown -r 0

      デバイスの再起動後に続行します。

  2. AWS IoT Device SDK for JavaScript をインストールする

    Raspberry Pi に AWS IoT Device SDK for JavaScript をインストールします。

    1. AWS IoT Device SDK for JavaScript リポジトリのクローンをホームディレクトリの aws-iot-device-sdk-js-v2 ディレクトリに作成します。Raspberry Pi では、ホームディレクトリは ~/ であり、次のコマンドでホームディレクトリとして使用されます。デバイスがホームディレクトリに別のパスを使用している場合は、次のコマンドで ~/ をデバイスの正しいパスに置き換える必要があります。

      これらのコマンドは、~/aws-iot-device-sdk-js-v2 ディレクトリを作成し、SDK コードをそのディレクトリにコピーします。

      cd ~ git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
    2. 前の手順で作成した aws-iot-device-sdk-js-v2 ディレクトリに変更し、npm install を実行して SDK をインストールします。コマンド npm installaws-crt ライブラリビルドを呼び出し、これは完了するまで数分かかることがあります。

      cd ~/aws-iot-device-sdk-js-v2 npm install

サンプルアプリケーションをインストールして実行する

このセクションでは、AWS IoT Device SDK にある pubsub サンプルアプリケーションをインストールして実行します。このアプリケーションは、デバイスが MQTT ライブラリを使用して MQTT メッセージを発行およびサブスクライブする方法を示します。サンプルアプリケーションは トピック topic_1 にサブスクライブし、そのトピックに 10 個のメッセージを発行し、メッセージブローカーから受信したメッセージを表示します。

証明書ファイルをインストールする

サンプルアプリケーションでは、デバイスを認証する証明書ファイルをそのデバイスにインストールする必要があります。

サンプルアプリケーションのデバイス証明書ファイルをインストールするには

  1. これらのコマンドを実行して、ホームディレクトリにcertsサブディレクトリを作成します。

    cd ~ mkdir certs
  2. ~/certs ディレクトリで、前に AWS IoT リソースの作成 で作成したプライベートキー、デバイス証明書、およびルート CA 証明書をコピーします。

    証明書ファイルをデバイスにコピーする方法は、デバイスおよびオペレーティングシステムによって異なりますが、ここでは説明を割愛します。ただし、デバイスがグラフィカルユーザーインターフェイス (GUI) をサポートしており、ウェブブラウザがある場合は、デバイスのウェブブラウザから AWS IoT リソースの作成 で説明されている手順を実行して、結果のファイルをデバイスに直接ダウンロードできます。

    次のセクションのコマンドは、次の表に示すように、キーおよび証明書ファイルがデバイスに保存されていることを前提としています。

    証明書ファイル名

    ファイル

    ファイルパス

    ルート CA 証明書

    ~/certs/Amazon-root-CA-1.pem

    デバイス証明書

    ~/certs/certificate.pem.crt

    プライベートキー

    ~/certs/private.pem.key

サンプルアプリケーションを実行するには、次の情報が必要です。

アプリケーションパラメータ値

Parameter

値がある場所

your-iot-endpoint

AWS IoT コンソールで、[Manage] (管理)、[Things] (モノ) の順に選択します。

デバイス用に作成した IoT モノ (MyIotThing は以前に使用した名前) を選択し、[Interact] (操作) を選択します。

モノの詳細ページで エンドポイントは、[HTTPS] セクションに表示されます。

新しい AWS IoT コンソールを使用する場合、AWS IoT メニューから [Settings] (設定) を選択します。エンドポイントが [Device data endpoint] (デバイスデータエンドポイント) セクションに表示されます。

your-iot-endpoint 値の形式はendpoint_id-ats.iot.region.amazonaws.com です (例: a3qj468EXAMPLE-ats.iot.us-west-2.amazonaws.com)。

Python

サンプルアプリケーションをインストールして実行するには

  1. サンプルアプリディレクトリに移動します。

    cd ~/aws-iot-device-sdk-python-v2/samples
  2. コマンドラインウィンドウで、示されているように your-iot-endpoint を置き換えて、このコマンドを実行します。

    python3 pubsub.py --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/certificate.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint
  3. サンプルアプリケーションが次のようになっていることを観察します。

    1. アカウントの AWS IoT サービスに接続します。

    2. メッセージトピック topic_1 をサブスクライブし、そのトピックで受信したメッセージを表示します。

    3. 10 個のメッセージをトピック、topic_1 に発行します。

    4. 次のような出力を表示します。

    Connecting to a3qEXAMPLEffp-ats.iot.us-west-2.amazonaws.com with client ID 'test-0c8ae2ff-cc87-49d2-a82a-ae7ba1d0ca5a'... Connected! Subscribing to topic 'topic_1'... Subscribed with QoS.AT_LEAST_ONCE Sending 10 message(s) Publishing message to topic 'topic_1': Hello World! [1] Received message from topic 'topic_1': b'Hello World! [1]' Publishing message to topic 'topic_1': Hello World! [2] Received message from topic 'topic_1': b'Hello World! [2]' Publishing message to topic 'topic_1': Hello World! [3] Received message from topic 'topic_1': b'Hello World! [3]' Publishing message to topic 'topic_1': Hello World! [4] Received message from topic 'topic_1': b'Hello World! [4]' Publishing message to topic 'topic_1': Hello World! [5] Received message from topic 'topic_1': b'Hello World! [5]' Publishing message to topic 'topic_1': Hello World! [6] Received message from topic 'topic_1': b'Hello World! [6]' Publishing message to topic 'topic_1': Hello World! [7] Received message from topic 'topic_1': b'Hello World! [7]' Publishing message to topic 'topic_1': Hello World! [8] Received message from topic 'topic_1': b'Hello World! [8]' Publishing message to topic 'topic_1': Hello World! [9] Received message from topic 'topic_1': b'Hello World! [9]' Publishing message to topic 'topic_1': Hello World! [10] Received message from topic 'topic_1': b'Hello World! [10]' 10 message(s) received. Disconnecting... Disconnected!

    サンプルアプリケーションの実行に問題がある場合は、サンプルアプリケーションに関する問題のトラブルシューティング を確認してください。

    コマンドラインに --verbosity Debug パラメータを追加して、サンプルアプリケーションが実行内容に関する詳細なメッセージを表示するようにすることもできます。この情報は、問題の修正に役立つ場合があります。

JavaScript

サンプルアプリケーションをインストールして実行するには

  1. コマンドラインウィンドウで、SDK が作成した ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub ディレクトリに移動し、これらのコマンドを使用してサンプルアプリケーションをインストールします。コマンド npm installaws-crt ライブラリビルドを呼び出し、これは完了するまで数分かかることがあります。

    cd ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub npm install
  2. コマンドラインウィンドウで、示されているように your-iot-endpoint を置き換えて、このコマンドを実行します。

    node dist/index.js --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/certificate.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint
  3. サンプルアプリケーションが次のようになっていることを観察します。

    1. アカウントの AWS IoT サービスに接続します。

    2. メッセージトピック topic_1 をサブスクライブし、そのトピックで受信したメッセージを表示します。

    3. 10 個のメッセージをトピック、topic_1 に発行します。

    4. 次のような出力を表示します。

    Publish received on topic topic_1 {"message":"Hello world!","sequence":1} Publish received on topic topic_1 {"message":"Hello world!","sequence":2} Publish received on topic topic_1 {"message":"Hello world!","sequence":3} Publish received on topic topic_1 {"message":"Hello world!","sequence":4} Publish received on topic topic_1 {"message":"Hello world!","sequence":5} Publish received on topic topic_1 {"message":"Hello world!","sequence":6} Publish received on topic topic_1 {"message":"Hello world!","sequence":7} Publish received on topic topic_1 {"message":"Hello world!","sequence":8} Publish received on topic topic_1 {"message":"Hello world!","sequence":9} Publish received on topic topic_1 {"message":"Hello world!","sequence":10}

    サンプルアプリケーションの実行に問題がある場合は、サンプルアプリケーションに関する問題のトラブルシューティング を確認してください。

    コマンドラインに --verbosity Debug パラメータを追加して、サンプルアプリケーションが実行内容に関する詳細なメッセージを表示するようにすることもできます。この情報は、問題の修正に役立つ場合があります。

AWS IoT コンソールでサンプルアプリケーションからのメッセージを表示する

AWS IoT コンソールMQTT クライアントを使用する事で、サンプルアプリケーションメッセージがメッセージブローカーを通過する時にそれらを見る事ができます。

サンプルアプリケーションによって発行された MQTT メッセージを表示するには

  1. 確認AWS IoT MQTT クライアントでデバイスの MQTT メッセージを表示する. これは、AWS IoT コンソールMQTT クライアントを使用して、メッセージブローカーを通過する MQTT メッセージを表示する方法を学ぶのに役立ちます。

  2. AWS IoT コンソールMQTT クライアントを開きます。

  3. トピック topic_1 にサブスクライブします。

  4. コマンドラインウィンドウで、サンプルアプリケーションを再度実行し、AWS IoT コンソールMQTT クライアントでメッセージを確認します。

    Python
    cd ~/aws-iot-device-sdk-python-v2/samples python3 pubsub.py --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/certificate.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint
    JavaScript
    cd ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub node dist/index.js --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/certificate.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint