Ir al contenido principal
Todas las coleccionesGuías de desarrollador
UbiFunctions: Integra la API de Geolocalización de Google con Ubidots
UbiFunctions: Integra la API de Geolocalización de Google con Ubidots

Aprende a integrar la API de Geolocalización de Google con Ubidots utilizando UbiFunctions.

Sergio M avatar
Escrito por Sergio M
Actualizado hace más de 3 meses

Google ofrece un amplio catálogo de API's para desarrolladores, cada una enfocándose en diferentes problemas que vale la pena resolver. Una de estas APIs es la API de Geolocalización, que devuelve una geolocalización aproximada, basada en IDs de torres celulares o routers WiFi. En la era del IoT, este servicio de API ha ganado importancia porque elimina la necesidad de un chip GPS en tu dispositivo, que en su lugar “detecta” las señales de celda o WiFi circundantes para determinar su ubicación.

En este tutorial, demostraremos cómo configurar un Parser para hacer una solicitud a la API de Google, procesar los datos de ubicación de la torre y publicar la variable de posición final de vuelta en Ubidots.

Así que, comencemos:

Requisitos

Paso a Paso

  1. Configuración de la Plataforma de Google Maps

  2. Configuración de UbiFunction

  3. Verificación del Flujo de Datos

  4. Resultados

1. Configuración de la Plataforma de Google Maps

1. Primero ve a Plataforma de Google Maps, luego en la esquina superior derecha haz clic en "INICIAR SESIÓN" para iniciar sesión en tu cuenta de Google.

2. Haz clic en "COMENZAR" para agregar productos a tus cuentas de Google.

3. Aparecerá una ventana emergente, selecciona "Lugares", esto incluye la API de Geolocalización. Luego haz clic en "CONTINUAR".

4. A continuación, asigna un nombre a tu proyecto, en este caso "Ubidots". Luego, selecciona "Sí" una vez que hayas leído y aceptado los términos del servicio.

5. Serás redirigido a crear una cuenta de facturación para este proyecto, haz clic en "CREAR CUENTA DE FACTURACIÓN" para continuar.

6. Una vez que hayas ingresado la información de facturación adecuada, haz clic en "Iniciar mi prueba gratuita".

Después de completar el registro con la Plataforma de Google Maps, podrás obtener una API Key, que se utilizará para autenticar cada solicitud de API.

7. Con una cuenta activa de la Plataforma de Google Maps, tendrás acceso a una API Key. Para localizar la API Key de tu cuenta, ve a la sección "Credenciales" en tu Consola de APIs de Google.

2. Configuración de UbiFunction

1. Con la API Key en archivo, ve a tu cuenta de Ubidots, luego accede a UbiFunction seleccionando Datos –> Funciones.

2. A continuación, crea una nueva Función haciendo clic en el "+" azul en la parte superior derecha de tu interfaz de usuario.

3. Nombra la nueva Función como desees y asigna el método de comunicación POST. En este caso, la llamamos "Geolocalización".

Nota: Como probablemente has visto, se creó un endpoint, lo que significa que la función se creó con éxito.

4. Luego haz clic en "Hacerlo en vivo" para finalizar la creación de la función

5. El código de muestra de UbiFunction a continuación hará una solicitud a la API de Geolocalización de Google utilizando un mensaje JSON de torres celulares recopilado de un dispositivo en movimiento, a saber:

  • ID de Torre Celular: Un número único para identificar una estación base de transceptor.

  • Código de Área de Ubicación: Un conjunto de estaciones base agrupadas para optimizar la señalización.

  • Código de Red Móvil: Un número de 3 dígitos para identificar al operador de la red móvil. Generalmente se utiliza en combinación con el Código de País Móvil.

  • Código de País Móvil: Un número único de 3 dígitos para identificar el país al que pertenece el operador de la red móvil. Generalmente se utiliza en combinación con el Código de Red Móvil.

El código inmediatamente a continuación representa qué y cómo tu mensaje JSON debe ser enviado a Ubidots para asegurar que tu UbiFunction funcione correctamente.

Mensaje JSON de muestra del hardware

{  "deviceID": "geoloc",  "cellTowers": [    {      "cellId": 21532831,      "locationAreaCode": 2862,      "mobileCountryCode": 214,      "mobileNetworkCode": 7    }  ]}

