连接 Raspberry Pi 或其他设备 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

连接 Raspberry Pi 或其他设备

在本节中,我们将配置一个 Raspberry Pi 以与一起使用 Amazon IoT。如果您要连接另一台设备,Raspberry Pi 的说明包括可以帮助您调整这些指令以用到您设备上的参考资料。

这通常需要大约 20 分钟,但如果您需要安装许多系统软件升级,则可能需要更长的时间。

重要

将这些指令用于其它设备和操作系统可能会非常困难。您需要充分了解您的设备,以便能够解释这些说明并将它们应用到您的设备上。

如果您在配置设备时遇到困难 Amazon IoT,可以尝试使用其他设备选项作为替代方案,例如使用 Amazon EC2 创建虚拟设备使用你的 Windows、Linux 电脑或 Mac 作为 Amazon IoT 设备

设置您的设备

此步骤的目标是收集配置设备所需的信息,以便它可以启动操作系统(OS)、连接到互联网,并允许您在命令行界面与设备进行交互。

要完成本教程,您需要:

  • 一个 Amazon Web Services 账户。如果您没有账户,请完成 设置你的 Amazon Web Services 账户 中介绍的步骤然后继续操作。

  • Raspberry Pi 3 Model B 或更新型号。这可能适用于早期版本的 Raspberry Pi,但这尚未经过测试。

  • Raspberry Pi OS (32 位)或更高版本。我们始终建议使用最新版本的 Raspberry Pi OS。早期版本的操作系统可能正常工作,但这尚未经过测试。

    要运行此示例,您不需要使用图形用户界面 (GUI) 安装桌面;但是,如果您不熟悉 Raspberry Pi 并且您的 Raspberry Pi 硬件支持,则使用带有 GUI 的桌面可能会使操作更容易。

  • 以太网或 WiFi 连接。

  • 键盘、鼠标、显示器、电缆、电源和设备所需的其它硬件。

重要

您的设备必须先安装、配置和运行操作系统,然后才能继续执行下一步。设备必须连接到互联网,并且您需要能够使用其命令行界面访问设备。命令行访问可以通过直接连接的键盘、鼠标和显示器,也可以使用 SSH 终端远程接口进行访问。

如果您在 Raspberry Pi 上运行具有图形用户界面 (GUI) 的操作系统,请在设备上打开终端窗口,然后在该窗口中执行以下说明。否则,如果您使用远程终端(如 PuTTY)连接到您的设备,请打开设备的远程终端并使用该终端。

安装 Amazon IoT 设备 SDK 所需的工具和库

在安装 Amazon IoT 设备 SDK 和示例代码之前,请确保您的系统是最新的,并且具有安装 SDK 所需的工具和库。

  1. 更新操作系统并安装所需的库

    在安装 Amazon IoT 设备 SDK 之前,请在设备上的终端窗口中运行这些命令以更新操作系统并安装所需的库。

    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get install cmake
    sudo apt-get install libssl-dev
  2. 安装 Git

    如果设备的操作系统未安装 Git,则必须安装该操作系统才能为其安装 Amazon IoT 设备 SDK JavaScript。

    1. 通过运行此命令测试是否已安装 Git。

      git --version
    2. 如果上一个命令返回了 Git 版本,则表示 Git 已经安装,您可以跳到步骤 3。

    3. 如果在运行 git 命令时显示了错误,则请运行此命令来安装 Git。

      sudo apt-get install git
    4. 再次运行此命令测试是否已安装 Git。

      git --version
    5. 如果已安装 Git,请跳到下一个部分。如果没有,请排除故障并更正错误,然后再继续。你需要 Git 来安装的 Amazon IoT 设备软件开发工具包 JavaScript。

安装 Amazon IoT 设备 SDK

安装 Amazon IoT 设备软件开发工具包。

Python

