使用 Amazon IoT 设备软件开发工具包将设备连接到 Amazon IoT Core - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用 Amazon IoT 设备软件开发工具包将设备连接到 Amazon IoT Core

本教程演示如何将设备连接到 Amazon IoT Core ,以便它可以与 Amazon IoT 收发数据。完成本教程后,您的设备将配置为连接到 Amazon IoT Core ,您将了解设备如何与 Amazon IoT 通信。

在本教程中,您将:

完成本教程需要大约 1 小时。

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

  • 已完成 Amazon IoT Core 入门

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

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

  • 可以运行 Amazon IoT Python 设备软件开发工具包 v2 的设备。

    本教程介绍如何使用 Python 代码示例将设备连接到 Amazon IoT Core ,这些代码需要相对强大的设备,就像 IoT 和嵌入式设备一样。

    如果您使用的是资源受限的设备,则这些代码示例可能无法适用于这些设备。在这种情况下,您可能会通过 使用 Amazon IoT Device SDK for Embedded C 教程成功完成更多操作。

为 Amazon IoT 准备好您的设备。

Amazon IoT Core 入门,您已准备好您的设备以及 Amazon 账户,所以它们能够进行通信。本部分回顾了准备工作的各个方面,这些方面涉及与 Amazon IoT Core 进行的任何设备通信。

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

  1. 您必须具有 Amazon Web Services 账户

    如果您没有账户,则 设置您的 Amazon Web Services 账户 中的流程将介绍如何创建 Amazon Web Services 账户 。

  2. 在该账户中,您必须具有以下为您在 Amazon Web Services 账户 和区域中的设备定义的 Amazon IoT 资源

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

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

      该证书通常使用 Amazon IoT 事物对象创建并随附其上。虽然设备不需要某个事物对象才能连接到 Amazon IoT,但它会使设备获得额外的 Amazon IoT 功能。

    • 附加到设备证书的策略,该证书授权其连接到 Amazon IoT Core 并执行您希望它执行的所有操作。

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

    设备端点在 Amazon IoT 设备数据和服务终端节点 中描述,并且可以在 Amazon IoT 控制台中的设置页面看到。

  4. 诸如 Amazon IoT 设备开发工具包提供的通信软件。本教程使用适用于 Python 的 Amazon IoT 设备软件开发工具包 v2

查看 MQTT 协议

在我们讨论示例应用程序之前,它能有助于了解 MQTT 协议。与其他网络通信协议(如 HTTP)相比,MQTT 协议具有一些优势,这使得它成为了 IoT 设备的常用选择。本部分回顾了适用于本教程的 MQTT 的主要方面。有关如何将 MQTT 与 HTTP 进行比较的信息,请参阅 为设备通信选择协议

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

MQTT 协议在其主机上使用发布/订阅通信模式。此模式与 HTTP 使用的请求/响应模式不同。借助 MQTT,设备可以与由唯一客户端 ID 标识的主机建立会话。要发送数据,设备会将主题标识的消息发布到主机中的消息代理。要接收来自消息代理的消息,设备通过在订阅请求中向消息代理发送主题筛选条件来订阅其将接收的主题。

MQTT 支持持久性会话

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

查看 pubsub.py 设备软件开发工具包示例应用程序

本部分将回顾本教程中适用的来自适用于 Python 的 Amazon IoT 设备软件开发工具包 v2中的 pubsub.py 示例应用程序。在这里,我们将回顾它如何连接到 Amazon IoT Core 来发布和订阅 MQTT 消息。下一部分介绍了一些练习,帮助您了解设备如何与 Amazon IoT Core 连接及通信。

pubsub.py 示例应用程序演示了 MQTT 与 Amazon IoT Core 连接的各个方面:

通信协议

pubsub.py 示例演示了使用 MQTT 和 MQTT over WSS 协议进行的 MQTT 连接。Amazon 通用运行时 (Amazon CRT) 库提供低级通信协议支持,并包含在适用于 Python 的 Amazon IoT 设备软件开发工具包 v2 中。

MQTT

pubsub.py 示例在 mqtt_connection_builder 中调用 mtls_from_path(此处显示)以使用 MQTT 协议建立与 Amazon IoT Core 的连接。mtls_from_path 使用 X.509 证书和 TLS v1.2 对设备进行身份验证。Amazon CRT 库处理该连接的较低级别的详细信息。

