Konektor Aliran Serial - AWS IoT Greengrass

AWS IoT Greengrass Version 1 memasuki fase umur panjang pada 30 Juni 2023. Untuk informasi selengkapnya, lihat kebijakan AWS IoT Greengrass V1 pemeliharaan. Setelah tanggal ini, tidak AWS IoT Greengrass V1 akan merilis pembaruan yang menyediakan fitur, penyempurnaan, perbaikan bug, atau patch keamanan. Perangkat yang berjalan AWS IoT Greengrass V1 tidak akan terganggu dan akan terus beroperasi dan terhubung ke cloud. Kami sangat menyarankan Anda bermigrasi ke AWS IoT Greengrass Version 2, yang menambahkan fitur baru yang signifikan dan dukungan untuk platform tambahan.

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

Konektor Aliran Serial

Awas

Konektor ini telah pindah kefase kehidupan, danAWS IoT Greengrasstidak akan merilis pembaruan yang menyediakan fitur, penyempurnaan untuk fitur yang ada, patch keamanan, atau perbaikan bug. Untuk informasi selengkapnya, lihat AWS IoT Greengrass Version 1kebijakan pemeliharaan.

Konektor Aliran Serial membaca dan menulis ke port serial pada perangkat AWS IoT Greengrass core.

Konektor ini mendukung dua mode operasi:

  • Read-On-Demand. Menerima membaca dan menulis permintaan pada topik MQTT dan menerbitkan respon dari operasi membaca atau status operasi menulis.

  • Polling-Read. Membaca dari port serial secara berkala. Mode ini juga mendukung permintaan Read-On-Demand.

catatan

Membaca permintaan terbatas untuk maksimum membaca panjang 63994 byte. Menulis permintaan terbatas untuk panjang data maksimum 128000 byte.

Konektor ini memiliki versi berikut.

Versi

ARN

3

arn:aws:greengrass:region::/connectors/SerialStream/versions/3

2

arn:aws:greengrass:region::/connectors/SerialStream/versions/2

1

arn:aws:greengrass:region::/connectors/SerialStream/versions/1

Untuk informasi tentang perubahan versi, lihat Changelog.

Persyaratan

Konektor ini memiliki persyaratan sebagai berikut:

Version 3
  • AWS IoT Greengrass perangkat lunak Core v1.9.3 atau yang lebih baru.

  • Python versi 3.7 atau 3.8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.

    catatan

    Untuk menggunakan Python 3.8, jalankan perintah berikut untuk membuat link simbolik dari folder instalasi default Python 3.7 ke binari Python 3.8 yang diinstal.

    sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7

    Ini mengonfigurasi perangkat Anda untuk memenuhi persyaratan Python untuk AWS IoT Greengrass.

  • Sebuah sumber daya perangkat lokal dalam grup Greengrass yang menunjuk ke port serial target.

    catatan

    Sebelum Anda men-deploy konektor ini, kami rekomendasikan agar Anda mengatur port serial dan memverifikasi bahwa Anda dapat membaca dan menulis untuk itu.

Versions 1 - 2
  • AWS IoT Greengrass perangkat lunak Core v1.7 atau yang lebih baru.

  • Python versi 2.7 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.

  • Sebuah sumber daya perangkat lokal dalam grup Greengrass yang menunjuk ke port serial target.

    catatan

    Sebelum Anda men-deploy konektor ini, kami rekomendasikan agar Anda mengatur port serial dan memverifikasi bahwa Anda dapat membaca dan menulis untuk itu.

Parameter Konektor

Konektor ini menyediakan parameter berikut:

BaudRate

Tingkat baud dari koneksi serial.

Nama tampilan diAWS IoTKonsol: Tingkat baud

Wajib: true

Jenis: string

Nilai yang valid: 110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200, 230400

Pola yang valid: ^110$|^300$|^600$|^1200$|^2400$|^4800$|^9600$|^14400$|^19200$|^28800$|^38400$|^56000$|^57600$|^115200$|^230400$

