连接 Raspberry Pi 或其他设备 - AWS IoT Core

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

连接 Raspberry Pi 或其他设备

在本节中,我们将配置 Raspberry Pi 以与 AWS IoT。 如果你想连接另一台设备,Raspberry Pi 的说明中包含一些参考资料,可以帮助你调整这些说明以适应你的设备。

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

重要

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

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

设置您的设备

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

要完成本教程,您需要:

  • 网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的 AWS 账户。 如果没有,请先完成中描述的步骤,设置你的 AWS 账户然后再继续。

  • 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)连接到设备,请打开设备上的远程终端并使用该终端。

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

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

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

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

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

    如果设备的操作系统未安装 Git,则必须安装该操作系统才能安装 AWS 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 来安装 AWS IoT 设备SDK用于 JavaScript.

安装 AWS IoT 设备 SDK

安装   AWS IoT 设备SDK。

Python

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

  1. 安装 Python 及其开发工具

    这些区域有: AWS IoT SDK适用于 Python 的设备需要在 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. 安装当前 AWS IoT SDK适用于 Python 的设备

    安装   AWS IoT Py SDK thon 设备并将示例应用程序下载到您的设备上。

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

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

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

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

    这些区域有: AWS IoT 设备 JavaScript 需要在你SDK的 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. 安装   AWS IoT 设备SDK用于 JavaScript

    安装   AWS IoT SDK适用于 JavaScript 你的 Raspberry Pi 的设备。

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

      这些命令创建~/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以安装SDK。npm install 命令将调用可能需要几分钟才能完成的 aws-crt 库构建。

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

安装并运行示例应用程序

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

安装证书文件

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

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

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

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

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

    证书文件名

    文件

    文件路径

    根 CA 证书

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

    设备证书

    ~/certs/device.pem.crt

    私有密钥

    ~/certs/private.pem.key

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

应用程序参数值

参数

在何处查找值

your-iot-endpoint

AWS IoT 控制台,选择 “所有设备”,然后选择 “事物”。

“设置” 页面上的 AWS 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. 连接到 AWS 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. 连接到 AWS 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 参数添加到命令行,以便示例应用程序显示有关其正在执行的操作的详细消息。该信息可能会为您提供帮助以便您解决问题。

在中查看来自示例应用程序的消息 AWS IoT Console

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

查看示例应用程序发布的MQTT消息
  1. 审核使用查看MQTT消息 AWS IoT MQTT客户端。这可以帮助你学习如何在中使用MQTT测试客户端 AWS IoT 控制台可在MQTT消息通过消息代理时查看消息。

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

  3. 订阅主题 topic_1

  4. 在命令行窗口中,再次运行示例应用程序,MQTT然后AWS IoT 控制台

    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