教程:使用设备 AWS IoT Core 将 AWS IoT 设备连接到 SDK - AWS IoT Core

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

教程:使用设备 AWS IoT Core 将 AWS IoT 设备连接到 SDK

本教程演示了如何将设备连接起来, AWS IoT Core 以便它可以向和从设备发送和接收数据 AWS IoT。完成本教程后,您的设备将被配置为连接,您将了解设备是如何与之通信的 AWS IoT。 AWS IoT Core

先决条件

在开始本教程之前,请确保您具有:

  • 已完成 AWS IoT Core 教程入门

    在本教程中,您必须在某部分 配置您的设备,请为您的设备选择 连接 Raspberry Pi 或其他设备选项,然后使用 Python 语言选项来配置设备。

    注意

    在该教程中使用的终端窗口保持开启,因为您还将在本教程中使用它。

  • 可以运行适用于 Python 的 AWS IoT 设备 SDK v2 的设备。

    本教程介绍如何使用 Python 代码示例将设备连接到 AWS IoT Core 设备,这需要相对强大的设备。如果您使用的是资源受限的设备,则这些代码示例可能无法适用于这些设备。在这种情况下,你可能会在使用教程:使用 AWS IoT Device SDK for Embedded C本教程时取得更大的成功。

  • 已获取连接设备所需的信息

    要将设备连接到 AWS IoT,您必须拥有有关事物名称、主机名和端口号的信息。

    注意

    您也可以使用自定义身份验证将设备连接到 AWS IoT Core。您传递给授权方 Lambda 函数的连接数据取决于您使用的协议。

    • 事物名称:您要连接 AWS IoT 的事物的名称。你一定已经注册为你的设备 AWS IoT 了。有关更多信息,请参阅 使用管理设备 AWS IoT

    • 主机名:特定于账户的 IoT 端点的主机名。

    • 端口号:要连接的端口号。

    您可以使用 AWS IoT Python 中的configureEndpoint方法SDK来配置主机名和端口号。

    myAWSIoTMQTTClient.configureEndpoint("random.iot.region.amazonaws.com", 8883)

为设备做好准备 AWS IoT

AWS IoT Core 教程入门,您已准备好您的设备以及 AWS 账户,所以它们能够进行通信。本节回顾了该准备工作中适用于任何与之连接的设备的各个方面 AWS IoT Core。

对于要连接到 AWS IoT Core的设备:

  1. 您必须具有 AWS 账户

    中的过程设置 AWS 账户介绍了如何创建一个( AWS 账户 如果您还没有)。

  2. 在该账户中,您必须为自己 AWS 账户 和地区的设备定义以下AWS IoT 资源

    创建 AWS IoT 资源 中的流程介绍了如何为您的 AWS 账户 和区域中的设备创建这些资源。

    • 使用 AWS IoT 注册并激活以验证设备的设备证书

      该证书通常使用 AWS IoT 事物对象创建并随附其上。虽然设备不需要事物对象即可连接 AWS IoT,但它为设备提供了其他 AWS IoT 功能。

    • 附加到设备证书的策略,授权其连接 AWS IoT Core 并执行您想要的所有操作。

  3. 能够访问您的 AWS 账户的设备端点的互联网连接

    设备端点在控制台的设置页面中AWS IoT 设备数据和服务端点进行了描述,也可以在AWS IoT 控制台的设置页面中看到。

  4. 诸如 AWS IoT 设备之类的@@ 通信软件SDKs提供。本教程使用适用于 Python 的AWS IoT 设备 SDK v2。

查看MQTT协议

在我们讨论示例应用程序之前,了解MQTT协议会有所帮助。与其他网络通信MQTT协议相比,该协议具有一些优势,例如HTTP,这使其成为物联网设备的热门选择。本节回顾了适用于本教程MQTT的关键方面。有关与的MQTT比较结果的信息HTTP,请参阅为设备通信选择应用程序协议

MQTT使用发布/订阅通信模型

该MQTT协议使用的publish/subscribe communication model with its host. This model differs from the request/response模型HTTP使用. 使用MQTT,设备与由唯一客户端 ID 标识的主机建立会话。要发送数据,设备会将主题标识的消息发布到主机中的消息代理上。要接收来自消息代理的消息,设备通过在订阅请求中向消息代理发送主题筛选条件,来订阅主题。

MQTT支持持续会话

