通过 Amazon Location Service 使用 AWS IoT 和 MQTT 进行跟踪 - Amazon Location Service

通过 Amazon Location Service 使用 AWS IoT 和 MQTT 进行跟踪

MQTT 是一种轻量级且被广泛采用的消息传递协议,专为受限的设备而设计。AWS IoT Core 支持使用 MQTT 协议和基于 WebSocket Secure (WSS) 的 MQTT 协议的设备连接。

AWS IoT Core 将设备连接到设备 AWS 并使您能够在它们之间发送和接收消息。AWS IoT Core 规则引擎存储有关设备消息主题的查询,并允许您定义向其他 AWS 服务(例如 Amazon Location Service)发送消息的操作。知道自己位置为坐标的设备可以通过规则引擎将其位置转发到 Amazon Location 。

注意

设备可能知道自己的位置,例如通过内置 GPS。AWS IoT 还支持第三方设备位置跟踪。想要了解更多信息,请参阅 AWS IoT Core 开发人员指南中的 AWS IoT Core Device Location

以下演练介绍了使用 AWS IoT Core 规则进行跟踪。如果您需要在将设备信息发送到 Amazon Location 之前对其进行处理,也可以将设备信息发送到您自己的 AWS Lambda 函数。有关使用 Lambda 处理您的设备位置的更多详细信息,请参阅 教程:将 AWS Lambda 与 MQTT 配合使用

先决条件

在您开始跟踪之前,您必须完成以下前提条件:

  • 创建跟踪器资源,将设备位置数据发送到该资源。

  • 创建 IAM 角色以授予对跟踪器的 AWS IoT Core 访问权限。

    执行这些步骤时,请使用以下策略授予对您的跟踪器的访问权限:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "WriteDevicePosition", "Effect": "Allow", "Action": "geo:BatchUpdateDevicePosition", "Resource": "arn:aws:geo:*:*:tracker/*" } ] }

创建 AWS IoT Core 规则

接下来,创建一条 AWS IoT Core 规则,将设备的位置遥测数据转发给 Amazon Location Service。有关创建规则的更多信息,请参阅 AWS IoT Core 开发人员指南中的以下主题:

教程:在控制台中测试 AWS IoT Core 规则

如果当前没有设备发布包含位置的遥测数据,则可以使用 AWS IoT Core 控制台测试规则。控制台有一个测试客户端,您可以在其中发布一条示例消息来验证解决方案的结果。

  1. 通过以下网址登录到 AWS IoT Core 控制台:https://console.aws.amazon.com/iot/

  2. 在左侧导航窗格中,展开测试,然后选择 MQTT 测试客户端

  3. 发布到主题下,将主题名称设置为 iot/topic(或设置为您在 AWS IoT Core 规则中设置的主题名称,如果不同的话),然后为消息负载提供以下内容。

    { "payload": { "deviceid": "thing123", "timestamp": 1604940328, "location": { "lat": 49.2819, "long": -123.1187 }, "accuracy": { "Horizontal": 20.5 }, "positionProperties": { "field1": "value1", "field2": "value2" } } }
  4. 选择发布到主题来发送测试消息。

  5. 要验证 Amazon Location Service 是否已收到该消息,请使用以下 AWS CLI 命令。如果您在设置过程中对其进行了修改,请将跟踪器名称替换为您使用的名称。

    aws location batch-get-device-position --tracker-name MyTracker --device-ids thing123