Buat model detektor - AWS IoT Events

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

Buat model detektor

Dalam topik ini, Anda mendefinisikan model detektor (model peralatan atau proses Anda) menggunakan status.

Untuk setiap status, Anda mendefinisikan logika kondisional (Boolean) yang mengevaluasi input yang masuk untuk mendeteksi peristiwa penting. Ketika suatu peristiwa terdeteksi, itu mengubah status dan dapat memulai tindakan tambahan. Peristiwa ini dikenal sebagai peristiwa transisi.

Di status Anda, Anda juga menentukan peristiwa yang dapat menjalankan tindakan setiap kali detektor masuk atau keluar dari status tersebut atau ketika input diterima (ini dikenal sebagaiOnEnter, OnExit dan OnInput peristiwa). Tindakan berjalan hanya jika logika kondisional acara mengevaluasi. true

Untuk membuat model detektor
  1. Status detektor pertama telah dibuat untuk Anda. Untuk memodifikasinya, pilih lingkaran dengan label State_1 di ruang pengeditan utama.

  2. Di panel Negara, masukkan nama Negara dan OnEnter, pilih Tambah acara.

  3. Pada halaman Tambah OnEnter acara, masukkan nama Acara dan kondisi Acara. Dalam contoh ini, enter true untuk menunjukkan acara selalu dimulai ketika status dimasukkan.

  4. Di bawah Tindakan acara, pilih Tambah tindakan.

  5. Di bawah tindakan Acara, lakukan hal berikut:

    1. Pilih Tetapkan variabel

    2. Untuk operasi Variabel, pilih Tetapkan nilai.

    3. Untuk nama Variabel, masukkan nama variabel yang akan ditetapkan.

    4. Untuk nilai Variabel, masukkan nilai 0 (nol).

  6. Pilih Simpan.

    Variabel, seperti yang Anda tentukan, dapat diatur (diberi nilai) dalam peristiwa apa pun dalam model detektor. Nilai variabel hanya dapat direferensikan (misalnya, dalam logika kondisional suatu peristiwa) setelah detektor mencapai status dan menjalankan tindakan di mana ia didefinisikan atau ditetapkan.

  7. Di panel State, pilih X di sebelah State untuk kembali ke palet model Detector.

  8. Untuk membuat status detektor kedua, dalam palet model Detektor, pilih Status dan seret ke ruang pengeditan utama. Ini menciptakan negara berjuduluntitled_state_1.

  9. Jeda pada keadaan pertama (Normal). Panah muncul di lingkar negara.

  10. Klik dan seret panah dari status pertama ke status kedua. Garis terarah dari keadaan pertama ke keadaan kedua (berlabel Untitled) muncul.

  11. Pilih baris Untitled. Di panel peristiwa Transisi, masukkan nama Acara dan logika pemicu peristiwa.

  12. Di panel acara Transisi, pilih Tambah tindakan.

  13. Pada panel Tambahkan tindakan peristiwa transisi, pilih Tambah tindakan.

  14. Untuk Pilih tindakan, pilih Tetapkan variabel.

    1. Untuk operasi Variabel, pilih Tetapkan nilai.

    2. Untuk nama Variabel, masukkan nama variabel.

    3. Untuk Menetapkan nilai, masukkan nilai seperti: $variable.pressureThresholdBreached + 3

    4. Pilih Simpan.

  15. Pilih status kedua untitled_state_1.

  16. Di panel Negara, masukkan nama Negara dan untuk On Enter, pilih Tambah acara.

  17. Pada halaman Tambah OnEnter acara, masukkan nama Acara dan kondisi Acara. Pilih Tambahkan tindakan.

  18. Untuk Pilih tindakan, pilih Kirim pesan SNS.

    1. Untuk topik SNS, masukkan ARN target topik Amazon SNS Anda.

    2. Pilih Simpan.

  19. Lanjutkan untuk menambahkan acara dalam contoh.

    1. Untuk OnInput, pilih Tambahkan acara, lalu masukkan dan simpan informasi acara berikut.

      Event name: Overpressurized Event condition: $input.PressureInput.sensorData.pressure > 70 Event actions: Set variable: Variable operation: Assign value Variable name: pressureThresholdBreached Assign value: 3
    2. Untuk OnInput, pilih Tambahkan acara, lalu masukkan dan simpan informasi acara berikut.

      Event name: Pressure Okay Event condition: $input.PressureInput.sensorData.pressure <= 70 Event actions: Set variable: Variable operation: Decrement Variable name: pressureThresholdBreached
    3. Untuk OnExit, pilih Tambahkan acara, lalu masukkan dan simpan informasi acara berikut menggunakan ARN dari topik Amazon SNS yang Anda buat.

      Event name: Normal Pressure Restored Event condition: true Event actions: Send SNS message: Target arn: arn:aws:sns:us-east-1:123456789012:pressureClearedAction
  20. Jeda pada keadaan kedua (Berbahaya). Panah muncul di lingkar negara

  21. Klik dan seret panah dari status kedua ke status pertama. Baris terarah dengan label Untitled muncul.

  22. Pilih baris Tanpa Judul dan di panel peristiwa Transisi, masukkan nama Acara dan logika pemicu peristiwa menggunakan informasi berikut.

    { Event name: BackToNormal Event trigger logic: $input.PressureInput.sensorData.pressure <= 70 && $variable.pressureThresholdBreached <= 0 }

    Untuk informasi lebih lanjut tentang mengapa kami menguji $input nilai dan $variable nilai dalam logika pemicu, lihat entri untuk ketersediaan nilai variabel diPembatasan dan batasan model detektor.

  23. Pilih status Mulai. Secara default, status ini dibuat saat Anda membuat model detektor). Di panel Mulai, pilih status Tujuan (misalnya, Normal).

  24. Selanjutnya, konfigurasikan model detektor Anda untuk mendengarkan input. Di pojok kanan atas, pilih Publish.

  25. Pada halaman model Publish detector, lakukan hal berikut.

    1. Masukkan nama model Detektor, Deskripsi, dan nama Peran. Peran ini dibuat untuk Anda.

    2. Pilih Buat detektor untuk setiap nilai kunci unik. Untuk membuat dan menggunakan Peran Anda sendiri, ikuti langkah-langkahnya Menyiapkan izin untuk AWS IoT Events dan masukkan sebagai Peran di sini.

  26. Untuk kunci pembuatan Detektor, pilih nama salah satu atribut input yang Anda tentukan sebelumnya. Atribut yang Anda pilih sebagai kunci pembuatan detektor harus ada di setiap input pesan, dan harus unik untuk setiap perangkat yang mengirim pesan. Contoh ini menggunakan atribut motorid.

  27. Pilih Simpan dan terbitkan.