在本节中,你将在你的设备上安装 Python、其开发工具和适用于 Python 的 Amazon IoT 设备 SDK。这些说明适用于运行最新版本 Raspberry Pi 操作系统的 Raspberry Pi。如果您有其他设备或使用其它操作系统,则可能需要为设备对以下说明的操作进行调整。

  1. 安装 Python 及其开发工具

    适用于 Python 的 Amazon IoT 设备 SDK 需要在 Raspberry Pi 上安装 Python v3.5 或更高版本。

    在设备的终端窗口中,运行这些命令。

    1. 运行此命令以确定设备上安装的 Python 版本。

      python3 --version

      如果安装了 Python,它将显示其版本。

    2. 如果显示的版本为 Python 3.5 或更高版本,则您可以跳至步骤 2。

    3. 如果显示的版本低于 Python 3.5,您可以运行此命令来安装正确版本。

      sudo apt install python3
    4. 运行此命令以确认现在安装了正确版本的 Python。

      python3 --version
  2. 针对 pip3 的测试

    在设备的终端窗口中,运行这些命令。

    1. 运行以下命令,查看是否安装了 pip3

      pip3 --version
    2. 如果命令返回了版本号,则表示已安装 pip3,您可以跳到步骤 3。

    3. 如果之前的命令返回了错误,请运行此命令以安装 pip3

      sudo apt install python3-pip
    4. 运行以下命令,查看是否安装了 pip3

      pip3 --version
  3. 安装当前适用于 Python 的 Amazon IoT 设备 SDK

    安装适用于 Python 的 Amazon IoT 设备 SDK 并将示例应用程序下载到您的设备上。

    在您的设备上运行这些命令。

    cd ~ python3 -m pip install awsiotsdk
    git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
JavaScript

在本节中,你将在你的设备 JavaScript 上安装 Node.js、npm 包管理器和 Amazon IoT 设备软件开发工具包。这些说明适用于运行 Raspberry Pi 操作系统的 Raspberry Pi。如果您有其他设备或使用其它操作系统,则可能需要为设备对以下说明的操作进行调整。

  1. 安装最新版本的 Node.js

    的 Amazon IoT 设备 SDK JavaScript 需要在你的 Raspberry Pi 上安装 Node.js 和 npm 包管理器。

    1. 通过输入此命令以下载最新版本的 Node 存储库。

      cd ~ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
    2. 安装 Node 和 npm。

      sudo apt-get install -y nodejs
    3. 验证 Node 的安装。

      node -v

      确认该命令显示了 Node 版本。本教程需要 Node v10.0 或更高版本。如果未显示 Node 版本,请尝试再次下载 Node 存储库。

    4. 验证 npm 的安装。

      npm -v

      确认该命令显示了 npm 版本。如果未显示 npm 版本,请尝试再次安装 Node 和 npm。

    5. 重启设备。

      sudo shutdown -r 0

      设备重新启动后继续操作。

  2. 安装适用于的 Amazon IoT 设备 SDK JavaScript

    在你的 Raspberry Pi JavaScript 上安装适用于的 Amazon IoT 设备 SDK。

    1. 将 JavaScript存储库的 Amazon IoT 设备 SDK 克隆到您的目录目录中。aws-iot-device-sdk-js-v2在 Raspberry Pi 中,目录为 ~/,将在下列命令中用作目录。如果您的设备使用不同的路径来作为目录,则必须在以下命令中将 ~/ 替换为您设备的正确路径。

      这些命令会创建 ~/aws-iot-device-sdk-js-v2 目录并将 SDK 代码复制到其中。

      cd ~ git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
    2. 更改为您在之前步骤中创建的 aws-iot-device-sdk-js-v2 目录,然后 运行 npm install 以安装开发工具包。npm install 命令将调用可能需要几分钟才能完成的 aws-crt 库构建。

      cd ~/aws-iot-device-sdk-js-v2 npm install

安装并运行示例应用程序

在本节中,您将安装并运行 Amazon IoT 设备 SDK 中的pubsub示例应用程序。此应用程序将显示您的设备如何使用 MQTT 库发布和订阅 MQTT 消息。示例应用程序订阅了一个主题,topic_1,将 10 条消息发布到该主题,并在从消息代理收到这些消息时予以显示。

安装证书文件

示例应用程序要求在设备上安装对设备进行身份验证的证书文件。