消息代理接收来自设备的消息,并将消息发布到已订阅消息的设备。借助持久性会话(即使在初始设备断开连接时,仍能保持活动状态的会话),设备可以检索在断开连接时发布的消息。在设备方面,MQTT支持服务质量级别 (QoS),可确保主机接收设备发送的消息。

查看 pubsub.py 设备SDK示例应用程序

本节回顾了pubsub.py本教程中使用的 Python AWS IoT 设备 SDK v2 中的示例应用程序。在这里,我们将回顾它如何 AWS IoT Core 连接到发布和订阅MQTT消息。下一节将介绍一些练习,以帮助您探索设备如何连接和通 AWS IoT Core信。

pubsub.py示例应用程序演示了与以下MQTT连接的以下方面 AWS IoT Core:

通信协议

pubsub.py示例演示了使用MQTT和通过WSS协议MQTT的MQTT连接。AWS 通用运行时 (AWS CRT) 库提供低级通信协议支持,并包含在适用于 Python 的 AWS IoT 设备 SDK v2 中。

MQTT

中的pubsub.py示例调用mtls_from_path(如图所示)使用MQTT协议与 AWS IoT Core 之建立连接。mqtt_connection_builder mtls_from_path使用 X.509 证书和 TLS v1.2 对设备进行身份验证。该 AWS CRT库处理该连接的较低级别细节。

mqtt_connection = mqtt_connection_builder.mtls_from_path( endpoint=args.endpoint, cert_filepath=args.cert, pri_key_filepath=args.key, ca_filepath=args.ca_file, client_bootstrap=client_bootstrap, on_connection_interrupted=on_connection_interrupted, on_connection_resumed=on_connection_resumed, client_id=args.client_id, clean_session=False, keep_alive_secs=6 )
endpoint

您的物 AWS 账户联网设备端点

在示例应用程序中,此值将从命令行传入。

cert_filepath

设备证书文件的路径。

在示例应用程序中,此值将从命令行传入。

pri_key_filepath

使用其证书文件创建的设备私有密钥文件的路径

在示例应用程序中,此值将从命令行传入。

ca_filepath

Root CA 文件的路径。仅当MQTT服务器使用的证书不在您的信任存储库中时,才需要此选项。

在示例应用程序中,此值将从命令行传入。

client_bootstrap

处理套接字通信活动的通用运行时对象

在示例应用程序中,此对象会在调用 mqtt_connection_builder.mtls_from_path前实例化。

on_connection_interrupted
on_connection_resumed

当设备连接中断和恢复时调用的回调函数

client_id

在 AWS 区域中唯一标识此设备的 ID

在示例应用程序中,此值将从命令行传入。

clean_session

启动新的持久会话,或者(如果会话已存在)重新连接到现有会话

keep_alive_secs

保持活动状态值(以秒为单位),在 CONNECT请求中发送。在此时间间隔内将自动发送 ping。如果服务器在此值的 1.5 倍之后没有收到 ping,假定连接丢失。

MQTT结束了 WSS

中的pubsub.py示例调用websockets_with_default_aws_signing(如图所示) AWS IoT Core 通过MQTT协议与建立连接WSS。mqtt_connection_builder websockets_with_default_aws_signingWSS使用签名 V4 创建MQTT连接,对设备进行身份验证。

mqtt_connection = mqtt_connection_builder.websockets_with_default_aws_signing( endpoint=args.endpoint, client_bootstrap=client_bootstrap, region=args.signing_region, credentials_provider=credentials_provider, websocket_proxy_options=proxy_options, ca_filepath=args.ca_file, on_connection_interrupted=on_connection_interrupted, on_connection_resumed=on_connection_resumed, client_id=args.client_id, clean_session=False, keep_alive_secs=6 )
endpoint

您的物 AWS 账户联网设备端点

在示例应用程序中,此值将从命令行传入。

client_bootstrap

处理套接字通信活动的通用运行时对象

在示例应用程序中,此对象会在调用 mqtt_connection_builder.websockets_with_default_aws_signing前实例化。

region

AWS 签名 V4 身份验证使用的签名区域。在 pubsub.py中,它将在命令行中传递输入的参数。

在示例应用程序中,此值将从命令行传入。

credentials_provider

提供的用于身份验证的 AWS 凭证

在示例应用程序中,此对象会在调用 mqtt_connection_builder.websockets_with_default_aws_signing前实例化。

websocket_proxy_options

HTTP代理选项(如果使用代理主机)

