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

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

このセクションでは、 で使用する Raspberry Pi を設定しますAWS IoT。接続したい別のデバイスがある場合、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 で使用する方が簡単です。

  • イーサネットまたは WiFi 接続。

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

重要

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

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

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

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

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

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

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

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

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

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

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

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

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

AWS IoTDevice SDK のインストール

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

Python

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

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

    AWS IoTDevice 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 IoTDevice SDK for Python をインストールする

    AWS IoTDevice 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 IoTDevice SDK for JavaScript をデバイスにインストールします。これらの手順は、Raspberry Pi OS を実行している Raspberry Pi を対象としています。別のデバイスをお持ちの場合、または別のオペレーティングシステムを使用している場合は、これらの手順をデバイスに合わせて調整する必要があります。

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

    AWS IoTDevice 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 IoTDevice SDK for JavaScript をインストールする

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

    1. AWS IoTDevice 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 IoTDevice 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/device.pem.crt

    プライベートキー

    ~/certs/private.pem.key

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

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

Parameter

値がある場所

your-iot-endpoint

AWS IoT コンソールで、[All devices] (すべてのデバイス)、[Things] (モノ) の順に選択します。

AWS IoT メニューの [設定] ページ。エンドポイントが [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/device.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/device.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. 確認MQTT クライアントを使用して AWS IoTMQTT メッセージを表示する。これは、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/device.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/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint