Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Explicación introductoria
En este tutorial, se muestra cómo utilizar la indexación de flotas para indexar los datos de ubicación. Para simplificar, puede crear un elemento que represente su dispositivo y almacenar los datos de ubicación en una sombra con nombre, actualizar la configuración de indexación del objeto para la indexación de ubicaciones y ejecutar geoconsultas de ejemplo para buscar dispositivos dentro de un límite radial.
Para completar este tutorial se necesitan aproximadamente 15 minutos.
En este tema:
Requisitos previos
-
Instale la versión más reciente de. AWS CLI
-
Familiarícese con la indexación de ubicaciones y las geoconsultas, la indexación de elementos y la sintaxis de consultas.
Crea una cosa y una sombra
Creas una cosa para representar tu dispositivo y una sombra con nombre para almacenar sus datos de ubicación (coordenadas 47.61564, -122.33584).
-
Ejecuta el siguiente comando para crear una cosa que represente a tu bicicleta llamada Bike-1. Para obtener más información sobre cómo crear una cosa usando AWS CLI, consulta create-thing from Reference. AWS CLI
aws iot create-thing --thing-name "Bike-1" \ --attribute-payload '{"attributes": {"model":"OEM-2302-12", "battery":"35", "acqDate":"06/09/23"}}'
El resultado de este comando puede tener un aspecto similar al siguiente.
{ "thingName": "Bike-1", "thingArn": "arn:aws:iot:us-east-1:123456789012:thing/Bike-1", "thingId": "df9cf01d-b0c8-48fe-a2e2-e16cff6b23df" }
-
Ejecuta el siguiente comando para crear una sombra con nombre para almacenar los datos de ubicación de Bike-1 (coordenadas 47.61564, -122.33584). Para obtener más información sobre cómo crear una sombra con nombre utilizando, consulte From Reference. AWS CLIupdate-thing-shadowAWS CLI
aws iot-data update-thing-shadow \ --thing-name Bike-1 \ --shadow-name Bike1-shadow \ --cli-binary-format raw-in-base64-out \ --payload '{"state":{"reported":{"coordinates":{"lat": 47.6153, "lon": -122.3333}}}}' \ "output.txt" \
Este comando no proporciona ninguna salida. Para ver la sombra con nombre que creó, puede ejecutar el comando CLI list-named-shadows-for-thing.
aws iot-data list-named-shadows-for-thing --thing-name Bike-1
El resultado de este comando puede tener un aspecto similar al siguiente.
{ "results": [ "Bike1-shadow" ], "timestamp": 1699574309 }
Actualice la configuración de indexación de cosas
Para indexar los datos de ubicación, debe actualizar la configuración de indexación de cosas para incluir los datos de ubicación. Como en este tutorial los datos de ubicación se almacenan en una sombra con nombre, thingIndexingMode
REGISTRY
configúrelos como mínimo, establézcalos namedShadowIndexingMode
para ser ON
y añada tus datos de ubicación a la configuración. En este ejemplo, debes añadir el nombre de la sombra nombrada y la ruta de los datos de ubicación de la sombra afilter
.
-
Ejecute el comando para actualizar la configuración de indexación para la indexación de ubicaciones.
aws iot update-indexing-configuration --cli-input-json '{ "thingIndexingConfiguration": { "thingIndexingMode": "REGISTRY", "thingConnectivityIndexingMode": "OFF", "deviceDefenderIndexingMode": "OFF", "namedShadowIndexingMode": "ON", "filter": { "namedShadowNames": ["Bike1-shadow"], "geoLocations":[{ "name":"shadow.name.Bike1-shadow.reported.coordinates" }] }, "customFields": [ { "name":"attributes.battery", "type":"Number"}] } }'
El comando no genera ninguna salida. Puede que tenga que esperar un momento hasta que se complete la actualización. Para comprobar el estado, ejecute el comando CLI describe-index. Si ves
indexStatus
shows:ACTIVE
, la actualización de indexación está completa. -
Ejecute el comando para verificar la configuración de indexación. Este paso es opcional.
aws iot get-indexing-configuration
El resultado puede tener el siguiente aspecto:
{ "thingIndexingConfiguration": { "thingIndexingMode": "REGISTRY", "thingConnectivityIndexingMode": "OFF", "deviceDefenderIndexingMode": "OFF", "namedShadowIndexingMode": "ON", "managedFields": [ { "name": "shadow.name.*.hasDelta", "type": "Boolean" }, { "name": "registry.version", "type": "Number" }, { "name": "registry.thingTypeName", "type": "String" }, { "name": "registry.thingGroupNames", "type": "String" }, { "name": "shadow.name.*.version", "type": "Number" }, { "name": "thingName", "type": "String" }, { "name": "thingId", "type": "String" } ], "customFields": [ { "name": "attributes.battery", "type": "Number" } ], "filter": { "namedShadowNames": [ "Bike1-shadow" ], "geoLocations": [ { "name": "shadow.name.Bike1-shadow.reported.coordinates", "order": "LatLon" } ] } }, "thingGroupIndexingConfiguration": { "thingGroupIndexingMode": "OFF" } }
Ejecute geoquery
Ahora ha actualizado su configuración de indexación para incluir los datos de ubicación. Intente crear algunas geoconsultas y ejecútelas para ver si puede obtener los resultados de búsqueda deseados. Una geoconsulta debe seguir la sintaxis de consulta. Puede encontrar algunos ejemplos útiles de geoconsultas en. Ejemplo de geoconsultas
En el siguiente comando de ejemplo, utiliza la geoconsulta shadow.name.Bike1-shadow.reported.coordinates:geo_distance,47.6204,-122.3491,15.5km
para buscar dispositivos que se encuentren dentro de una distancia radial de 15,5 km desde el punto central con coordenadas (47.6204, -122.3491).
aws iot search-index --query-string "shadow.name.Bike1-shadow.reported.coordinates:geo_distance,47.6204,-122.3491,15.5km"
Como tiene un dispositivo ubicado en las coordenadas «lat»: 47.6153, «lon»: -122.3333, que se encuentra a una distancia de 15,5 km del punto central, debería poder ver este dispositivo (Bike-1) en la salida. El resultado puede tener el siguiente aspecto:
{ "things": [ { "thingName": "Bike-1", "thingId": "df9cf01d-b0c8-48fe-a2e2-e16cff6b23df", "attributes": { "acqDate": "06/09/23", "battery": "35", "model": "OEM-2302-12" }, "shadow": "{\"reported\":{\"coordinates\":{\"lat\":47.6153,\"lon\":-122.3333}},\"metadata\":{\"reported\":{\"coordinates\":{\"lat\":{\"timestamp\":1699572906},\"lon\":{\"timestamp\":1699572906}}}},\"hasDelta\":false,\"version\":1}" } ] }
Para obtener más información, consulte Indexación de datos de ubicación.