Connecteur Serial Stream - AWS IoT Greengrass

AWS IoT Greengrass Version 1 est entré dans la phase de durée de vie prolongée le 30 juin 2023. Pour plus d'informations, consultez la politique de AWS IoT Greengrass V1 maintenance. Après cette date, AWS IoT Greengrass V1 ne publiera pas de mises à jour fournissant des fonctionnalités, des améliorations, des corrections de bogues ou des correctifs de sécurité. Les appareils qui fonctionnent AWS IoT Greengrass V1 sous tension ne seront pas perturbés et continueront à fonctionner et à se connecter au cloud. Nous vous recommandons vivement de migrer vers AWS IoT Greengrass Version 2, qui ajoute de nouvelles fonctionnalités importantes et prend en charge des plateformes supplémentaires.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Connecteur Serial Stream

Avertissement

Ce connecteur a été déplacé dans lePhase de vie, etAWS IoT Greengrassne publiera pas de mises à jour fournissant des fonctionnalités, des améliorations à des fonctionnalités existantes, des correctifs de sécurité ou des corrections de bogues. Pour plus d'informations, consultez AWS IoT Greengrass Version 1politique de maintenance.

Le flux de sérieconnecteurlit et écrit dans un port série sur unAWS IoT GreengrassAppareil Core.

Ce connecteur prend en charge deux modes de fonctionnement :

  • la lecture à la demande. Reçoit les demandes de lecture et d'écriture dans les rubriques MQTT et publie la réponse de l'opération de lecture ou de l'état de l'opération d'écriture.

  • l'attente active de lecture. Lit à partir du port série à intervalles réguliers. Ce mode prend également en charge les requêtes de lecture à la demande.

Note

Les requêtes de lecture sont limitées à une longueur de lecture maximale de 63 994 octets. Les requêtes d'écriture sont limitées à une longueur de données maximale de 128 000 octets.

Ce connecteur a les versions suivantes.

Version

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

Pour obtenir des informations sur les changements apportés aux versions, veuillez consulter le Journal des modifications.

Prérequis

Ce connecteur possède les critères suivants :

Version 3
  • Logiciel AWS IoT Greengrass Core 1.9.3 ou version ultérieure.

  • Pythonversion 3.7 ou 3.8 installée sur l'appareil principal et ajoutée à la variable d'environnement PATH.

    Note

    Pour utiliser Python 3.8, exécutez la commande suivante pour créer un lien symbolique entre le dossier d'installation de Python 3.7 par défaut et les binaires Python 3.8 installés.

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

    Ceci configure votre appareil de sorte qu'il réponde aux exigence de Python pour AWS IoT Greengrass.

  • UNressource de périphérique localedans le groupe Greengrass qui pointe vers le port série cible.

    Note

    Avant de déployer ce connecteur, nous vous recommandons de configurer le port série et de vérifier que vous pouvez y accéder en lecture et en écriture.

Versions 1 - 2
  • AWS IoT GreengrassLogiciel Core v1.7 ou version ultérieure.

  • Pythonversion 2.7 installée sur l'appareil principal et ajoutée à la variable d'environnement PATH.

  • UNressource de périphérique localedans le groupe Greengrass qui pointe vers le port série cible.

    Note

    Avant de déployer ce connecteur, nous vous recommandons de configurer le port série et de vérifier que vous pouvez y accéder en lecture et en écriture.

Paramètres de connecteur

Ce connecteur fournit les paramètres suivants :

BaudRate

Vitesse de transmission de la connexion série.

Nom d'affichage dans leAWS IoTConsole  : Fréquence de baud

Obligatoire :true

Type: string

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

Modèle d'événement :^110$|^300$|^600$|^1200$|^2400$|^4800$|^9600$|^14400$|^19200$|^28800$|^38400$|^56000$|^57600$|^115200$|^230400$

Timeout

Délai (en secondes) pour une opération de lecture.

Nom d'affichage dans leAWS IoTConsole  : Expiration

Obligatoire :true

Type: string

Valeurs valides : 1 - 59

Modèle d'événement :^([1-9]|[1-5][0-9])$

SerialPort

Chemin d'accès absolu au port série physique sur le périphérique. Il s'agit du chemin d'accès source qui est spécifié pour la ressource du périphérique local.

Nom d'affichage dans leAWS IoTConsole  : Port série

Obligatoire :true

Type: string

Modèle d'événement :[/a-zA-Z0-9_-]+

SerialPort-ResourceId

ID de la ressource de l'appareil local qui représente le port série physique.

Note

Ce connecteur bénéficie d'un accès en lecture/écriture à la ressource.

Nom d'affichage dans leAWS IoTConsole  : Ressource du port série

Obligatoire :true

Type: string

Modèle d'événement :[a-zA-Z0-9_-]+

PollingRead

