

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

# ステップ 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. **[次へ]** を選択して確認してから、**[作成]** を選択してルールを作成します。