

Avis de fin de support : le 7 octobre 2026, AWS le support de. AWS IoT Greengrass Version 1 Après le 7 octobre 2026, vous ne pourrez plus accéder aux AWS IoT Greengrass V1 ressources. Pour plus d'informations, rendez-vous sur [Migrer depuis AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

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 GPIO Raspberry Pi
<a name="raspberrypi-gpio-connector"></a>

**Avertissement**  <a name="connectors-extended-life-phase-warning"></a>
Ce connecteur est passé à la *phase de durée de vie prolongée* et AWS IoT Greengrass ne publiera pas de mises à jour fournissant des fonctionnalités, des améliorations aux fonctionnalités existantes, des correctifs de sécurité ou des corrections de bogues. Pour de plus amples informations, veuillez consulter [AWS IoT Greengrass Version 1 politique de maintenance](maintenance-policy.md).

Le [connecteur](connectors.md) GPIO du Raspberry Pi contrôle les broches à usage général input/output (GPIO) d'un périphérique principal du Raspberry Pi.

Ce connecteur interroge les broches d'entrée à un intervalle spécifié et publie les changements d'état dans des rubriques MQTT. Il accepte également les demandes de lecture et d'écriture sous forme de messages MQTT provenant de fonctions Lambda définies par l'utilisateur. Les demandes d'écriture sont utilisées pour régler la broche sur haute ou basse tension.

Le connecteur fournit des paramètres que vous utilisez pour désigner des broches d'entrée et de sortie. Ce comportement est configuré avant le déploiement de groupe. Il ne peut pas être modifié au moment de l'exécution.
+ Les broches d'entrée peuvent être utilisées pour recevoir des données à partir des appareils périphériques.
+ Les broches de sortie peuvent être utilisées pour contrôler les périphériques ou envoyer des données aux périphériques.

Vous pouvez utiliser ce connecteur pour de nombreux scénarios, tels que :
+ contrôler des feux vert, orange et rouge d'un feu de circulation.
+ contrôler un ventilateur (relié à un relais électrique) basé sur les données provenant d'un capteur d'humidité.
+ alerter des employés dans un magasin lorsque les clients appuient sur un bouton.
+ utiliser un commutateur de lumière intelligent pour contrôler d'autres appareils IoT.

**Note**  
Ce connecteur n'est pas adapté aux applications qui ont des besoins en temps réel. Des événements de courte durée peuvent être manqués.

Ce connecteur est disponible dans les versions suivantes.


| Version | ARN | 
| --- | --- | 
| 3 | `arn:aws:greengrass:{{region}}::/connectors/RaspberryPiGPIO/versions/3` | 
| 2 | `arn:aws:greengrass:{{region}}::/connectors/RaspberryPiGPIO/versions/2` | 
| 1 | `arn:aws:greengrass:{{region}}::/connectors/RaspberryPiGPIO/versions/1` | 

