

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

# Raspberry Pi または他のデバイスを接続する
<a name="connecting-to-existing-device"></a>

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

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

**Topics**
+ [デバイスをセットアップする](#gs-device-prereqs)
+ [AWS IoT Device SDK に必要なツールとライブラリをインストールする](#gs-device-sdk-tools)
+ [AWS IoT Device SDK のインストール](#gs-device-install-sdk)
+ [サンプルアプリケーションをインストールして実行する](#gs-device-node-app-run)
+ [AWS IoT コンソールでサンプルアプリからのメッセージを表示する](#gs-device-view-msg)

**重要**  
これらの指示を他のデバイスやオペレーティングシステムに合わせて適用するのが難しい場合があります。これらの指示を解釈してご利用のデバイスに適用するには、そのデバイスを十分に理解する必要があります。  
デバイスの設定中に問題が発生した場合は AWS IoT、 [Amazon EC2 を使用して仮想デバイスを作成する](creating-a-virtual-thing.md)や などの他のデバイスオプションのいずれかを代わりに試すことができます[Windows または Linux の PC または Mac を AWS IoT デバイスとして使用する](using-laptop-as-device.md)。

## デバイスをセットアップする
<a name="gs-device-prereqs"></a>

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

このチュートリアルを完了するには、以下が必要です。
+  AWS アカウント。アカウントをお持ちではない場合、続行する前に、[セットアップ AWS アカウント](setting-up.md) に記載されている手順を完了してください。
+ [Raspberry Pi 3 モデル B](https://www.raspberrypi.com/products/) 以降の最新のモデル。これは、Raspberry Pi の以前のバージョンで動作する可能性がありますが、テストされていません。
+ [Raspberry Pi OS (32 ビット)](https://www.raspberrypi.com/software/operating-systems/)または、それ以降。Raspberry Pi OS の最新バージョンを使用することをお勧めします。以前のバージョンの OS は動作する可能性がありますが、テストされていません。

  この例を実行するために、グラフィカルユーザーインターフェイス (GUI) でデスクトップをインストールする必要はありません。ただし、Raspberry Pi を初めて使用し、Raspberry Pi ハードウェアがサポートしている場合は、デスクトップを GUI で使用する方が簡単です。
+ イーサネットまたは WiFi 接続。
+ キーボード、マウス、モニタ、ケーブル、電源装置、およびデバイスに必要なその他のハードウェア。

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

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

## AWS IoT Device SDK に必要なツールとライブラリをインストールする
<a name="gs-device-sdk-tools"></a>

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

1. 

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

   ```
   sudo apt-get update
   ```

   ```
   sudo apt-get upgrade
   ```

   ```
   sudo apt-get install cmake
   ```

   ```
   sudo apt-get install libssl-dev
   ```

1. 

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

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

      ```
      git --version
      ```

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

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

      ```
      sudo apt-get install git
      ```

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

      ```
      git --version
      ```

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

## AWS IoT Device SDK のインストール
<a name="gs-device-install-sdk"></a>

 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 がインストールされている場合は、そのバージョンが表示されます。

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

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

      ```
      sudo apt install python3
      ```

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

      ```
      python3 --version
      ```

1. 

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

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

      ```
      pip3 --version
      ```

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

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

      ```
      sudo apt install python3-pip
      ```

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

      ```
      pip3 --version
      ```

1. 

**現在の 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 -
      ```

   1. Node と npm をインストールします。

      ```
      sudo apt-get install -y nodejs
      ```

   1. Node のインストールを確認します。

      ```
      node -v
      ```

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

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

      ```
      npm -v
      ```

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

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

      ```
      sudo shutdown -r 0
      ```

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

1. 

**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
      ```

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

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

------

## サンプルアプリケーションをインストールして実行する
<a name="gs-device-node-app-run"></a>

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

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

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

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

   ```
   cd ~
   mkdir certs
   ```

1. `~/certs` ディレクトリで、前に [AWS IoT リソースの作成](create-iot-resources.md) で作成したプライベートキー、デバイス証明書、およびルート CA 証明書をコピーします。

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

   次のセクションのコマンドは、次の表に示すように、キーおよび証明書ファイルがデバイスに保存されていることを前提としています。  
**証明書ファイル名**    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/connecting-to-existing-device.html)

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


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

|  Parameter  |  値がある場所  | 
| --- | --- | 
| {{your-iot-endpoint}} | [AWS IoT コンソール](https://console.aws.amazon.com/iot/home)で、**[All devices]** (すべてのデバイス)、**[Things]** (モノ) の順に選択します。<br /> 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
   ```

1. コマンドラインウィンドウで、示されているように{{ 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}}
   ```

1. サンプルアプリケーションが次のようになっていることを観察します。

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

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

   1. 10 個のメッセージをトピック、**topic\_1** に発行します。

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

   ```
   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!
   ```

   サンプルアプリケーションの実行に問題がある場合は、[サンプルアプリケーションの問題をトラブルシューティングする](gs-device-troubleshoot.md) を確認してください。

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

------
#### [ JavaScript ]

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

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

   ```
   cd ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub
   npm install
   ```

1. コマンドラインウィンドウで、示されているように {{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}}
   ```

1. サンプルアプリケーションが次のようになっていることを観察します。

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

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

   1. 10 個のメッセージをトピック、**topic\_1** に発行します。

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

   ```
   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}
   ```

   サンプルアプリケーションの実行に問題がある場合は、[サンプルアプリケーションの問題をトラブルシューティングする](gs-device-troubleshoot.md) を確認してください。

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

------

## AWS IoT コンソールでサンプルアプリからのメッセージを表示する
<a name="gs-device-view-msg"></a>

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

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

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

1. **AWS IoT コンソール**で **MQTT テストクライアント**を開きます。

1. トピック **topic\_1** にサブスクライブします。

1. コマンドラインウィンドウで、サンプルアプリケーションを再度実行し、**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}}
   ```

------