

Pemberitahuan akhir dukungan: Pada 20 Mei 2026, AWS akan mengakhiri dukungan untuk AWS IoT Events. Setelah 20 Mei 2026, Anda tidak akan lagi dapat mengakses AWS IoT Events konsol atau AWS IoT Events sumber daya. Untuk informasi selengkapnya, lihat [AWS IoT Events akhir dukungan](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-end-of-support.html).

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Buat model detektor untuk mewakili status perangkat di AWS IoT Events
<a name="iotevents-create-detector"></a>

Di[Buat AWS IoT Events input untuk menangkap data perangkat](iotevents-create-input.md), Anda membuat `input` berdasarkan pesan yang melaporkan data tekanan dari motor. Untuk melanjutkan contoh, berikut adalah model detektor yang merespons peristiwa tekanan berlebih pada motor.

Anda membuat dua status: "`Normal`“, dan"`Dangerous`”. Setiap detektor (instance) memasuki status `Normal` "" saat dibuat. Instance dibuat ketika input dengan nilai unik untuk `key` "`motorid`" tiba.

Jika instance detektor menerima pembacaan tekanan 70 atau lebih besar, ia memasuki status `Dangerous` "" dan mengirim pesan Amazon SNS sebagai peringatan. Jika pembacaan tekanan kembali normal (kurang dari 70) untuk tiga input berturut-turut, detektor kembali ke status "`Normal`" dan mengirim pesan Amazon SNS lainnya sebagai semua jelas.

Model detektor contoh ini mengasumsikan Anda telah membuat dua topik Amazon SNS yang Amazon Resource Names ARNs () ditampilkan dalam definisi `"targetArn": "arn:aws:sns:us-east-1:123456789012:underPressureAction"` sebagai dan. `"targetArn": "arn:aws:sns:us-east-1:123456789012:pressureClearedAction"` 

Untuk informasi selengkapnya, lihat [Panduan Pengembang Layanan Pemberitahuan Sederhana Amazon](https://docs.aws.amazon.com/sns/latest/dg/) dan, lebih khusus lagi, dokumentasi [CreateTopic](https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html)operasi di *Referensi API Layanan Pemberitahuan Sederhana Amazon*.

Contoh ini juga mengasumsikan Anda telah membuat peran AWS Identity and Access Management (IAM) dengan izin yang sesuai. ARN dari peran ini ditunjukkan dalam definisi model detektor sebagai. `"roleArn": "arn:aws:iam::123456789012:role/IoTEventsRole"` Ikuti langkah-langkah [Menyiapkan izin untuk AWS IoT Events](iotevents-permissions.md) untuk membuat peran ini dan salin ARN peran di tempat yang sesuai dalam definisi model detektor.

Anda dapat membuat model detektor menggunakan AWS CLI perintah berikut.

```
aws iotevents create-detector-model  --cli-input-json file://motorDetectorModel.json
```

File `"motorDetectorModel.json"` berisi yang berikut ini.

```
{
  "detectorModelName": "motorDetectorModel",
  "detectorModelDefinition": {
    "states": [
      {
        "stateName": "Normal",
        "onEnter": {
          "events": [
            {
              "eventName": "init",
              "condition": "true",
              "actions": [
                {
                  "setVariable": {
                    "variableName": "pressureThresholdBreached",
                    "value": "0"
                  }
                }
              ]
            }
          ]
        },
        "onInput": {
          "transitionEvents": [
            {
              "eventName": "Overpressurized",
              "condition": "$input.PressureInput.sensorData.pressure > 70",
              "actions": [
                {
                  "setVariable": {
                    "variableName": "pressureThresholdBreached",
                    "value": "$variable.pressureThresholdBreached + 3"
                  }
                }
              ],
              "nextState": "Dangerous"
            }
          ]
        }
      }, 
      {
        "stateName": "Dangerous",
        "onEnter": {
          "events": [
            {
              "eventName": "Pressure Threshold Breached",
              "condition": "$variable.pressureThresholdBreached > 1",
              "actions": [
                {
                  "sns": {
                    "targetArn": "arn:aws:sns:us-east-1:123456789012:underPressureAction"
                  }
                }
              ]
            }
          ]
        },
        "onInput": {
          "events": [
            {
              "eventName": "Overpressurized",
              "condition": "$input.PressureInput.sensorData.pressure > 70",
              "actions": [
                {
                  "setVariable": {
                    "variableName": "pressureThresholdBreached",
                    "value": "3"
                  }
                }
              ]
            },
            {
              "eventName": "Pressure Okay",
              "condition": "$input.PressureInput.sensorData.pressure <= 70",
              "actions": [
                {
                  "setVariable": {
                    "variableName": "pressureThresholdBreached",
                    "value": "$variable.pressureThresholdBreached - 1"
                  }
                }
              ]
            }
          ],
          "transitionEvents": [
            {
              "eventName": "BackToNormal",
              "condition": "$input.PressureInput.sensorData.pressure <= 70 && $variable.pressureThresholdBreached <= 1",
              "nextState": "Normal"
            }
          ]
        },
        "onExit": {
          "events": [
            {
              "eventName": "Normal Pressure Restored",
              "condition": "true",
              "actions": [
                {
                  "sns": {
                    "targetArn": "arn:aws:sns:us-east-1:123456789012:pressureClearedAction"
                  }
                }
              ]
            }
          ]
        }
      }
    ],
    "initialStateName": "Normal"
  },
  "key" : "motorid",
  "roleArn": "arn:aws:iam::123456789012:role/IoTEventsRole"
}
```