Timeout

Timeout (dalam detik) untuk operasi membaca.

Nama tampilan diAWS IoTKonsol: Waktu habis

Wajib: true

Jenis: string

Nilai yang valid: 1 - 59

Pola yang valid: ^([1-9]|[1-5][0-9])$

SerialPort

Jalur absolut ke port serial fisik pada perangkat. Ini adalah jalur sumber yang ditentukan untuk sumber daya perangkat lokal.

Nama tampilan diAWS IoTKonsol: Port Serial

Wajib: true

Jenis: string

Pola yang valid: [/a-zA-Z0-9_-]+

SerialPort-ResourceId

ID sumber daya perangkat lokal yang mewakili port serial fisik.

catatan

Konektor ini diberikan akses baca-tulis ke sumber daya.

Nama tampilan diAWS IoTKonsol: Sumber daya port Serial

Wajib: true

Jenis: string

Pola yang valid: [a-zA-Z0-9_-]+

PollingRead

Mengatur modus baca: Polling-Read-Read-On-Demand.

  • Untuk mode Polling-Read, tentukan true. Di mode ini, properti PollingInterval, PollingReadType, dan PollingReadLength diperlukan.

  • Untuk mode Read-On-Demand, tentukan false. Di mode ini, nilai jenis dan panjang ditentukan dalam permintaan baca.

Nama tampilan diAWS IoTKonsol: Mode baca

Wajib: true

Jenis: string

Nilai yang valid: true, false