Définit le mode de lecture : attente active de lecture ou lecture à la demande.

  • Pour le mode d'attente active de lecture, spécifiez true. Dans ce mode, les propriétés PollingInterval, PollingReadType et PollingReadLength sont obligatoires.

  • Pour le mode de lecture à la demande, spécifiez false. Dans ce mode, le type et les valeurs de longueur sont spécifiés dans la demande de lecture.

Nom d'affichage dans leAWS IoTConsole  : Mode lecture

Obligatoire :true

Type: string

Valeurs valides : true, false

Modèle d'événement :^([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$

PollingReadLength

Longueur des données (en octets) à lire dans chaque opération d'attente active de lecture. Cela s'applique uniquement lorsque vous utilisez le mode d'attente active de lecture.

Nom d'affichage dans leAWS IoTConsole  : Longueur de l'attente active de lecture

Obligatoire : false. Cette propriété est obligatoire lorsquePollingReadesttrue.

Type: string

Modèle d'événement :^(|[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'intervalle (en secondes) auquel l'attente active de lecture a lieu. Cela s'applique uniquement lorsque vous utilisez le mode d'attente active de lecture.

Nom d'affichage dans leAWS IoTConsole  : Intervalle d'attente active de lecture

Obligatoire : false. Cette propriété est obligatoire lorsquePollingReadesttrue.

Type: string

Valeurs valides : 1 - 999

Modèle d'événement :^(|[1-9]|[1-9][0-9]|[1-9][0-9][0-9])$

PollingReadType

Type de données que les threads d'interrogation lisent. Cela s'applique uniquement lorsque vous utilisez le mode d'attente active de lecture.

Nom d'affichage dans leAWS IoTConsole  : Type d'attente active de lecture

Obligatoire : false. Cette propriété est obligatoire lorsquePollingReadesttrue.

Type: string

Valeurs valides : ascii, hex

Modèle d'événement :^(|[Aa][Ss][Cc][Ii][Ii]|[Hh][Ee][Xx])$

RtsCts

Indique s'il convient d'activer le contrôle de flux RTS/CTS. La valeur par défaut est false. Pour plus d'informations, consultez RTS, CTS et RTR.

Nom d'affichage dans leAWS IoTConsole  : Contrôle de flux RTS/CTS

Obligatoire :false

Type: string

Valeurs valides : true, false

Modèle d'événement :^(|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$

XonXoff

Indique s'il convient d'activer le contrôle de flux de logiciel. La valeur par défaut est false. Pour plus d'informations, consultez Software flow control.

Nom d'affichage dans leAWS IoTConsole  : Contrôle de flux de logiciel

Obligatoire :false

Type: string

Valeurs valides : true, false

Modèle d'événement :^(|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$

Parity

Parité du port série. La valeur par défaut est N. Pour plus d'informations, consultez Parity.

Nom d'affichage dans leAWS IoTConsole  : Parité de port série

Obligatoire :false

Type: string

Valeurs valides : N, E, O, S, M

Modèle d'événement :^(|[NEOSMneosm])$

Exemple de création de connecteur (AWS CLI)

La commande suivante d'CLI crée uneConnectorDefinitionavec une version initiale qui contient le connecteur Serial Stream. Elle configure le connecteur pour le mode d'attente active de lecture.

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" } } ] }'

DansAWS IoT Greengrass, vous pouvez ajouter un connecteur à partir de la consoleConnecteurs. Pour plus d'informations, consultez Mise en route avec les connecteurs Greengrass (console).

Données d'entrée

Ce connecteur accepte les demandes de lecture ou d'écriture pour les ports série dans deux rubriques MQTT. Les messages d'entrée doivent être au format JSON.

  • Lire les demandes dans la rubrique serial/+/read/#.

  • Écrire les demandes dans la rubrique serial/+/write/#.

Pour publier dans ces rubriques, remplacez le caractère générique + par le nom d'objet principal et le caractère générique # par le chemin d'accès au port série. Par exemple :

serial/core-thing-name/read/dev/serial-port
Filtre de rubriques : serial/+/read/#

Utilisez cette rubrique pour envoyer les demandes de lecture à la demande à une broche série. Les requêtes de lecture sont limitées à une longueur de lecture maximale de 63 994 octets.

Propriétés des messages
readLength

Longueur de données à lire à partir du port série.

Obligatoire :true

Type: string

Modèle d'événement :^[1-9][0-9]*$

type

Type de données à lire.

Obligatoire :true

Type: string

Valeurs valides : ascii, hex

Modèle d'événement :(?i)^(ascii|hex)$

id

ID arbitraire de la demande. Cette propriété est utilisée pour mapper une demande d'entrée à une réponse de sortie.

Obligatoire :false

Type: string

Modèle d'événement :.+

Exemple d'entrée
{ "readLength": "30", "type": "ascii", "id": "abc123" }
Filtre de rubriques : serial/+/write/#

Utilisez cette rubrique pour envoyer des demandes d'écriture à une broche série. Les requêtes d'écriture sont limitées à une longueur de données maximale de 128 000 octets.

Propriétés des messages
data

Chaîne à écrire dans le port série.

Obligatoire :true

Type: string

