Connettore Serial Stream - AWS IoT Greengrass

AWS IoT Greengrass Version 1 è entrato nella fase di estensione della vita utile il 30 giugno 2023. Per ulteriori informazioni, consulta la politica AWS IoT Greengrass V1 di manutenzione. Dopo questa data, AWS IoT Greengrass V1 non rilascerà aggiornamenti che forniscano funzionalità, miglioramenti, correzioni di bug o patch di sicurezza. I dispositivi che funzionano AWS IoT Greengrass V1 non subiranno interruzioni e continueranno a funzionare e a connettersi al cloud. Ti consigliamo vivamente di eseguire la migrazione a AWS IoT Greengrass Version 2, che aggiunge nuove importanti funzionalità e supporto per piattaforme aggiuntive.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Connettore Serial Stream

avvertimento

Questo connettore è stato spostato nelFase di vitaeAWS IoT Greengrassnon rilascerà aggiornamenti che forniscono funzionalità, miglioramenti alle funzionalità esistenti, patch di sicurezza o correzioni di bug. Per ulteriori informazioni, consulta la pagina AWS IoT Greengrass Version 1politica di manutenzione .

Il Serial Streamconnettoreeffettua operazioni di lettura e scrittura in una porta serialeAWS IoT Greengrassdispositivo core.

Questo connettore supporta due modalità di funzionamento:

  • Read-On-Demand. Riceve richieste di lettura e scrittura su argomenti MQTT e pubblica la risposta dell'operazione di lettura o lo stato dell'operazione di scrittura.

  • Polling-Read. Effettua letture dalla porta seriale a intervalli regolari. Questa modalità supporta anche le richieste Read-on-demand.

Nota

Le richieste di lettura possono avere una lunghezza massima di 63994 byte. Le richieste di scrittura possono avere una lunghezza massima dei dati di 128000 byte.

Questo connettore dispone delle versioni seguenti.

Versione

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

Per informazioni sulle modifiche di ogni versione, consulta Changelog.

Requisiti

Questo connettore presenta i seguenti requisiti:

Version 3
  • Software AWS IoT Greengrass Core v1.9.3 o versioni successive.

  • Pitoneversione 3.7 o 3.8 installata sul dispositivo core e aggiunta alla variabile di ambiente PATH.

    Nota

    Per utilizzare Python 3.8, eseguire il seguente comando per creare un collegamento simbolico dalla cartella di installazione predefinita di Python 3.7 ai binari Python 3.8 installati.

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

    Questo configura il dispositivo in modo che soddisfi il requisito Python per AWS IoT Greengrass.

  • UNdispositivo localenel gruppo Greengrass che punti alla porta seriale di destinazione.

    Nota

    Prima di distribuire il connettore, ti consigliamo di configurare la porta seriale e di verificare che sia possibile effettuarvi operazioni di lettura e scrittura.

Versions 1 - 2
  • AWS IoT GreengrassSoftware Core v1.7 o versioni successive.

  • Pitoneversione 2.7 installata sul dispositivo core e aggiunta alla variabile di ambiente PATH.

  • UNdispositivo localenel gruppo Greengrass che punti alla porta seriale di destinazione.

    Nota

    Prima di distribuire il connettore, ti consigliamo di configurare la porta seriale e di verificare che sia possibile effettuarvi operazioni di lettura e scrittura.

Parametri del connettore

Questo connettore fornisce i seguenti parametri:

BaudRate

La velocità in baud della connessione seriale.

Nome visualizzato nellaAWS IoTConsole : Baud rate

Campo obbligatorio:true

Tipo: string

Valori validi: 110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200, 230400

Pattern valido:^110$|^300$|^600$|^1200$|^2400$|^4800$|^9600$|^14400$|^19200$|^28800$|^38400$|^56000$|^57600$|^115200$|^230400$

Timeout

Il timeout (in secondi) di un'operazione di lettura.

Nome visualizzato nellaAWS IoTConsole : Timeout

Campo obbligatorio:true

Tipo: string

Valori validi: 1 - 59

Pattern valido:^([1-9]|[1-5][0-9])$

SerialPort

Il percorso assoluto della porta seriale fisica sul dispositivo. Si tratta del percorso di origine specificato per la risorsa del dispositivo locale.

Nome visualizzato nellaAWS IoTConsole : Porta seriale

Campo obbligatorio:true

Tipo: string

Pattern valido:[/a-zA-Z0-9_-]+

SerialPort-ResourceId

L'ID della risorsa del dispositivo locale fisico che rappresenta la porta seriale fisica.

Nota

Al connettore è concesso l'accesso in lettura e scrittura alla risorsa.

Nome visualizzato nellaAWS IoTConsole : Risorsa porta seriale

Campo obbligatorio:true

Tipo: string

Pattern valido:[a-zA-Z0-9_-]+

PollingRead