在示例应用程序中,此值在调用 mqtt_connection_builder.websockets_with_default_aws_signing前初始化。

ca_filepath

Root CA 文件的路径。仅当MQTT服务器使用的证书不在您的信任存储库中时,才需要此选项。

在示例应用程序中,此值将从命令行传入。

on_connection_interrupted
on_connection_resumed

当设备连接中断和恢复时调用的回调函数

client_id

在 AWS 区域中唯一标识此设备的 ID。

在示例应用程序中,此值将从命令行传入。

clean_session

启动新的持久会话,或者(如果会话已存在)重新连接到现有会话

keep_alive_secs

保持活动状态值(以秒为单位),在 CONNECT请求中发送。在此时间间隔内将自动发送 ping。如果服务器在此值的 1.5 倍之后没有收到 ping,则假定连接丢失。

HTTPS

那呢HTTPS? AWS IoT Core 支持发布HTTPS请求的设备。从编程的角度来看,设备会 AWS IoT Core 像向任何其他应用程序一样发送HTTPS请求。有关从设备发送HTTP消息的 Python 程序的示例,请参阅使用 Python requests 库的HTTPS代码示例。此示例向 AWS IoT Core 使用HTTPS这样的消息发送一条消息,该消息将其 AWS IoT Core 解释为MQTT消息。

虽然 AWS IoT Core 支持来自设备的HTTPS请求,但请务必查看相关信息,为设备通信选择应用程序协议以便您可以就使用哪种协议进行设备通信做出明智的决定。

持久会话

在示例应用程序中,将 clean_session参数设置为 False即表示连接应该是持久连接。实际上,这意味着此调用打开的连接将重新连接到现有持久会话(如果存在)。否则,它会创建并连接到新的持久会话。

对于持久会话,如果设备未连接,则发送到设备的消息将由消息代理存储。当设备重新连接到持久会话时,消息代理会向设备发送它已订阅的所有已存储的消息。

如果没有持久会话,设备将不会接收设备未连接时发送的消息。使用哪个选项取决于您的应用程序,以及是否必须传达设备未连接时发生的消息。有关更多信息,请参阅 MQTT 持久性会话

服务质量

当设备发布和订阅消息时,可以设置首选服务质量 (QoS)。 AWS IoT 支持发布和订阅操作的 QoS 级别 0 和 1。有关中 QoS 级别的更多信息 AWS IoT,请参阅。MQTT 服务质量 (QoS) 选项

Python 的 AWS CRT运行时为其支持的 QoS 级别定义了以下常量:

Python QoS 级别
MQTTQoS 级别 使用的 Python 符号值 SDK 描述
QoS 级别 0 mqtt.QoS.AT_MOST_ONCE 无论是否收到消息,均只会尝试发送一次消息。如果出现诸如设备未连接或存在网络错误的情况,则消息可能根本不会发送。
QoS 级别 1 mqtt.QoS.AT_LEAST_ONCE 消息将重复发送,直至收到 PUBACK确认。

在示例应用程序中,发布和订阅请求的 QoS 级别为 1 (mqtt.QoS.AT_LEAST_ONCE)。

  • 发布时的 QoS

    当设备发布 QoS 级别为 1 的消息时,它会重复发送消息,直至从消息代理收到 PUBACK响应。如果设备未连接,消息将在重新连接后排队等待发送。

  • 订阅时的 QoS

    当设备订阅 QoS 级别为 1 的消息时,消息代理会保存设备订阅的消息,直到这些消息可以发送到设备。消息代理会重新发送消息,直至收到设备发出的 PUBACK响应。

消息发布

成功建立与的连接后 AWS IoT Core,设备可以发布消息。pubsub.py 示例通过调用 mqtt_connection对象的 publish操作来完成此操作。

mqtt_connection.publish( topic=args.topic, payload=message, qos=mqtt.QoS.AT_LEAST_ONCE )
topic

标识消息的消息主题名称

在示例应用程序中,这是从命令行传入的。

payload

格式化为字符串(例如,JSON文档)的消息负载

在示例应用程序中,这是从命令行传入的。

JSON文档是一种常见的有效载荷格式,可以被其他 AWS IoT 服务识别;但是,消息有效载荷的数据格式可以是发布者和订阅者同意的任何格式。但是,其他 AWS IoT 服务只能识别大多数操作 JSONCBOR,在某些情况下还能识别大多数操作。

qos

此消息的 QoS 级别

消息订阅

