使用 适用于嵌入式 C 的 AWS IoT 设备开发工具包 - AWS IoT
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 适用于嵌入式 C 的 AWS IoT 设备开发工具包

此部分描述如何运行 适用于嵌入式 C 的 AWS IoT 设备开发工具包。

安装 适用于嵌入式 C 的 AWS IoT 设备开发工具包

适用于嵌入式 C 的 AWS IoT 设备开发工具包通常面向需要优化的 C 语言运行时的资源受限设备。您可以在任何操作系统上使用此开发工具包,并将其托管在任何类型的处理器(例如 MCU 和 MPU)上。如果您有更多的可用内存和处理资源,我们建议您使用更高级的 AWS IoT 设备和移动开发工具包之一(例如,C++、Java、JavaScript 和 Python)。

一般而言,适用于嵌入式 C 的 AWS IoT 设备开发工具包适用于以下系统:这些系统使用 MCU 或运行嵌入式操作系统的低端 MPU。对于文档中的编程示例,我们使用运行嵌入式 Linux 的 Raspberry Pi。

  1. GitHub 将 适用于嵌入式 C 的 AWS IoT 设备开发工具包 下载到您的 Raspberry Pi。

    git clone https://github.com/aws/aws-iot-device-sdk-embedded-c.git -b release

    这将在当前目录中创建一个名为 aws-iot-device-sdk-embedded-c 的目录。

  2. mbed TLS 网站将 mbed TLS 下载到您的 Raspberry Pi。

  3. 导航到 /home/pi/Downloads 目录。使用以下命令展开最新版本的 mbedtls-versionNumber-apache.tgz 文件。

    tar -xvf mbedtls-versionNumber-apache.tgz
  4. 使用以下命令将 mbedtls-versionNumber 的内容复制到 aws-iot-device-sdk-embedded-C/external_libs/mbedTLS 目录中。

    mv ~/Downloads/mbedtls-versionNumber/* ~/aws-iot-device-sdk-embedded-c/external_libs/mbedTLS

示例应用程序配置

适用于嵌入式 C 的 AWS IoT 设备开发工具包 包含供您试用的示例应用程序。为了简单起见,本教程使用的是 subscribe_publish_sample 应用程序,此应用程序演示如何连接到 AWS IoT Core 消息代理并订阅和发布到 MQTT 主题。

  1. 将您在为您的 Raspberry Pi 创建 AWS IoT 事物中创建的证书、私有密钥和根 CA 证书复制到 aws-iot-device-sdk-embedded-C/certs 目录中。

    注意

    设备和根 CA 证书可能会过期或被吊销。如果您的证书过期或被吊销,则您必须将新的 CA 证书或私有密钥和设备证书复制到您的设备上。

  2. 您必须使用个人 AWS IoT Core 终端节点、私有密钥、证书和根 CA 证书配置示例。导航到 aws-iot-device-sdk-embedded-c/samples/linux/subscribe_publish_sample 目录。

    如果您已安装 AWS CLI,则可使用 aws iot describe-endpoint --endpoint-type iot:Data-ATS 命令查找您的个人终端节点 URL。如果您尚未安装 AWS CLI,请打开 AWS IoT 控制台。在导航窗格中,依次选择 Manage (管理)Things (事物)。为 Raspberry Pi 选择 IoT 事物,然后选择 Interact (交互)。您的终端节点显示在事物详细信息页面的 HTTPS 部分中。

  3. 打开 aws_iot_config.h 文件并在 Get from console 部分更新以下各项的值:

    AWS_IOT_MQTT_HOST

    您的私有终端节点。

    AWS_IOT_MY_THING_NAME

    您的事物名称。

    AWS_IOT_ROOT_CA_FILENAME

    您的根 CA 证书文件名(无路径)。

    AWS_IOT_CERTIFICATE_FILENAME

    您的证书文件名(无路径)。

    AWS_IOT_PRIVATE_KEY_FILENAME

    您的私有密钥文件名(无路径)。

    例如:

    // Get from console // ================================================= #define AWS_IOT_MQTT_HOST "a22j5sm6o3yzc5.iot.us-east-1.amazonaws.com" #define AWS_IOT_MQTT_PORT 8883 #define AWS_IOT_MQTT_CLIENT_ID "MyRaspberryPi" #define AWS_IOT_MY_THING_NAME "MyRaspberryPi" #define AWS_IOT_ROOT_CA_FILENAME "root-CA.crt" #define AWS_IOT_CERTIFICATE_FILENAME "device.pem.crt" #define AWS_IOT_PRIVATE_KEY_FILENAME "private.pem.key" // =================================================
  4. 使用此命令检查您的设备上是否安装了开发工具。

    gcc --version

    如果您看到编译器的版本信息,则可以继续下一节。

    如果出现错误或看不到任何编译器信息,则需要使用此命令安装 build-essential 软件包。

    sudo apt-get install build-essential

    再次运行 gcc --version 命令,确认构建工具已安装并且您已准备好继续操作。

构建并运行示例应用程序

运行适用于嵌入式 C 的 AWS IoT 设备开发工具包示例应用程序

  1. 使用 aws-iot-device-sdk-embedded-c/samples/linux/subscribe_publish_sample 目录中的 makefile 编译 subscribe_publish_sample 应用程序。在 aws-iot-device-sdk-embedded-c/samples/linux/subscribe_publish_sample 目录中,输入此命令以生成可执行的应用程序文件。

    make -f Makefile
  2. 使用此命令运行 subscribe_publish_sample 应用程序。

    ./subscribe_publish_sample

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

现在 Raspberry Pi 已经通过适用于嵌入式 C 的 AWS IoT 设备开发工具包连接到 AWS IoT。

您还可以使用 AWS IoT 控制台查看示例应用程序正在发布的 MQTT 消息。有关如何在 AWS IoT 控制台中使用 MQTT 客户端的信息,请参阅使用 AWS IoT MQTT 客户端查看 MQTT 消息