catatan

Jumlah detektor unik yang dibuat untuk model detektor tertentu didasarkan pada pesan input yang dikirim. Ketika model detektor dibuat, kunci dipilih dari atribut input. Kunci ini menentukan instance detektor mana yang akan digunakan. Jika kunci belum pernah terlihat sebelumnya (untuk model detektor ini), instance detektor baru akan dibuat. Jika kunci telah terlihat sebelumnya, kami menggunakan instance detektor yang ada sesuai dengan nilai kunci ini.

Anda dapat membuat salinan cadangan definisi model detektor Anda (dalam JSON) membuat ulang atau memperbarui model detektor atau digunakan sebagai templat untuk membuat model detektor lain.

Anda dapat melakukan ini dari konsol atau dengan menggunakan perintah CLI berikut. Jika perlu, ubah nama model detektor agar sesuai dengan yang Anda gunakan saat Anda menerbitkannya di langkah sebelumnya.

aws iotevents describe-detector-model --detector-model-name motorDetectorModel > motorDetectorModel.json

Ini membuat file (motorDetectorModel.json) yang memiliki konten yang mirip dengan berikut ini.

{ "detectorModel": { "detectorModelConfiguration": { "status": "ACTIVE", "lastUpdateTime": 1552072424.212, "roleArn": "arn:aws:iam::123456789012:role/IoTEventsRole", "creationTime": 1552072424.212, "detectorModelArn": "arn:aws:iotevents:us-west-2:123456789012:detectorModel/motorDetectorModel", "key": "motorid", "detectorModelName": "motorDetectorModel", "detectorModelVersion": "1" }, "detectorModelDefinition": { "states": [ { "onInput": { "transitionEvents": [ { "eventName": "Overpressurized", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached + 3" } } ], "condition": "$input.PressureInput.sensorData.pressure > 70", "nextState": "Dangerous" } ], "events": [] }, "stateName": "Normal", "onEnter": { "events": [ { "eventName": "init", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "0" } } ], "condition": "true" } ] }, "onExit": { "events": [] } }, { "onInput": { "transitionEvents": [ { "eventName": "Back to Normal", "actions": [], "condition": "$variable.pressureThresholdBreached <= 1 && $input.PressureInput.sensorData.pressure <= 70", "nextState": "Normal" } ], "events": [ { "eventName": "Overpressurized", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "3" } } ], "condition": "$input.PressureInput.sensorData.pressure > 70" }, { "eventName": "Pressure Okay", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached - 1" } } ], "condition": "$input.PressureInput.sensorData.pressure <= 70" } ] }, "stateName": "Dangerous", "onEnter": { "events": [ { "eventName": "Pressure Threshold Breached", "actions": [ { "sns": { "targetArn": "arn:aws:sns:us-west-2:123456789012:MyIoTButtonSNSTopic" } } ], "condition": "$variable.pressureThresholdBreached > 1" } ] }, "onExit": { "events": [ { "eventName": "Normal Pressure Restored", "actions": [ { "sns": { "targetArn": "arn:aws:sns:us-west-2:123456789012:IoTVirtualButtonTopic" } } ], "condition": "true" } ] } } ], "initialStateName": "Normal" } } }