Amazon IoT Greengrass Version 1 2023 年 6 月 30 日进入延长寿命阶段。有关更多信息,请参阅 Amazon IoT Greengrass V1 维护策略。在此日期之后,将 Amazon IoT Greengrass V1 不会发布提供功能、增强功能、错误修复或安全补丁的更新。在上面运行的设备 Amazon IoT Greengrass V1 不会中断,将继续运行并连接到云端。我们强烈建议您迁移到 Amazon IoT Greengrass Version 2,这样可以添加重要的新功能并支持其他平台。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
测试通信
-
确保您的计算机和 Amazon IoT Greengrass 核心设备已使用同一个网络连接到 Internet。
-
在 Amazon IoT Greengrass 核心设备上,运行以下命令以查找其 IP 地址。
hostname -I
-
在计算机上,使用核心的 IP 地址运行以下命令。可以使用 Ctrl + C 停止 ping 命令。
ping
IP-address
类似于下面的输出指示了计算机与 Amazon IoT Greengrass 核心设备之间的通信成功(数据包丢失为 0%):
-
-
获取您的 Amazon IoT 端点。
-
从Amazon IoT控制台
导航窗格中,选择设置。 -
在设备数据端点下,记下 端点的值。您可以使用此值在以下步骤中替换命令中的
AWS_IOT_ENDPOINT
占位符。注意
确保您的终端节点与证书类型对应。
-
-
在您的计算机(不是 Amazon IoT Greengrass 核心设备)上,打开两个命令行
(终端或命令提示符)窗口。一个窗口代表 HelloWorld_Publisher 客户端设备,另一个窗口代表 HelloWorld_Subscriber 客户端设备。 执行时,
basicDiscovery.py
尝试在其端点处 Amazon IoT Greengrass 核心的位置上收集信息。在客户端设备发现并成功连接到核心后,将会存储此信息。这将允许未来的消息传递和操作可以在本地执行(无需 Internet 连接)。注意
用于 MQTT 连接的客户端 ID 必须与客户端设备的事物名称相匹配。
basicDiscovery.py
脚本将 MQTT 连接的客户端 ID 设置为您在运行脚本时指定的事物名称。从包含
basicDiscovery.py
文件的文件夹运行以下命令,以查看详细的脚本使用信息:python basicDiscovery.py --help
-
从 HelloWorld_Publisher 客户端设备窗口运行以下命令。
-
将
path-to-certs-folder
替换为包含证书、密钥和basicDiscovery.py
的文件夹的路径。 -
将
AWS_IOT_ENDPOINT
替换为您的端点。 -
将两个
publisherCertId
实例替换为 HelloWorld_Publisher 客户端设备的文件名中的证书 ID。
cd
path-to-certs-folder
python basicDiscovery.py --endpointAWS_IOT_ENDPOINT
--rootCA AmazonRootCA1.pem --certpublisherCertId
-certificate.pem.crt --keypublisherCertId
-private.pem.key --thingName HelloWorld_Publisher --topic 'hello/world/pubsub' --mode publish --message 'Hello, World! Sent from HelloWorld_Publisher'您应该看到类似于以下内容的输出,其中包括诸如
Published topic 'hello/world/pubsub': {"message": "Hello, World! Sent from HelloWorld_Publisher", "sequence": 1}
的条目。注意
如果脚本返回
error: unrecognized arguments
消息,请针对--topic
和--message
参数将单引号更改为双引号,并再次运行该命令。要排查连接问题,您可以尝试使用手动 IP 检测。
-
-
从 HelloWorld_Subscriber 客户端设备窗口运行以下命令。
-
将
path-to-certs-folder
替换为包含证书、密钥和basicDiscovery.py
的文件夹的路径。 -
将
AWS_IOT_ENDPOINT
替换为您的端点。 -
将两个
subscriberCertId
实例替换为 HelloWorld_Subscriber 客户端设备的文件名中的证书 ID。
cd
path-to-certs-folder
python basicDiscovery.py --endpointAWS_IOT_ENDPOINT
--rootCA AmazonRootCA1.pem --certsubscriberCertId
-certificate.pem.crt --keysubscriberCertId
-private.pem.key --thingName HelloWorld_Subscriber --topic 'hello/world/pubsub' --mode subscribe您应该看到以下输出,其中包括诸如
Received message on topic hello/world/pubsub: {"message": "Hello, World! Sent from HelloWorld_Publisher", "sequence": 1}
的条目。 -
关闭 HelloWorld_Publisher 窗口,以阻止 HelloWorld_Subscriber 窗口中累积消息。
在公司网络上进行测试可能会干扰与核心的连接。作为解决方法,您可以手动输入端点。这可确保 basicDiscovery.py
脚本能连接到 Amazon IoT Greengrass 核心设备的正确 IP 地址。
手动输入端点
在 Amazon IoT 控制台导航窗格的管理下,展开 Greengrass 设备,然后选择组 (V1)。
-
在 Greengrass 组下,选择您的组。
-
配置核心,以手动管理 MQTT 代理端点。执行以下操作:
-
在组配置页面上,选择Lambda 函数选项卡。
-
在系统 Lambda 函数下,选择 IP 检测器,然后选择编辑。
-
在编辑 IP 检测器设置中,选择手动管理 MQTT 代理端点,然后选择保存。
-
-
输入核心的 MQTT 代理端点。执行以下操作:
-
在概述下,选择 Greengrass 核心。
-
在 MQTT 代理端点下,选择管理端点。
-
选择添加端点,确保只有一个端点值。该值必须是 Amazon IoT Greengrass 核心设备的端口 8883 的 IP 地址端点(例如,
192.168.1.4
)。 -
选择更新。
-