本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:使用 AWS IoT设备开发工具包将设备连接到 AWS IoT Core
本教程演示如何将设备连接到 AWS IoT Core,以便它可以与 AWS IoT收发数据。完成本教程后,您的设备将配置为连接到 AWS IoT Core,您将了解设备如何与 AWS IoT通信。
在本教程中,您将:
完成本教程需要大约 1 小时。
在开始本教程之前,请确保您具有:
-
已完成 开始使用 AWS IoT Core
在本教程中,您必须在某部分 配置您的设备,请为您的设备选择 连接 Raspberry Pi 或其他设备选项,然后使用 Python 语言选项来配置设备。
在该教程中使用的终端窗口保持开启,因为您还将在本教程中使用它。
-
可以运行 AWS IoTDevice SDK v2 for Python。
本教程介绍了如何使用 Python 代码示例将设备连接到 AWS IoT Core,这些示例需要一个功能相对强大的设备。
如果您使用的是资源受限的设备,则这些代码示例可能无法适用于这些设备。在这种情况下,您可能会通过 教程:使用 AWS IoT Device SDK for Embedded C教程成功完成更多操作。
为 AWS IoT准备好您的设备。
在 开始使用 AWS IoT Core,您已准备好您的设备以及 AWS账户,所以它们能够进行通信。本部分回顾了准备工作的各个方面,这些方面涉及与 AWS IoT Core进行的任何设备通信。
对于要连接到 AWS IoT Core的设备:
-
您必须具有 AWS 账户。
如果您没有账户,则 设置你的 AWS 账户中的流程将介绍如何创建AWS 账户。
-
在该账户中,您必须具有以下为您在 AWS 账户和区域中的设备定义的 AWS IoT资源。
创建 AWS IoT 资源 中的流程介绍了如何为您的 AWS 账户和区域中的设备创建这些资源。
-
使用 AWS IoT注册并激活以验证设备的设备证书。
该证书通常使用 AWS IoT事物对象创建并随附其上。虽然设备不需要某个事物对象才能连接到 AWS IoT,但它会使设备获得额外的 AWS IoT功能。
-
附加到设备证书的策略,该证书授权其连接到 AWS IoT Core并执行您希望它执行的所有操作。
-
-
能够访问您的 AWS 账户的设备端点的互联网连接。
设备端点在 AWS IoT 设备数据和服务端点中描述,并且可以在 AWS IoT控制台中的设置页面
看到。 -
诸如 AWS IoTDevice SDK 提供的通信软件。本教程使用 AWS IoT Device SDK v2 for Python
。
查看 MQTT 协议
在我们讨论示例应用程序之前,它能有助于了解 MQTT 协议。与其它网络通信协议(如 HTTP)相比,MQTT 协议具有一些优势,这使得它成为了 IoT 设备的常用选择。本部分回顾的是适用于本教程的 MQTT 的主要方面。有关如何将 MQTT 与 HTTP 进行比较的信息,请参阅 为设备通信选择协议。
MQTT 使用发布/订阅通信模型
MQTT 协议在其主机上使用发布/订阅通信模式。此模式与 HTTP 使用的请求/响应模式不同。借助 MQTT,设备可以与由唯一客户端 ID 标识的主机建立会话。要发送数据,设备会将主题标识的消息发布到主机中的消息代理上。要接收来自消息代理的消息,设备通过在订阅请求中向消息代理发送主题筛选条件,来订阅主题。
MQTT 支持持久性会话
消息代理接收来自设备的消息,并将消息发布到已订阅消息的设备。借助持久性会话(即使在初始设备断开连接时,仍能保持活动状态的会话),设备可以检索在断开连接时发布的消息。在设备端,MQTT 支持服务质量级别(QoS),以确保主机接收设备发送的消息。
查看 pubsub.py Device SDK 示例应用程序
本部分将回顾本教程中适用的来自 AWS IoTDevice SDK v2 for Python 中的 pubsub.py
示例应用程序。在这里,我们将回顾它如何连接到 AWS IoT Core来发布和订阅 MQTT 消息。下一部分介绍了一些练习,帮助您了解设备如何与 AWS IoT Core连接及通信。
通信协议
pubsub.py
示例演示了使用 MQTT 和 MQTT over WSS 协议进行的 MQTT 连接。AWS 通用运行时 (AWS CRT)
MQTT
pubsub.py
示例在 mqtt_connection_builder
mtls_from_path
(此处显示)以使用 MQTT 协议建立与 AWS IoT Core 的连接。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 账户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
在 AWS 区域中唯一标识此设备的 ID
在示例应用程序中,此值将从命令行传入。
clean_session
启动新的持久会话,或者(如果会话已存在)重新连接到现有会话
keep_alive_secs
保持活动状态值(以秒为单位),在
CONNECT
请求中发送。在此时间间隔内将自动发送 ping。如果服务器在此值的 1.5 倍之后没有收到 ping,假定连接丢失。
基于 WSS 的 MQTT
pubsub.py
示例在 mqtt_connection_builder
websockets_with_default_aws_signing
(此处显示)以使用借助 WSS 的 MQTT 协议建立与 AWS 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.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 账户IoT 设备端点
在示例应用程序中,此值将从命令行传入。
client_bootstrap
处理套接字通信活动的通用运行时对象
在示例应用程序中,此对象会在调用
mqtt_connection_builder.websockets_with_default_aws_signing
前实例化。region
Signature V4 身份验证使用的 AWS签名区域。在
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 请求的设备。从编程的角度来看,设备会像其它应用程序一样将 HTTPS 请求发送到 AWS IoT Core。有关从设备发送 HTTP 消息的 Python 程序示例,请参阅使用 Python 的 requests
库的 HTTPS 代码示例。本示例将使用 HTTPS 将消息发送到 AWS IoT Core,以便 AWS IoT Core将其解释为 MQTT 消息。
尽管 AWS IoT Core支持来自设备的 HTTPS 请求,请务必查看 为设备通信选择协议的消息,以便您可以对要使用哪种协议进行设备通信做出明智决定。
持久会话
在示例应用程序中,将 clean_session
参数设置为 False
即表示连接应该是持久连接。实际上,这意味着此调用打开的连接将重新连接到现有持久会话(如果存在)。否则,它会创建并连接到新的持久会话。
对于持久会话,如果设备未连接,则发送到设备的消息将由消息代理存储。当设备重新连接到持久会话时,消息代理会向设备发送它已订阅的所有已存储的消息。
如果没有持久会话,设备将不会接收设备未连接时发送的消息。使用哪个选项取决于您的应用程序,以及是否必须传达设备未连接时发生的消息。有关更多信息,请参阅 MQTT 持久性会话。
服务质量
当设备发布和订阅消息时,可以设置首选的服务质量 (QoS)。AWS IoT 支持用于发布和订阅操作的 QoS 级别 0 和 1。有关 AWS IoT中 QoS 级别的更多信息,请参阅 MQTT 服务质量 (QoS) 选项。
适用于 Python 的 AWSCRT 运行时为其支持的 QoS 级别定义了这些常量:
Python QoS 级别 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
MQTT QoS 级别 | SDK 使用的 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
响应。
消息发布
成功建立同 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服务只能识别 JSON 和 CBOR。
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 测试客户端pubsub.py
在本部分中,您将:
对于这些练习,您将从 pubsub.py
示例程序开始操作。
注意
这些练习假定您已完成 开始使用 AWS IoT Core教程并使用该教程中的设备终端窗口。
订阅通配符主题筛选条件
在本练习中,您将修改用于调用 pubsub.py
的命令行以订阅通配符主题筛选条件,并根据消息主题处理收到的消息。
练习流程
在本练习中,假设您的设备包含温度控制和光控。它使用这些主题名称来标识有关的消息。
-
在开始练习之前,请尝试根据 开始使用 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
您看到的输出应该与您在入门教程看到的一样。
-
在本练习中,请更改这些命令行参数。
操作
命令行参数
效果
添加
--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
的消息。所以,让我们来测试吧。 -
以下是您的设备可能会收到的几条消息。
主题名称
消息负载
device/temp/details
{ "desiredTemp": 20, "currentTemp": 15 }
device/light/details
{ "desiredLight": 100, "currentLight": 50 }
-
在 AWS IoT控制台中使用 MQTT 测试客户端,将上一步中描述的消息发送到您的设备。
-
在 AWS IoT控制台中打开 MQTT 测试客户端
。 -
在 Subscribe to topic(订阅主题)中,在 Subscription topic field(订阅主题字段)输入主题筛选条件:
device/+/details
,然后选择 Subscribe to topic(订阅主题)。 -
在 MQTT 测试客户端中的 Subscriptions(订阅)列中,选择device/+/details。
-
对于上表中的每个主题,请在 MQTT 测试客户端中执行以下操作:
-
在 Publish(发布)中,在表中输入 Topic name(主题名称)列的值。
-
在主题名称下方的消息负载字段中,在表中输入 Message payload(消息负载)列的值。
-
观看
pubsub.py
运行所在的终端窗口,并在 MQTT 测试客户端中选择 Publish to topic(发布到主题)。
您应该看到该消息是由终端窗口中的
pubsub.py
接收的。 -
-
练习结果
有了这个,pubsub.py
,使用通配符主题筛选条件订阅消息,接收消息并在终端窗口中显示这些消息。请注意您如何订阅单个主题筛选条件,并调用回调函数来处理具有两个不同主题的消息。
处理主题筛选条件订阅
在上一练习的基础上,修改 pubsub.py
示例应用程序以评估消息主题并根据主题处理订阅的消息。
练习流程
评估消息主题
-
将
pubsub.py
复制到pubsub2.py
。 -
在您常用的文本编辑器或 IDE 中打开
pubsub2.py
。 -
在
pubsub2.py
中,查找on_message_received
函数。 -
在
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.")
-
保存更改并使用此命令行运行修改后的程序。
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
-
在 AWS IoT控制台中打开 MQTT 测试客户端
。 -
在 Subscribe to topic(订阅主题)中,在 Subscription topic field(订阅主题字段)输入主题筛选条件:
device/+/details
,然后选择 Subscribe to topic(订阅主题)。 -
在 MQTT 测试客户端中的 Subscriptions(订阅)列中,选择device/+/details。
-
对于此表中的每个主题,请在 MQTT 测试客户端中执行以下操作:
主题名称
消息负载
device/temp/details
{ "desiredTemp": 20, "currentTemp": 15 }
device/light/details
{ "desiredLight": 100, "currentLight": 50 }
-
在 Publish(发布)中,在表中输入 Topic name(主题名称)列的值。
-
在主题名称下方的消息负载字段中,在表中输入 Message payload(消息负载)列的值。
-
观看
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 文档读取。本练习修改了示例应用程序,以便能够在可以被 AWS IoT Core读取的消息负载中发布 JSON 文档。
练习流程
在本练习中,以下消息将以 device/data
主题发布。
{ "timestamp": 1601048303, "sensorId": 28, "sensorData": [ { "sensorName": "Wind speed", "sensorValue": 34.2211224 } ] }
准备 MQTT 测试客户端以监控本练习中的消息
-
在 Subscribe to topic(订阅主题)中,在 Subscription topic field(订阅主题字段)输入主题筛选条件:
device/data
,然后选择 Subscribe to topic(订阅主题)。 -
在 Subscriptions(订阅)列中,选择 device/data(设备/数据)。
-
将 MQTT 测试客户端窗口保持打开状态,等待来自设备的消息。
使用 pubsub.py 示例应用程序发送 JSON 文档
-
在您的设备上,将
pubsub.py
复制到pubsub3.py
。 -
编辑
pubsub3.py
来更改其所发布消息的格式。-
在文本编辑器中打开
pubsub3.py
。 -
查找此代码行:
message = "{} [{}]".format(message_string, publish_count)
-
将其更改为:
message = "{}".format(message_string)
-
查找此代码行:
message_json = json.dumps(message)
-
将其更改为:
message = "{}".json.dumps(json.loads(message))
-
保存您的更改。
-
-
在您的设备上运行此命令以发送消息两次。
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
-
在 MQTT 测试客户端中,检查它是否已解释并格式化了消息负载中的 JSON 文档,如下所示:
预设情况下,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,请尝试以下教程: