

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.

# Adaptateur de protocole Modbus-RTU
<a name="modbus-rtu-protocol-adapter-component"></a>

Le composant adaptateur de protocole Modbus-RTU (`aws.greengrass.Modbus`) interroge les informations des appareils Modbus RTU locaux.

Pour demander des informations à un appareil Modbus RTU local avec ce composant, publiez un message dans la rubrique où ce composant est abonné. Dans le message, spécifiez la demande Modbus RTU à envoyer à un appareil. Ce composant publie ensuite une réponse contenant le résultat de la demande Modbus RTU.

**Note**  
Ce composant fournit des fonctionnalités similaires à celles du connecteur d'adaptateur de protocole Modbus RTU de la version 1. AWS IoT Greengrass Pour plus d'informations, consultez la section [Connecteur d'adaptateur de protocole Modbus RTU](https://docs.aws.amazon.com/greengrass/latest/developerguide/modbus-protocol-adapter-connector.html) dans le guide du *développeur AWS IoT Greengrass V1*.

**Topics**
+ [Versions](#modbus-rtu-protocol-adapter-component-versions)
+ [Type](#modbus-rtu-protocol-adapter-component-type)
+ [Système d’exploitation](#modbus-rtu-protocol-adapter-component-os-support)
+ [Prérequis](#modbus-rtu-protocol-adapter-component-requirements)
+ [Dépendances](#modbus-rtu-protocol-adapter-component-dependencies)
+ [Configuration](#modbus-rtu-protocol-adapter-component-configuration)
+ [Données d'entrée](#modbus-rtu-protocol-adapter-component-input-data)
+ [Données de sortie](#modbus-rtu-protocol-adapter-component-output-data)
+ [Demandes et réponses de Modbus RTU](#modbus-rtu-protocol-adapter-component-requests-responses)
+ [Fichier journal local](#modbus-rtu-protocol-adapter-component-log-file)
+ [Licences](#modbus-rtu-protocol-adapter-component-licenses)
+ [Journal des modifications](#modbus-rtu-protocol-adapter-component-changelog)

## Versions
<a name="modbus-rtu-protocol-adapter-component-versions"></a>

Les versions de ce composant sont les suivantes :
+ 2,1x
+ 2,0.x

## Type
<a name="modbus-rtu-protocol-adapter-component-type"></a>

<a name="public-component-type-lambda"></a>Ce <a name="public-component-type-lambda-phrase"></a>composant est un composant Lambda () `aws.greengrass.lambda`. [Le [noyau Greengrass](greengrass-nucleus-component.md) exécute la fonction Lambda de ce composant à l'aide du composant Lambda Launcher.](lambda-launcher-component.md)

<a name="public-component-type-more-information"></a>Pour de plus amples informations, veuillez consulter [Types de composant](develop-greengrass-components.md#component-types).

## Système d’exploitation
<a name="modbus-rtu-protocol-adapter-component-os-support"></a>

Ce composant ne peut être installé que sur les appareils principaux de Linux.

## Prérequis
<a name="modbus-rtu-protocol-adapter-component-requirements"></a>

Ce composant répond aux exigences suivantes :
+ <a name="core-device-lambda-function-requirements"></a>Votre appareil principal doit répondre aux exigences pour exécuter les fonctions Lambda. Si vous souhaitez que le périphérique principal exécute des fonctions Lambda conteneurisées, le périphérique doit répondre aux exigences requises. Pour de plus amples informations, veuillez consulter [Exigences relatives à la fonction Lambda](setting-up.md#greengrass-v2-lambda-requirements).
+ <a name="public-component-python3-requirement"></a>[Python](https://www.python.org/) version 3.7 installé sur le périphérique principal et ajouté à la variable d'environnement PATH.
+ Connexion physique entre le périphérique AWS IoT Greengrass principal et les appareils Modbus. Le périphérique principal doit être connecté physiquement au réseau Modbus RTU via un port série, tel qu'un port USB.
+ <a name="connector-component-legacy-subscription-router-dependency"></a>Pour recevoir les données de sortie de ce composant, vous devez fusionner la mise à jour de configuration suivante pour l'[ancien composant routeur d'abonnement](legacy-subscription-router-component.md) (`aws.greengrass.LegacySubscriptionRouter`) lorsque vous déployez ce composant. Cette configuration indique le sujet dans lequel ce composant publie les réponses.

------
#### [ Legacy subscription router v2.1.x ]

  ```
  {
    "subscriptions": {
      "aws-greengrass-modbus": {
        "id": "aws-greengrass-modbus",
        "source": "component:aws.greengrass.Modbus",
        "subject": "modbus/adapter/response",
        "target": "cloud"
      }
    }
  }
  ```

------
#### [ Legacy subscription router v2.0.x ]

  ```
  {
    "subscriptions": {
      "aws-greengrass-modbus": {
        "id": "aws-greengrass-modbus",
        "source": "arn:aws:lambda:region:aws:function:aws-greengrass-modbus:version",
        "subject": "modbus/adapter/response",
        "target": "cloud"
      }
    }
  }
  ```<a name="connector-component-legacy-subscription-router-dependency-replace"></a>
  + *region*Remplacez-le par Région AWS celui que vous utilisez.
  + *version*Remplacez-le par la version de la fonction Lambda exécutée par ce composant. Pour trouver la version de la fonction Lambda, vous devez consulter la recette de la version de ce composant que vous souhaitez déployer. Ouvrez la page de détails de ce composant dans la [AWS IoT Greengrass console](https://console.aws.amazon.com//greengrass) et recherchez la paire clé-valeur de la **fonction Lambda**. Cette paire clé-valeur contient le nom et la version de la fonction Lambda.

**Important**  <a name="connector-component-legacy-subscription-router-dependency-note"></a>
Vous devez mettre à jour la version de la fonction Lambda sur l'ancien routeur d'abonnement chaque fois que vous déployez ce composant. Cela garantit que vous utilisez la bonne version de la fonction Lambda pour la version du composant que vous déployez.

------

  <a name="connector-component-create-deployments"></a>Pour de plus amples informations, veuillez consulter [Créer des déploiements](create-deployments.md).
+ L'adaptateur de protocole Modbus-RTU est compatible pour fonctionner dans un VPC.

## Dépendances
<a name="modbus-rtu-protocol-adapter-component-dependencies"></a>

Lorsque vous déployez un composant, il déploie AWS IoT Greengrass également des versions compatibles de ses dépendances. Cela signifie que vous devez satisfaire aux exigences relatives au composant et à toutes ses dépendances pour réussir le déploiement du composant. Cette section répertorie les dépendances des [versions publiées](#modbus-rtu-protocol-adapter-component-changelog) de ce composant et les contraintes de version sémantiques qui définissent les versions des composants pour chaque dépendance. Vous pouvez également consulter les dépendances de chaque version du composant dans la [AWS IoT Greengrass console](https://console.aws.amazon.com//greengrass). Sur la page de détails du composant, recherchez la liste des **dépendances**.

------
#### [ 2.1.11 ]

Le tableau suivant répertorie les dépendances pour la version 2.1.11 de ce composant.


| Dépendance | Versions compatibles | Type de dépendance | 
| --- | --- | --- | 
| [Noyau de Greengrass](greengrass-nucleus-component.md) | >=2,0,0 <2,16,0  | Stricte | 
| [Lanceur Lambda](lambda-launcher-component.md) | ^2,0.0  | Stricte | 
| [Environnements d'exécution (runtimes) Lambda](lambda-runtimes-component.md) | ^2,0.0  | Flexible | 
| [Service d'échange de jetons](token-exchange-service-component.md) | ^2,0.0  | Stricte | 

------
#### [ 2.1.10 ]

Le tableau suivant répertorie les dépendances pour la version 2.1.10 de ce composant.


| Dépendance | Versions compatibles | Type de dépendance | 
| --- | --- | --- | 
| [Noyau de Greengrass](greengrass-nucleus-component.md) | >=2,0.0 <2,15.0  | Stricte | 
| [Lanceur Lambda](lambda-launcher-component.md) | ^2,0.0  | Stricte | 
| [Environnements d'exécution (runtimes) Lambda](lambda-runtimes-component.md) | ^2,0.0  | Flexible | 
| [Service d'échange de jetons](token-exchange-service-component.md) | ^2,0.0  | Stricte | 

------
#### [ 2.1.9 ]

Le tableau suivant répertorie les dépendances pour la version 2.1.9 de ce composant.


| Dépendance | Versions compatibles | Type de dépendance | 
| --- | --- | --- | 
| [Noyau de Greengrass](greengrass-nucleus-component.md) | >=2,0.0 <2,14.0  | Stricte | 
| [Lanceur Lambda](lambda-launcher-component.md) | ^2,0.0  | Stricte | 
| [Environnements d'exécution (runtimes) Lambda](lambda-runtimes-component.md) | ^2,0.0  | Flexible | 
| [Service d'échange de jetons](token-exchange-service-component.md) | ^2,0.0  | Stricte | 

------
#### [ 2.1.8 ]

Le tableau suivant répertorie les dépendances pour la version 2.1.8 de ce composant.


| Dépendance | Versions compatibles | Type de dépendance | 
| --- | --- | --- | 
| [Noyau de Greengrass](greengrass-nucleus-component.md) | >=2,0,0 <2,13,0  | Stricte | 
| [Lanceur Lambda](lambda-launcher-component.md) | ^2,0.0  | Stricte | 
| [Environnements d'exécution (runtimes) Lambda](lambda-runtimes-component.md) | ^2,0.0  | Flexible | 
| [Service d'échange de jetons](token-exchange-service-component.md) | ^2,0.0  | Stricte | 

------
#### [ 2.1.7 ]

Le tableau suivant répertorie les dépendances pour la version 2.1.7 de ce composant.


| Dépendance | Versions compatibles | Type de dépendance | 
| --- | --- | --- | 
| [Noyau de Greengrass](greengrass-nucleus-component.md) | >=2,0.0 <2,12.0  | Stricte | 
| [Lanceur Lambda](lambda-launcher-component.md) | ^2,0.0  | Stricte | 
| [Environnements d'exécution (runtimes) Lambda](lambda-runtimes-component.md) | ^2,0.0  | Flexible | 
| [Service d'échange de jetons](token-exchange-service-component.md) | ^2,0.0  | Stricte | 

------
#### [ 2.1.6 ]

Le tableau suivant répertorie les dépendances pour la version 2.1.6 de ce composant.


| Dépendance | Versions compatibles | Type de dépendance | 
| --- | --- | --- | 
| [Noyau de Greengrass](greengrass-nucleus-component.md) | >=2,0.0 <2,11.0  | Stricte | 
| [Lanceur Lambda](lambda-launcher-component.md) | ^2,0.0  | Stricte | 
| [Environnements d'exécution (runtimes) Lambda](lambda-runtimes-component.md) | ^2,0.0  | Flexible | 
| [Service d'échange de jetons](token-exchange-service-component.md) | ^2,0.0  | Stricte | 

------
#### [ 2.1.4 and 2.1.5 ]

Le tableau suivant répertorie les dépendances pour les versions 2.1.4 et 2.1.5 de ce composant.


| Dépendance | Versions compatibles | Type de dépendance | 
| --- | --- | --- | 
| [Noyau de Greengrass](greengrass-nucleus-component.md) | >=2,0,0 <2,1,0  | Stricte | 
| [Lanceur Lambda](lambda-launcher-component.md) | ^2,0.0  | Stricte | 
| [Environnements d'exécution (runtimes) Lambda](lambda-runtimes-component.md) | ^2,0.0  | Flexible | 
| [Service d'échange de jetons](token-exchange-service-component.md) | ^2,0.0  | Stricte | 

------
#### [ 2.1.3 ]

Le tableau suivant répertorie les dépendances pour la version 2.1.3 de ce composant.


| Dépendance | Versions compatibles | Type de dépendance | 
| --- | --- | --- | 
| [Noyau de Greengrass](greengrass-nucleus-component.md) | >=2,0.0 <2,9.0  | Stricte | 
| [Lanceur Lambda](lambda-launcher-component.md) | ^2,0.0  | Stricte | 
| [Environnements d'exécution (runtimes) Lambda](lambda-runtimes-component.md) | ^2,0.0  | Flexible | 
| [Service d'échange de jetons](token-exchange-service-component.md) | ^2,0.0  | Stricte | 

------
#### [ 2.1.2 ]

Le tableau suivant répertorie les dépendances pour la version 2.1.2 de ce composant.


| Dépendance | Versions compatibles | Type de dépendance | 
| --- | --- | --- | 
| [Noyau de Greengrass](greengrass-nucleus-component.md) | >=2,0.0 <2,8.0  | Stricte | 
| [Lanceur Lambda](lambda-launcher-component.md) | ^2,0.0  | Stricte | 
| [Environnements d'exécution (runtimes) Lambda](lambda-runtimes-component.md) | ^2,0.0  | Flexible | 
| [Service d'échange de jetons](token-exchange-service-component.md) | ^2,0.0  | Stricte | 

------
#### [ 2.1.1 ]

Le tableau suivant répertorie les dépendances pour la version 2.1.1 de ce composant.


| Dépendance | Versions compatibles | Type de dépendance | 
| --- | --- | --- | 
| [Noyau de Greengrass](greengrass-nucleus-component.md) | >=2,0.0 <2,7.0  | Stricte | 
| [Lanceur Lambda](lambda-launcher-component.md) | ^2,0.0  | Stricte | 
| [Environnements d'exécution (runtimes) Lambda](lambda-runtimes-component.md) | ^2,0.0  | Flexible | 
| [Service d'échange de jetons](token-exchange-service-component.md) | ^2,0.0  | Stricte | 

------
#### [ 2.0.8 and 2.1.0 ]

Le tableau suivant répertorie les dépendances pour les versions 2.0.8 et 2.1.0 de ce composant.


| Dépendance | Versions compatibles | Type de dépendance | 
| --- | --- | --- | 
| [Noyau de Greengrass](greengrass-nucleus-component.md) | >=2,0.0 <2,6.0  | Stricte | 
| [Lanceur Lambda](lambda-launcher-component.md) | ^2,0.0  | Stricte | 
| [Environnements d'exécution (runtimes) Lambda](lambda-runtimes-component.md) | ^2,0.0  | Flexible | 
| [Service d'échange de jetons](token-exchange-service-component.md) | ^2,0.0  | Stricte | 

------
#### [ 2.0.7 ]

Le tableau suivant répertorie les dépendances pour la version 2.0.7 de ce composant.


| Dépendance | Versions compatibles | Type de dépendance | 
| --- | --- | --- | 
| [Noyau de Greengrass](greengrass-nucleus-component.md) | >=2,0.0 <2,5.0  | Stricte | 
| [Lanceur Lambda](lambda-launcher-component.md) | ^2,0.0  | Stricte | 
| [Environnements d'exécution (runtimes) Lambda](lambda-runtimes-component.md) | ^2,0.0  | Flexible | 
| [Service d'échange de jetons](token-exchange-service-component.md) | ^2,0.0  | Stricte | 

------
#### [ 2.0.6 ]

Le tableau suivant répertorie les dépendances pour la version 2.0.6 de ce composant.


| Dépendance | Versions compatibles | Type de dépendance | 
| --- | --- | --- | 
| [Noyau de Greengrass](greengrass-nucleus-component.md) | >=2,0.0 <2,4.0  | Stricte | 
| [Lanceur Lambda](lambda-launcher-component.md) | ^2,0.0  | Stricte | 
| [Environnements d'exécution (runtimes) Lambda](lambda-runtimes-component.md) | ^2,0.0  | Flexible | 
| [Service d'échange de jetons](token-exchange-service-component.md) | ^2,0.0  | Stricte | 

------
#### [ 2.0.5 ]

Le tableau suivant répertorie les dépendances pour la version 2.0.5 de ce composant.


| Dépendance | Versions compatibles | Type de dépendance | 
| --- | --- | --- | 
| [Noyau de Greengrass](greengrass-nucleus-component.md) | >=2,0.0 <2,3.0  | Stricte | 
| [Lanceur Lambda](lambda-launcher-component.md) | ^2,0.0  | Stricte | 
| [Environnements d'exécution (runtimes) Lambda](lambda-runtimes-component.md) | ^2,0.0  | Flexible | 
| [Service d'échange de jetons](token-exchange-service-component.md) | ^2,0.0  | Stricte | 

------
#### [ 2.0.4 ]

Le tableau suivant répertorie les dépendances pour la version 2.0.4 de ce composant.


| Dépendance | Versions compatibles | Type de dépendance | 
| --- | --- | --- | 
| [Noyau de Greengrass](greengrass-nucleus-component.md) | >=2,0.0 <2,2.0  | Stricte | 
| [Lanceur Lambda](lambda-launcher-component.md) | ^2,0.0  | Stricte | 
| [Environnements d'exécution (runtimes) Lambda](lambda-runtimes-component.md) | ^2,0.0  | Flexible | 
| [Service d'échange de jetons](token-exchange-service-component.md) | ^2,0.0  | Stricte | 

------
#### [ 2.0.3 ]

Le tableau suivant répertorie les dépendances pour la version 2.0.3 de ce composant.


| Dépendance | Versions compatibles | Type de dépendance | 
| --- | --- | --- | 
| [Noyau de Greengrass](greengrass-nucleus-component.md) | >=2,0,3 <2,10  | Stricte | 
| [Lanceur Lambda](lambda-launcher-component.md) | >=10,0  | Stricte | 
| [Environnements d'exécution (runtimes) Lambda](lambda-runtimes-component.md) | >=10,0  | Flexible | 
| [Service d'échange de jetons](token-exchange-service-component.md) | >=10,0  | Stricte | 

------

Pour plus d'informations sur les dépendances des composants, consultez la [référence de la recette des composants](component-recipe-reference.md#recipe-reference-component-dependencies).

## Configuration
<a name="modbus-rtu-protocol-adapter-component-configuration"></a>

Ce composant fournit les paramètres de configuration suivants que vous pouvez personnaliser lorsque vous déployez le composant.

**Note**  <a name="connector-component-lambda-parameters"></a>
La configuration par défaut de ce composant inclut les paramètres de la fonction Lambda. Nous vous recommandons de modifier uniquement les paramètres suivants pour configurer ce composant sur vos appareils.

------
#### [ v2.1.x ]

`lambdaParams`  
Objet contenant les paramètres de la fonction Lambda de ce composant. Cet objet contient les informations suivantes :    
`EnvironmentVariables`  
Objet contenant les paramètres de la fonction Lambda. Cet objet contient les informations suivantes :    
`ModbusLocalPort`  <a name="modbus-rtu-protocol-adapter-configuration-modbuslocalport"></a>
Le chemin absolu vers le port série physique Modbus sur le périphérique principal, tel que`/dev/ttyS2`.  
Pour exécuter ce composant dans un conteneur, vous devez définir ce chemin en tant que périphérique système (dans`containerParams.devices`) auquel le composant peut accéder. Ce composant s'exécute dans un conteneur par défaut.  
Ce composant doit avoir read/write accès à l'appareil.  
`ModbusBaudRate`  
(Facultatif) Une valeur de chaîne qui indique le débit en bauds pour les communications série avec les périphériques Modbus TCP locaux.  
Par défaut : `9600`  
`ModbusByteSize`  
(Facultatif) Une valeur de chaîne qui indique la taille d'un octet lors d'une communication série avec des périphériques Modbus TCP locaux. Choisissez`5`, `6``7`, ou `8` bits.  
Par défaut : `8`  
`ModbusParity`  
(Facultatif) Mode de parité à utiliser pour vérifier l'intégrité des données dans les communications série avec les appareils Modbus TCP locaux.  
+ `E`— Vérifiez l'intégrité des données avec une parité uniforme.
+ `O`— Vérifiez l'intégrité des données avec une parité impaire.
+ `N`— Ne vérifiez pas l'intégrité des données.
Par défaut : `N`  
`ModbusStopBits`  
(Facultatif) Valeur de chaîne qui indique le nombre de bits indiquant la fin d'un octet lors d'une communication série avec des périphériques Modbus TCP locaux.  
Par défaut : `1`

`containerMode`  <a name="modbus-rtu-protocol-adapter-configuration-containermode"></a>
(Facultatif) Mode de conteneurisation de ce composant. Sélectionnez parmi les options suivantes :  
+ `GreengrassContainer`— Le composant s'exécute dans un environnement d'exécution isolé à l'intérieur du AWS IoT Greengrass conteneur.

  Si vous spécifiez cette option, vous devez spécifier un périphérique système (in`containerParams.devices`) pour permettre au conteneur d'accéder au périphérique Modbus.
+ `NoContainer`— Le composant ne s'exécute pas dans un environnement d'exécution isolé.
Par défaut : `GreengrassContainer`

`containerParams`  <a name="modbus-rtu-protocol-adapter-configuration-containerparams"></a>
<a name="connector-component-container-params-description"></a>(Facultatif) Objet contenant les paramètres du conteneur pour ce composant. Le composant utilise ces paramètres si vous le spécifiez `GreengrassContainer` pour`containerMode`.  
Cet objet contient les informations suivantes :    
`memorySize`  
<a name="connector-component-container-params-memory-size-description"></a>(Facultatif) La quantité de mémoire (en kilo-octets) à allouer au composant.  
La valeur par défaut est de 512 Mo (525 312 Ko).  
`devices`  
(Facultatif) Objet qui spécifie les périphériques système auxquels le composant peut accéder dans un conteneur.  
Pour exécuter ce composant dans un conteneur, vous devez spécifier le périphérique système que vous configurez dans la variable d'`ModbusLocalPort`environnement.
Cet objet contient les informations suivantes :    
`0`— Il s'agit d'un index de tableau sous forme de chaîne.  
Un objet qui contient les informations suivantes :    
`path`  
Le chemin d'accès au périphérique système sur le périphérique principal. Elle doit avoir la même valeur que celle pour laquelle vous avez configuré`ModbusLocalPort`.  
`permission`  
(Facultatif) L'autorisation d'accéder au périphérique système depuis le conteneur. Cette valeur doit être`rw`, ce qui indique que le composant a read/write accès au périphérique système.  
Par défaut : `rw`  
`addGroupOwner`  
(Facultatif) S'il faut ou non ajouter le groupe système qui exécute le composant en tant que propriétaire du périphérique système.  
Par défaut : `true`

`pubsubTopics`  <a name="connector-component-pubsub-topics-parameter"></a>
(Facultatif) Objet contenant les rubriques auxquelles le composant s'abonne pour recevoir des messages. Vous pouvez spécifier chaque sujet et indiquer si le composant est abonné à des sujets MQTT provenant de sujets locaux AWS IoT Core ou locaux publish/subscribe .  
Cet objet contient les informations suivantes :    
`0`— Il s'agit d'un index de tableau sous forme de chaîne.  
Un objet qui contient les informations suivantes :    
`type`  
(Facultatif) Type de publish/subscribe messagerie utilisé par ce composant pour s'abonner aux messages. Sélectionnez parmi les options suivantes :  
+ `PUB_SUB` – Abonnez-vous aux messages locaux de publication/abonnement. Si vous choisissez cette option, le sujet ne peut pas contenir de caractères génériques MQTT. Pour plus d'informations sur la façon d'envoyer des messages à partir d'un composant personnalisé lorsque vous spécifiez cette option, consultez[Publier/souscrire des messages locaux](ipc-publish-subscribe.md).
+ `IOT_CORE`— Abonnez-vous aux messages AWS IoT Core MQTT. Si vous choisissez cette option, le sujet peut contenir des caractères génériques MQTT. Pour plus d'informations sur la façon d'envoyer des messages à partir de composants personnalisés lorsque vous spécifiez cette option, consultez[Publier/souscrire AWS IoT Core des messages MQTT](ipc-iot-core-mqtt.md).
Par défaut : `PUB_SUB`  
`topic`  
(Facultatif) Rubrique à laquelle le composant s'abonne pour recevoir des messages. Si vous spécifiez `IotCore` pour`type`, vous pouvez utiliser des caractères génériques MQTT (`+`et`#`) dans cette rubrique.

**Example Exemple : mise à jour de fusion de configuration (mode conteneur)**  <a name="modbus-rtu-protocol-adapter-configuration-example-container-mode"></a>

```
{
  "lambdaExecutionParameters": {
    "EnvironmentVariables": {
      "ModbusLocalPort": "/dev/ttyS2"
    }
  },
  "containerMode": "GreengrassContainer",
  "containerParams": {
    "devices": {
      "0": {
        "path": "/dev/ttyS2",
        "permission": "rw",
        "addGroupOwner": true
      }
    }
  }
}
```

**Example Exemple : mise à jour de fusion de configuration (pas de mode conteneur)**  <a name="modbus-rtu-protocol-adapter-configuration-example-no-container-mode"></a>

```
{
  "lambdaExecutionParameters": {
    "EnvironmentVariables": {
      "ModbusLocalPort": "/dev/ttyS2"
    }
  },
  "containerMode": "NoContainer"
}
```

------
#### [ v2.0.x ]

`lambdaParams`  
Objet contenant les paramètres de la fonction Lambda de ce composant. Cet objet contient les informations suivantes :    
`EnvironmentVariables`  
Objet contenant les paramètres de la fonction Lambda. Cet objet contient les informations suivantes :    
`ModbusLocalPort`  <a name="modbus-rtu-protocol-adapter-configuration-modbuslocalport"></a>
Le chemin absolu vers le port série physique Modbus sur le périphérique principal, tel que`/dev/ttyS2`.  
Pour exécuter ce composant dans un conteneur, vous devez définir ce chemin en tant que périphérique système (dans`containerParams.devices`) auquel le composant peut accéder. Ce composant s'exécute dans un conteneur par défaut.  
Ce composant doit avoir read/write accès à l'appareil.

`containerMode`  <a name="modbus-rtu-protocol-adapter-configuration-containermode"></a>
(Facultatif) Mode de conteneurisation de ce composant. Sélectionnez parmi les options suivantes :  
+ `GreengrassContainer`— Le composant s'exécute dans un environnement d'exécution isolé à l'intérieur du AWS IoT Greengrass conteneur.

  Si vous spécifiez cette option, vous devez spécifier un périphérique système (in`containerParams.devices`) pour permettre au conteneur d'accéder au périphérique Modbus.
+ `NoContainer`— Le composant ne s'exécute pas dans un environnement d'exécution isolé.
Par défaut : `GreengrassContainer`

`containerParams`  <a name="modbus-rtu-protocol-adapter-configuration-containerparams"></a>
<a name="connector-component-container-params-description"></a>(Facultatif) Objet contenant les paramètres du conteneur pour ce composant. Le composant utilise ces paramètres si vous le spécifiez `GreengrassContainer` pour`containerMode`.  
Cet objet contient les informations suivantes :    
`memorySize`  
<a name="connector-component-container-params-memory-size-description"></a>(Facultatif) La quantité de mémoire (en kilo-octets) à allouer au composant.  
La valeur par défaut est de 512 Mo (525 312 Ko).  
`devices`  
(Facultatif) Objet qui spécifie les périphériques système auxquels le composant peut accéder dans un conteneur.  
Pour exécuter ce composant dans un conteneur, vous devez spécifier le périphérique système que vous configurez dans la variable d'`ModbusLocalPort`environnement.
Cet objet contient les informations suivantes :    
`0`— Il s'agit d'un index de tableau sous forme de chaîne.  
Un objet qui contient les informations suivantes :    
`path`  
Le chemin d'accès au périphérique système sur le périphérique principal. Elle doit avoir la même valeur que celle pour laquelle vous avez configuré`ModbusLocalPort`.  
`permission`  
(Facultatif) L'autorisation d'accéder au périphérique système depuis le conteneur. Cette valeur doit être`rw`, ce qui indique que le composant a read/write accès au périphérique système.  
Par défaut : `rw`  
`addGroupOwner`  
(Facultatif) S'il faut ou non ajouter le groupe système qui exécute le composant en tant que propriétaire du périphérique système.  
Par défaut : `true`

`pubsubTopics`  <a name="connector-component-pubsub-topics-parameter"></a>
(Facultatif) Objet contenant les rubriques auxquelles le composant s'abonne pour recevoir des messages. Vous pouvez spécifier chaque sujet et indiquer si le composant est abonné à des sujets MQTT provenant de sujets locaux AWS IoT Core ou locaux publish/subscribe .  
Cet objet contient les informations suivantes :    
`0`— Il s'agit d'un index de tableau sous forme de chaîne.  
Un objet qui contient les informations suivantes :    
`type`  
(Facultatif) Type de publish/subscribe messagerie utilisé par ce composant pour s'abonner aux messages. Sélectionnez parmi les options suivantes :  
+ `PUB_SUB` – Abonnez-vous aux messages locaux de publication/abonnement. Si vous choisissez cette option, le sujet ne peut pas contenir de caractères génériques MQTT. Pour plus d'informations sur la façon d'envoyer des messages à partir d'un composant personnalisé lorsque vous spécifiez cette option, consultez[Publier/souscrire des messages locaux](ipc-publish-subscribe.md).
+ `IOT_CORE`— Abonnez-vous aux messages AWS IoT Core MQTT. Si vous choisissez cette option, le sujet peut contenir des caractères génériques MQTT. Pour plus d'informations sur la façon d'envoyer des messages à partir de composants personnalisés lorsque vous spécifiez cette option, consultez[Publier/souscrire AWS IoT Core des messages MQTT](ipc-iot-core-mqtt.md).
Par défaut : `PUB_SUB`  
`topic`  
(Facultatif) Rubrique à laquelle le composant s'abonne pour recevoir des messages. Si vous spécifiez `IotCore` pour`type`, vous pouvez utiliser des caractères génériques MQTT (`+`et`#`) dans cette rubrique.

**Example Exemple : mise à jour de fusion de configuration (mode conteneur)**  <a name="modbus-rtu-protocol-adapter-configuration-example-container-mode"></a>

```
{
  "lambdaExecutionParameters": {
    "EnvironmentVariables": {
      "ModbusLocalPort": "/dev/ttyS2"
    }
  },
  "containerMode": "GreengrassContainer",
  "containerParams": {
    "devices": {
      "0": {
        "path": "/dev/ttyS2",
        "permission": "rw",
        "addGroupOwner": true
      }
    }
  }
}
```

**Example Exemple : mise à jour de fusion de configuration (pas de mode conteneur)**  <a name="modbus-rtu-protocol-adapter-configuration-example-no-container-mode"></a>

```
{
  "lambdaExecutionParameters": {
    "EnvironmentVariables": {
      "ModbusLocalPort": "/dev/ttyS2"
    }
  },
  "containerMode": "NoContainer"
}
```

------

## Données d'entrée
<a name="modbus-rtu-protocol-adapter-component-input-data"></a>

Ce composant accepte les paramètres de demande Modbus RTU sur le sujet suivant et envoie la demande Modbus RTU à l'appareil. <a name="connector-component-local-publish"></a>Par défaut, ce composant s'abonne aux publish/subscribe messages locaux. Pour plus d'informations sur la façon de publier des messages vers ce composant à partir de vos composants personnalisés, consultez[Publier/souscrire des messages locaux](ipc-publish-subscribe.md). 

**Rubrique par défaut (publication/abonnement local) :** `modbus/adapter/request`

<a name="connector-component-input-properties"></a>Le message accepte les propriétés suivantes. Les messages d'entrée doivent être au format JSON.

`request`  
Les paramètres de la demande Modbus RTU à envoyer.  
La forme du message de demande dépend du type de demande Modbus RTU qu'il représente. Les propriétés suivantes sont requises pour toutes les demandes.  
Type : `object` qui contient les informations suivantes :    
`operation`  
Nom de l'opération à exécuter. Par exemple, spécifiez `ReadCoilsRequest` de lire les bobines sur un périphérique Modbus RTU. Pour plus d'informations sur les opérations prises en charge, consultez[Demandes et réponses de Modbus RTU](#modbus-rtu-protocol-adapter-component-requests-responses).  
Type : `string`  
`device`  
L'appareil cible de la requête.  
Cette valeur doit être un entier compris entre `0` et`247`.  
Type : `integer`
Les autres paramètres à inclure dans la demande dépendent de l'opération. Ce composant gère le contrôle de [redondance cyclique (CRC) afin de vérifier](https://en.wikipedia.org/wiki/Cyclic_redundancy_check) les demandes de données pour vous.  
Si votre demande inclut une `address` propriété, vous devez spécifier sa valeur sous forme d'entier. Par exemple, `"address": 1`.

`id`  <a name="connector-component-input-property-id"></a>
ID arbitraire de la demande. Utilisez cette propriété pour associer une demande d'entrée à une réponse de sortie. Lorsque vous spécifiez cette propriété, le composant définit la `id` propriété de l'objet de réponse sur cette valeur.  
Type : `string`

**Example Exemple d'entrée : demande de lecture de bobines**  

```
{
  "request": {
    "operation": "ReadCoilsRequest",
    "device": 1,
    "address": 1,
    "count": 1
  },
  "id": "MyRequest"
}
```

## Données de sortie
<a name="modbus-rtu-protocol-adapter-component-output-data"></a>

 <a name="connector-component-output-data"></a>Ce composant publie par défaut les réponses sous forme de données de sortie sur le sujet MQTT suivant. Vous devez spécifier cette rubrique `subject` dans la configuration de l'[ancien composant routeur d'abonnement](legacy-subscription-router-component.md). Pour plus d'informations sur la façon de s'abonner à des messages sur ce sujet dans vos composants personnalisés, consultez[Publier/souscrire AWS IoT Core des messages MQTT](ipc-iot-core-mqtt.md). 

**Rubrique par défaut (AWS IoT Core MQTT) :** `modbus/adapter/response`

La forme du message de réponse dépend de l'opération de demande et de l'état de la réponse. Pour obtenir des exemples, consultez [Exemples de demandes et de réponses](#modbus-rtu-protocol-adapter-component-examples).

Chaque réponse inclut les propriétés suivantes :

`response`  
Réponse de l'appareil Modbus RTU.  
Type : `object` qui contient les informations suivantes :    
`status`  
Le statut d'une demande. Le statut peut avoir l'une des valeurs suivantes :  
+ `Success`— La demande était valide, le composant l'a envoyée au réseau Modbus RTU et le réseau Modbus RTU a renvoyé une réponse.
+ `Exception`— La demande était valide, le composant l'a envoyée au réseau Modbus RTU et le réseau Modbus RTU a renvoyé une exception. Pour de plus amples informations, veuillez consulter [Statut de la réponse : Exception](#modbus-rtu-protocol-adapter-component-response-exception).
+ `No Response`— La demande n'était pas valide et le composant a détecté l'erreur avant d'envoyer la demande au réseau Modbus RTU. Pour de plus amples informations, veuillez consulter [Statut de la réponse : Pas de réponse](#modbus-rtu-protocol-adapter-component-response-noresponse).  
`operation`  
Opération demandée par le composant.  
`device`  
L'appareil sur lequel le composant a envoyé la demande.  
`payload`  
Réponse de l'appareil Modbus RTU. Si tel `status` est le cas`No Response`, cet objet contient uniquement une `error` propriété avec la description de l'erreur (par exemple,`[Input/Output] No Response received from the remote unit`).

`id`  
L'ID de la demande, que vous pouvez utiliser pour identifier quelle réponse correspond à quelle demande.

**Note**  
Une réponse pour une opération d'écriture est simplement un écho de la demande. Bien que les réponses écrites n'incluent pas d'informations pertinentes, il est recommandé de vérifier le statut de la réponse pour voir si la demande aboutit ou échoue.

**Example Exemple de sortie : réussite**  

```
{
  "response" : {
    "status" : "success",
    "device": 1,
    "operation": "ReadCoilsRequest",
    "payload": {
      "function_code": 1,
      "bits": [1]
    }
  },
  "id" : "MyRequest"
}
```

**Example Exemple de sortie : échec**  

```
{
  "response" : {
    "status" : "fail",
    "error_message": "Internal Error",
    "error": "Exception",
    "device": 1,
    "operation": "ReadCoilsRequest",
    "payload": {
      "function_code": 129,
      "exception_code": 2
    }
  },
  "id" : "MyRequest"
}
```

Pour obtenir plus d’exemples, consultez [Exemples de demandes et de réponses](#modbus-rtu-protocol-adapter-component-examples).

## Demandes et réponses de Modbus RTU
<a name="modbus-rtu-protocol-adapter-component-requests-responses"></a>

Ce connecteur accepte les paramètres de demande de Modbus RTU en tant que [données d'entrée](#modbus-rtu-protocol-adapter-component-input-data) et publie les réponses en tant que [données de sortie](#modbus-rtu-protocol-adapter-component-output-data).

Les opérations communes suivantes sont prises en charge.


| Nom de l'opération dans la demande | Code de fonction dans la réponse | 
| --- | --- | 
| ReadCoilsRequest | 01 | 
| ReadDiscreteInputsRequest | 02 | 
| ReadHoldingRegistersRequest | 03 | 
| ReadInputRegistersRequest | 04 | 
| WriteSingleCoilRequest | 05 | 
| WriteSingleRegisterRequest | 06 | 
| WriteMultipleCoilsRequest | 15 | 
| WriteMultipleRegistersRequest | 16 | 
| MaskWriteRegisterRequest | 22 | 
| ReadWriteMultipleRegistersRequest | 23 | 

### Exemples de demandes et de réponses
<a name="modbus-rtu-protocol-adapter-component-examples"></a>

Voici des exemples de demandes et de réponses pour les opérations prises en charge.

Bobines de lecture  
**Exemple de requête :**  

```
{
  "request": {
    "operation": "ReadCoilsRequest",
    "device": 1,
    "address": 1,
    "count": 1
  },
  "id": "TestRequest"
}
```
**Exemple de réponse :**  

```
{
  "response": {
    "status": "success",
    "device": 1,
    "operation": "ReadCoilsRequest",
    "payload": {
      "function_code": 1,
      "bits": [1]
    }
  },
  "id" : "TestRequest"
}
```

Lire les entrées discrètes  
**Exemple de requête :**  

```
{
  "request": {
    "operation": "ReadDiscreteInputsRequest",
    "device": 1,
    "address": 1,
    "count": 1
  },
  "id": "TestRequest"
}
```
**Exemple de réponse :**  

```
{
  "response": {
    "status": "success",
    "device": 1,
    "operation": "ReadDiscreteInputsRequest",
    "payload": {
      "function_code": 2,
      "bits": [1]
    }
  },
  "id" : "TestRequest"
}
```

Lire les registres de détention  
**Exemple de requête :**  

```
{
  "request": {
    "operation": "ReadHoldingRegistersRequest",
    "device": 1,
    "address": 1,
    "count": 1
  },
  "id": "TestRequest"
}
```
**Exemple de réponse :**  

```
{
  "response": {
    "status": "success",
    "device": 1,
    "operation": "ReadHoldingRegistersRequest",
    "payload": {
      "function_code": 3,
      "registers": [20,30]
    }
  },
  "id" : "TestRequest"
}
```

Lire les registres d'entrée  
**Exemple de requête :**  

```
{
  "request": {
    "operation": "ReadInputRegistersRequest",
    "device": 1,
    "address": 1,
    "count": 1
  },
  "id": "TestRequest"
}
```

Écrire une seule bobine  
**Exemple de requête :**  

```
{
  "request": {
    "operation": "WriteSingleCoilRequest",
    "device": 1,
    "address": 1,
    "value": 1
  },
  "id": "TestRequest"
}
```
**Exemple de réponse :**  

```
{
  "response": {
    "status": "success",
    "device": 1,
    "operation": "WriteSingleCoilRequest",
    "payload": {
      "function_code": 5,
      "address": 1,
      "value": true
    }
  },
  "id" : "TestRequest"
}
```

Écrire un registre unique  
**Exemple de requête :**  

```
{
  "request": {
    "operation": "WriteSingleRegisterRequest",
    "device": 1,
    "address": 1,
    "value": 1
  },
  "id": "TestRequest"
}
```

Écrire plusieurs bobines  
**Exemple de requête :**  

```
{
  "request": {
    "operation": "WriteMultipleCoilsRequest",
    "device": 1,
    "address": 1,
    "values": [1,0,0,1]
  },
  "id": "TestRequest"
}
```
**Exemple de réponse :**  

```
{
  "response": {
    "status": "success",
    "device": 1,
    "operation": "WriteMultipleCoilsRequest",
    "payload": {
      "function_code": 15,
      "address": 1,
      "count": 4
    }
  },
  "id" : "TestRequest"
}
```

Écrire plusieurs registres  
**Exemple de requête :**  

```
{
  "request": {
    "operation": "WriteMultipleRegistersRequest",
    "device": 1,
    "address": 1,
    "values": [20,30,10]
  },
  "id": "TestRequest"
}
```
**Exemple de réponse :**  

```
{
  "response": {
    "status": "success",
    "device": 1,
    "operation": "WriteMultipleRegistersRequest",
    "payload": {
      "function_code": 23,
      "address": 1,
      "count": 3
    }
  },
  "id" : "TestRequest"
}
```

Masque, écriture, registre  
**Exemple de requête :**  

```
{
  "request": {
    "operation": "MaskWriteRegisterRequest",
    "device": 1,
    "address": 1,
    "and_mask": 175,
    "or_mask": 1
  },
  "id": "TestRequest"
}
```
**Exemple de réponse :**  

```
{
  "response": {
    "status": "success",
    "device": 1,
    "operation": "MaskWriteRegisterRequest",
    "payload": {
      "function_code": 22,
      "and_mask": 0,
      "or_mask": 8
    }
  },
  "id" : "TestRequest"
}
```

Lecture et écriture de plusieurs registres  
**Exemple de requête :**  

```
{
  "request": {
    "operation": "ReadWriteMultipleRegistersRequest",
    "device": 1,
    "read_address": 1,
    "read_count": 2,
    "write_address": 3,
    "write_registers": [20,30,40]
  },
  "id": "TestRequest"
}
```
**Exemple de réponse :**  

```
{
  "response": {
    "status": "success",
    "device": 1,
    "operation": "ReadWriteMultipleRegistersRequest",
    "payload": {
      "function_code": 23,
      "registers": [10,20,10,20]
    }
  },
  "id" : "TestRequest"
}
```
La réponse inclut les registres que le composant lit.

### Statut de la réponse : Exception
<a name="modbus-rtu-protocol-adapter-component-response-exception"></a>

Des exceptions peuvent se produire lorsque le format de la demande est valide, mais la demande échoue. Dans ce cas, la réponse contient les informations suivantes :
+ Le `status` est réglé sur `Exception`.
+ Le `function_code` est égal au code de fonction de la requête \$1 128.
+ Le `exception_code` contient le code d'exception. Pour plus d'informations, consultez les codes d'exception de Modbus.

**Exemple :**

```
{
  "response": {
    "status": "fail",
    "error_message": "Internal Error",
    "error": "Exception",
    "device": 1,
    "operation": "ReadCoilsRequest",
    "payload": {
      "function_code": 129,
      "exception_code": 2
    }
  },
  "id": "TestRequest"
}
```

### Statut de la réponse : Pas de réponse
<a name="modbus-rtu-protocol-adapter-component-response-noresponse"></a>

Ce connecteur effectue des vérifications de validation sur la demande Modbus. Par exemple, il vérifie les formats non valides et les champs manquants. Si la validation échoue, le connecteur n'envoie pas la demande. A la place, il renvoie une réponse qui contient les informations suivantes :
+ Le `status` est réglé sur `No Response`.
+ L'`error` contient la raison de l'erreur.
+ Le `error_message` contient le message de l'erreur.

**Exemples :**

```
{
  "response": {
    "status": "fail",
    "error_message": "Invalid address field. Expected <type 'int'>, got <type 'str'>",
    "error": "No Response",
    "device": 1,
    "operation": "ReadCoilsRequest",
    "payload": {
      "error": "Invalid address field. Expected Expected <type 'int'>, got <type 'str'>"
    }
  },
  "id": "TestRequest"
}
```

Si la demande vise un appareil qui n'existe pas ou si le réseau Modbus RTU ne fonctionne pas, vous pouvez obtenir une `ModbusIOException` qui utilise le format No Response.

```
{
  "response": {
    "status": "fail",
    "error_message": "[Input/Output] No Response received from the remote unit",
    "error": "No Response",
    "device": 1,
    "operation": "ReadCoilsRequest",
    "payload": {
      "error": "[Input/Output] No Response received from the remote unit"
    }
  },
  "id": "TestRequest"
}
```

## Fichier journal local
<a name="modbus-rtu-protocol-adapter-component-log-file"></a>

Ce composant utilise le fichier journal suivant.

```
/greengrass/v2/logs/aws.greengrass.Modbus.log
```

**Pour consulter les journaux de ce composant**
+ Exécutez la commande suivante sur le périphérique principal pour afficher le fichier journal de ce composant en temps réel. Remplacez `/greengrass/v2` par le chemin d'accès au dossier AWS IoT Greengrass racine.

  ```
  sudo tail -f /greengrass/v2/logs/aws.greengrass.Modbus.log
  ```

## Licences
<a name="modbus-rtu-protocol-adapter-component-licenses"></a>

Ce composant inclut les logiciels/licences tiers suivants :
+ [Licence pymodbus/BSD](https://github.com/riptideio/pymodbus/blob/master/README.rst)
+ [Licence pyserial](https://github.com/pyserial/pyserial) /BSD

<a name="component-core-software-license"></a>Ce composant est publié dans le cadre du contrat de [licence logicielle Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Journal des modifications
<a name="modbus-rtu-protocol-adapter-component-changelog"></a>

Le tableau suivant décrit les modifications apportées à chaque version du composant.


|  **Version**  |  **Modifications**  | 
| --- | --- | 
|  2.1.11  | Version mise à jour pour la version 2.15.0 de Greengrass Nucleus. | 
|  2.1.10  | Version mise à jour pour la version 2.14.0 de Greengrass Nucleus. | 
|  2.1.9  | Version mise à jour pour la version 2.13.0 de Greengrass Nucleus. | 
|  2.1.8  | Version mise à jour pour la version 2.12.0 de Greengrass Nucleus. | 
|  2.1.7  | Version mise à jour pour la version 2.11.0 de Greengrass Nucleus. | 
|  2.1.6  | Version mise à jour pour la version 2.10.0 de Greengrass Nucleus. | 
|  2.1.5  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/greengrass/v2/developerguide/modbus-rtu-protocol-adapter-component.html) | 
|  2.1.4  | Version mise à jour pour la version 2.9.0 de Greengrass Nucleus. | 
|  2.1.3  | Version mise à jour pour la version 2.8.0 de Greengrass Nucleus. | 
|  2.1.2  |  Version mise à jour pour la version 2.7.0 de Greengrass Nucleus.  | 
|  2.1.1  |  Version mise à jour pour la version 2.6.0 de Greengrass Nucleus.  | 
|  2.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/greengrass/v2/developerguide/modbus-rtu-protocol-adapter-component.html)  | 
|  2.0.8  |  Version mise à jour pour la version 2.5.0 de Greengrass Nucleus.  | 
|  2.0.7  |  Version mise à jour pour la version 2.4.0 de Greengrass Nucleus.  | 
|  2.0.6  |  Version mise à jour pour la version 2.3.0 de Greengrass Nucleus.  | 
|  2.0.5  |  Version mise à jour pour la version 2.2.0 de Greengrass Nucleus.  | 
|  2.0.4  |  Version mise à jour pour la version 2.1.0 de Greengrass Nucleus.  | 
|  2.0.3  |  Première version.  | 