Kirim pesan sebagai input ke detektor di AWS IoT Events - AWS IoT Events

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

Kirim pesan sebagai input ke detektor di AWS IoT Events

Anda sekarang telah menentukan input yang mengidentifikasi bidang penting dalam pesan yang dikirim dari perangkat (lihatBuat AWS IoT Events input untuk menangkap data perangkat). Di bagian sebelumnya, Anda membuat sebuah detector model yang merespons peristiwa tekanan berlebih di motor (lihatBuat model detektor untuk mewakili status perangkat di AWS IoT Events).

Untuk melengkapi contoh, kirim pesan dari perangkat (dalam hal ini komputer dengan yang AWS CLI diinstal) sebagai input ke detektor.

catatan

Saat Anda membuat model detektor atau memperbarui yang sudah ada, dibutuhkan beberapa menit sebelum model detektor baru atau yang diperbarui mulai menerima pesan dan membuat detektor (instance). Jika Anda memperbarui model detektor, selama waktu ini Anda mungkin terus melihat perilaku berdasarkan versi sebelumnya.

Gunakan AWS CLI perintah berikut untuk mengirim pesan dengan data yang melanggar ambang batas.

aws iotevents-data batch-put-message --cli-input-json file://highPressureMessage.json --cli-binary-format raw-in-base64-out

File "highPressureMessage.json" berisi yang berikut ini.

{ "messages": [ { "messageId": "00001", "inputName": "PressureInput", "payload": "{\"motorid\": \"Fulton-A32\", \"sensorData\": {\"pressure\": 80, \"temperature\": 39} }" } ] }

Anda harus mengubah messageId setiap pesan yang dikirim. Jika Anda tidak mengubahnya, AWS IoT Events sistem menghapus duplikasi pesan. AWS IoT Events mengabaikan pesan jika memiliki pesan yang messageID sama dengan pesan lain yang dikirim dalam lima menit terakhir.

Pada titik ini, detektor (instance) dibuat untuk memantau peristiwa untuk motor"Fulton-A32". Detektor ini memasuki "Normal" status saat dibuat. Tetapi karena kami mengirim nilai tekanan di atas ambang batas, itu segera beralih ke "Dangerous" negara. Saat melakukannya, detektor mengirim pesan ke SNS titik akhir Amazon yang ARN adaarn:aws:sns:us-east-1:123456789012:underPressureAction.

Jalankan AWS CLI perintah berikut untuk mengirim pesan dengan data yang berada di bawah ambang tekanan.

aws iotevents-data batch-put-message --cli-input-json file://normalPressureMessage.json --cli-binary-format raw-in-base64-out

File normalPressureMessage.json berisi yang berikut ini.

{ "messages": [ { "messageId": "00002", "inputName": "PressureInput", "payload": "{\"motorid\": \"Fulton-A32\", \"sensorData\": {\"pressure\": 60, \"temperature\": 29} }" } ] }

Anda harus mengubah file messageId dalam setiap kali Anda memanggil BatchPutMessage perintah dalam jangka waktu lima menit. Kirim pesan dua kali lagi. Setelah pesan dikirim tiga kali, detektor (misalnya) untuk motor "Fulton-A32" mengirim pesan ke SNS titik akhir Amazon "arn:aws:sns:us-east-1:123456789012:pressureClearedAction" dan memasuki kembali status. "Normal"

catatan

Anda dapat mengirim beberapa pesan sekaligus denganBatchPutMessage. Namun, urutan pemrosesan pesan ini tidak dijamin. Untuk menjamin pesan (input) diproses secara berurutan, kirimkan satu per satu dan tunggu respons yang berhasil setiap kali API dipanggil.

Berikut ini adalah contoh muatan SNS pesan yang dibuat oleh contoh model detektor yang dijelaskan di bagian ini.

pada acara “Ambang Tekanan Dilanggar”

IoT> { "eventTime":1558129816420, "payload":{ "actionExecutionId":"5d7444df-a655-3587-a609-dbd7a0f55267", "detector":{ "detectorModelName":"motorDetectorModel", "keyValue":"Fulton-A32", "detectorModelVersion":"1" }, "eventTriggerDetails":{ "inputName":"PressureInput", "messageId":"00001", "triggerType":"Message" }, "state":{ "stateName":"Dangerous", "variables":{ "pressureThresholdBreached":3 }, "timers":{} } }, "eventName":"Pressure Threshold Breached" }

pada acara “Tekanan Normal Dipulihkan”

IoT> { "eventTime":1558129925568, "payload":{ "actionExecutionId":"7e25fd38-2533-303d-899f-c979792a12cb", "detector":{ "detectorModelName":"motorDetectorModel", "keyValue":"Fulton-A32", "detectorModelVersion":"1" }, "eventTriggerDetails":{ "inputName":"PressureInput", "messageId":"00004", "triggerType":"Message" }, "state":{ "stateName":"Dangerous", "variables":{ "pressureThresholdBreached":0 }, "timers":{} } }, "eventName":"Normal Pressure Restored" }

Jika Anda telah menentukan timer apa pun, statusnya saat ini juga ditampilkan dalam muatan SNS pesan.

Muatan pesan berisi informasi tentang status detektor (instance) pada saat pesan dikirim (yaitu, pada saat SNS tindakan dijalankan). Anda dapat menggunakan https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_DescribeDetector.html operasi untuk mendapatkan informasi serupa tentang keadaan detektor.