在组件中与客户端设备交互 - 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 bridge 组件

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

要将 MQTT 桥组件部署到核心设备或核心设备组,创建部署加入aws.greengrass.clientdevices.mqtt.Bridge组件。指定主题映射,mqttTopicMapping,位于部署的 MQTT 桥组件配置中。

以下示例定义了一个部署,该部署将 MQTT 网桥组件配置为中继clients/MyClientDevice1/hello/worldtopic 从客户端设备到本地发布/订阅代理。这些区域有: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 bridge v2.2.0 或更高版本,则可以在源代理为本地发布/订阅时在主题筛选器中使用 MQTT 主题通配符。有关更多信息,请参阅 。MQTT bridge 组件配置.

从客户端设备接收 MQTT 消息

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

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

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

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

这些区域有:Connect 和测试客户端设备教程包括开发用于订阅来自客户端设备的消息的组件的部分。有关更多信息,请参阅 第 4 步:开发与客户端设备通信的组件

向客户端设备发送 MQTT 消息

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

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

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

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