将您的 Windows 或 Linux PC 或 Mac 用作 Amazon IoT 设备 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

将您的 Windows 或 Linux PC 或 Mac 用作 Amazon IoT 设备

在本教程中,您将配置个人电脑以用于 Amazon IoT。这些说明支持 Windows 和 Linux PC 以及 Mac。要完成此操作,您需要在电脑上安装某些软件。如果您不想在电脑上安装软件,可以尝试 使用 Amazon EC2 创建虚拟设备,它将在虚拟机上安装所有软件。

设置您的个人电脑

要完成本教程,您需要一台连接至互联网的 Windows 或 Linux PC 或 Mac。

在继续下一步之前,请确保您可以在电脑上打开命令行窗口。在 Windows PC 上使用 cmd.exe。在 Linux PC 或 Mac 上,使用 Terminal

安装 Git、Python 和适用于 Python 的 Amazon IoT 设备软件开发工具包。

在本部分中,您将在电脑上安装 Python 和适用于 Python 的 Amazon IoT 设备软件开发工具包。

安装并使用最新版本的 Git 和 Python

要下载 Git 和 Python 并安装在您的电脑上

  1. 检查您的电脑上是否已经安装了 Git。在命令行输入此命令。

    git --version

    如果命令显示 Git 版本,则表示已安装 Git,您可以继续执行下一步。

    如果命令显示错误,请打开 https://git-scm.com/download 并为您的电脑安装 Git。

  2. 检查您是否已安装了 Python。在命令行输入此命令。

    python -V
    注意

    如果此命令返回错误:Python was not found,这可能是因为您的操作系统将 Python v3.x 可执行文件调用为 Python3。在这种情况下,请将 python 的所有实例替换为 python3,并继续本教程的其余部分。

    如果命令显示 Python 版本,则表示已安装 Python。此教程需要 Python v3.5 或更高版本。

  3. 如果已安装 Python,您可以跳过本部分的其余步骤。如果没有,请继续。

  4. 打开 https://www.python.org/downloads/ 并为您的电脑下载安装程序。

  5. 如果下载的程序没有自动开始安装,请运行下载的程序以安装 Python。

  6. 验证 Python 的安装。

    python -V

    确认该命令显示 Python 版本。如果没有显示 Python 版本,请尝试再次下载并安装 Python。

安装适用于 Python 的 Amazon IoT 设备软件开发工具包。

要在电脑上安装适用于 Python 的 Amazon IoT 设备软件开发工具包

  1. 安装适用于 Python 的 Amazon IoT 设备软件开发工具包 v2。

    python3 -m pip install awsiotsdk
  2. 将适用于 Python 的 Amazon IoT 设备软件开发工具包存储库克隆到您主目录的 aws-iot-device-sdk-python-v2 目录中。此流程引用您作为主目录安装的文件的基础目录。

    目录的实际位置取决于您的操作系统。

    Linux/macOS

    在 macOS 和 Linux 中,目录为 ~

    cd ~ git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
    Windows

    在 Windows 中,您可以在 cmd 窗口中运行此命令来查找目录路径。

    echo %USERPROFILE% cd %USERPROFILE% git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
    注意

    如果您使用的是 Windows PowerShell 而不是 cmd.exe,那么请使用以下命令。

    echo $home

准备运行示例应用程序

要准备您的系统以运行示例应用程序

  • 创建 certs 目录。进入 certs 目录,复制您在 创建 Amazon IoT 资源 中创建和注册事物对象时保存的私有密钥、设备证书和根 CA 证书文件。目标目录中每个文件的文件名应与表中的文件名匹配。

    下一部分中的命令假定您的密钥和证书文件均已存储在设备上,如下表中所示。

    Linux/macOS

    运行此命令以创建您将在运行示例应用程序时使用的 certs 子目录。

    mkdir ~/certs

    进入新的子目录,将文件复制到下表所示的目标文件路径。

    证书文件名

    文件

    文件路径

    私有密钥

    ~/certs/private.pem.key

    设备证书

    ~/certs/device.pem.crt

    根 CA 证书

    ~/certs/Amazon-root-CA-1.pem

    运行此命令以列出 certs 目录中的文件,并将其与表中列出的文件进行比较。

    ls -l ~/certs
    Windows

    运行此命令以创建您将在运行示例应用程序时使用的 certs 子目录。

    mkdir %USERPROFILE%\certs

    进入新的子目录,将文件复制到下表所示的目标文件路径。

    证书文件名

    文件

    文件路径

    私有密钥

    %USERPROFILE%\certs\private.pem.key

    设备证书

    %USERPROFILE%\certs\device.pem.crt

    根 CA 证书

    %USERPROFILE%\certs\Amazon-root-CA-1.pem

    运行此命令以列出 certs 目录中的文件,并将其与表中列出的文件进行比较。

    dir %USERPROFILE%\certs

设置策略并运行示例应用程序

