与组件中的客户端设备进行交互 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

与组件中的客户端设备进行交互

您可以开发与连接到核心设备的客户端设备交互的自定义 Greengrass 组件。例如,您可以开发来执行以下操作的组件:

  • 处理来自客户端设备的 MQTT 消息并将数据发送到 Amazon Web Services 云 目标。

  • 将 MQTT 消息发送到客户端设备以启动操作。

客户端设备通过在核心设备上运行的 MQTT 代理组件连接到核心设备并与其通信。默认情况下,客户端设备只能通过 MQTT 相互通信,并且 Greengrass 组件无法接收这些 MQTT 消息或向客户端设备发送消息。

Greengrass 组件使用本地发布/订阅界面在核心设备上进行通信。要与 Greengrass 组件中的客户端设备进行通信,请配置MQTT 桥组件来执行以下操作:

  • 中继 MQTT 消息从客户端设备到本地发布/订阅。

  • 中继来自本地发布/订阅客户端设备的 MQTT 消息。

您还可以在 Greengrass 组件中与客户端设备阴影进行交互。有关更多信息,请参阅 同步客户端设备阴影并与之交互

配置和部署 MQTT 桥组件

MQTT 桥组件使用主题映射列表,每个映射都指定一个消息源和一个消息目标。要与客户端设备通信,请部署 MQTT 桥接组件,并在组件配置中指定每个源主题和目标主题。

要将 MQTT 桥接组件部署到核心设备或核心设备组,创建部署中,其中包含aws.greengrass.clientdevices.mqtt.Bridge组件。指定主题映射mqttTopicMapping在部署中的 MQTT 桥组件配置中。

以下示例定义了一个部署,该部署将 MQTT 桥组件配置为中继clients/MyClientDevice1/hello/world主题到本地发布/订阅代理。这些区域有:merge配置更新需要一个序列化的 JSON 对象。有关更多信息,请参阅 更新组件配置

Console
{ "mqttTopicMapping": { "HelloWorldPubsub": { "topic": "clients/MyClientDevice1/hello/world", "source": "LocalMqtt", "target": "Pubsub" } } }
Amazon 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 桥组件配置

从客户端设备接收 MQTT 消息

您可以订阅为 MQTT 桥接组件配置的本地发布/订阅主题,以便从客户端设备接收消息。

从自定义组件中的客户端设备接收 MQTT 消息

  1. 配置和部署 MQTT 桥组件中继来自客户端设备发布到本地发布/订阅主题的 MQTT 主题的消息。

  2. 使用本地发布/订阅 IPC 界面订阅 MQTT 桥中继消息的主题。有关更多信息,请参阅 发布/订阅本地消息SubscribeToTopic

这些区域有:Connect 和测试客户端设备教程包含一个部分,您可以在其中开发订阅来自客户端设备的消息的组件。有关更多信息,请参阅 开发与客户端设备交互的组件

向客户端设备发送 MQTT 消息

您可以发布到为 MQTT 桥组件配置的本地发布/订阅主题,以便向客户端设备发送消息。

将 MQTT 消息发布到自定义组件中的客户端设备

  1. 配置和部署 MQTT 桥组件将来自本地发布/订阅主题的消息中继到客户端设备订阅的 MQTT 主题。

  2. 使用本地发布/订阅 IPC 接口发布到MQTT 桥中继消息的主题。有关更多信息,请参阅 发布/订阅本地消息PublishToTopic