要接收来自其他 AWS IoT 服务和设备的消息,设备需要按主题名称订阅这些消息。设备可以通过指定主题名称来订阅单个消息,也可以通过指定主题筛选条件来订阅一组消息(筛选条件中可以包含通配符)。pubsub.py 示例使用此处显示的代码订阅消息并注册回调函数,以便在收到消息后处理消息。

subscribe_future, packet_id = mqtt_connection.subscribe( topic=args.topic, qos=mqtt.QoS.AT_LEAST_ONCE, callback=on_message_received ) subscribe_result = subscribe_future.result()
topic

要订阅的主题。这可以是主题名称或主题筛选条件。

在示例应用程序中,这是从命令行传入的。

qos

在设备断开连接时,消息代理是否应该存储这些消息。

mqtt.QoS.AT_LEAST_ONCE 的值(QoS 级别 1),创建连接时需要指定持久性会话 (clean_session=False)。

callback

要调用以处理已订阅消息的函数。

mqtt_connection.subscribe 函数返回未来和数据包 ID。如果订阅请求成功初始化,则返回的数据包 ID 大于 0。要确保消息代理已接收并注册订阅,您必须等待异步操作的结果返回,如代码示例所示。

回调函数

pubsub.py 示例中的回调函数会在设备接收订阅的消息时处理这些消息。

def on_message_received(topic, payload, **kwargs): print("Received message from topic '{}': {}".format(topic, payload)) global received_count received_count += 1 if received_count == args.count: received_all_event.set()
topic

消息的主题

这是收到的消息的特定主题名称,即使您订阅了主题筛选条件也是如此。

payload

消息负载

此格式是特定于应用程序的格式。

kwargs

可能的其它实际参数,如 mqtt.Connection.subscribe中所述。

pubsub.py示例中,on_message_received 仅显示主题及其负载。它还会计算在达到限制后收到的结束程序的消息。

您的应用程序将评估主题和负载,以确定要执行的操作。

设备断开和重新连接

pubsub.py 示例包括在设备断开连接和重新建立连接时调用的回调函数。您的设备对这些事件采取的操作是特定于应用程序的。

当设备首次连接时,它必须订阅主题才能接收。如果设备在重新连接时存在会话,则会恢复其订阅,并在设备重新连接后,将来自这些订阅的所有存储消息发送到设备。

如果设备的会话在重新连接时不再存在,则必须重新订阅其订阅。持久会话的生命周期有限,当设备断开连接太长时间时,可能会过期。

连接您的设备并与之通信 AWS IoT Core

本部分介绍了一些练习,可帮助您探索将设备连接到 AWS IoT Core的不同方面。在这些练习中,您将使用 AWS IoT 控制台中的MQTT测试客户端来查看您的设备发布的内容并将消息发布到您的设备。这些练习使用了 Python 版 SDK Dev AWS IoT ice v2 中的pubsub.py示例,并以你在AWS IoT Core 教程入门教程中的经验为基础。

对于这些练习,您将从 pubsub.py示例程序开始操作。

注意

这些练习假定您已完成 AWS IoT Core 教程入门教程并使用该教程中的设备终端窗口。

订阅通配符主题筛选条件

在本练习中,您将修改用于调用 pubsub.py的命令行以订阅通配符主题筛选条件,并根据消息主题处理收到的消息。

练习流程