mqtt_connection = mqtt_connection_builder.mtls_from_path( endpoint=args.endpoint, cert_filepath=args.cert, pri_key_filepath=args.key, ca_filepath=args.root_ca, 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

您的 Amazon Web Services 账户 IoT 设备端点

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

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

在 Amazon Web Services 区域 中唯一标识此设备的 ID

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

clean_session

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

keep_alive_secs

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

基于 WSS 的 MQTT

pubsub.pymqtt_connection_builder 中调用示例 websockets_with_default_aws_signing(此处显示)以使用借助 WSS 的 MQTT 协议建立与 Amazon IoT Core 的连接。websockets_with_default_aws_signing 使用 Signature V4 使用借助 WSS 的 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.root_ca, 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

您的 Amazon Web Services 账户 IoT 设备端点

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

client_bootstrap

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

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

region

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

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

credentials_provider

Amazon 提供用于身份验证的凭据

在示例应用程序中,此对象会在调用 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

在 Amazon Web Services 区域 中唯一标识此设备的 ID。

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

clean_session

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

keep_alive_secs

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

HTTPS

HTTPS 怎么样? Amazon IoT Core 支持发布 HTTPS 请求的设备。从编程的角度来看,设备会像其他应用程序一样将 HTTPS 请求发送到 Amazon IoT Core 。有关从设备发送 HTTP 消息的 Python 程序示例,请参阅使用 Python 的 requests 库的 HTTPS 代码示例。本示例将使用 HTTPS 将消息发送到 Amazon IoT Core ,以便 Amazon IoT Core 将其解释为 MQTT 消息。

尽管 Amazon IoT Core 支持来自设备的 HTTPS 请求,请务必查看 为设备通信选择协议 的消息,以便您可以对要使用哪种协议进行设备通信做出明智决定。

持久会话

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

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

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

服务质量

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

适用于 Python 的 Amazon CRT 运行时为其支持的 QoS 级别定义了这些常量:

Python QoS 级别
MQTT QoS 级别 软件开发工具包使用的 Python 符号值 说明
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 响应。

消息发布

成功建立同 Amazon 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 文档是一种常见的负载格式,并且由其他 Amazon IoT 服务所认可;但是,消息负载的数据格式可以是发布者和订阅者同意的任何内容。但在某些情况下,对于大多数操作来说,其他 Amazon IoT 服务只能识别 JSON 和 CBOR。

qos

此消息的 QoS 级别

消息订阅

从 Amazon 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 示例包括在设备断开连接和重新建立连接时调用的回调函数。您的设备对这些事件采取的操作是特定于应用程序的。

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

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

连接设备并与 Amazon IoT Core 通信

本部分介绍了一些练习,可帮助您探索将设备连接到 Amazon IoT Core 的不同方面。在这些练习中,您将使用 Amazon IoT 控制台中的 MQTT 测试客户端查看您的设备发布的内容,并将消息发布到您的设备。这些练习使用来自适用于 Python 的 Amazon IoT 设备软件开发工具包 v2pubsub.py 示例并根据您在 Amazon IoT Core 入门 教程中的经验构建。

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

注意

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

订阅通配符主题筛选条件

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

练习流程

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

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

    cd ~/aws-iot-device-sdk-python-v2/samples python3 pubsub.py --topic topic_1 --root-ca ~/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 --root-ca ~/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...

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

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

    主题名称

    消息负载

    device/temp/details

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

    device/light/details

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

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

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

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

    3. 在 MQTT 测试客户端中的 Subscriptions(订阅)列中,选择device/+/details

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

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

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

      3. 观看 pubsub.py 运行所在的终端窗口,并在 MQTT 测试客户端中选择 Publish to topic(发布到主题)。

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

练习结果

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

处理主题筛选条件订阅

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

练习流程

评估消息主题

  1. pubsub.py 复制到 pubsub2.py

  2. 在您常用的文本编辑器或 IDE 中打开 pubsub2.py

  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 --root-ca ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key —endpoint your-iot-endpoint
  6. 在 Amazon IoT 控制台中打开 MQTT 测试客户端

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

  8. 在 MQTT 测试客户端中的 Subscriptions(订阅)列中,选择device/+/details

  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 测试客户端中选择 Publish to topic(发布到主题)。

    您应该看到该消息是由终端窗口中的 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 文档读取。本练习修改了示例应用程序,以便能够在可以被 Amazon 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. Subscriptions(订阅)列中,选择 device/data(设备/数据)。

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

使用 pubsub.py 示例应用程序发送 JSON 文档

  1. 在您的设备上,将 pubsub.py 复制到 pubsub3.py

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

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

    2. 查找此代码行:

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

    3. 将其更改为:

      message = "{}".format(args.message)

    4. 保存您的更改。

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

    python3 pubsub3.py --root-ca ~/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 消息负载如何在 Amazon IoT 控制台中的 MQTT 客户端显示。

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

Connecting to a3qj468xinsffp-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!

练习结果

有了这个,您的设备可以生成要发送到 Amazon IoT Core 的消息以测试基本连通性并提供 Amazon IoT Core 来处理的设备消息。例如,您可以使用此应用程序从您的设备发送测试数据以测试 Amazon IoT 规则操作。

查看结果

本教程中的示例为您提供了有关设备如何与 Amazon IoT Core (这是 Amazon IoT 解决方案的一个基础部分)通信的基础知识实践经验。当您的设备能够与 Amazon IoT Core 通信时,他们可以将消息传递给Amazon服务及其可以执行操作的其他设备。同样,Amazon 服务和其他设备可以处理消息发回到您的设备所产生的信息。

如果您准备好进一步探索 Amazon IoT Core ,请尝试以下教程: