

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

# セットアップ AWS IoT
<a name="iot-moisture-setup"></a>

このチュートリアルを完了するには、次のリソースを作成する必要があります。デバイスを に接続するには AWS IoT、IoT モノ、デバイス証明書、および AWS IoT ポリシーを作成します。
+  AWS IoT モノ。

  モノは物理デバイス (この場合は Rasberry Pi) を表し、デバイスに関する静的メタデータを含みます。
+ デバイス証明書。

   AWS IoTに接続して認証するには、すべてのデバイスにデバイス証明書が必要です。
+  AWS IoT ポリシー。

  各デバイス証明書には、1 つ以上の AWS IoT ポリシーが関連付けられています。これらのポリシーは、デバイスがアクセスできる AWS IoT リソースを決定します。
+  AWS IoT ルート CA 証明書。

  デバイスやその他のクライアントは、 AWS IoT ルート CA 証明書を使用して、通信している AWS IoT サーバーを認証します。詳細については、「[サーバー認証](server-authentication.md)」を参照してください。
+  AWS IoT ルール。

  ルールには、クエリと 1 つ以上のルールアクションが含まれます。クエリは、デバイスメッセージからデータを抽出して、メッセージデータを処理する必要があるかどうかを判断します。ルールアクションにより、データがクエリに一致する場合の処理が指定されます。
+ Amazon SNS トピックおよびトピックサブスクリプション。

  このルールでは、Raspberry Pi からの湿度データがリッスンされます。値がしきい値を下回る場合、Amazon SNS トピックにメッセージを送信します。Amazon SNS は、トピックにサブスクライブしているすべての E メールアドレスにそのメッセージを送信します。

 



# ステップ 1: AWS IoT ポリシーを作成する
<a name="iot-moisture-policy"></a>

Raspberry Pi がメッセージを接続および送信できるようにする AWS IoT ポリシーを作成します AWS IoT。

