

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 與元件中的用戶端裝置互動
<a name="interact-with-client-devices-in-components"></a>

您可以開發與連接到核心裝置的用戶端裝置互動的自訂 Greengrass 元件。例如，您可以開發執行下列動作的元件：
+ 從用戶端裝置處理 MQTT 訊息，並將資料傳送至 AWS 雲端 目的地。
+ 將 MQTT 訊息傳送至用戶端裝置以啟動動作。

用戶端裝置會透過在核心裝置上執行的 MQTT 代理程式元件，連線至核心裝置並與之通訊。根據預設，用戶端裝置只能透過 MQTT 彼此通訊，且 Greengrass 元件無法接收這些 MQTT 訊息或傳送訊息至用戶端裝置。

Greengrass 元件使用[本機發佈/訂閱界面](ipc-publish-subscribe.md)，在核心裝置上進行通訊。若要與 Greengrass 元件中的用戶端裝置通訊，請將 [MQTT 橋接器元件](mqtt-bridge-component.md)設定為執行下列動作：
+ 將 MQTT 訊息從用戶端裝置轉送至本機發佈/訂閱。
+ 從本機發佈/訂閱用戶端裝置的轉送 MQTT 訊息。

您也可以在 Greengrass 元件中與用戶端裝置陰影互動。如需詳細資訊，請參閱[與用戶端裝置影子互動和同步](work-with-client-device-shadows.md)。

**Topics**
+ [設定和部署 MQTT 橋接器元件](#deploy-mqtt-bridge-pubsub)
+ [從用戶端裝置接收 MQTT 訊息](#receive-client-device-messages)
+ [將 MQTT 訊息傳送至用戶端裝置](#send-client-device-messages)

## 設定和部署 MQTT 橋接器元件
<a name="deploy-mqtt-bridge-pubsub"></a>

MQTT 橋接器元件會使用主題映射清單，每個主題映射都會指定訊息來源和訊息目的地。若要與用戶端裝置通訊，請部署 MQTT 橋接器元件，並在元件組態中指定每個來源和目的地主題。

<a name="create-mqtt-bridge-deployment-info"></a>若要將 MQTT 橋接器元件部署至核心裝置或核心裝置群組，[請建立包含 元件的部署](create-deployments.md)。 `aws.greengrass.clientdevices.mqtt.Bridge`在 部署的 MQTT 橋接器元件組態中指定主題映射 `mqttTopicMapping`。

下列範例會定義部署，設定 MQTT 橋接器元件，將`clients/MyClientDevice1/hello/world`主題從用戶端裝置轉送至本機發佈/訂閱代理程式。`merge` 組態更新需要序列化 JSON 物件。如需詳細資訊，請參閱[更新元件組態](update-component-configurations.md)。

------
#### [ Console ]

```
{
  "mqttTopicMapping": {
    "HelloWorldPubsub": {
      "topic": "clients/MyClientDevice1/hello/world",
      "source": "LocalMqtt",
      "target": "Pubsub"
    }
  }
}
```

------
#### [ AWS CLI ]

```
{
  "components": {
    "aws.greengrass.clientdevices.mqtt.Bridge": {
      "version": "2.0.0",
      "configurationUpdate": {
        "merge": "\"mqttTopicMapping\":{\"HelloWorldPubsub\":{\"topic\":\"clients/MyClientDevice1/hello/world\",\"source\":\"LocalMqtt\",\"target\":\"Pubsub\"}}}"
      }
    }
    {{...}}
  }
}
```

------

您可以使用 MQTT 主題萬用字元，在符合主題篩選條件的主題上轉送訊息。如果您使用 MQTT 橋接器 v2.2.0 或更新版本，當來源代理程式為本機發佈/訂閱時，您可以在主題篩選條件中使用 MQTT 主題萬用字元。如需詳細資訊，請參閱 [MQTT 橋接器元件組態](mqtt-bridge-component.md#mqtt-bridge-component-configuration)。

## 從用戶端裝置接收 MQTT 訊息
<a name="receive-client-device-messages"></a>

您可以訂閱為 MQTT 橋接器元件設定的本機發佈/訂閱主題，以接收來自用戶端裝置的訊息。

**從自訂元件中的用戶端裝置接收 MQTT 訊息**

1. [設定和部署 MQTT 橋接器元件](#deploy-mqtt-bridge-pubsub)，從用戶端裝置發佈至本機發佈/訂閱主題的 MQTT 主題轉送訊息。

1. 使用本機發佈/訂閱 IPC 界面來訂閱 MQTT 橋接器轉送訊息的主題。如需詳細資訊，請參閱[發佈/訂閱本機訊息](ipc-publish-subscribe.md)及[SubscribeToTopic](ipc-publish-subscribe.md#ipc-operation-subscribetotopic)。

[Connect and test 用戶端裝置教學](client-devices-tutorial.md)課程包含一個區段，您可以在其中開發訂閱用戶端裝置訊息的元件。如需詳細資訊，請參閱[步驟 4：開發與用戶端裝置通訊的元件](client-devices-tutorial.md#develop-client-device-subscriber-component)。

## 將 MQTT 訊息傳送至用戶端裝置
<a name="send-client-device-messages"></a>

您可以發佈至您為 MQTT 橋接器元件設定的本機發佈/訂閱主題，以傳送訊息至用戶端裝置。

**將 MQTT 訊息發佈至自訂元件中的用戶端裝置**

1. [設定和部署 MQTT 橋接器元件](#deploy-mqtt-bridge-pubsub)，將訊息從本機發佈/訂閱主題轉送至用戶端裝置訂閱的 MQTT 主題。

1. 使用本機發佈/訂閱 IPC 介面發佈至 MQTT 橋接器轉送訊息的主題。如需詳細資訊，請參閱[發佈/訂閱本機訊息](ipc-publish-subscribe.md)及[PublishToTopic](ipc-publish-subscribe.md#ipc-operation-publishtotopic)。