

Hinweis zum Ende des Supports: Am 7. Oktober 2026 AWS wird der Support für eingestellt. AWS IoT Greengrass Version 1 Nach dem 7. Oktober 2026 können Sie nicht mehr auf die Ressourcen zugreifen. AWS IoT Greengrass V1 Weitere Informationen finden Sie unter [Migrieren von AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Raspberry Pi GPIO-Anschluss
<a name="raspberrypi-gpio-connector"></a>

**Warnung**  <a name="connectors-extended-life-phase-warning"></a>
Dieser Connector befindet sich in der *Phase mit verlängerter Lebensdauer* und veröffentlicht AWS IoT Greengrass keine Updates, die Funktionen, Verbesserungen vorhandener Funktionen, Sicherheitspatches oder Bugfixes bieten. Weitere Informationen finden Sie unter [AWS IoT Greengrass Version 1 Wartungspolitik](maintenance-policy.md).

Der Raspberry [Pi-GPIO-Anschluss](connectors.md) steuert die GPIO-Pins (Allzweckeingang/-ausgang) eines Raspberry Pi-Kerngeräts.

Dieser Konnektor fragt Eingangspins in einem bestimmten Intervall ab und veröffentlicht Zustandsänderungen an MQTT-Themen. Es akzeptiert auch Lese- und Schreibanforderungen als MQTT-Nachrichten von benutzerdefinierten Lambda-Funktionen. Schreibanforderungen werden verwendet, um den Pin auf Hoch- oder Niederspannung zu setzen.

Der Konnektor stellt Parameter zur Verfügung, mit denen Sie Eingangs- und Ausgangspins definieren. Dieses Verhalten wird vor der Bereitstellung der Gruppe konfiguriert. Es kann während der Laufzeit nicht geändert werden.
+ Eingangspins können zum Empfangen von Daten von Peripheriegeräten verwendet werden.
+ Ausgangspins können zur Steuerung von Peripheriegeräten oder zum Senden von Daten an Peripheriegeräte verwendet werden.

Sie können diesen Konnektor für viele Szenarien verwenden, wie z. B.:
+ Steuerung der grünen, gelben und roten LED-Leuchten für eine Ampel.
+ Steuern eines Lüfters (mit einem elektrischen Relais verbunden) basierend auf Daten eines Feuchtigkeitssensors.
+ Alarmierung der Mitarbeiter in einem Einzelhandelsgeschäft auf Knopfdruck.
+ Verwendung eines intelligenten Lichtschalters zur Steuerung anderer IoT-Geräte.

**Anmerkung**  
Dieser Konnektor ist nicht geeignet für Anwendungen, die Echtzeitanforderungen haben Ereignisse mit kurzer Dauer können verpasst werden.

Dieser Konnektor hat die folgenden Versionen.


| 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` | 

Informationen über Versionsänderungen finden Sie im [Änderungsprotokoll](#raspberrypi-gpio-connector-changelog).

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

Dieser Konnektor hat die folgenden Anforderungen:

------
#### [ Version 3 ]
+ <a name="conn-req-ggc-v1.9.3"></a>AWS IoT Greengrass Kernsoftware v1.9.3 oder höher.
+ [Python-Version](https://www.python.org/) 3.7 wurde auf dem Core-Gerät installiert und zur Umgebungsvariablen PATH hinzugefügt.
+ <a name="conn-gpio-req-pin-seq"></a>Raspberry Pi 4 Modell B oder Raspberry Pi 3 Modell B/B\$1. Sie müssen die PIN-Reihenfolge Ihres Raspberry Pi kennen. Weitere Informationen finden Sie unter [GPIO-Pin-Sequenz](#raspberrypi-gpio-connector-req-pins).
+ <a name="conn-gpio-req-dev-gpiomem-resource"></a>Eine [lokale Geräteressource](access-local-resources.md) in der Greengrass-Gruppe, die `/dev/gpiomem` auf dem Raspberry Pi verweist. Wenn Sie die Ressource in der Konsole erstellen, müssen Sie die Option **Betriebssystemgruppenberechtigungen automatisch hinzufügen der Linux-Gruppe auswählen, der die Ressource gehört**. Stellen Sie die `GroupOwnerSetting.AutoAddGroupOwner` Eigenschaft in der API auf ein`true`.
+ <a name="conn-gpio-req-rpi-gpio"></a>Das auf dem Raspberry Pi installierte [RPi.GPIO-Modul](https://sourceforge.net/p/raspberry-gpio-python/wiki/Home/). In Raspbian ist dieses Modul standardmäßig installiert. Mit dem folgenden Befehl können Sie es neu installieren:

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

------
#### [ Versions 1 - 2 ]
+ <a name="conn-req-ggc-v1.7.0"></a>AWS IoT Greengrass Kernsoftware v1.7 oder höher.
+ [Python-Version](https://www.python.org/) 2.7 wurde auf dem Core-Gerät installiert und zur Umgebungsvariablen PATH hinzugefügt.
+ <a name="conn-gpio-req-pin-seq"></a>Raspberry Pi 4 Modell B oder Raspberry Pi 3 Modell B/B\$1. Sie müssen die PIN-Reihenfolge Ihres Raspberry Pi kennen. Weitere Informationen finden Sie unter [GPIO-Pin-Sequenz](#raspberrypi-gpio-connector-req-pins).
+ <a name="conn-gpio-req-dev-gpiomem-resource"></a>Eine [lokale Geräteressource](access-local-resources.md) in der Greengrass-Gruppe, die `/dev/gpiomem` auf dem Raspberry Pi verweist. Wenn Sie die Ressource in der Konsole erstellen, müssen Sie die Option **Betriebssystemgruppenberechtigungen automatisch hinzufügen der Linux-Gruppe auswählen, der die Ressource gehört**. Stellen Sie die `GroupOwnerSetting.AutoAddGroupOwner` Eigenschaft in der API auf ein`true`.
+ <a name="conn-gpio-req-rpi-gpio"></a>Das auf dem Raspberry Pi installierte [RPi.GPIO-Modul](https://sourceforge.net/p/raspberry-gpio-python/wiki/Home/). In Raspbian ist dieses Modul standardmäßig installiert. Mit dem folgenden Befehl können Sie es neu installieren:

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

------

### GPIO-Pin-Sequenz
<a name="raspberrypi-gpio-connector-req-pins"></a>

Der Raspberry Pi-GPIO-Anschluss referenziert GPIO-Pins anhand des Nummerierungsschemas des zugrunde liegenden System on Chip (SoC), nicht anhand der physikalischen Anordnung der GPIO-Pins. Die physische Reihenfolge der Pins kann je nach Raspberry Pi-Version variieren. Weitere Informationen finden Sie unter [GPIO](https://www.raspberrypi.org/documentation/usage/gpio/) in der Raspberry Pi-Dokumentation.

Der Konnektor kann nicht prüfen, ob die von Ihnen konfigurierten Ein- und Ausgangspins korrekt auf die zugrunde liegende Hardware Ihres Raspberry Pi passen. Wenn die Pin-Konfiguration ungültig ist, gibt der Konnektor einen Laufzeitfehler zurück, wenn er versucht, auf dem Gerät zu starten. Um dieses Problem zu beheben, konfigurieren Sie den Konnektor neu und stellen Sie ihn dann erneut bereit.

**Anmerkung**  
Stellen Sie sicher, dass die Peripheriegeräte für GPIO-Pins richtig verdrahtet sind, um Schäden an den Komponenten zu vermeiden.

## Steckerparameter
<a name="raspberrypi-gpio-connector-param"></a>

Dieser Konnektor stellt die folgenden Parameter bereit:

`InputGpios`  
Eine kommagetrennte Liste von GPIO-Pin-Nummern, die als Eingänge konfiguriert werden können. Optional können Sie `U` anfügen, um den Pull-up-Widerstand eines Pins einzustellen, oder `D`, um den Pull-down-Widerstand einzustellen. Beispiel: `"5,6U,7D"`.  
Anzeigename in der AWS IoT Konsole: **GPIO-Pins eingeben**  
Erforderlich: `false`. Sie müssen Eingangspins, Ausgangspins oder beides angeben.  
Typ: `string`  
Gültiges Muster: `^$|^[0-9]+[UD]?(,[0-9]+[UD]?)*$`

`InputPollPeriod`  
Das Intervall (in Millisekunden) zwischen jedem Polling-Vorgang, das die Eingangs-GPIO-Pins auf Zustandsänderungen überprüft. Der minimale Wert beträgt 1.  
Dieser Wert hängt von Ihrem Szenario und der Art der abgerufenen Geräte ab. Ein Wert von `50` sollte beispielsweise schnell genug sein, um einen Tastendruck zu erkennen.  
Anzeigename in der AWS IoT Konsole: **Geben Sie den GPIO-Abfragezeitraum** ein  
Erforderlich: `false`  
Typ: `string`  
Gültiges Muster: `^$|^[1-9][0-9]*$`

`OutputGpios`  
Eine kommagetrennte Liste von GPIO-Pin-Nummern, die als Ausgänge konfiguriert werden können. Optional kann `H` angefügt werden, um einen hohen Zustand (1) zu setzen, oder `L`, um einen niedrigen Zustand (0) einzustellen. Beispiel: `"8H,9,27L"`.  
Anzeigename in der AWS IoT Konsole: **Ausgangs-GPIO-Pins**  
Erforderlich: `false`. Sie müssen Eingangspins, Ausgangspins oder beides angeben.  
Typ: `string`  
Gültiges Muster: `^$|^[0-9]+[HL]?(,[0-9]+[HL]?)*$`

`GpioMem-ResourceId`  
Die ID der lokalen Geräteressource, die `/dev/gpiomem` repräsentiert.  
Dieser Konnektor hat Zugriff zum Lesen und Schreiben auf die Ressource.
Anzeigename in der AWS IoT Konsole: **for /dev/gpiomemRessourcengerät**  
Erforderlich: `true`  
Typ: `string`  
Gültiges Muster: `.+`

### Beispiel für das Erstellen eines Konnektors (AWS CLI)
<a name="raspberrypi-gpio-connector-create"></a>

Der folgende CLI-Befehl erstellt eine `ConnectorDefinition` mit einer ersten Version, die den Raspberry Pi GPIO-Anschluss enthält.

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

**Anmerkung**  
Die Lambda-Funktion in diesem Konnektor hat einen [langlebigen Lebenszyklus](lambda-functions.md#lambda-lifecycle).

**In der AWS IoT Greengrass Konsole können Sie über die Connectors-Seite der Gruppe einen Connector hinzufügen.** Weitere Informationen finden Sie unter [Erste Schritte mit Greengrass-Konnektoren (Konsole)](connectors-console.md).

## Eingabedaten
<a name="raspberrypi-gpio-connector-data-input"></a>

Dieser Connector akzeptiert Lese- oder Schreibanforderungen für GPIO-Pins zu zwei MQTT-Themen.
+ Leseanforderungen zum Thema `gpio/+/+/read`.
+ Schreibanforderungen zum Thema `gpio/+/+/write`.

Um zu diesen Themen zu veröffentlichen, ersetzen Sie jeweils die Platzhalter `+` durch den Namen der Core-Objekte und die Nummer des Zielpins. Zum Beispiel:

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

**Anmerkung**  
Derzeit müssen Sie beim Erstellen eines Abonnements, das den Raspberry Pi GPIO-Connector verwendet, einen Wert für mindestens einen der Plus-Platzhalter im Thema angeben.

**Themenfilter:** `gpio/+/+/read`  
Verwenden Sie dieses Thema, um den Konnektor anzuweisen, den Zustand des GPIO-Pins zu lesen, der im Thema angegeben ist.  
Der Konnektor veröffentlicht die Antwort zum entsprechenden Ausgabethema (z. B. `gpio/core-thing-name/gpio-number/state`).    
**Nachrichten-Eigenschaften**  
Keine. Nachrichten, die an dieses Thema gesendet werden, werden ignoriert.

**Themenfilter:** `gpio/+/+/write`  
Verwenden Sie dieses Thema, um Schreibanfragen an einen GPIO-Pin zu senden. Dadurch wird der Konnektor angewiesen, den GPIO-Pin, der im Thema angegeben ist, auf eine Nieder- oder Hochspannung einzustellen.  
+ `0` setzt den Pin auf Niederspannung.
+ `1` setzt den Pin auf Hochspannung.
Der Konnektor veröffentlicht die Antwort zum entsprechenden `/state`-Thema (z. B. `gpio/core-thing-name/gpio-number/state`).    
**Nachrichten-Eigenschaften**  
Der Wert `0` oder `1` als ganze Zahl oder Zeichenkette.  
**Beispieleingabe**  

```
0
```

## Ausgabedaten
<a name="raspberrypi-gpio-connector-data-output"></a>

Dieser Konnektor veröffentlicht Daten zu zwei Themen:
+ Hohe oder niedrige Zustandsänderungen im Thema `gpio/+/+/state`.
+ Fehler im Thema `gpio/+/error`.

**Themenfilter:** `gpio/+/+/state`  
Verwenden Sie dieses Thema, um auf Zustandsänderungen an den Eingangspins und Antworten auf Leseanforderungen zu warten. Der Konnektor gibt die Zeichenkette `"0"` zurück, wenn sich der Pin in einem niedrigen Zustand befindet, oder `"1"`, wenn er sich in einem hohen Zustand befindet.  
Bei der Veröffentlichung zu diesem Thema ersetzt der Konnektor die Platzhalter `+` durch den Namen des Core-Objekts bzw. den Zielpin. Zum Beispiel:  

```
gpio/core-thing-name/gpio-number/state
```
Derzeit müssen Sie beim Erstellen eines Abonnements, das den Raspberry Pi-GPIO-Connector verwendet, einen Wert für mindestens einen der Plus-Platzhalter im Thema angeben.  
**Beispielausgabe**  

```
0
```

**Themenfilter:** `gpio/+/error`  
Verwenden Sie dieses Thema, um nach Fehlern zu suchen. Der Konnektor veröffentlicht zu diesem Thema aufgrund einer ungültigen Anforderung, (z. B., wenn eine Zustandsänderung an einem Eingangspin angefordert wird).  
Bei der Veröffentlichung zu diesem Thema ersetzt der Konnektor den Platzhalter `+` durch den Namen des Core-Objekts.    
**Beispielausgabe**  

```
{
   "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."
 }
```

## Beispiel für eine Verwendung
<a name="raspberrypi-gpio-connector-usage"></a>

<a name="connectors-setup-intro"></a>Verwenden Sie die folgenden allgemeinen Schritte, um eine Python-3.7-Lambda-Beispielfunktion einzurichten, mit der Sie den Konnektor ausprobieren können.

**Anmerkung**  <a name="connectors-setup-get-started-topics"></a>
Wenn Sie andere Python-Laufzeiten verwenden, können Sie einen Symlink von Python3.x zu Python 3.7 erstellen.
In den Themen [Beginnen Sie mit Konnektoren (Konsole)](connectors-console.md) und [Erste Schritte mit Konnektoren (CLI)](connectors-cli.md) wird ausführlich beschrieben, wie Sie einen Beispielkonnektor für Twilio-Benachrichtigungen konfigurieren und bereitstellen.

1. Stellen Sie sicher, dass Sie die [Anforderungen](#raspberrypi-gpio-connector-req) für den Konnektor erfüllen.

1. <a name="connectors-setup-function"></a>Erstellen und veröffentlichen Sie eine Lambda-Funktion, die Eingabedaten an den Connector sendet.

   Speichern Sie den [Beispielcode](#raspberrypi-gpio-connector-usage-example) als PY-Datei. <a name="connectors-setup-function-sdk"></a>Laden Sie das [AWS IoT Greengrass Core SDK für Python](lambda-functions.md#lambda-sdks-core) herunter und entpacken Sie es. Erstellen Sie dann ein ZIP-Paket, das die PY-Datei und den Ordner `greengrasssdk` auf Stammebene enthält. Dieses Zip-Paket ist das Bereitstellungspaket, in das Sie AWS Lambda hochladen.

   <a name="connectors-setup-function-publish"></a>Nachdem Sie die Lambda-Funktion Python 3.7 erstellt haben, veröffentlichen Sie eine Funktionsversion und erstellen Sie einen Alias.

1. Konfigurieren Sie Ihre Greengrass-Gruppe.

   1. <a name="connectors-setup-gg-function"></a>Fügen Sie die Lambda-Funktion mit ihrem Alias hinzu (empfohlen). Konfigurieren Sie den Lambda-Lebenszyklus als langlebig (oder `"Pinned": true` in der CLI).

   1. <a name="connectors-setup-device-resource"></a>Fügen Sie die erforderliche lokale Geräteressource hinzu und gewähren Sie Lese-/Schreibzugriff auf die Lambda-Funktion.

   1. Fügen Sie den Konnektor hinzu und konfigurieren Sie seine [Parameter](#raspberrypi-gpio-connector-param).

   1. Fügen Sie Abonnements hinzu, die es dem Konnektor ermöglichen, [Eingabedaten](#raspberrypi-gpio-connector-data-input) zu empfangen und [Ausgabedaten](#raspberrypi-gpio-connector-data-output) zu unterstützten Themenfiltern zu senden.
      + <a name="connectors-setup-subscription-input-data"></a>Legen Sie die Lambda-Funktion als Quelle und den Konnektor als Ziel fest und verwenden Sie einen unterstützten Eingabethemenfilter.
      + <a name="connectors-setup-subscription-output-data"></a>Legen Sie den Konnektor als Quelle und AWS IoT Core als Ziel fest und verwenden Sie einen unterstützten Ausgabethemenfilter. Sie verwenden dieses Abonnement, um Statusmeldungen in der AWS IoT Konsole anzuzeigen.

1. <a name="connectors-setup-deploy-group"></a>Stellen Sie die Gruppe bereit.

1. <a name="connectors-setup-test-sub"></a>Abonnieren Sie in der AWS IoT Konsole auf der **Testseite** das Thema Ausgabedaten, um Statusmeldungen vom Connector anzuzeigen. Die Lambda-Beispielfunktion ist langlebig und beginnt unmittelbar nach der Bereitstellung der Gruppe mit dem Senden von Nachrichten.

   Wenn Sie mit dem Testen fertig sind, können Sie den Lambda-Lebenszyklus auf On-Demand (oder `"Pinned": false` in der CLI) setzen und die Gruppe bereitstellen. Dadurch wird verhindert, dass die Funktion Nachrichten sendet.

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

Die folgende Lambda-Beispielfunktion sendet eine Eingabenachricht an den Konnektor. In diesem Beispiel werden Leseanfragen für einen Satz von GPIO-Eingangspins gesendet. Es zeigt, wie Sie Themen mit dem Namen des Core-Objekts und der PIN-Nummer erstellen.

```
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
```

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

Der Raspberry Pi GPIO; -Anschluss beinhaltet die folgende Software/Lizenzierung von Drittanbietern:
+ [RPi.GPIO /MIT](https://pypi.org/project/RPi.GPIO/)

Dieser Connector ist im Rahmen der [Greengrass Core Software-Lizenzvereinbarung](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf) veröffentlicht.

## Änderungsprotokoll
<a name="raspberrypi-gpio-connector-changelog"></a>

In der folgenden Tabelle werden die Änderungen in den einzelnen Versionen des Connectors beschrieben.


| Version | Änderungen | 
| --- | --- | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Die Lambda-Laufzeit wurde auf Python 3.7 aktualisiert, was die Laufzeitanforderungen ändert. | 
| 2 | Der Connector-ARN wurde zur AWS-Region Unterstützung aktualisiert. | 
| 1 | Erstversion.  | 

<a name="one-conn-version"></a>Eine Greengrass-Gruppe kann jeweils nur eine Version des Connectors enthalten. Weitere Informationen zum Aktualisieren einer Konnektorversion finden Sie unter [Aktualisieren von Konnektorversionen](connectors.md#upgrade-connector-versions).

## Weitere Informationen finden Sie auch unter
<a name="raspberrypi-gpio-connector-see-also"></a>
+ [Integrieren von Services und Protokollen mit Greengrass-Konnektoren](connectors.md)
+ [Erste Schritte mit Greengrass-Konnektoren (Konsole)](connectors-console.md)
+ [Erste Schritte mit Greengrass-Konnektoren (CLI)](connectors-cli.md)
+ [GPIO](https://www.raspberrypi.org/documentation/usage/gpio/) in der Raspberry Pi-Dokumentation