Amazon IoT Greengrass Version 12023 年 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控制台
导航窗格,选择设置. -
UN,,设备数据终端节点,记下值端点. 您可以使用此值在以下步骤中替换命令中的
AWS_IOT_ENDPOINT
占位符。注意
请确保您的终端节点对应于您的证书类型.
-
-
在计算机上(不是Amazon IoT Greengrass核心设备),打开两个命令行
(终端或命令提示符)窗口。一个窗口代表 HelloWorld_Publisher 客户端设备,另一个代表 HelloWorld_订阅者客户端设备。 执行后,
basicDiscovery.py
尝试收集有关其位置的信息Amazon IoT Greengrasscore 在其端点上。在客户端设备发现并成功连接到核心后,将存储此信息。这将允许未来的消息传递和操作可以在本地执行(无需 Internet 连接)。注意
用于 MQTT 连接的客户端 ID 必须与客户端设备的事物名称匹配。这些区域有:
basicDiscovery.py
脚本将 MQTT 连接的客户端 ID 设置为您在运行脚本时指定的事物名称。从包含的文件夹运行以下命令
basicDiscovery.py
文件以获取详细的脚本使用信息:python basicDiscovery.py --help
-
从 HelloWorld_Publisher 客户端设备窗口中,运行以下命令。
-
Replace
path-to-certs-folder
包含证书、密钥的文件夹的文件夹的路径,basicDiscovery.py
. -
将
AWS_IOT_ENDPOINT
替换为您的终端节点。 -
替换两个
publisherCertId
在文件名中包含证书 ID 的实例 HelloWorld_Publisher 客户端设备。
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 客户端设备窗口中,运行以下命令。
-
Replace
path-to-certs-folder
包含证书、密钥的文件夹的文件夹的路径,basicDiscovery.py
. -
将
AWS_IOT_ENDPOINT
替换为您的终端节点。 -
替换两个
subscriberCertId
在文件名中包含证书 ID 的实例 HelloWorld_订阅者客户端设备。
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_SubscriberWindows。
在公司网络上进行测试可能会干扰与核心的连接。作为解决方法,您可以手动输入终端节点。这样可以确保basicDiscovery.py
脚本能连接到正确 IP 地址Amazon IoT Greengrass核心
手动输入终端节点
在Amazon IoT控制台导航窗格,UN,Manage,展开Greengrass,然后选择组 (V1).
-
UN,,Greengrass 组,选择您的组。
-
配置核心以手动管理 MQTT 代理终端节点。执行以下操作:
-
在组配置页面上,选择Lambda 函数选项卡。
-
UN,,系统 Lambda 函数,选择IP 探测器,然后选择编辑.
-
在编辑 IP 探测器设置,选择手动管理 MQTT 代理终端节点,然后选择Save(保存).
-
-
输入核心的 MQTT 代理终端节点。执行以下操作:
-
UN,,概述,选择Greengrass 核心.
-
UN,,MQTT 代理终端节点,选择管理终端节点.
-
选择添加终端节点并确保只有一个终端节点值。该值必须是您的端口 883 的 IP 地址终端节点 IP 地址终端节点。Amazon IoT Greengrass核心设备(例如
192.168.1.4
)。 -
选择 Update(更新)。
-