测试通信(禁用了设备同步) - AWS IoT Greengrass

AWS IoT Greengrass Version 1 2023 年 6 月 30 日进入延长寿命阶段。有关更多信息,请参阅 AWS IoT Greengrass V1 维护策略。在此日期之后,将 AWS IoT Greengrass V1 不会发布提供功能、增强功能、错误修复或安全补丁的更新。在上面运行的设备 AWS IoT Greengrass V1 不会中断,将继续运行并连接到云端。我们强烈建议您迁移到 AWS IoT Greengrass Version 2,这样可以添加重要的新功能支持其他平台

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

测试通信(禁用了设备同步)

  1. 确保您的计算机和 AWS IoT Greengrass 核心设备已使用同一个网络连接到 Internet。

    1. 在 AWS IoT Greengrass 核心设备上,运行以下命令以查找其 IP 地址。

      hostname -I
    2. 在计算机上,使用核心的 IP 地址运行以下命令。可以使用 Ctrl + C 停止 ping 命令。

      ping IP-address

      类似于下面的输出指示了计算机与 AWS IoT Greengrass 核心设备之间的通信成功(数据包丢失为 0%):

      
                        成功的 ping 命令输出。
      注意

      如果您无法对正在运行 AWS IoT Greengrass 的 EC2 实例进行 ping 操作,请确保该实例的入站安全组规则允许 ICMP 流量用于回显请求消息。有关更多信息,请参阅适用于Linux 实例的 Amazon EC2 用户指南中的在安全组中添加规则

      在 Windows 主机上,在具有高级安全性应用程序的 Windows 防火墙中,您可能还需要启用一个允许入站回显请求的入站规则(例如,File and Printer Sharing (Echo Request - ICMPv4-In) (文件和打印机共享 (回显请求 - ICMPv4-In))),或创建一个。

  2. 获取您的 AWS IoT 端点。

    1. AWS IoT 控制台导航窗口中,选择设置

    2. 设备数据端点下,记下 端点的值。您可以使用此值在以下步骤中替换命令中的 AWS_IOT_ENDPOINT 占位符。

  3. 在您的计算机(不是 AWS IoT Greengrass 核心设备)上,打开两个命令行(终端或命令提示符)窗口。一个窗口代表 GG_Switch客户端设备,另一个窗口代表 GG_TrafficLight 客户端设备。

    1. 从 GG_Switch 客户端设备窗口中,运行以下命令。

      • path-to-certs-folder 替换为包含证书、密钥和 Python 文件的文件夹的路径。

      • AWS_IOT_ENDPOINT 替换为您的端点。

      • 将两个 switchCertId 实例替换为 GG_Switch 客户端设备的文件名中的证书 ID。

      cd path-to-certs-folder python lightController.py --endpoint AWS_IOT_ENDPOINT --rootCA AmazonRootCA1.pem --cert switchCertId-certificate.pem.crt --key switchCertId-private.pem.key --thingName GG_TrafficLight --clientId GG_Switch
    2. 从 GG_TrafficLight 客户端设备窗口中,运行以下命令。

      • path-to-certs-folder 替换为包含证书、密钥和 Python 文件的文件夹的路径。

      • AWS_IOT_ENDPOINT 替换为您的端点。

      • 将两个 lightCertId 实例替换为 GG_TrafficLight 设备的文件名中的证书 ID。

      cd path-to-certs-folder python trafficLight.py --endpoint AWS_IOT_ENDPOINT --rootCA AmazonRootCA1.pem --cert lightCertId-certificate.pem.crt --key lightCertId-private.pem.key --thingName GG_TrafficLight --clientId GG_TrafficLight

      每隔 20 秒,开关会将影子状态更新为 G、Y 和 R,并且灯会显示新状态,如下文所示。

      GG_Switch 输出:

      
                                    与 GG_Switch 相关联的输出的屏幕截图。

      GG_TrafficLight 输出:

      
                                    与 GG_TrafficLight 相关联的输出的屏幕截图。

    在首次执行时,每个设备脚本都将运行 AWS IoT Greengrass 发现服务来连接到 AWS IoT Greengrass 核心(通过 Internet)。在客户端设备发现了 AWS IoT Greengrass 核心并成功连接到它后,未来的操作可以在本地执行。

    注意

    lightController.pytrafficLight.py 脚本将连接信息存储在 groupCA 文件夹中,该文件夹与脚本在同一文件夹中创建。如果您收到连接错误,请确保 ggc-host 文件中的 IP 地址与您在此步骤中为核心配置的单个 IP 地址端点匹配。

  4. 在AWS IoT 控制台中,选择您的 AWS IoT Greengrass 组,选择客户端设备选项卡,然后选择 GG_TrafficLightt 以打开客户端设备 AWS IoT 事物详细信息页面。

  5. 选择设备影子选项卡。在 GG_Switch 更改状态后,该影子不应有任何更新。那是因为 GG_TrafficLight 已设置为禁用与云进行影子同步

  6. 在 GG_Switch (lightController.py) 客户端设备窗口中按 Ctrl + C。您应会看到 GG_TrafficLight (trafficLight.py) 窗口停止接收状态更改消息。

    保持这些窗口打开,以便您可以在下一部分中运行这些命令。