在本部分中,您将设置策略并运行在 Amazon IoT Device SDK for Python 的 aws-iot-device-sdk-python-v2/samples 目录中找到的 pubsub.py 示例脚本。此脚本显示设备将如何使用 MQTT 库发布和订阅 MQTT 消息。

pubsub.py 示例应用程序订阅了一个主题,test/topic,将 10 条消息发布到该主题,并在从消息代理收到这些消息时予以显示。

要运行 pubsub.py 示例应用程序,您需要具有以下信息:

应用程序参数值

参数

在何处查找值

your-iot-endpoint
  1. Amazon IoT 控制台的左侧菜单中,选择 Settings(设置)。

  2. Settings(设置)页面上,您的端点将显示在 Device data endpoint(设备数据端点)部分。

your-iot-endpoint 值的格式为:endpoint_id-ats.iot.region.amazonaws.com,例如,a3qj468EXAMPLE-ats.iot.us-west-2.amazonaws.com

在运行脚本之前,请确保事物的策略为示例脚本提供了连接、订阅、发布和接收的权限。Policy JSON 显示在以下示例中。在 "Resource" 元素中,您应该将区域和账户单词替换为您的 Amazon Web Services 账户 和区域 "arn:aws:iot:region:account.:topic/test/topic"

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account:topic/test/topic" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/test/topic" ] }, { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:region:account:client/test-*" ] } ] }
Linux/macOS

要在 Linux/macOS 上运行示例脚本

  1. 在命令行窗口中,导航到软件开发工具包使用这些命令创建的 ~/aws-iot-device-sdk-python-v2/samples/node/pub_sub 目录。

    cd ~/aws-iot-device-sdk-python-v2/samples
  2. 在您的命令行窗口中,按照说明替换 your-iot-endpoint 并运行此命令。

    python3 pubsub.py --endpoint your-iot-endpoint --root-ca ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key
Windows

要在 Windows PC 上运行示例应用程序

  1. 在您的命令行窗口中,导航到软件开发工具包创建的 %USERPROFILE%\aws-iot-device-sdk-python-v2\samples 目录,并使用这些命令安装示例应用程序。

    cd %USERPROFILE%\aws-iot-device-sdk-python-v2\samples
  2. 在您的命令行窗口中,按照说明替换 your-iot-endpoint 并运行此命令。

    python3 pubsub.py --endpoint your-iot-endpoint --root-ca %USERPROFILE%\certs\Amazon-root-CA-1.pem --cert %USERPROFILE%\certs\device.pem.crt --key %USERPROFILE%\certs\private.pem.key

示例脚本:

  1. 为您的账户连接到 Amazon IoT 服务。

  2. 订阅消息主题 test/topic,并显示其收到的有关该主题的消息。

  3. 向主题 test/topic 发布 10 条消息。

  4. 输出类似于以下内容:

Publish received on topic test/topic {"message":"Hello world!","sequence":1} Publish received on topic test/topic {"message":"Hello world!","sequence":2} Publish received on topic test/topic {"message":"Hello world!","sequence":3} Publish received on topic test/topic {"message":"Hello world!","sequence":4} Publish received on topic test/topic {"message":"Hello world!","sequence":5} Publish received on topic test/topic {"message":"Hello world!","sequence":6} Publish received on topic test/topic {"message":"Hello world!","sequence":7} Publish received on topic test/topic {"message":"Hello world!","sequence":8} Publish received on topic test/topic {"message":"Hello world!","sequence":9} Publish received on topic test/topic {"message":"Hello world!","sequence":10}

如果您在运行示例应用程序时遇到问题,请查看 排除示例应用程序的故障

您还可以将 --verbosity Debug 参数添加到命令行,以便示例应用程序显示有关其正在执行的操作的详细消息。该信息可能会帮助您改正此问题。

在 Amazon IoT 控制台中查看来自示例应用程序的消息

您可以在 Amazon IoT 控制台中使用 MQTT 客户端在应用程序的消息通过消息代理时进行查看。

要查看示例应用程序发布的 MQTT 消息

  1. 审核使用 Amazon IoT MQTT 客户端查看 MQTT 消息。此操作可帮助您了解如何在 Amazon IoT 控制台中使用 MQTT 客户端以在 MQTT 消息通过消息代理时进行查看。

  2. Amazon IoT 控制台中打开 MQTT 客户端

  3. 订阅主题 test/topic

  4. 在命令行窗口中,再次运行示例应用程序,并在 Amazon IoT 控制台MQTT 客户端中查看消息。

    Linux/macOS
    cd ~/aws-iot-device-sdk-python-v2/samples python3 pubsub.py --topic test/topic --root-ca ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint
    Windows
    cd %USERPROFILE%\aws-iot-device-sdk-python-v2\samples python3 pubsub.py --topic test/topic --root-ca %USERPROFILE%\certs\Amazon-root-CA-1.pem --cert %USERPROFILE%\certs\device.pem.crt --key %USERPROFILE%\certs\private.pem.key --endpoint your-iot-endpoint