在本练习中,假设您的设备包含温度控制和光控。它使用这些主题名称来标识有关的消息。

  1. 在开始练习之前,请尝试根据 AWS IoT Core 教程入门教程在您的设备上运行此命令,确保一切都准备就绪,可正常进行练习。

    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

    您看到的输出应该与您在入门教程看到的一样。

  2. 在本练习中,请更改这些命令行参数。

    操作

    命令行参数

    效果

    添加

    --message ""

    配置 pubsub.py以仅侦听

    添加

    --count 2

    收到两条消息后结束程序

    更改

    --topic device/+/details

    设定要订阅的主题筛选条件

    对初始命令行进行这些更改将得到此命令行。在设备的终端窗口中输入此命令。

    python3 pubsub.py --message "" --count 2 --topic device/+/details --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint

    程序应该类似如下所示:

    Connecting to a3qexamplesffp-ats.iot.us-west-2.amazonaws.com with client ID 'test-24d7cdcc-cc01-458c-8488-2d05849691e1'... Connected! Subscribing to topic 'device/+/details'... Subscribed with QoS.AT_LEAST_ONCE Waiting for all messages to be received...

    如果您在终端上看到类似的内容,则表示您的设备已准备就绪,并侦听主题名称以 device开始并以结束 /detail的消息。所以,让我们来测试吧。

  3. 以下是您的设备可能会收到的几条消息。

    主题名称

    消息负载

    device/temp/details

    { "desiredTemp": 20, "currentTemp": 15 }

    device/light/details

    { "desiredLight": 100, "currentLight": 50 }

  4. 使用 AWS IoT 控制台中的MQTT测试客户端,将上一步中所述的消息发送到您的设备。

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

    2. Subscribe to topic(订阅主题)中,在 Subscription topic field(订阅主题字段)输入主题筛选条件:device/+/details,然后选择 Subscribe to topic(订阅主题)。

    3. 在MQTT测试客户端的 “订阅” 列中,选择设备/+/详细信息

    4. 对于上表中的每个主题,请在MQTT测试客户端中执行以下操作:

      1. Publish(发布)中,在表中输入 Topic name(主题名称)列的值。

      2. 在主题名称下方的消息负载字段中,在表中输入 Message payload(消息负载)列的值。

      3. 查看pubsub.py正在运行的终端窗口,然后在MQTT测试客户端中选择 “发布到主题”。

      您应该看到该消息是由终端窗口中的 pubsub.py接收的。

练习结果

有了这个,pubsub.py,使用通配符主题筛选条件订阅消息,接收消息并在终端窗口中显示这些消息。请注意您如何订阅单个主题筛选条件,并调用回调函数来处理具有两个不同主题的消息。

处理主题筛选条件订阅

在上一练习的基础上,修改 pubsub.py示例应用程序以评估消息主题并根据主题处理订阅的消息。

练习流程