要为示例应用程序安装设备证书文件
  1. 运行这些命令,在您的目录中创建 certs 子目录。

    cd ~ mkdir certs
  2. 将您之前在 创建 Amazon IoT 资源 中创建的私有密钥、设备证书和根 CA 证书复制到 ~/certs 目录中。

    如何将证书文件复制到设备取决于设备和操作系统,此处未予介绍。但是,如果您的设备支持图形用户界面 (GUI) 并且具有 Web 浏览器,则可以在设备的 Web 浏览器中执行 创建 Amazon IoT 资源 中所述的流程,以将生成的文件直接下载到您的设备。

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

    证书文件名

    文件

    文件路径

    根 CA 证书

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

    设备证书

    ~/certs/device.pem.crt

    私有密钥

    ~/certs/private.pem.key

要运行示例应用程序,您需要以下信息:

应用程序参数值

参数

在何处查找值

your-iot-endpoint

Amazon IoT 控制台中,选择 All devices(所有设备),然后选择 Things(事物)。

在 Amazon IoT 菜单的设置页面上。终端节点会显示在 Device data endpoint(设备数据终端节点)部分。

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

Python
要安装和运行示例应用程序
  1. 导航到示例应用程序目录。

    cd ~/aws-iot-device-sdk-python-v2/samples
  2. 在命令行窗口中,your-iot-endpoint按照指示进行替换,然后运行此命令。

    python3 pubsub.py --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint
  3. 观察示例应用程序:

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

    2. 订阅消息主题 topic_1,并显示它收到的有关该主题的消息。

    3. 向主题 topic_1 发布 10 条消息。

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

    Connecting to a3qEXAMPLEffp-ats.iot.us-west-2.amazonaws.com with client ID 'test-0c8ae2ff-cc87-49d2-a82a-ae7ba1d0ca5a'... Connected! Subscribing to topic 'topic_1'... Subscribed with QoS.AT_LEAST_ONCE Sending 10 message(s) Publishing message to topic 'topic_1': Hello World! [1] Received message from topic 'topic_1': b'Hello World! [1]' Publishing message to topic 'topic_1': Hello World! [2] Received message from topic 'topic_1': b'Hello World! [2]' Publishing message to topic 'topic_1': Hello World! [3] Received message from topic 'topic_1': b'Hello World! [3]' Publishing message to topic 'topic_1': Hello World! [4] Received message from topic 'topic_1': b'Hello World! [4]' Publishing message to topic 'topic_1': Hello World! [5] Received message from topic 'topic_1': b'Hello World! [5]' Publishing message to topic 'topic_1': Hello World! [6] Received message from topic 'topic_1': b'Hello World! [6]' Publishing message to topic 'topic_1': Hello World! [7] Received message from topic 'topic_1': b'Hello World! [7]' Publishing message to topic 'topic_1': Hello World! [8] Received message from topic 'topic_1': b'Hello World! [8]' Publishing message to topic 'topic_1': Hello World! [9] Received message from topic 'topic_1': b'Hello World! [9]' Publishing message to topic 'topic_1': Hello World! [10] Received message from topic 'topic_1': b'Hello World! [10]' 10 message(s) received. Disconnecting... Disconnected!

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

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

JavaScript
要安装和运行示例应用程序
  1. 在您的命令行窗口中,导航到 SDK 创建的 ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub 目录,并使用这些命令安装示例应用程序。npm install 命令将调用可能需要几分钟才能完成的 aws-crt 库构建。

    cd ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub npm install
  2. 在命令行窗口中,your-iot-endpoint按照指示进行替换,然后运行此命令。

    node dist/index.js --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint
  3. 观察示例应用程序:

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

    2. 订阅消息主题 topic_1,并显示它收到的有关该主题的消息。

    3. 向主题 topic_1 发布 10 条消息。

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

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

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

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

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

您可以在 Amazon IoT 控制台中使用 MQTT 测试客户端,在示例应用程序的消息通过消息代理时查看它们。

要查看示例应用程序发布的 MQTT 消息
  1. 审核使用 MQTT 客户端查看 Amazon IoT MQTT 消息。它可以帮助您了解如何使用 Amazon IoT 控制台中的 MQTT 测试客户端来查看通过消息代理时的 MQTT 消息。

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

  3. 订阅主题 topic_1

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

    Python
    cd ~/aws-iot-device-sdk-python-v2/samples python3 pubsub.py --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint
    JavaScript
    cd ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub node dist/index.js --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint