

サポート終了通知: 2026 年 10 月 7 日、 AWS はサポートを終了します AWS IoT Greengrass Version 1。2026 年 10 月 7 日以降、 AWS IoT Greengrass V1 リソースにアクセスできなくなります。詳細については、[「 からの移行 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)」を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Raspberry Pi GPIO コネクタ
<a name="raspberrypi-gpio-connector"></a>

**警告**  <a name="connectors-extended-life-phase-warning"></a>
このコネクタは延長ライフサイクルフェーズに移行しており、 AWS IoT Greengrass では、機能、既存機能の拡張、セキュリティパッチ、バグ修正を提供するアップデートはリリースされません。詳細については、「[AWS IoT Greengrass Version 1 メンテナンスポリシー](maintenance-policy.md)」を参照してください。

Raspberry Pi GPIO [コネクタ](connectors.md)は、Raspberry Pi コアデバイスの汎用入力/出力 (GPIO) ピンをコントロールします。

このコネクタは、指定された間隔で入力ピンをポーリングし、状態の変化を MQTT トピックに発行します。また、ユーザー定義の Lambda 関数から MQTT メッセージとして読み取りおよび書き込みリクエストを受け入れます。書き込みリクエストは、ピンを高電圧または低電圧に設定するために使用します。

コネクタには、入力ピンと出力ピンを指定するためのパラメータが用意されています。この動作は、グループデプロイの前に設定します。実行時に変更することはできません。
+ 入力ピンを使用して、周辺デバイスからデータを受信できます。
+ 出力ピンを使用して周辺機器をコントロールしたり、周辺機器にデータを送信したりできます。

このコネクタは、以下のような多くのシナリオで使用できます。
+ 信号灯の緑色、黄色、赤色の LED ライトをコントロールする。
+ 湿度センサーからのデータに基づいてファン (電気リレーに取り付けられている) をコントロールする。
+ 顧客がボタンを押したときに小売店の従業員に通知する。
+ スマートライトスイッチを使用して他の IoT デバイスをコントロールする。

**注記**  
このコネクタは、リアルタイム要件がある用途には適していません。期間が短いイベントは見逃される可能性があります。

このコネクタには、次のバージョンがあります。


| バージョン | 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` | 

バージョンの変更については、「[Changelog](#raspberrypi-gpio-connector-changelog)」を参照してください。

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

このコネクタには以下の要件があります。

------
#### [ Version 3 ]
+ <a name="conn-req-ggc-v1.9.3"></a>AWS IoT Greengrass Core ソフトウェア v1.9.3 以降。
+ [Python](https://www.python.org/) バージョン 3.7 が Core デバイスにインストールされ、PATH 環境変数に追加されている。
+ <a name="conn-gpio-req-pin-seq"></a>Raspberry Pi 4 モデル B、または Raspberry Pi 3 モデル B/B\$1。Raspberry Pi のピン配列を知る必要があります。詳細については、「[GPIO ピンシーケンス](#raspberrypi-gpio-connector-req-pins)」を参照してください。
+ <a name="conn-gpio-req-dev-gpiomem-resource"></a>Raspberry Pi の `/dev/gpiomem` を参照する Greengrass グループの[ローカルデバイスリソース](access-local-resources.md)。コンソールでリソースを作成する場合、**[Automatically add OS group permissions of the Linux group that owns the resource]** (リソースを所有する Linux グループの OS グループアクセス権限を自動的に追加する) オプションを選択する必要があります。API で、`GroupOwnerSetting.AutoAddGroupOwner` プロパティを `true` に設定します。
+ <a name="conn-gpio-req-rpi-gpio"></a>Raspberry Pi にインストールされた [RPi.GPIO](https://sourceforge.net/p/raspberry-gpio-python/wiki/Home/) モジュール。Raspbian では、このモジュールがデフォルトでインストールされています。以下のコマンドを使用して再インストールできます。

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

------
#### [ Versions 1 - 2 ]
+ <a name="conn-req-ggc-v1.7.0"></a>AWS IoT Greengrass Core ソフトウェア v1.7 以降。
+ [Python](https://www.python.org/) バージョン 2.7 が Core デバイスにインストールされ、PATH 環境変数に追加されている。
+ <a name="conn-gpio-req-pin-seq"></a>Raspberry Pi 4 モデル B、または Raspberry Pi 3 モデル B/B\$1。Raspberry Pi のピン配列を知る必要があります。詳細については、「[GPIO ピンシーケンス](#raspberrypi-gpio-connector-req-pins)」を参照してください。
+ <a name="conn-gpio-req-dev-gpiomem-resource"></a>Raspberry Pi の `/dev/gpiomem` を参照する Greengrass グループの[ローカルデバイスリソース](access-local-resources.md)。コンソールでリソースを作成する場合、**[Automatically add OS group permissions of the Linux group that owns the resource]** (リソースを所有する Linux グループの OS グループアクセス権限を自動的に追加する) オプションを選択する必要があります。API で、`GroupOwnerSetting.AutoAddGroupOwner` プロパティを `true` に設定します。
+ <a name="conn-gpio-req-rpi-gpio"></a>Raspberry Pi にインストールされた [RPi.GPIO](https://sourceforge.net/p/raspberry-gpio-python/wiki/Home/) モジュール。Raspbian では、このモジュールがデフォルトでインストールされています。以下のコマンドを使用して再インストールできます。

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

------

### GPIO ピンシーケンス
<a name="raspberrypi-gpio-connector-req-pins"></a>

Raspberry Pi GPIO コネクタは、GPIO ピンの物理的なレイアウトではなく、基礎となるシステムオンチップ (SoC) の番号付け方法によって GPIO ピンを参照します。Raspberry Pi のバージョンでは、ピンの物理的な順序が異なる場合があります。詳細については、Raspberry Pi ドキュメントの「[GPIO](https://www.raspberrypi.org/documentation/usage/gpio/)」を参照してください。

コネクタは、設定されている入力ピンと出力ピンが、Raspberry Pi の基本ハードウェアに正しくマッピングされていることを検証できません。ピン設定が無効な場合、コネクタは、デバイスでの起動試行時に、ランタイムエラーを返します。この問題を解決するには、コネクタを再設定してから再デプロイします。

**注記**  
コンポーネントの損傷を防ぐために、GPIO ピンの周辺機器が適切に配線されていることを確認してください。

## コネクタパラメータ
<a name="raspberrypi-gpio-connector-param"></a>

このコネクタには、以下のパラメータが用意されています。

`InputGpios`  
入力として設定する、カンマで区切られた GPIO ピン番号のリスト。オプションで、ピンのプルアップ抵抗を設定するには `U` を付加し、プルダウン抵抗を設定するには `D` を付加します。例えば、`"5,6U,7D"` などです。  
 AWS IoT コンソールの表示名: **入力 GPIO ピン**  
必須: `false`。入力 ピン、出力 ピン、またはその両方を指定する必要があります。  
型: `string`  
有効なパターン: `^$|^[0-9]+[UD]?(,[0-9]+[UD]?)*$`

`InputPollPeriod`  
入力 GPIO ピンの状態の変化を確認する各ポーリングオペレーションの間隔 (ミリ秒単位)。最小値は 1 です。  
この値は、シナリオとポーリングされるデバイスのタイプによって異なります。例えば、値が `50` であれば、ボタンの押下を検出するのに十分な速さになります。  
 AWS IoT コンソールの表示名: **入力 GPIO ポーリング期間**  
必須: `false`  
型: `string`  
有効なパターン: `^$|^[1-9][0-9]*$`

`OutputGpios`  
出力として設定する、カンマで区切られた GPIO ピン番号のリスト。オプションで、高電圧状態 (1) を設定するには `H` を付加し、低電圧状態 (0) を設定するには `L` を付加します。例えば、`"8H,9,27L"` などです。  
 AWS IoT コンソールの表示名: **GPIO ピンを出力**する  
必須: `false`。入力 ピン、出力 ピン、またはその両方を指定する必要があります。  
型: `string`  
有効なパターン: `^$|^[0-9]+[HL]?(,[0-9]+[HL]?)*$`

`GpioMem-ResourceId`  
`/dev/gpiomem` を表すローカルデバイスリソースの ID。  
このコネクタには、リソースへの読み取りと書き込みアクセスが付与されています。
 AWS IoT コンソールの表示名: **/dev/gpiomem デバイスのリソース**  
必須: `true`  
型: `string`  
有効なパターン: `.+`

### サンプルコネクタを作成する (AWS CLI)
<a name="raspberrypi-gpio-connector-create"></a>

以下の CLI コマンドは、Raspberry Pi GPIO コネクタを含む初期バージョンで `ConnectorDefinition` を作成します。

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

**注記**  
このコネクタの Lambda 関数には[存続期間の長い](lambda-functions.md#lambda-lifecycle)ライフサイクルがあります。

 AWS IoT Greengrass コンソールでは、グループのコネクタページから**コネクタ**を追加できます。詳細については、「[Greengrass コネクタの開始方法 (コンソール)](connectors-console.md)」を参照してください。

## 入力データ
<a name="raspberrypi-gpio-connector-data-input"></a>

このコネクタは、2 つの MQTT トピックの GPIO ピンに対する読み取りリクエストまたは書き込みリクエストを受け入れます。
+ `gpio/+/+/read` トピックの読み取りリクエスト。
+ `gpio/+/+/write` トピックの書き込みリクエスト。

これらのトピックに発行するには、`+` ワイルドカードをそれぞれ Core モノ名とターゲットピン番号に置き換えます。例:

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

**注記**  
現時点では、Raspberry Pi GPIO コネクタを使用するサブスクリプションを作成するときに、トピックの少なくとも 1 つの \$1 ワイルドカードに値を指定する必要があります。

**トピックのフィルター:** `gpio/+/+/read`  
このトピックを使用して、トピックで指定されている GPIO ピンの状態を読み取るようトピックに指示します。  
コネクタは、対応する出力トピック (`gpio/core-thing-name/gpio-number/state` など) にレスポンスを発行します。    
**メッセージのプロパティ**  
なし。このトピックに送信されるメッセージは無視されます。

**トピックのフィルター:** `gpio/+/+/write`  
このトピックを使用して、GPIO ピンに書き込みリクエストを送信します。これは、トピックで指定されている GPIO ピンを低電圧または高電圧に設定するようコネクタに指示します。  
+ `0` はピンを低電圧に設定します。
+ `1` はピンを高電圧に設定します。
コネクタは、対応する出力 `/state` トピック (`gpio/core-thing-name/gpio-number/state` など) にレスポンスを発行します。    
**メッセージのプロパティ**  
整数または文字列の値 `0` または `1`。  
**入力例**  

```
0
```

## 出力データ
<a name="raspberrypi-gpio-connector-data-output"></a>

このコネクタは、以下の 2 つのトピックにデータを発行します。
+ `gpio/+/+/state` トピックでの高電圧または低電圧への状態の変化。
+ `gpio/+/error` トピックでのエラー。

**トピックのフィルター:** `gpio/+/+/state`  
このトピックを使用して、入力ピンの状態の変化と読み取りリクエストへのレスポンスをリッスンします。コネクタは、ピンが低電圧状態の場合は文字列 `"0"` を返し、高電圧状態の場合は文字列 `"1"` を返します。  
このトピックに公開するときに、コネクタはワイルドカード `+` をそれぞれ Core モノ名とターゲット PIN に置き換えます。例:  

```
gpio/core-thing-name/gpio-number/state
```
現時点では、Raspberry Pi GPIO コネクタを使用するサブスクリプションを作成するときに、トピックの少なくとも 1 つの \$1 ワイルドカードに値を指定する必要があります。  
**出力例**  

```
0
```

**トピックのフィルター:** `gpio/+/error`  
このトピックを使用して、エラーをリッスンします。コネクタは、無効なリクエスト (入力ピンでの状態の変更のリクエストなど) の結果としてこのトピックに発行します。  
このトピックに発行するとき、コネクタは `+` ワイルドカードをコアのモノ名に置き換えます。    
**出力例**  

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

## 使用例
<a name="raspberrypi-gpio-connector-usage"></a>

<a name="connectors-setup-intro"></a>コネクタの試用に利用できる Python 3.7 Lambda 関数の例を設定するには、次のステップ (概要) を使用します。

**注記**  <a name="connectors-setup-get-started-topics"></a>
他の Python ランタイムを使用する場合は、Python 3.x から Python 3.7 へのシンボリックリンクを作成します。
「[コネクタの使用を開始する (コンソール)](connectors-console.md)」および「[コネクタの使用を開始する (CLI)](connectors-cli.md)」トピックには、Twilio 通知コネクタの例を設定およびデプロイする方法を示す詳細なステップが含まれています。

1. コネクタの[要件](#raspberrypi-gpio-connector-req)を満たしていることを確認します。

1. <a name="connectors-setup-function"></a>入力データをコネクタに送信する Lambda 関数を作成して発行します。

   [サンプルコード](#raspberrypi-gpio-connector-usage-example)を PY ファイルとして保存します。<a name="connectors-setup-function-sdk"></a>[AWS IoT Greengrass Core SDK for Python](lambda-functions.md#lambda-sdks-core) をダウンロードして解凍します。次に、PY ファイルとルートレベルの `greengrasssdk` フォルダを含む zip パッケージを作成します。この zip パッケージは、 AWS Lambdaにアップロードするデプロイパッケージです。

   <a name="connectors-setup-function-publish"></a>Python 3.7 Lambda 関数を作成したら、関数バージョンを公開し、エイリアスを作成します。

1. Greengrass グループを設定します。

   1. <a name="connectors-setup-gg-function"></a>エイリアスで Lambda 関数を追加します (推奨)。Lambda ライフサイクルを長期間有効に (または CLI で `"Pinned": true` に) 設定します。

   1. <a name="connectors-setup-device-resource"></a>必要なローカルデバイスリソースを追加し、Lambda 関数への読み取り/書き込みアクセスを許可します。

   1. コネクタを追加し、その[パラメータ](#raspberrypi-gpio-connector-param)を設定します。

   1. コネクタが[入力データ](#raspberrypi-gpio-connector-data-input)を受信し、サポートされているトピックフィルターで[出力データ](#raspberrypi-gpio-connector-data-output)を送信できるようにするサブスクリプションを追加します。
      + <a name="connectors-setup-subscription-input-data"></a>Lambda 関数をソースに、コネクタをターゲットに設定し、サポートされている入力トピックフィルターを使用します。
      + <a name="connectors-setup-subscription-output-data"></a>コネクタをソースとして、 AWS IoT Core をターゲットとして設定し、サポートされている出力トピックフィルターを使用します。このサブスクリプションを使用して、 AWS IoT コンソールでステータスメッセージを表示します。

1. <a name="connectors-setup-deploy-group"></a>グループをデプロイします。

1. <a name="connectors-setup-test-sub"></a> AWS IoT コンソールの**テスト**ページで、出力データトピックをサブスクライブして、コネクタからのステータスメッセージを表示します。この例の Lambda 関数は長期間有効であり、グループがデプロイされた直後にメッセージの送信を開始します。

   テストが終了したら、Lambda ライフサイクルをオンデマンドに (または CLI で `"Pinned": false` に) 設定して、グループをデプロイできます。これにより、関数がメッセージの送信を停止します。

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

次の例では、Lambda 関数で入力メッセージをコネクタに送信します。この例では、入力 GPIO ピンのセットに対する読み取りリクエストを送信します。コアの名前とピン番号を使用してトピックを構成する方法を示します。

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

## ライセンス
<a name="raspberrypi-gpio-connector-license"></a>

Raspberry Pi GPIO コネクタには、以下のサードパーティーのソフトウェアおよびライセンスが含まれています。
+ [RPi.GPIO](https://pypi.org/project/RPi.GPIO/)/MIT

このコネクタは、[Greengrass Core ソフトウェアライセンス契約](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)に従ってリリースされます。

## 変更ログ
<a name="raspberrypi-gpio-connector-changelog"></a>

次の表に、コネクタの各バージョンにおける変更点を示します。


| バージョン | 変更 | 
| --- | --- | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Lambda ランタイムを Python 3.7 にアップグレードしたことで、ランタイム要件が変更。 | 
| 2 |  AWS リージョン サポート用にコネクタ ARN を更新しました。 | 
| 1 | 初回リリース。  | 

<a name="one-conn-version"></a>Greengrass グループには、一度に 1 つのバージョンのコネクタしか含めることができません。コネクタのバージョンのアップグレードについては、「[コネクタのバージョンのアップグレード](connectors.md#upgrade-connector-versions)」を参照してください。

## 関連情報
<a name="raspberrypi-gpio-connector-see-also"></a>
+ [Greengrass コネクタを使用したサービスおよびプロトコルとの統合](connectors.md)
+ [Greengrass コネクタの開始方法 (コンソール)](connectors-console.md)
+ [Greengrass コネクタの開始方法 (CLI)](connectors-cli.md)
+ Raspberry Pi ドキュメントの「[GPIO](https://www.raspberrypi.org/documentation/usage/gpio/)」