1. [AWS IoT コンソール](https://console.aws.amazon.com/iot)で、[**今すぐ始める**] ボタンが表示された場合はそれをクリックします。それ以外の場合は、ナビゲーションペインで **[Security]** (セキュリティ) を展開し、**[Policies]** (ポリシー) を選択します。

1. [**ポリシーはまだ作成されていません**] ダイアログボックスが表示された場合は、[**ポリシーの作成**] を選択します。それ以外の場合は、[**Create (作成) **] を選択します。

1.  AWS IoT ポリシーの名前を入力します (例: **MoistureSensorPolicy**)。

1. [**Add statements (ステートメントの追加)**] セクションで、既存のポリシーを次の JSON に置き換えます。*region* と *account* を AWS リージョン と AWS アカウント number に置き換えます。  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "iot:Connect",
               "Resource": "arn:aws:iot:us-east-1:123456789012:client/RaspberryPi"
           },
           {
               "Effect": "Allow",
               "Action": "iot:Publish",
               "Resource": [
                   "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/RaspberryPi/shadow/update",
                   "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/RaspberryPi/shadow/delete",
                   "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/RaspberryPi/shadow/get"
               ]
           },
           {
               "Effect": "Allow",
               "Action": "iot:Receive",
               "Resource": [
                   "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/RaspberryPi/shadow/update/accepted",
                   "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/RaspberryPi/shadow/delete/accepted",
                   "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/RaspberryPi/shadow/get/accepted",
                   "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/RaspberryPi/shadow/update/rejected",
                   "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/RaspberryPi/shadow/delete/rejected"
               ]
           },
           {
               "Effect": "Allow",
               "Action": "iot:Subscribe",
               "Resource": [
                   "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/RaspberryPi/shadow/update/accepted",
                   "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/RaspberryPi/shadow/delete/accepted",
                   "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/RaspberryPi/shadow/get/accepted",
                   "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/RaspberryPi/shadow/update/rejected",
                   "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/RaspberryPi/shadow/delete/rejected"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "iot:GetThingShadow",
                   "iot:UpdateThingShadow",
                   "iot:DeleteThingShadow"
               ],
               "Resource": "arn:aws:iot:us-east-1:123456789012:thing/RaspberryPi"
           }
       ]
   }
   ```

1. **[作成]** を選択します。

# ステップ 2: AWS IoT モノ、証明書、プライベートキーを作成する
<a name="iot-moisture-create-thing"></a>

Raspberry Pi を表すモノを AWS IoT レジストリに作成します。

1. [AWS IoT コンソール](https://console.aws.amazon.com/iot/home)のナビゲーションペインで、[**管理**]、[**モノ**] の順に選択します。

1. [**まだモノがありません**] ダイアログボックスが表示された場合は、[**モノの登録**] を選択します。それ以外の場合は、[**Create (作成)**] を選択します。

1. ** AWS IoT モノの作成**ページで、**モノを 1 つ**作成する を選択します。

1. [**Add your device to the device registry (デバイスレジストリへのデバイスの追加)**] ページで、IoT モノの名前 (例: **RaspberryPi**) を入力し、[**次へ**] を選択します。作成後にモノの名前は変更できません。モノの名前を変更するには、新しいモノを作成して、新しい名前を付け、古いモノを削除する必要があります。

1. [**モノに証明書を追加**] ページで、[**証明書の作成**] を選択します。

1. [**ダウンロード**] リンクを選択して、証明書、プライベートキー、ルート CA 証明書をダウンロードします。
**重要**  
これは、証明書とプライベートキーをダウンロードできる唯一の時間です。

1. 証明書を有効にするには、[**Activate**] (有効化) を選択します。デバイスが AWS IoTに接続するには、証明書がアクティブである必要があります。

1. [**ポリシーのアタッチ**] を選択します。

1. [**Add a policy for your thing (モノのポリシーを追加)**] で、[**MoistureSensorPolicy**]、[**Register Thing (モノの登録)**] の順に選択します。

# ステップ 3: Amazon SNS トピックおよびサブスクリプションを作成する
<a name="iot-moisture-create-sns-topic"></a>

Amazon SNS トピックおよびサブスクリプションを作成します。

1. [AWS SNS コンソール](https://console.aws.amazon.com/sns/home)のナビゲーションペインで [**Topics**] (トピック) を選択し、[**Create topic**] (トピックの作成) を選択します。

1. タイプを **[標準]** として選択し、トピックの名前を入力します (例: **MoistureSensorTopic**）。

1. トピックの表示名を入力します (例: **Moisture Sensor Topic**)。これは、Amazon SNS コンソールでトピックに表示される名前です。

1. [**トピックの作成**] を選択します。

1. Amazon SNS トピックの詳細ページで、**[Create subscription]** (サブスクリプションの作成) を選択します。

1. [**Protocol (プロトコル)**] として [**Email (E メール)**] を選択してください。

1. [**エンドポイント**] に E メールアドレスを入力します。

1. [**Create subscription**] を選択します。

1. E メールクライアントを開き、**MoistureSensorTopic** という件名のメッセージを探します。E メールを開き、[**サブスクリプションを確認**] リンクを選択します。
**重要**  
サブスクリプションを確認するまで、この Amazon SNS トピックからの E メールアラートは受信されません。

入力したテキストが記載された E メールメッセージが届きます。

# ステップ 4: E メールを送信する AWS IoT ルールを作成する
<a name="iot-moisture-create-rule"></a>

 AWS IoT ルールは、デバイスからメッセージを受信したときに実行するクエリと 1 つ以上のアクションを定義します。 AWS IoT ルールエンジンは、デバイスによって送信されたメッセージをリッスンし、メッセージ内のデータを使用して何らかのアクションを実行する必要があるかどうかを判断します。詳細については、「[のルール AWS IoT](iot-rules.md)」を参照してください。

このチュートリアルでは、Raspberry Pi が `aws/things/RaspberryPi/shadow/update` にメッセージを発行します。これは、デバイスと Thing Shadow サービスで使用される内部 MQTT トピックです。Raspberry Pi は、次の形式のメッセージを発行します。

```
{
    "reported": {
        "moisture" : moisture-reading,
        "temp" : temperature-reading
    }
}
```

受信メッセージから湿度と温度データを抽出するクエリを作成します。また、湿度の読み取り値がしきい値を下回っている場合、データを受け取り、そのデータを Amazon SNS トピックのサブスクライバーに送信する Amazon SNS アクションも作成します。

**Amazon SNS ルールを作成する**

1. [[AWS IoT コンソール]](https://console.aws.amazon.com/iot/home) で、**[メッセージのルーティング]** を選択し、**[ルール]** を選択します。[**ルールはまだ作成されていません**] ダイアログボックスが表示された場合は、[**ルールの作成**] を選択します。それ以外の場合は、**[ルールを作成]** を選択します。

1. **[ルールプロパティ]** ページで、**MoistureSensorRule** などの **[ルール名]** を入力し、**Sends an alert when soil moisture level readings are too low** などの短い **[ルールの説明]** を入力します。

1. **[次へ]** を選択し、SQL ステートメントを設定します。**SQL バージョン**を **2016-03-23** として選択し、次の AWS IoT SQL クエリステートメントを入力します。

   ```
   SELECT * FROM '$aws/things/RaspberryPi/shadow/update/accepted' WHERE state.reported.moisture < 400
   ```

   このステートメントは、`moisture` の読み取り値が `400` より小さい場合にルールアクションをトリガーします。
**注記**  
別の値の使用が必要になる場合があります。Raspberry Pi でコードを実行したら、センサーに触れたり、水に入れたり、プランター内に置いたりすることで、センサーから取得した値を表示できます。

1. **[次へ]** を選択し、ルールアクションをアタッチします。**[アクション 1]** で、**[Simple Notification Service]** を選択します。このルールアクションの説明は **[SNS プッシュ通知としてメッセージを送信します]** です。

1. **[SNS トピック]** では、[ステップ 3: Amazon SNS トピックおよびサブスクリプションを作成する](iot-moisture-create-sns-topic.md)、、**MoistureSensorTopic** で作成したトピックを選択し、**[メッセージ形式]** を **[RAW]** のままにします。**[IAM role]** (IAM ロール) は、**[Create a new role]** (新しいロールの作成) を選択します。ロールの名前 (例: **LowMoistureTopicRole**) を入力し、**[ロールを作成]** を選択します。

1. **[次へ]** を選択して確認してから、**[作成]** を選択してルールを作成します。