AWS IoT Greengrass 入门-模块4:在 AWS IoT Greengrass 组中与设备交互

AWS IoT Greengrass 入门-模块4:在 AWS IoT Greengrass 组中与设备交互

在此模块中,一个 Greengrass 设备将向 Greengrass 组中的另一个设备发送“Hello World”消息 。

在 AWS IoT Greengrass 组中创建 AWS IoT 设备

  1. 在 AWS IoT 控制台中,依次选择 (Greengrass)(组),然后选择您的组。

  2. 在组配置页面中,选择(设备),然后选择(添加第一个设备)

  3. 选择(创建新设备)

  4. 将此设备注册为 HelloWorld_Publisher,然后选择下一步

  5. 对于(一键式操作),选择(使用默认设置)。此选项生成一个具有附加 AWS IoT 策略以及公有密钥和私有密钥的设备证书。

  6. 解压缩 hash-setup.tar.gz 文件

  7. 选择 (添加设备),重复步骤 \(3 - 7\) 以向组中添加新设备。

    将此设备命名为 HelloWorld_Subscriber。将设备的证书和密钥下载到您的计算机中。将它们保存并解压缩到您为 HelloWorld_Publisher 创建的同一文件夹中。

    同样,记下 HelloWorld_Subscriber 设备的文件名中的常见 hash 组分。

    现在,您的 AWS IoT Greengrass 组 中应该有两个设备:

  8. 下载 Amazon Root CA 1 ATS 根 CA 证书 ,将根 CA 证书作为 root-ca-cert.pem 保存到两个设备的证书和密钥所在的同一文件夹中。所有这些文件应位于计算机(而非 AWS IoT Greengrass Core 设备)上的某个文件夹中。

配置订阅

在本步骤中,您将使 HelloWorld_Publisher 设备能够向 HelloWorld_Subscriber 设备发送 MQTT 消息。

  1. 在组配置页面中,选择 (订阅),然后选择 (添加订阅)

  2. 配置订阅。

    • (选择源) 下面,选择 (设备),然后选择 HelloWorld_Publisher
    • (选择目标) 下面,选择 (设备),然后选择 HelloWorld_Subscriber
    • 选择 (下一步)

  3. 对于 (主题筛选条件),输入 hello/world/pubsub,选择 Next (下一步),然后选择 Finish (完成)

    注意

    您可以删除前面的模块中的订阅。在组的 Subscriptions (订阅) 页面上,选择与订阅关联的省略号 (),然后选择 Delete (删除)

  4. 确保 AWS IoT Greengrass 守护程序正在运行。

  5. 在组配置页面上,从 (操作) 中选择 (部署)

安装 适用于 Python 的 AWS IoT 设备开发工具包

AWS IoT 设备可以使用 适用于 Python 的 AWS IoT 设备开发工具包 来与 AWS IoT 和 AWS IoT Greengrass Core 设备通信(使用 Python 编程语言)。

  1. 要将开发工具包与所有必需的组件一起安装到您的计算机上。

    • 打开命令终端并运行以下命令:

      python --version
      

      如果没有返回版本信息,或者 Python 2 的版本号小于 2.7 或 Python 3 的版本号小于 3.3,则按照下载 Python 中的说明安装 Python 2.7+ 或 Python 3.3+。

    • 适用于 Python 的 AWS IoT 设备开发工具包 下载为 zip 文件并将其解压缩到您计算机上的适当位置。 并解压。

    • 请记下其中包含 setup.py 文件的文件夹的文件路径:在下一个步骤中,此文件路径将由 path-to-SDK-folder 指示。

    • 命令终端中运行以下命令:

      cd 'path-to-SDK-folder'
      python setup.py install
      

  2. 安装适用于 Python 的 AWS IoT 设备开发工具包后,导航到 samples 文件夹,打开 greengrass 文件夹,然后将 basicDiscovery.py 文件复制到包含 HelloWorld_Publisher 和 HelloWorld_Subscriber 设备证书的文件夹中,如以下示例中所示。

测试通信

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

    • 在 AWS IoT Greengrass Core 设备上,运行以下命令以查找其 IP 地址。

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

      ping 'IP-address'
      

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

  2. 获取您的 AWS IoT 终端节点。

    1. (AWS IoT 控制台)的导航窗格中,选择 (设置)

    2. 设置 下方,记录终端节点的值。您可以使用此值在以下步骤中替换命令中的 AWS_IOT_ENDPOINT 占位符。

    注意

    确保您的终端节点与证书类型对应

  3. 在您的计算机(不是 AWS IoT Greengrass Core 设备)上,打开两个 (终端或命令提示符)窗口。一个窗口代表 HelloWorld_Publisher 设备,另一个窗口代表 HelloWorld_Subscriber 设备。

    执行时,basicDiscovery.py 尝试在其终端节点处 AWS IoT Greengrass Core 的位置上收集信息。在设备发现并成功连接到核心后,将会存储此信息。这将允许未来的消息收发和操作可以在本地执行(无需 Internet 连接)。

    注意

    您可以从包含 basicDiscovery.py 文件的文件夹运行以下命令,以查看详细的脚本使用信息:

    python basicDiscovery.py --help
    
  4. 从 HelloWorld_Publisher 设备窗口运行以下命令。

    • path-to-certs-folder 替换为包含证书、密钥和 basicDiscovery.py 的文件夹的路径。
    • AWS_IOT_ENDPOINT 替换为您的终端节点。
    • 将两个 publisher 实例替换为 HelloWorld_Publisher 设备的文件名中的哈希值。
    cd 'path-to-certs-folder'
    python basicDiscovery.py --endpoint 'AWS_IOT_ENDPOINT' --rootCA root-ca-cert.pem --cert 'publisher'.cert.pem --key 'publisher'.private.key --thingName HelloWorld_Publisher --topic 'hello/world/pubsub' --mode publish --message 'Hello, World! Sent from HelloWorld_Publisher'
    

    您应该看到类似于以下内容的输出:

    注意

    如果脚本返回 error: unrecognized arguments 消息,请针对 --topic--message 参数将单引号更改为双引号,并再次运行该命令。

    如果连接出错,尝试以下步骤:

    手动输入终端节点

    1. 依次选择 Greengrass和您的组。
    2. 选择 (设置)
    3. 对于 (本地连接检测),选择 (手动管理连接信息),然后选择 (查看核心的特定终端节点信息)
    4. 选择您的核心,然后选择(连接)
    5. 选择(编辑),确保只有一个终端节点值。该值必须是 AWS IoT Greengrass Core 设备的端口 8883 的 IP 地址终端节点(例如,192.168.1.4)。
    6. 选择 (更新)
  5. 从 HelloWorld_Subscriber 设备窗口运行以下命令。

    • path-to-certs-folder 替换为包含证书、密钥和 basicDiscovery.py 的文件夹的路径。
    • AWS_IOT_ENDPOINT 替换为您的终端节点。
    • 将两个 subscriber 实例替换为 HelloWorld_Subscriber 设备的文件名中的哈希值。
    cd path-to-certs-folder
    python basicDiscovery.py --endpoint 'AWS_IOT_ENDPOINT' --rootCA root-ca-cert.pem --cert 'subscriber'.cert.pem --key 'subscriber'.private.key --thingName HelloWorld_Subscriber --topic 'hello/world/pubsub' --mode subscribe
    

    您应该看到以下输出:

posted @ 2019-11-20 17:05  Hi,Simon  阅读(485)  评论(0编辑  收藏  举报