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

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

在组件中与客户端设备交互

您可以开发自定义 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 组件的部署。在部署的 MQTT 网桥组件配置中指定主题映射 mqttTopicMapping

以下示例定义了一个部署,该部署将 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 网桥 v2.2.0 或更高版本,则当源代理为本地发布/订阅时,您可以在主题筛选条件中使用 MQTT 主题通配符。有关更多信息,请参阅 MQTT 网桥组件配置

接收来自客户端设备的 MQTT 消息

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

在自定义组件中接收来自客户端设备的 MQTT 消息
  1. 配置并部署 MQTT 网桥组件,将消息从客户端设备发布的 MQTT 主题中继到本地发布/订阅主题。

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

连接并测试客户端设备教程包括一个您可以在其中开发一个组件用于订阅来自客户端设备的消息的部分。有关更多信息,请参阅 第 4 步:开发与客户端设备通信的组件

将 MQTT 消息发送到客户端设备

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

在自定义组件中将 MQTT 消息发送到客户端设备
  1. 配置并部署 MQTT 网桥组件,将消息从本地发布/订阅主题中继到客户端设备发布的 MQTT 主题。

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