Imposta la modalità di lettura: Read-On-Demand.

  • Per la modalità Polling-Read, specificare true. In questa modalità, sono obbligatorie le proprietà PollingInterval, PollingReadType e PollingReadLength.

  • Nella modalità Read-On-Demand, specificare false. In questa modalità, il tipo e i valori di lunghezza sono specificati nella richiesta di lettura.

Nome visualizzato nellaAWS IoTConsole : Modalità di lettura

Campo obbligatorio:true

Tipo: string

Valori validi: true, false

Pattern valido:^([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$

PollingReadLength

La lunghezza dei dati (in byte) da leggere in ciascuna operazione di lettura di polling. Si applica solo quando si utilizza la modalità Polling-Read.

Nome visualizzato nellaAWS IoTConsole : Lunghezza lettura polling

Campo obbligatorio: false. Questa proprietà è obbligatoria quandoPollingReadètrue.

Tipo: string

Pattern valido:^(|[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

L'intervallo di tempo (in secondi) in cui il avviene la lettura di polling. Si applica solo quando si utilizza la modalità Polling-Read.

Nome visualizzato nellaAWS IoTConsole : Intervallo di lettura polling

Campo obbligatorio: false. Questa proprietà è obbligatoria quandoPollingReadètrue.

Tipo: string

Valori validi: 1 - 999

Pattern valido:^(|[1-9]|[1-9][0-9]|[1-9][0-9][0-9])$

PollingReadType

Il tipo di dati letto dal thread di polling. Si applica solo quando si utilizza la modalità Polling-Read.

Nome visualizzato nellaAWS IoTConsole : Tipo lettura polling

Campo obbligatorio: false. Questa proprietà è obbligatoria quandoPollingReadètrue.

Tipo: string

Valori validi: ascii, hex

Pattern valido:^(|[Aa][Ss][Cc][Ii][Ii]|[Hh][Ee][Xx])$

RtsCts

Indica se abilitare o meno il controllo del flusso RTS/CTS. Il valore di default è false. Per ulteriori informazioni, consulta RTS, CTS e RTR.

Nome visualizzato nellaAWS IoTConsole : Controllo del flusso RTS/CTS

Campo obbligatorio:false

Tipo: string

Valori validi: true, false

Pattern valido:^(|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$

XonXoff

Indica se abilitare o meno il controllo del flusso del software. Il valore di default è false. Per ulteriori informazioni, consulta Controllo del flusso software.

Nome visualizzato nellaAWS IoTConsole : Controllo del flusso software

Campo obbligatorio:false

Tipo: string

Valori validi: true, false

Pattern valido:^(|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$

Parity

La parità della porta seriale. Il valore di default è N. Per ulteriori informazioni, consulta Parità.

Nome visualizzato nellaAWS IoTConsole : Parità porta seriale

Campo obbligatorio:false

Tipo: string

Valori validi: N, E, O, S, M

Pattern valido:^(|[NEOSMneosm])$

Esempio di creazione di un connettore (AWS CLI)

Il seguente comando CLI crea unConnectorDefinitioncon una versione iniziale che contiene il connettore Serial Stream. Configura il connettore per la modalità 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" } } ] }'

NellaAWS IoT Greengrassconsole, è possibile aggiungere un connettore dal gruppoConnettori(Certificato creato). Per ulteriori informazioni, consulta la pagina Nozioni di base sui connettori Greengrass (console) .

Dati di input

Questo connettore accetta richieste di lettura o scrittura per le porte seriali in due argomenti MQTT. I messaggi di input devono essere in formato JSON.

  • Richieste di lettura nell'argomento serial/+/read/#.

  • Richieste di scrittura nell'argomento serial/+/write/#.

Per pubblicare in questi argomenti, sostituire il carattere jolly + con il nome oggetto del core e il carattere jolly # con il percorso della porta seriale. Ad esempio:

serial/core-thing-name/read/dev/serial-port
Filtro di argomenti: serial/+/read/#

Utilizza questo argomento per inviare richieste di lettura on demand a un pin seriale. Le richieste di lettura possono avere una lunghezza massima di 63994 byte.

Proprietà dei messaggi
readLength

La lunghezza dei dati da leggere dalla porta seriale.

Campo obbligatorio:true

Tipo: string

Pattern valido:^[1-9][0-9]*$

type

Il tipo di dati da leggere.

Campo obbligatorio:true

Tipo: string

Valori validi: ascii, hex

Pattern valido:(?i)^(ascii|hex)$

id

Un ID arbitrario della richiesta. Questa proprietà viene utilizzata per associare una richiesta di input a una risposta di output.

Campo obbligatorio:false

Tipo: string

Pattern valido:.+

Input di esempio
{ "readLength": "30", "type": "ascii", "id": "abc123" }
Filtro di argomenti: serial/+/write/#

Utilizza questo argomento per inviare richieste di scrittura a un pin seriale. Le richieste di scrittura possono avere una lunghezza massima dei dati di 128000 byte.

Proprietà dei messaggi
data

La stringa da scrivere nella porta seriale.

Campo obbligatorio:true

Tipo: string

Pattern valido:^[1-9][0-9]*$

type

Il tipo di dati da leggere.

Campo obbligatorio:true

Tipo: string

Valori validi: ascii, hex

Pattern valido:^(ascii|hex|ASCII|HEX)$

id

Un ID arbitrario della richiesta. Questa proprietà viene utilizzata per associare una richiesta di input a una risposta di output.

Campo obbligatorio:false

Tipo: string

Pattern valido:.+

Input di esempio: Campo obbligatorio
{ "data": "random serial data", "type": "ascii", "id": "abc123" }
Input di esempio: richiesta esadecimale
{ "data": "base64 encoded data", "type": "hex", "id": "abc123" }

Dati di output

Il connettore pubblica i dati di output in due argomenti:

  • Le informazioni sullo stato del connettore nell'argomento serial/+/status/#.

  • Le risposte delle richieste di lettura nell'argomento serial/+/read_response/#.

Durante la pubblicazione in questo argomento, il connettore sostituisce il carattere jolly + con il nome oggetto del core e il carattere jolly # con il percorso della porta seriale. Ad esempio:

serial/core-thing-name/status/dev/serial-port
Filtro di argomenti: serial/+/status/#

Utilizza questo argomento per ascoltare lo stato delle richieste di lettura e scrittura. Se la richiesta include una proprietà id, verrà restituita nella risposta.

Output di esempio: Riuscito
{ "response": { "status": "success" }, "id": "abc123" }
Output di esempio: Errore

Una risposta di errore include la proprietà error_message che descrive l'errore o il timeout riscontrato durante l'esecuzione dell'operazione di lettura o scrittura.

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

Utilizza questo argomento per ricevere risposta dei dati da un'operazione di lettura. I dati della risposta hanno la codifica Base64 se il tipo è hex.

Output di esempio
{ "data": "output of serial read operation" "id": "abc123" }

Esempio di utilizzo

Utilizza i seguenti passaggi di alto livello per impostare un esempio di funzione Lambda Python 3.7 che puoi utilizzare per provare il connettore.

Nota
  1. Assicurarsi di soddisfare i requisiti per il connettore.

  2. Crea e pubblica una funzione Lambda che invia i dati di input al connettore.

    Salvare il codice di esempio come file PY. Scarica e decomprimi ilAWS IoT GreengrassSDK di base per Python. Quindi, crea un pacchetto zip che contiene il file PY e la cartella greengrasssdk a livello root. Questo pacchetto zip è il pacchetto di distribuzione caricato suAWS Lambda.

    Dopo aver creato la funzione Lambda Python 3.7, pubblica una versione della funzione e crea un alias.

  3. Configurare il gruppo Greengrass.

    1. Aggiungi la funzione Lambda con il suo alias (scelta consigliata). Configura il ciclo di vita Lambda su lunga durata (o"Pinned": truenella CLI).

    2. Aggiungi la risorsa periferica locale richiesta e concedi l'accesso in lettura/scrittura alla funzione Lambda.

    3. Aggiungere il connettore e configurarne i relativi parametri.

    4. Aggiungere sottoscrizioni al gruppo che consentono al connettore di ricevere i dati di input e inviare i dati di output nei filtri degli argomenti supportati.

      • Imposta la funzione Lambda come origine, il connettore come destinazione e utilizza un filtro per l'argomento di input supportato.

      • Imposta il connettore come origine, AWS IoT Core come destinazione e utilizza un filtro per l’argomento di output supportato. Utilizza questa sottoscrizione per visualizzare i messaggi di stato nellaAWS IoTconsole.

  4. Distribuisci il gruppo.

  5. NellaAWS IoTconsole, sulTest, sottoscrivi l'argomento dei dati di output per visualizzare i messaggi di stato dal connettore. La funzione Lambda di esempio ha una lunga durata e inizia a inviare messaggi immediatamente dopo la distribuzione del gruppo.

    Al termine del test, puoi impostare il ciclo di vita Lambda su «on demand» (o"Pinned": falsenella CLI) e distribuire il gruppo. Ciò impedisce alla funzione di inviare messaggi.

Esempio

La funzione Lambda di esempio seguente invia un messaggio di input al connettore.

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

Licenze

Il connettore Serial Stream include il software e le licenze di terze parti indicati

Questo connettore viene rilasciato sotto ilAccordo di licenza del software Greengrass Core.

Changelog

La tabella seguente descrive le modifiche apportate a ogni versione del connettore.

Versione

Modifiche

3

Aggiornato il runtime Lambda a Python 3.7, che modifica il requisito di runtime.

2

ARN del connettore aggiornato perRegione AWSSupporto.

1

Versione iniziale.

Un gruppo Greengrass può contenere una sola versione del connettore alla volta. Per informazioni sull'aggiornamento di una versione del connettore, consulta Aggiornamento delle versioni dei connettori.

Consulta anche