Explicación introductoria - AWS IoT Core

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.

Requisitos previos

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).

  1. 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" }
  2. 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.

  1. 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.

  2. 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.