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

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

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

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

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 处理您的设备位置的更多详细信息,请参阅 通过 MQTT 使用 AWS Lambda

先决条件

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

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

  • 创建 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 规则中设置的主题名称,如果不同的话),然后为消息负载提供以下内容。将时间戳 1604940328 替换为最近 30 天内的有效时间戳(Amazon Location Service 跟踪器会忽略任何超过 30 天的时间戳)。

    { "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