Pour obtenir des informations sur les changements apportés aux versions, veuillez consulter le [Journal des modifications](#raspberrypi-gpio-connector-changelog).

## Exigences
<a name="raspberrypi-gpio-connector-req"></a>

Ce connecteur possède les critères suivants :

------
#### [ Version 3 ]
+ <a name="conn-req-ggc-v1.9.3"></a>AWS IoT Greengrass Logiciel de base v1.9.3 ou version ultérieure.
+ [Python](https://www.python.org/) version 3.7 installé sur le périphérique principal et ajouté à la variable d'environnement PATH.
+ <a name="conn-gpio-req-pin-seq"></a>Raspberry Pi 4 modèle B ou Raspberry Pi 3 modèle B/B \+. Vous devez connaître la séquence de broches de votre Raspberry Pi. Pour de plus amples informations, veuillez consulter [Séquence de broches GPIO](#raspberrypi-gpio-connector-req-pins).
+ <a name="conn-gpio-req-dev-gpiomem-resource"></a>[Ressource de périphérique locale](access-local-resources.md) du groupe Greengrass pointant vers `/dev/gpiomem` le Raspberry Pi. Si vous créez la ressource dans la console, vous devez sélectionner l'option **Ajouter automatiquement les autorisations de groupe de systèmes d'exploitation du groupe Linux propriétaire de la ressource**. Dans l'API, définissez la `GroupOwnerSetting.AutoAddGroupOwner` propriété sur`true`.
+ <a name="conn-gpio-req-rpi-gpio"></a>Le [RPi.GPIO](https://sourceforge.net/p/raspberry-gpio-python/wiki/Home/)module installé sur le Raspberry Pi. Dans Raspbian, ce module est installé par défaut. Vous pouvez utiliser la commande suivante pour le réinstaller :

  ```
  sudo pip install RPi.GPIO
  ```

------
#### [ Versions 1 - 2 ]
+ <a name="conn-req-ggc-v1.7.0"></a>AWS IoT Greengrass Logiciel de base v1.7 ou version ultérieure.
+ [Python](https://www.python.org/) version 2.7 installé sur le périphérique principal et ajouté à la variable d'environnement PATH.
+ <a name="conn-gpio-req-pin-seq"></a>Raspberry Pi 4 modèle B ou Raspberry Pi 3 modèle B/B \+. Vous devez connaître la séquence de broches de votre Raspberry Pi. Pour de plus amples informations, veuillez consulter [Séquence de broches GPIO](#raspberrypi-gpio-connector-req-pins).
+ <a name="conn-gpio-req-dev-gpiomem-resource"></a>[Ressource de périphérique locale](access-local-resources.md) du groupe Greengrass pointant vers `/dev/gpiomem` le Raspberry Pi. Si vous créez la ressource dans la console, vous devez sélectionner l'option **Ajouter automatiquement les autorisations de groupe de systèmes d'exploitation du groupe Linux propriétaire de la ressource**. Dans l'API, définissez la `GroupOwnerSetting.AutoAddGroupOwner` propriété sur`true`.
+ <a name="conn-gpio-req-rpi-gpio"></a>Le [RPi.GPIO](https://sourceforge.net/p/raspberry-gpio-python/wiki/Home/)module installé sur le Raspberry Pi. Dans Raspbian, ce module est installé par défaut. Vous pouvez utiliser la commande suivante pour le réinstaller :

  ```
  sudo pip install RPi.GPIO
  ```

------

### Séquence de broches GPIO
<a name="raspberrypi-gpio-connector-req-pins"></a>

Le connecteur GPIO du Raspberry Pi référence les broches GPIO selon le schéma de numérotation du système sur puce (SoC) sous-jacent, et non selon la disposition physique des broches GPIO. L'ordre physique des broches peut varier dans les versions du Raspberry Pi. Pour plus d'informations, consultez la section [GPIO](https://www.raspberrypi.org/documentation/usage/gpio/) dans la documentation du Raspberry Pi.

Le connecteur ne peut pas valider que les broches d'entrée et de sortie que vous configurez se mappent correctement au matériel sous-jacent de votre Raspberry Pi. Si la configuration de broche n'est pas valide, le connecteur renvoie une erreur d'exécution lorsqu'il essaie de démarrer sur le périphérique. Pour résoudre ce problème, reconfigurez le connecteur puis redéployez.

**Note**  
Assurez-vous que les périphériques des broches GPIO sont correctement connectés pour empêcher les dommages des composants.

## Paramètres du connecteur
<a name="raspberrypi-gpio-connector-param"></a>

Ce connecteur fournit les paramètres suivants :

`InputGpios`  
Une liste séparée par des virgules de numéros de broches GPIO à configurer en tant qu'entrées. Vous pouvez également ajouter `U` pour définir une résistance de tirage de la broche ou `D` pour définir la résistance de rappel. Exemple: `"5,6U,7D"`.  
Nom affiché dans la AWS IoT console : broches **GPIO d'entrée**  
Obligatoire : `false`. Vous devez spécifier les broches d'entrée, de sortie ou les deux.  
Type : `string`  
Schéma valide : `^$|^[0-9]+[UD]?(,[0-9]+[UD]?)*$`

`InputPollPeriod`  
Intervalle (en millisecondes) entre chaque opération d'interrogation, qui vérifie les broches GPIO d'entrée pour les changements d'état. La valeur minimale est de 1.  
Cette valeur dépend de votre scénario et des types d'appareils qui sont interrogés. Par exemple, une valeur `50` doit être suffisamment rapide pour détecter une pression de bouton.  
Nom affiché dans la AWS IoT console : Période d'**interrogation GPIO d'entrée**  
Nécessaire : `false`  
Type : `string`  
Schéma valide : `^$|^[1-9][0-9]*$`

`OutputGpios`  
Une liste séparée par des virgules de nombres de broches GPIO à configurer en tant que sorties. Vous pouvez ajouter `H` pour régler sur un état haut (1) ou `L` pour régler sur un état faible (0). Exemple: `"8H,9,27L"`.  
Nom affiché dans la AWS IoT console : broches **GPIO de sortie**  
Obligatoire : `false`. Vous devez spécifier les broches d'entrée, de sortie ou les deux.  
Type : `string`  
Schéma valide : `^$|^[0-9]+[HL]?(,[0-9]+[HL]?)*$`

`GpioMem-ResourceId`  
ID de la ressource de l'appareil local qui représente `/dev/gpiomem`.  
Ce connecteur bénéficie d'un accès en lecture/écriture à la ressource.
Nom d'affichage dans la AWS IoT console : **Resource for/dev/gpiomem device**  
Nécessaire : `true`  
Type : `string`  
Schéma valide : `.+`

### Exemple de création d'un connecteur (AWS CLI)
<a name="raspberrypi-gpio-connector-create"></a>

La commande CLI suivante crée un `ConnectorDefinition` avec une version initiale contenant le connecteur Raspberry Pi GPIO.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyRaspberryPiGPIOConnector",
            "ConnectorArn": "arn:aws:greengrass:{{region}}::/connectors/RaspberryPiGPIO/versions/3",
            "Parameters": {
                "GpioMem-ResourceId": "my-gpio-resource",
                "InputGpios": "5,6U,7D",
                "InputPollPeriod": 50,
                "OutputGpios": "8H,9,27L"
            }
        }
    ]
}'
```

**Note**  
La fonction Lambda de ce connecteur a un cycle de [vie](lambda-functions.md#lambda-lifecycle) prolongé.

Dans la AWS IoT Greengrass console, vous pouvez ajouter un connecteur depuis la page **Connecteurs** du groupe. Pour de plus amples informations, veuillez consulter [Mise en route avec les connecteurs Greengrass (console)](connectors-console.md).

## Données d’entrée
<a name="raspberrypi-gpio-connector-data-input"></a>

Ce connecteur accepte les demandes de lecture ou d'écriture pour les broches GPIO sur deux rubriques MQTT.
+ Lire les demandes dans la rubrique `gpio/+/+/read`.
+ Écrire les demandes dans la rubrique `gpio/+/+/write`.

Pour publier dans ces rubriques, remplacez respectivement les caractères génériques `+` par le nom d'objet principal et le nombre de broches cibles. Par exemple :

```
gpio/{{core-thing-name}}/{{gpio-number}}/read
```

**Note**  
Actuellement, lorsque vous créez un abonnement qui utilise le connecteur GPIO du Raspberry Pi, vous devez spécifier une valeur pour au moins l'un des caractères génériques \+ de la rubrique.

**Filtre de rubriques :** `gpio/+/+/read`  
Utilisez cette rubrique pour demander au connecteur de lire l'état de la broche GPIO spécifiée dans la rubrique.  
Le connecteur publie la réponse dans la rubrique de sortie correspondante (par exemple, `gpio/{{core-thing-name}}/{{gpio-number}}/state`).    
**Propriétés des messages**  
Aucune. Les messages qui sont envoyés dans cette rubrique sont ignorés.

**Filtre de rubriques :** `gpio/+/+/write`  
Utilisez cette rubrique pour envoyer des demandes d'écriture à une broche GPIO. Cela demande au connecteur de régler la broche GPIO spécifiée dans la rubrique sur faible ou haute tension.  
+ `0` règle la broche sur faible tension.
+ `1` règle la broche sur haute tension.
Le connecteur publie la réponse dans la rubrique `/state` de sortie correspondante (par exemple, `gpio/{{core-thing-name}}/{{gpio-number}}/state`).    
**Propriétés des messages**  
Valeur `0` ou `1`, sous forme d'un nombre entier ou d'une chaîne.  
**Exemple d'entrée**  

```
0
```

## Données de sortie
<a name="raspberrypi-gpio-connector-data-output"></a>

Ce connecteur publie des données dans deux rubriques :
+ Changements d'états hauts ou faibles dans la rubrique `gpio/+/+/state`.
+ Erreurs dans la rubrique `gpio/+/error`.

**Filtre de rubriques :** `gpio/+/+/state`  
Utilisez cette rubrique pour écouter les changements d'état sur les broches d'entrée et les réponses pour les demandes de lecture. Le connecteur renvoie la chaîne `"0"` si la broche est dans un état faible ou `"1"` s'il est dans un état haut.  
Lorsqu'il publie dans cette rubrique, le connecteur remplace respectivement les caractères génériques `+` par le nom d'objet principal et la broche cible. Par exemple :  

```
gpio/{{core-thing-name}}/{{gpio-number}}/state
```
Actuellement, lorsque vous créez un abonnement qui utilise le connecteur GPIO du Raspberry Pi, vous devez spécifier une valeur pour au moins l'un des caractères génériques \+ de la rubrique.  
**Exemple de sortie**  

```
0
```

**Filtre de rubriques :** `gpio/+/error`  
Utilisez cette rubrique pour écouter les erreurs. Le connecteur publie dans cette rubrique suite à une demande non valide (par exemple, lorsqu'un changement d'état est demandé sur une broche d'entrée).  
Lorsqu'il publie dans cette rubrique, le connecteur remplace respectivement le caractère générique `+` par le nom d'objet principal.    
**Exemple de sortie**  

```
{
   "topic": "gpio/my-core-thing/22/write",
   "error": "Invalid GPIO operation",
   "long_description": "GPIO 22 is configured as an INPUT GPIO. Write operations are not permitted."
 }
```

## Exemple d'utilisation
<a name="raspberrypi-gpio-connector-usage"></a>

<a name="connectors-setup-intro"></a>Suivez les étapes de haut niveau suivantes pour configurer un exemple de fonction Lambda en Python 3.7 que vous pouvez utiliser pour tester le connecteur.

**Note**  <a name="connectors-setup-get-started-topics"></a>
Si vous utilisez d'autres environnements d'exécution Python, vous pouvez créer un lien symbolique depuis Python3.x Python 3.7.
Les rubriques [Démarrer avec les connecteurs (console)](connectors-console.md) et [Démarrer avec les connecteurs (CLI)](connectors-cli.md) contiennent des étapes détaillées qui vous montrent comment configurer et déployer un exemple de connecteur Twilio Notifications.

1. Veillez à répondre aux [conditions requises](#raspberrypi-gpio-connector-req) pour le connecteur.

1. <a name="connectors-setup-function"></a>Créez et publiez une fonction Lambda qui envoie des données d'entrée au connecteur.

   Enregistrez l'[exemple de code](#raspberrypi-gpio-connector-usage-example) en tant que fichier PY. <a name="connectors-setup-function-sdk"></a>Téléchargez et décompressez le [SDK AWS IoT Greengrass de base pour Python](lambda-functions.md#lambda-sdks-core). Ensuite, créez un package zip contenant le fichier PY et le dossier `greengrasssdk` au niveau racine. Ce package zip est le package de déploiement vers lequel vous effectuez le téléchargement AWS Lambda.

   <a name="connectors-setup-function-publish"></a>Après avoir créé la fonction Lambda de Python 3.7, publiez une version de la fonction et créez un alias.

1. Configurez votre groupe Greengrass.

   1. <a name="connectors-setup-gg-function"></a>Ajoutez la fonction Lambda par son alias (recommandé). Configurez le cycle de vie Lambda comme étant de longue durée (ou dans `"Pinned": true` la CLI).

   1. <a name="connectors-setup-device-resource"></a>Ajoutez la ressource de périphérique locale requise et accordez read/write l'accès à la fonction Lambda.

   1. Ajoutez le connecteur et configurez ses [paramètres](#raspberrypi-gpio-connector-param).

   1. Ajoutez des abonnements qui permettent au connecteur de recevoir des [données d'entrée](#raspberrypi-gpio-connector-data-input) et d'envoyer des [données de sortie](#raspberrypi-gpio-connector-data-output) sur des filtres de rubrique pris en charge.
      + <a name="connectors-setup-subscription-input-data"></a>Définissez la fonction Lambda comme source, le connecteur comme cible et utilisez un filtre de rubrique d'entrée compatible.
      + <a name="connectors-setup-subscription-output-data"></a>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 la AWS IoT console.

1. <a name="connectors-setup-deploy-group"></a>Déployez le groupe.

1. <a name="connectors-setup-test-sub"></a>Dans la AWS IoT console, sur la page **Test**, abonnez-vous à la rubrique relative aux données de sortie pour consulter les messages d'état provenant du connecteur. L'exemple de fonction Lambda a une longue durée de vie et commence à envoyer des messages immédiatement après le déploiement du groupe.

   Lorsque vous avez terminé les tests, vous pouvez définir le cycle de vie Lambda à la demande (ou `"Pinned": false` dans la CLI) et déployer le groupe. Cela empêche la fonction d'envoyer des messages.

### Exemple
<a name="raspberrypi-gpio-connector-usage-example"></a>

L'exemple suivant de fonction Lambda envoie un message d'entrée au connecteur. Cet exemple envoie des demandes de lecture pour un ensemble de pins GPIO d'entrée. Il indique comment construire des rubriques à l'aide du nom de l'objet principale et du nombre de broches.

```
import greengrasssdk
import json
import os

iot_client = greengrasssdk.client('iot-data')
INPUT_GPIOS = [6, 17, 22]

thingName = os.environ['AWS_IOT_THING_NAME']

def get_read_topic(gpio_num):
    return '/'.join(['gpio', thingName, str(gpio_num), 'read'])

def get_write_topic(gpio_num):
    return '/'.join(['gpio', thingName, str(gpio_num), 'write'])

def send_message_to_connector(topic, message=''):
    iot_client.publish(topic=topic, payload=str(message))

def set_gpio_state(gpio, state):
    send_message_to_connector(get_write_topic(gpio), str(state))

def read_gpio_state(gpio):
    send_message_to_connector(get_read_topic(gpio))

def publish_basic_message():
    for i in INPUT_GPIOS:
    	read_gpio_state(i)

publish_basic_message()

def lambda_handler(event, context):
    return
```

## Licences
<a name="raspberrypi-gpio-connector-license"></a>

Le connecteur Raspberry Pi GPIO ; inclut le connecteur tiers software/licensing suivant :
+ [RPi.GPIO](https://pypi.org/project/RPi.GPIO/)/MIT

Ce connecteur 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="raspberrypi-gpio-connector-changelog"></a>

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


| Version | Modifications | 
| --- | --- | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Mise à niveau de l'environnement d'exécution Lambda vers Python 3.7, ce qui modifie les exigences d'exécution. | 
| 2 | L'ARN du connecteur a été mis à jour pour Région AWS le support. | 
| 1 | Première version. | 

<a name="one-conn-version"></a>Un groupe Greengrass ne peut contenir qu'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](connectors.md#upgrade-connector-versions).

## Consultez aussi
<a name="raspberrypi-gpio-connector-see-also"></a>
+ [Intégrer à des services et protocoles à l'aide de connecteurs Greengrass](connectors.md)
+ [Mise en route avec les connecteurs Greengrass (console)](connectors-console.md)
+ [Démarrage avec les connecteurs Greengrass (CLI)](connectors-cli.md)
+ [GPIO](https://www.raspberrypi.org/documentation/usage/gpio/) dans la documentation Raspberry Pi