Modèle d'événement :^[1-9][0-9]*$

type

Type de données à lire.

Obligatoire :true

Type: string

Valeurs valides : ascii, hex

Modèle d'événement :^(ascii|hex|ASCII|HEX)$

id

ID arbitraire de la demande. Cette propriété est utilisée pour mapper une demande d'entrée à une réponse de sortie.

Obligatoire :false

Type: string

Modèle d'événement :.+

Exemple d'entrée : Demande ASCII
{ "data": "random serial data", "type": "ascii", "id": "abc123" }
Exemple d'entrée : demande hex
{ "data": "base64 encoded data", "type": "hex", "id": "abc123" }

Données de sortie

Le connecteur publie des données de sortie dans deux rubriques :

  • Informations sur le statut à partir du connecteur dans la rubrique serial/+/status/#.

  • réponses à partir des demandes de lecture dans la rubrique serial/+/read_response/#.

Pour publier dans cette rubrique, le connecteur remplace le caractère générique + par le nom d'objet principal et le caractère générique # par le chemin d'accès au port série. Par exemple :

serial/core-thing-name/status/dev/serial-port
Filtre de rubriques : serial/+/status/#

Utilisez cette rubrique pour écouter le statut des demandes de lecture et d'écriture. Si une propriété id est incluse dans la demande, elle est renvoyée dans la réponse.

Exemple de sortie : Succès
{ "response": { "status": "success" }, "id": "abc123" }
Exemple de sortie : Échec

Un échec de réponse inclut une propriété error_message qui décrit l'erreur ou l'expiration rencontrée lors de l'opération de lecture ou d'écriture.

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

Utilisez cette rubrique pour recevoir les données de réponse à partir d'une opération de lecture. Les données de réponse sont codées en Base64 si le type est hex.

Exemple de sortie
{ "data": "output of serial read operation" "id": "abc123" }

Exemple d'utilisation

Suivez les étapes détaillées suivantes pour configurer un exemple de fonction Lambda Python 3.7 que vous pouvez utiliser pour tester le connecteur.

Note
  1. Veillez à répondre aux conditions requises pour le connecteur.

  2. Créez et publiez une fonction Lambda qui envoie des données d'entrée au connecteur.

    Enregistrez l'exemple de code en tant que fichier PY. Téléchargez et décompressez leAWS IoT GreengrassKit SDK Core pour Python. Ensuite, créez un package zip contenant le fichier PY et le dossier greengrasssdk au niveau racine. Ce package zip correspond au package de déploiement que vous chargez surAWS Lambda.

    Après avoir créé la fonction Lambda Python 3.7, publiez une version de fonction et créez un alias.

  3. Configurez votre groupe Greengrass.

    1. Ajoutez la fonction Lambda par son alias (recommandé). Configurez le cycle de vie Lambda comme long (ou"Pinned": truedans la CLI).

    2. Ajoutez la ressource de périphérique local requise et accordez un accès en lecture/écriture à la fonction Lambda.

    3. Ajoutez le connecteur à votre groupe et configurez ses paramètres.

    4. Ajoutez au groupe des abonnements qui permettent au connecteur de recevoir des données d'entrée et d'envoyer des données de sortie sur des filtres de rubrique pris en charge.

      • Définissez la fonction Lambda en tant que source, le connecteur en tant que cible et utilisez un filtre de rubrique d'entrée pris en charge.

      • Définissez le connecteur en tant que source, AWS IoT Core en tant que cible et utilisez un filtre de rubrique de sortie pris en charge. Vous utilisez cet abonnement pour afficher les messages d'état dans laAWS IoTconsole

  4. Déployez le groupe.

  5. DansAWS IoTConsole, sur laTestabonnez-vous à la rubrique des données de sortie pour afficher les messages d'état du connecteur. L'exemple de fonction Lambda à longue durée de vie commence à envoyer des messages immédiatement après le déploiement du groupe.

    Lorsque vous avez terminé le test, vous pouvez définir le cycle de vie Lambda sur le type à la demande (ou"Pinned": falsedans l'interface de ligne de commande) et déployez le groupe. Cela empêche la fonction d'envoyer des messages.

Exemple

L'exemple de fonction Lambda suivant envoie un message d'entrée au connecteur.

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

Licences

Le connecteur Serial Stream inclut les logiciels et licences tiers suivants :

Ce connecteur est libéré sous leContrat de licence du logiciel Greengrass Core.

Journal des modifications

Le tableau suivante décrit les modifications intervenues dans chaque version du connecteur.

Version

Modifications

3

Mise à niveau du moteur d'exécution Lambda vers Python 3.7, ce qui modifie l'exigence d'environnement exécution.

2

Mise à jour ARN du connecteur pourRégion AWSPrise en charge.

1

Première version.

Un groupe Greengrass peut contenir une seule version du connecteur à la fois. Pour de plus amples informations sur la mise à niveau d'une version de connecteur, veuillez consulter Mise à niveau des versions du connecteur.

Consulter aussi