Con el mensaje JSON del hardware recibido, se enviará a través de la UbiFunction a la API de Google, que publicará la latitud, longitud y precisión trianguladas en tu cuenta de Ubidots como variables Posición, Precisión, y Torre:

  1. La variable de Posición representa los valores de Latitud y Longitud del hardware reportados a Ubidots como contexto.

  2. La variable de Precisión representa una ubicación estimada, en metros. Esto representa el radio de un círculo alrededor de la variable de “Posición”.

  3. La variable de Torre representa el número de torres celulares que el hardware pudo identificar en su área.

Para gestionar y manejar la UbiFunction, copia y pega el código de muestra a continuación en la ventana IDE de UbiFunction, asegurándote de actualizar tu TOKEN de Ubidots y la API-Key de Google en el camino.

var request = require('request-promise');var ubidotsToken = "YOUR-UBIDOTS-TOKEN-HERE";var googleAPIKey = "YOUR-GOOGLE-API-KEY-HERE";async function requestGoogle(token, data) {   var options = {       method: 'POST',       url: 'https://www.googleapis.com/geolocation/v1/geolocate?key=' + token,       body: data,       json: true,       headers: {           'Content-Type': 'application/json',       }   };   return await request.post(options);}async function ubidotsPostRequest(device_label, data) {   var options = {       method: 'POST',       url: 'https://industrial.api.ubidots.com/api/v1.6/devices/' + device_label,       body: data,       json: true,       headers: {           'Content-Type': 'application/json',           'X-Auth-Token': ubidotsToken       }   };   return await request.post(options);}async function main(params) {   var response = await requestGoogle(googleAPIKey, params);   var latitude = response["location"]["lat"];   var longitude = response["location"]["lng"];   var accuracy = response["accuracy"];   var towers = params["cellTowers"].length;   var deviceID = params["deviceID"];   var payload = {"towers": towers, "position": {"value": 1, "context": {"lat": latitude, "lng": longitude}}, "accuracy": accuracy};   var U_post = await ubidotsPostRequest(deviceID, payload);   console.log(payload)   return {U_post};}

3. Verificación del Flujo de Datos

1. Para probar la UbiFunction, haz clic en "Ejecutar Función" para enviar una solicitud a la API de Google.

14. El botón “Ejecutar función” abrirá una ventana modal donde puedes ingresar un input ficticio a continuación para probar tu función. Aquí hay un payload de entrada de muestra que puedes usar:

{  "deviceID": "geoloc",  "cellTowers": [    {      "cellId": 21532831,      "locationAreaCode": 2862,      "mobileCountryCode": 214,      "mobileNetworkCode": 7    }  ]}

4. Verificación del Flujo de Datos

  1. Para probar la UbiFunction, haz clic en "Ejecutar función" para enviar una solicitud a la API de Google.

2. El botón “Ejecutar función” abrirá una ventana modal donde puedes ingresar un input ficticio a continuación para probar tu UbiFunction. Aquí hay un payload de entrada de muestra que puedes usar:

{  "deviceID": "geoloc",  "cellTowers": [    {      "cellId": 21532831,      "locationAreaCode": 2862,      "mobileCountryCode": 214,      "mobileNetworkCode": 7    }  ]}

3. Haz clic en "Ejecutar con esta entrada" para ejecutar el código de la función.

4. Después de unos segundos, se mostrarán los resultados de la UbiFunction.

NOTA IMPORTANTE: Todas las funciones de análisis exitosas obtendrán el código de estado 201, lo que significa que la variable fue creada o actualizada.

4. Resultados

Ve a la sección de Dispositivos de tu cuenta de Ubidots y localiza el dispositivo utilizado en la UbiFunction. Al abrir el dispositivo, encontrarás 3 nuevas variables creadas: "Torres", "Posición" y "Precisión".

  • La variable Torres contendrá el número de torres celulares de cada solicitud;

  • la variable Posición contendrá la latitud y longitud del dispositivo como contexto;

  • la variable Precisión que representa el radio estimado alrededor de la variable de posición, definiendo la ubicación.

Para agregar un Mapa a tu panel de control de Ubidots y trazar la posición devuelta desde tu API de Google UbiFunction, simplemente agrega un widget de Mapa a tu panel de control de Ubidots con los dispositivos que deseas rastrear.

Detalles adicionales para configurar un Widget de Mapa de Ubidots se pueden encontrar fácilmente en el Centro de Ayuda de Ubidots.

Otros desarrolladores también encontraron útil:

¿Ha quedado contestada tu pregunta?