Pola yang valid: ^([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$

PollingReadLength

Panjang data (dalam byte) untuk membaca dalam setiap operasi polling membaca. Ini hanya berlaku ketika menggunakan mode Polling-Read.

Nama tampilan diAWS IoTKonsol: Panjang baca polling

Diperlukan: false. Properti ini diperlukan saatPollingReadadalahtrue.

Tipe: string

Pola yang valid: ^(|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-2][0-9]{3}|63[0-8][0-9]{2}|639[0-8][0-9]|6399[0-4])$

PollingReadInterval

Interval (dalam detik) dalam mana polling baca berlangsung. Ini hanya berlaku ketika menggunakan mode Polling-Read.

Nama tampilan diAWS IoTKonsol: Interval baca

Diperlukan: false. Properti ini diperlukan saatPollingReadadalahtrue.

Tipe: string

Nilai yang valid: 1 - 999

Pola yang valid: ^(|[1-9]|[1-9][0-9]|[1-9][0-9][0-9])$

PollingReadType

Jenis data yang thread polling membaca. Ini hanya berlaku ketika menggunakan mode Polling-Read.

Nama tampilan diAWS IoTKonsol: Jenis pemungutan suara

Diperlukan: false. Properti ini diperlukan saatPollingReadadalahtrue.

Tipe: string

Nilai yang valid: ascii, hex

Pola yang valid: ^(|[Aa][Ss][Cc][Ii][Ii]|[Hh][Ee][Xx])$

RtsCts

Mengindikasikan apakah akan mengaktifkan kontrol aliran RTS/CTS. Nilai default-nya adalah false. Untuk informasi lebih lanjut, lihat RTS, CTS, dan RTR.

Nama tampilan diAWS IoTKonsol: Kontrol aliran RTS/CTS

Wajib: false

Jenis: string

Nilai yang valid: true, false

Pola yang valid: ^(|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$

XonXoff

Mengindikasikan apakah akan mengaktifkan kontrol aliran perangkat lunak. Nilai default-nya adalah false. Untuk informasi lebih lanjut, lihat Kontrol aliran perangkat lunak.

Nama tampilan diAWS IoTKonsol: Kontrol aliran perangkat lunak

Wajib: false

Jenis: string

Nilai yang valid: true, false

Pola yang valid: ^(|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$

Parity

Paritas dari port serial. Nilai default-nya adalah N. Untuk informasi lebih lanjut, lihat Paritas.

Nama tampilan diAWS IoTKonsol: Paritas port Serial

Wajib: false

Jenis: string

Nilai yang valid: N, E, O, S, M

Pola yang valid: ^(|[NEOSMneosm])$

Buat Contoh Konektor (AWS CLI)

Perintah CLI berikut membuat ConnectorDefinition dengan versi awal yang berisi konektor Aliran Serial. Ini mengonfigurasi konektor untuk mode Polling-Read.

aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MySerialStreamConnector", "ConnectorArn": "arn:aws:greengrass:region::/connectors/SerialStream/versions/3", "Parameters": { "BaudRate" : "9600", "Timeout" : "25", "SerialPort" : "/dev/serial1", "SerialPort-ResourceId" : "my-serial-port-resource", "PollingRead" : "true", "PollingReadLength" : "30", "PollingReadInterval" : "30", "PollingReadType" : "hex" } } ] }'

Di konsol AWS IoT Greengrass tersebut, Anda dapat menambahkan konektor dari halaman grup Konektor ini. Untuk informasi lebih lanjut, lihat Memulai dengan konektor Greengrass (konsol).

Data input

Konektor ini menerima membaca atau menulis permintaan untuk port serial pada dua topik MQTT. Pesan input harus dalam format JSON.

  • Baca permintaan pada topik serial/+/read/# ini.

  • Menulis permintaan pada serial/+/write/# topik.

Untuk menerbitkan topik ini, ganti + wildcard dengan core nama sesuatu dan # wildcard dengan jalan ke port serial. Misalnya:

serial/core-thing-name/read/dev/serial-port
Filter topik: serial/+/read/#

Gunakan topik ini untuk mengirim permintaan baca sesuai permintaan ke pin serial. Membaca permintaan terbatas untuk maksimum membaca panjang 63994 byte.

Properti pesan
readLength

Panjang data untuk dibaca dari port serial.

Wajib: true

Jenis: string

Pola yang valid: ^[1-9][0-9]*$

type

Jenis data untuk dibaca.

Wajib: true

Jenis: string

Nilai yang valid: ascii, hex

Pola yang valid: (?i)^(ascii|hex)$

id

ID arbitrer untuk permintaan. Properti ini digunakan untuk memetakan permintaan input untuk respons output.

Wajib: false

Jenis: string

Pola yang valid: .+

Contoh input
{ "readLength": "30", "type": "ascii", "id": "abc123" }
Filter topik: serial/+/write/#

Gunakan topik ini untuk mengirim permintaan tulis ke pin serial. Menulis permintaan terbatas untuk panjang data maksimum 128000 byte.

Properti pesan
data

String untuk menulis ke port serial.

Wajib: true

Jenis: string

Pola yang valid: ^[1-9][0-9]*$

type

Jenis data untuk dibaca.

Wajib: true

Jenis: string

Nilai yang valid: ascii, hex

Pola yang valid: ^(ascii|hex|ASCII|HEX)$

id

ID arbitrer untuk permintaan. Properti ini digunakan untuk memetakan permintaan input untuk respons output.

Wajib: false

Jenis: string

Pola yang valid: .+

Contoh input: Permintaan ASCII
{ "data": "random serial data", "type": "ascii", "id": "abc123" }
Contoh input: permintaan hex
{ "data": "base64 encoded data", "type": "hex", "id": "abc123" }

Data output

Konektor menerbitkan data output pada dua topik:

  • Informasi status dari konektor pada serial/+/status/# topik.

  • Respon dari permintaan baca pada serial/+/read_response/# topik.

Ketika menerbitkan topik ini, konektor menggantikan + wildcard dengan core nama sesuatu dan # wildcard dengan jalur ke port serial. Misalnya:

serial/core-thing-name/status/dev/serial-port
Filter topik: serial/+/status/#

Gunakan topik ini untuk mendengarkan status permintaan baca dan tulis. Jika sebuah id properti termasuk permintaan, itu dikembalikan dalam respon.

Contoh output: Sukses
{ "response": { "status": "success" }, "id": "abc123" }
Contoh output: Gagal

Sebuah respon kegagalan mencakup sebuah error_message properti yang menjelaskan kesalahan atau timeout ditemui ketika melakukan operasi membaca atau menulis.

{ "response": { "status": "fail", "error_message": "Could not write to port" }, "id": "abc123" }
Filter topik: serial/+/read_response/#

Gunakan topik ini untuk menerima data respon dari operasi baca. Data respon Base64 dikodekan jika jenis hex.

Contoh keluaran
{ "data": "output of serial read operation" "id": "abc123" }

Contoh Penggunaan

Gunakan langkah-langkah tingkat tinggi berikut untuk mengatur contoh fungsi Lambda Python 3.7 yang dapat Anda gunakan untuk mencoba konektor.

catatan
  1. Pastikan Anda memenuhi persyaratan untuk konektor.

  2. Buat dan terbitkan fungsi Lambda yang mengirimkan data input ke konektor.

    Simpan kode contoh sebagai file PY. Unduh dan unzip AWS IoT Greengrass Core SDK for Python. Kemudian, buat paket zip yang berisi file PY dan folder greengrasssdk dalam tingkat root. Paket zip ini adalah paket deployment yang Anda unggah ke AWS Lambda.

    Setelah Anda membuat fungsi Lambda Python 3.7, terbitkankan versi fungsi dan buat alias.

  3. Konfigurasikan grup Greengrass Anda.

    1. Tambahkan fungsi Lambda dengan aliasnya (direkomendasikan). Konfigurasikan siklus hidup Lambda sebagai berumur panjang (atau "Pinned": true dalam CLI).

    2. Tambahkan sumber daya perangkat lokal yang diperlukan dan berikan akses baca/tulis ke fungsi Lambda.

    3. Tambahkan konektor ke grup Anda dan konfigurasikan parameter.

    4. Tambahkan langganan ke grup yang memungkinkan konektor untuk menerima data input dan kirim data output pada filter topik yang didukung.

      • Atur fungsi Lambda sebagai sumber, konektor sebagai target, dan gunakan filter topik input yang mendukung.

      • Atur konektor sebagai sumber, AWS IoT Core sebagai target, dan gunakan filter topik input yang mendukung. Anda menggunakan langganan ini untuk melihat pesan status dalam konsol AWS IoT tersebut.

  4. Men-deploy grup.

  5. Di konsol AWS IoT tersebut, pada halaman Tes ini, berlangganan ke topik data output untuk melihat pesan status dari konektor. Contoh fungsi Lambda yang berumur panjang dan mulai mengirim pesan segera setelah grup dalam-deploy.

    Setelah selesai pengujian, Anda dapat mengatur siklus hidup Lambda ke sesuai permintaan (atau "Pinned": false dalam CLI) dan men-deploy grup. Ini menghentikan fungsi dari mengirim pesan.

Contoh

Contoh fungsi Lambda berikut mengirimkan pesan input ke konektor.

import greengrasssdk import json TOPIC_REQUEST = 'serial/CORE_THING_NAME/write/dev/serial1' # Creating a greengrass core sdk client iot_client = greengrasssdk.client('iot-data') def create_serial_stream_request(): request = { "data": "TEST", "type": "ascii", "id": "abc123" } return request def publish_basic_request(): iot_client.publish(payload=json.dumps(create_serial_stream_request()), topic=TOPIC_REQUEST) publish_basic_request() def lambda_handler(event, context): return

Lisensi

Konektor Aliran Serial mencakup perangkat lunak/lisensi pihak ketiga berikut ini:

Konektor ini dirilis di bawah Perjanjian Lisensi Perangkat lunak core Greengrass.

Changelog

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.

Versi

Perubahan

3

Memperbarui waktu aktif Lambda untuk Python 3.7, yang mengubah persyaratan waktu aktif.

2

Tingkatkan konektor ARN untuk Wilayah AWS dukungan.

1

Pelepasan .

Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat Versi upgrade konektor.

Lihat juga