评估消息主题
  1. pubsub.py复制到 pubsub2.py

  2. pubsub2.py在您最喜欢的文本编辑器中打开或IDE.

  3. pubsub2.py中,查找 on_message_received函数。

  4. on_message_received中,在以 print("Received message开头的行之后和在以 global received_count开头的行之前插入以下代码。

    topic_parsed = False if "/" in topic: parsed_topic = topic.split("/") if len(parsed_topic) == 3: # this topic has the correct format if (parsed_topic[0] == 'device') and (parsed_topic[2] == 'details'): # this is a topic we care about, so check the 2nd element if (parsed_topic[1] == 'temp'): print("Received temperature request: {}".format(payload)) topic_parsed = True if (parsed_topic[1] == 'light'): print("Received light request: {}".format(payload)) topic_parsed = True if not topic_parsed: print("Unrecognized message topic.")
  5. 保存更改并使用此命令行运行修改后的程序。

    python3 pubsub2.py --message "" --count 2 --topic device/+/details --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint
  6. 在 AWS IoT 控制台中,打开MQTT测试客户端

  7. Subscribe to topic(订阅主题)中,在 Subscription topic field(订阅主题字段)输入主题筛选条件:device/+/details,然后选择 Subscribe to topic(订阅主题)。

  8. 在MQTT测试客户端的 “订阅” 列中,选择设备/+/详细信息

  9. 对于此表中的每个主题,请在MQTT测试客户端中执行以下操作:

    主题名称

    消息负载

    device/temp/details

    { "desiredTemp": 20, "currentTemp": 15 }

    device/light/details

    { "desiredLight": 100, "currentLight": 50 }

    1. Publish(发布)中,在表中输入 Topic name(主题名称)列的值。

    2. 在主题名称下方的消息负载字段中,在表中输入 Message payload(消息负载)列的值。

    3. 查看pubsub.py正在运行的终端窗口,然后在MQTT测试客户端中选择 “发布到主题”。

    您应该看到该消息是由终端窗口中的 pubsub.py接收的。

您应在终端窗口中看到类似的内容。

Connecting to a3qexamplesffp-ats.iot.us-west-2.amazonaws.com with client ID 'test-af794be0-7542-45a0-b0af-0b0ea7474517'... Connected! Subscribing to topic 'device/+/details'... Subscribed with QoS.AT_LEAST_ONCE Waiting for all messages to be received... Received message from topic 'device/light/details': b'{ "desiredLight": 100, "currentLight": 50 }' Received light request: b'{ "desiredLight": 100, "currentLight": 50 }' Received message from topic 'device/temp/details': b'{ "desiredTemp": 20, "currentTemp": 15 }' Received temperature request: b'{ "desiredTemp": 20, "currentTemp": 15 }' 2 message(s) received. Disconnecting... Disconnected!

练习结果

在本练习中,您添加了代码,以便示例应用程序能够识别并处理回调函数中的多条消息。有了这个,您的设备便可以接收消息并对它们采取行动。

您的设备接收和处理多条消息的另一种方式是单独订阅不同的消息,并将每个订阅分配给自己的回调函数。

从您的设备发布消息

您可以使用 pubsub.py 示例应用程序从您的设备发布消息。虽然它会按原样发布消息,但不能将消息当作JSON文档读取。本练习修改了示例应用程序,使其能够在消息负载中发布可以读取 AWS IoT Core的JSON文档。

练习流程

在本练习中,以下消息将以 device/data主题发布。

{ "timestamp": 1601048303, "sensorId": 28, "sensorData": [ { "sensorName": "Wind speed", "sensorValue": 34.2211224 } ] }
让您的MQTT测试客户端做好监控本练习中消息的准备
  1. Subscribe to topic(订阅主题)中,在 Subscription topic field(订阅主题字段)输入主题筛选条件:device/data,然后选择 Subscribe to topic(订阅主题)。

  2. 在MQTT测试客户端的 “订阅” 列中,选择 “设备/数据”。

  3. 保持MQTT测试客户端窗口处于打开状态,等待设备发来的消息。

使用 pubsub.py 示例应用程序发送JSON文档
  1. 在您的设备上,将 pubsub.py复制到 pubsub3.py

  2. 编辑 pubsub3.py来更改其所发布消息的格式。

    1. 在文本编辑器中打开 pubsub3.py

    2. 查找此代码行:

      message = "{} [{}]".format(message_string, publish_count)

    3. 将其更改为:

      message = "{}".format(message_string)

    4. 查找此代码行:

      message_json = json.dumps(message)

    5. 将其更改为:

      message = "{}".json.dumps(json.loads(message))

    6. 保存您的更改。

  3. 在您的设备上运行此命令以发送消息两次。

    python3 pubsub3.py --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --topic device/data --count 2 --message '{"timestamp":1601048303,"sensorId":28,"sensorData":[{"sensorName":"Wind speed","sensorValue":34.2211224}]}' --endpoint your-iot-endpoint
  4. 在MQTT测试客户端中,检查它是否已解释并格式化了消息负载中的JSON文档,如下所示:

    该图显示了JSON消息负载在 AWS IoT 控制台MQTT客户端中的显示方式。

预设情况下,pubsub3.py 也会订阅它发送的消息。您应该看到它在应用程序的输出中收到了消息。终端窗口应类似如下所示。

Connecting to a3qEXAMPLEsffp-ats.iot.us-west-2.amazonaws.com with client ID 'test-5cff18ae-1e92-4c38-a9d4-7b9771afc52f'... Connected! Subscribing to topic 'device/data'... Subscribed with QoS.AT_LEAST_ONCE Sending 2 message(s) Publishing message to topic 'device/data': {"timestamp":1601048303,"sensorId":28,"sensorData":[{"sensorName":"Wind speed","sensorValue":34.2211224}]} Received message from topic 'device/data': b'{"timestamp":1601048303,"sensorId":28,"sensorData":[{"sensorName":"Wind speed","sensorValue":34.2211224}]}' Publishing message to topic 'device/data': {"timestamp":1601048303,"sensorId":28,"sensorData":[{"sensorName":"Wind speed","sensorValue":34.2211224}]} Received message from topic 'device/data': b'{"timestamp":1601048303,"sensorId":28,"sensorData":[{"sensorName":"Wind speed","sensorValue":34.2211224}]}' 2 message(s) received. Disconnecting... Disconnected!

练习结果

这样,您的设备就可以生成要发送的消息 AWS IoT Core 以测试基本连接,并提供设备消息 AWS IoT Core 以供处理。例如,您可以使用此应用程序将测试数据从您的设备发送到测试 AWS IoT 规则操作。

查看结果

本教程中的示例让你亲身体验了设备如何与之通信的基础知识, AWS IoT Core这是 AWS IoT 解决方案的基本组成部分。当您的设备能够与之通信时 AWS IoT Core,它们可以将消息传递给 AWS 服务和其他可以操作的设备。同样, AWS 服务和其他设备可以处理信息,从而将消息发送回您的设备。

当您准备好 AWS IoT Core 进一步探索时,请尝试以下教程: