如何开始使用新的 AWS IoT Core 设备定位服务 官方博客

入门新 AWS IoT Core 设备位置服务

关键要点

新的 AWS IoT Core 设备位置功能允许 IoT 设备在不依赖 GPS 硬件的情况下检索和报告其当前位置。该功能结合云辅助全球导航卫星系统GNSS、WiFi 扫描、蜂窝三角测量和反向 IP 查找等技术来确定设备位置。本文将指导您如何使用 AWS IoT Core 设备位置服务,并提供实施步骤。

介绍

新的 AWS IoT Core 设备位置功能 使得物联网IoT设备可以在不依赖 GPS 硬件的情况下获取和报告其当前的位置。连接到 AWS IoT Core 的设备和客户端可以利用云辅助的 全球导航卫星系统 (GNSS)、WiFi 扫描、蜂窝三角测量和反向 IP 查找等技术来获取 GPS 坐标和总体位置。

对于许多 IoT 应用而言,地理位置信息和位置跟踪都是必需的功能。在物流和汽车等领域,没有这些数据就无法取得显著成果。过去,地理定位监测依赖于特定的硬件,如 GPS 模块。如果设备没有 GPS 硬件,添加或升级现有设备可能会在规模上产生高昂的成本,或者不具可行性。此外,即便设备内置 GPS 硬件,也无法保证它们始终能够连接到 GPS 卫星以获取和报告坐标。

在本文中,我们将展示如何开始使用 AWS IoT Core 设备位置服务。我们将详细介绍在使用该功能之前可以采取的步骤,并演示如何根据设备的IP地址来 解析设备位置。

前提条件

要按照本文进行操作,您需要一个 AWS 账户,选择一个 支持 AWS IoT Core 的区域,同时应具备创建 AWS IoT 规则、 AWS Lambda 函数、 AWS 身份与访问管理 (IAM) 角色和策略 的权限,以及访问 AWS CloudShell 的权限。此外,我们假设您对 Linux bash 命令的基础知识有所了解。

操作步骤

步骤 1:创建 AWS Lambda 执行角色和策略

在您的 AWS CloudShell 环境中执行以下命令:

创建即将使用的环境变量

bashexport ACCOUNTID=lt替换为您的账户 IDgtexport REGION=lt替换为您的区域gt

使用 createrole 命令创建 Lambda 函数的 IAM 执行角色

bashaws iam createrole rolename lambdaexipAddressToDeviceLocationService assumerolepolicydocument { Version 20121017 Statement [ { Effect Allow Principal { Service lambdaamazonawscom } Action stsAssumeRole } ]}

创建角色的权限策略文档,运行以下命令

bash( jq n arg region REGION arg accountid ACCOUNTID { Version 20121017 Statement [ { Effect Allow Action iotwirelessGetPositionEstimate Resource } { Effect Allow Action [ logsCreateLogGroup iotPublish ] Resource [ arnawslogs(region)(accountid) arnawsiot(region)(accountid)topic/device/test1/location/ipbased/response ] } { Effect Allow Action [ logsCreateLogStream logsPutLogEvents ] Resource arnawslogs(region)(accountid)loggroup/aws/lambda/ipAddressToDeviceLocationService } ] } ) gt lambdapolicyjson

使用 putrolepolicy 命令将该策略附加到角色上

bashaws iam putrolepolicy rolename lambdaexipAddressToDeviceLocationService policyname lambdaexipAddressToDeviceLocationServicepolicy policydocument file//lambdapolicyjson

使用 getrolepolicy 命令检查策略是否成功附加

bashaws iam getrolepolicy rolename lambdaexipAddressToDeviceLocationService policyname lambdaexipAddressToDeviceLocationServicepolicy

飞鸟加速器使用方法

步骤 2:创建 Lambda 函数

在您的 AWS CloudShell 环境中执行以下命令:

我们的 Lambda 函数依赖于 AWS SDK for Python (Boto3) SDK,同时新的 GetPositionEstimate API 在版本 12645 或更高 版本中得到支持。为了创建一个带有最新 Boto3 版本的 Lambda 函数,我们将创建和发布一个 Lambda 层。

使用以下命令实现 Lambda 层

bashLIBDIR=boto3mylayer/pythonmkdir p LIBDIR

可能需要运行此命令2或3次以自动解析

pip3 install boto3 t LIBDIR

cd boto3mylayer zip r /tmp/boto3mylayerzip

LAYER=(aws lambda publishlayerversion layername boto3mylayer zipfile fileb///tmp/boto3mylayerzip)

LAYERARN=(jq r LayerVersionArn ltltlt LAYER)

使用以下命令来创建 Lambda 函数部署包

bashcd /home/cloudshellusertouch lambdafunctionpy

cat gt lambdafunctionpy ltltEOFimport json boto3from datetime import datetimeiotwirelessclient = boto3client(iotwireless)iotdataclient = boto3client(iotdata)

def lambdahandler(event context)

iotwirelessresponse = iotwirelessclientgetpositionestimate(Ip={ IpAddress event[ipAddress]} Timestamp=datetimenow())print(fIoT Wireless Response {iotwirelessresponse})iotdataresponse = iotdataclientpublish(    topic=device/test1/location/ipbased/response    qos=0    payload=jsondumps({locationjsonloads(iotwirelessresponse[GeoJsonPayload]read())})    )print(fIoT Data Response {iotdataresponse})

EOF

zip r lambdafunctionzip lambdafunctionpy

使用下面的命令创建 Lambda 函数并将 Boto3 Lambda 层添加到其中

bashLAMBDAFUNCTION=(aws lambda createfunction functionname ipAddressToDeviceLocationServiceFunction zipfile fileb//lambdafunctionzip handler lambdafunctionlambdahandler runtime python39 role arnawsiamACCOUNTIDrole/lambdaexipAddressToDeviceLocationService)

LAMBDAARN=(jq r FunctionArn ltltlt LAMBDAFUNCTION)

aws lambda updatefunctionconfiguration functionname ipAddressToDeviceLocationServiceFunction layers LAYERARN

使用 addpermission 命令允许 AWS IoT Core 调用 Lambda 函数

bashaws lambda addpermission functionname ipAddressToDeviceLocationServiceFunction statementid iotevents action lambdaInvokeFunction principal iotamazonawscom

步骤 3:创建 AWS IoT 规则

您将创建一个 AWS IoT 规则,使用以下命令在 AWS CloudShell 会话中完成:

使用 createtopicrule 命令创建规则

bash( jq n arg lambdaarn LAMBDAARN { sql SELECT FROM device//location/ipbased ruleDisabled false awsIotSqlVersion 20160323 actions [{ lambda { functionArn (lambdaarn) } }]} ) gt iotruledocumentjson

aws iot createtopicrule rulename ipaddresstodevicelocationservice topicrulepayload file//iotruledocumentjson

步骤 4:使用 AWS IoT MQTT 客户端查看设备位置

要在 MQTT 客户端中查看 MQTT 消息,请执行以下操作:

在 AWS IoT 控制台,在左侧菜单中,选择测试选项下的 MQTT 测试客户端。在 订阅主题 标签中,输入主题 device/test1/location/ipbased/response,然后选择订阅!

要向 MQTT 主题发布消息,请执行以下操作:

在 发布到主题 标签中,输入主题 device/test1/location/ipbased,然后输入以下 JSON 作为消息负载:{ ipAddress lt替换为公网 IP 地址gt }点击 发布 以发布您的消息

发布请求的输出应该类似于以下内容:

json{ location { coordinates [ 经度 纬度 ] type Point properties { country United States city New York postalCode horizontalAccuracy 20 horizontalConfidenceLevel 067 state New York timestamp 20230104T205913024Z } }}

清理资源

请确保删除本博客中创建的资源,以避免产生费用。运行以下命令以删除这些资源:

aws iot deletetopicrule rulename ipaddresstodevicelocationserviceaws lambda deletefunction functionname ipAddressToDeviceLocationServiceFunctionaws iam deleterolepolicy rolename lambdaexipAddressToDeviceLocationService policyname lambdaexipAddressToDeviceLocationServicepolicyaws iam deleterole rolename lambdaexipAddressToDeviceLocationService

结论

在本篇文章中,您学习了如何开始使用新的 AWS IoT Core 设备位置功能,了解使用该功能前的关键步骤,以及如何根据设备的 IP 地址 解析设备位置。除了使用此功能解析设备位置外,您还可以利用 Amazon Location Service 在地图上跟踪 设备的位置。想要深入了解 AWS IoT Core 设备位置功能开发的信息,请查阅 开发者指南,并观看 通过 AWS IoT 规则引擎将地理坐标从 IoT 设备发送到 Amazon Location Service 的视频。如果您的应用使用 AWS IoT Core 进行 LoRaWAN 请参考此博客以获取更多信息, 介绍新的 AWS IoT Core 设备位置功能以支持资产追踪解决方案。

关于作者

Yuri Chamarelli 是美国的亚马逊网络服务解决方案架构师 (AWS)。作为 IoT 专家,他专注于帮助客户构建 AWS IoT 解决方案,并实现他们的商业目标。Yuri 是一名控制工程师,在 IT/OT 系统方面拥有超过 10 年的经验,并在多个行业中帮助过多个客户实施工业转型和工业自动化项目。

如何开始使用新的 AWS IoT Core 设备定位服务 官方博客

Nicholas Switzer 是亚马逊网络服务的 IoT 专家解决方案架构师。他于2022年加入AWS,专注于物联网和边缘计算领域,并与连接产品领域的客户开展合作。他目前在美国工作,喜欢构建改善日常生活的智能产品。

在 Amazon Bedrock 中使用 ApplyGuardrail API 处理长上下文输入和流

使用 ApplyGuardrail API 处理长上下文输入和流输出关键要点应用保护框架Guardrails是确保生成式人工智能AI应用程序进行负责任的内容生成的关键步骤。通过使用亚马逊 Bedroc...

将身份提供商IdP与 Amazon Redshift Query Editor V2 和 SQL

将身份提供商 (IdP) 集成到 Amazon Redshift 查询编辑器 V2 和 SQL 客户端中,使用 AWS IAM 身份中心实现无缝单点登录由 Maneesh Sharma Harshid...