Descripción general de la Internet de las cosas

La Internet de las cosas (IoT) es un conjunto extenso de tecnologías y casos prácticos que no tiene una definición única y clara. Un punto de vista viable plantea la IoT como el uso de dispositivos conectados a una red, integrados en el entorno físico, para mejorar algún proceso existente o permitir que desarrollen posibilidades nuevas que antes no eran posibles.

Estos dispositivos, o cosas, se conectan a la red para proporcionar información que reúnen del entorno a través de sensores o permitir que otros sistemas se comuniquen y actúen sobre el mundo a través de accionadores. Podrían ser versiones conectadas de objetos comunes con los que ya estés familiarizado o dispositivos nuevos y diseñados con una función en mente que aún no se hayan creado. Puede que sean dispositivos que uno tenga consigo o en la casa, dispositivos integrados en equipo de fábricas o parte de la estructura de la ciudad en la que uno vive. Cada uno de ellos es capaz de convertir información valiosa del mundo real en datos digitales que brindan una visibilidad aumentada de cómo interactúan los usuarios con tus productos, servicios o aplicaciones.

Los casos prácticos específicos y oportunidades en diferentes industrias son numerosos y podría decirse que el mundo del IoT apenas comienza. Lo que emerge de estas situaciones es un conjunto de patrones y desafíos comunes. Los proyectos del IoT tienen dimensiones adicionales que aumentan su complejidad en comparación con otras aplicaciones tecnológicas centradas en la nube, por ejemplo:

  • Hardware diverso
  • Sistemas operativos y software diversos en los dispositivos
  • Diferentes requisitos de la puerta de enlace de la red

En esta guía, se explican los elementos que puedes combinar con Google Cloud para compilar una solución de IoT sólida, de extremo a extremo y fácil de mantener en Google Cloud.

Descripción general de los componentes de nivel superior

Aquí dividimos el sistema en tres componentes básicos: el dispositivo, la puerta de enlace y la nube:

Tres componentes: el dispositivo, la puerta de enlace y la nube.

Un dispositivo incluye hardware y software que interactúan de forma directa con el mundo. Los dispositivos se conectan a una red para comunicarse entre sí o con aplicaciones centralizadas. Los dispositivos pueden conectarse de forma directa o indirecta a Internet.

Una puerta de enlace permite que los dispositivos no se conecten de forma directa a Internet para llegar a los servicios en la nube. Aunque el término puerta de enlace tiene una función específica en las herramientas de redes, también se usa para describir una clase de dispositivo que procesa datos en nombre de un grupo o clúster de dispositivos. Los datos de cada dispositivo se envían a Google Cloud, donde se procesan y combinan con datos de otros dispositivos y, potencialmente, con otros datos de transacciones comerciales.

Tipos de información

Cada dispositivo puede brindar o consumir varios tipos de información. Un sistema de backend diferente puede controlar mejor cada forma de información, y cada sistema debe especializarse en torno a la tasa, el volumen y la API preferida de los datos. En esta sección, se enumeran y describen las categorías comunes de información que se encuentran en situaciones de la IoT.

Metadatos del dispositivo

Los metadatos contienen información sobre un dispositivo. La mayoría de los metadatos son inmutables o es raro que cambien. Estos son algunos ejemplos de campos de metadatos:

  • Identificador (ID): un identificador que identifica de forma única a un dispositivo. El ID del dispositivo nunca debería cambiar durante la vida útil de un dispositivo implementado.
  • Clase o tipo
  • Modelo
  • Revisión
  • Fecha de fabricación
  • Número de serie del hardware

Información del estado

La información del estado describe el estado actual del dispositivo, no del entorno. Esta información puede ser de lectura o de escritura. Se actualiza, pero por lo general no con frecuencia.

Telemetría

Los datos recopilados por el dispositivo se llaman telemetría. Estos datos son los ojos y oídos que los dispositivos de IoT proporcionan a las aplicaciones. La telemetría son datos de solo lectura sobre el entorno que, por lo general, se recopilan a través de sensores.

Cada fuente de telemetría da como resultado un canal. Los datos de telemetría pueden preservarse como una variable con estado en el dispositivo o en la nube.

Si bien cada dispositivo podría enviar solo un dato por minuto, cuando se multiplican esos datos por una gran cantidad de dispositivos, enseguida es necesario aplicar estrategias y patrones de macrodatos.

Comandos

Los comandos son acciones realizadas por un dispositivo. Los comandos suelen tener rasgos que restringen las opciones disponibles en tu implementación. Entre estos rasgos, se incluyen los siguientes:

  • Los comandos no se representan con facilidad como datos de estado.

  • Los comandos no suelen ser idempotentes, lo cual significa que cada mensaje duplicado puede producir un resultado diferente. Al igual que los sistemas de mensajería, la implementación de una función de comando determina la semántica de entrega, como “al menos una vez” o “solo una vez”. El mecanismo de comando puede incluir un valor de retorno o podría basarse en la confirmación que se hace a través de un mensaje de retorno distinto o si refleja el cambio esperado en los datos de estado.

  • Los comandos pueden tener una relevancia temporal limitada, así que deberían incluir un tiempo de actividad (TTL) o algún otro valor de expiración.

Estos son algunos ejemplos de comandos:

  • Gira 360 grados a la derecha.
  • Ejecuta el ciclo de autolimpieza.
  • Aumenta la velocidad en un 10%.

Información operativa

La información operativa son los datos más importantes para la operación del dispositivo en lugar de la aplicación comercial. Esto podría incluir información como la temperatura de funcionamiento del CPU y el estado de la batería. Este tipo de datos podría no tener valor analítico a largo plazo, pero tiene valor a corto plazo para poder mantener el estado operativo, como responder a las averías y corregir la degradación del rendimiento del software después de las actualizaciones.

La información operativa puede transmitirse como telemetría o datos de estado.

Dispositivos

No siempre es claro lo que constituye un dispositivo. Muchos elementos físicos son modulares, lo que significa que puede ser difícil decidir si toda la máquina es el dispositivo o si cada módulo es un dispositivo discreto. No hay una única respuesta correcta a esta pregunta. A medida que diseñas tu proyecto de IoT, necesitarás pensar sobre los distintos niveles de abstracción en tu diseño y tomar decisiones sobre cómo representar los elementos físicos y sus relaciones entre sí. Los requisitos específicos de tu aplicación te ayudarán a entender si algo que genera información debe tratarse como un dispositivo y si, por lo tanto, se merece su propio ID, o si solo es un canal o detalle de estado de otro dispositivo.

Como ejemplo, considera un proyecto que tiene el objetivo de supervisar la temperatura de los cuartos de un hotel. En cada cuarto puede haber tres sensores: uno en el piso junto a la puerta, uno en el cielorraso y otro junto a la cama. Puedes modelar esta configuración si representas cada sensor como un dispositivo:

{deviceID: "dh28dslkja", "location": "floor", "room": 128, "temp": 22 }
{deviceID: "8d3kiuhs8a", "location": "ceiling", "room": 128, "temp": 24 }
{deviceID: "kd8s8hh3o", "location": "bedside", "room": 128, "temp": 23 }

También puedes modelar todo el cuarto como un dispositivo. Aunque no es normal que se considere que un cuarto sea un dispositivo, en la IoT la abstracción de dispositivos se trata sobre lo que administras y registras como una unidad; no siempre se limita a un solo aparato que puedes tener en tu mano. Visto de esa forma, podrías modelar el cuarto del hotel como un dispositivo que contiene tres sensores:

{deviceID: "dh28dslkja", "room": 128, "temp_floor": 22, "temp_ceiling": 24, "temp_bedside": 23, "average_temp":  23 }

Según los objetivos, una de estas dos representaciones de datos puede ser más adecuada que la otra. Ten en cuenta el campo de temperatura promedio en el segundo ejemplo. Esto podría ser lo que el hotel necesita. ¿Los metadatos de cada sensor son más valiosos por sí solos o acaso las piezas separadas de metadatos tienen más sentido si se aplican al cuarto entero? ¿Qué pasaría si el cuarto fuera una suite y las tres ubicaciones fueran el baño, la sala y la habitación? Este es el tipo de preguntas que necesitas hacerte cuando decides cómo modelar los datos. El modelo de dominio de la aplicación conectada define el límite exacto de lo que constituye el dispositivo.

Hardware del dispositivo

Consideraciones generales cuando se elige hardware

Cuando tengas que elegir el hardware, ten en cuenta los siguientes factores, los cuales se afectan por la forma en que se implementa ese hardware:

  • Costo. Si se considera el valor de los datos proporcionados, piensa qué costo puede soportar cada dispositivo.
  • Funciones de E/S. El dispositivo puede ser en primer lugar un sensor, un accionador o una combinación de las dos funciones.
  • Presupuesto energético. El dispositivo puede tener acceso a la electricidad o la energía podría ser escasa. Piensa si el dispositivo necesita una batería o energía solar.
  • Entorno de Herramientas de redes. Considera si el dispositivo se puede conectar de forma directa a la Internet como TCP/IP enrutable. Algunos tipos de conexiones, como las celulares, pueden ser caras si el tráfico es alto. Piensa en la confiabilidad de la red y en el impacto de esta en la latencia y la capacidad de procesamiento. Si es inalámbrico, considera el rango que alcanza la potencia de transmisión y los costos energéticos adicionales.

Entradas y salidas funcionales

Los dispositivos que se usan para interactuar con el mundo físico contienen componentes o se conectan a periféricos que permiten la entrada del sensor o la salida del accionador. El hardware específico que elijas para estos componentes de E/S debería basarse en los requisitos funcionales. Si se realiza una detección de gas (por ejemplo, monóxido de carbono), son importantes los tipos de gases que el sensor puede detectar con precisión. Por ejemplo, la sensibilidad o la complejidad del movimiento que necesitas para la detección determinará el tipo de acelerómetro que elegirás o si, en su lugar, necesitas un giroscopio. Cuando se usa un dispositivo para producir resultados, debes considerar requisitos como qué tan fuerte debe sonar un timbre, qué tan rápido debe girar un motor o cuántos amperios debe llevar un relé.

Además de los requisitos determinados por el rendimiento del entorno, elegir estos componentes de E/S o periféricos también puede estar relacionado con el tipo de información con la que están asociados. Por ejemplo, un motor paso a paso puede configurarse en una dirección específica que puede representarse en los datos de estado del dispositivo, mientras que un micrófono puede muestrear de manera constante en términos de frecuencias, las cuales se transmiten mejor como telemetría. Estos componentes se conectan a los sistemas lógicos del dispositivo a través de una interfaz de hardware.

Plataformas del dispositivo

Hay una gran diversidad de hardware específico disponible para la compilación de aplicaciones de la IoT. Esta diversidad comienza con las opciones para plataformas de hardware. Entre los ejemplos más comunes se encuentran computadoras de una placa como la Beaglebone y la Raspberry Pi, además de plataformas de microcontroladores como la serie Arduino, placas de Particle y la Adafruit Feather.

Cada una de estas plataformas te permite conectarte a varios tipos de sensores y accionadores a través de una interfaz de hardware.

Estas plataformas interactúan con los módulos mediante un enfoque en capas similar a los que se usan en la computación de uso general. Si piensas en el mouse de computadora común de todos los días, puedes considerar las capas de los periféricos, la interfaz, el controlador y la aplicación, como se ilustran en el siguiente diagrama.

Gráfico de colores que compara los componentes de la IoT y de escritorio.

En un sistema operativo típico, como Linux o Windows, un controlador interpreta la entrada de hardware; el controlador, a su vez, depende de los servicios del SO y puede ser parte del kernel. Para simplificar, en el diagrama siguiente, se omite el sistema operativo.

Interfaces de hardware

La mayoría de las interfaces de hardware son interfaces en serie. Las interfaces en serie suelen usar varios cables para controlar el flujo y la sincronización de la información binaria junto con la línea de datos primarios. En cada tipo de interfaz de hardware, se define un método de comunicación entre un periférico y el procesador central.

Las plataformas de hardware del IoT usan varias interfaces comunes. Los módulos de accionador y sensor pueden admitir una de estas interfaces o más:

  • USB. El bus universal en serie es de uso común para una amplia gama de dispositivos listos para usar.
  • GPIO. Las clavijas de entrada y salida de uso general se conectan directamente al procesador. Tal como indica su nombre, estas clavijas las proporciona el fabricante para permitir que se solucionen situaciones de uso particulares que no se tuvieron en cuenta en el diseño. Las clavijas de GPIO se pueden diseñar para transmitir señales analógicas o digitales; las clavijas digitales solo tienen dos estados: ALTO o BAJO.

    GPIO digital puede admitir la modulación por ancho de pulso (PWM). La PWM te permite encender y apagar una fuente de alimentación con rapidez, por lo que cada fase de “encendido” es un pulso de una duración o un ancho particular. El efecto en el dispositivo puede ser un nivel de potencia inferior o superior. Por ejemplo, puedes usar PWM para cambiar el brillo de un LED; cuanto más amplios sean los pulsos de “encendido”, más fuerte brillará el LED.

    Las clavijas analógicas pueden acceder a un circuito de conversión de analógico a digital (ADC) integrado. Una ADC muestrea una forma de onda analógica continua de forma periódica, como una señal de audio analógica, lo que le da a cada muestra un valor digital entre cero y uno relativo al voltaje del sistema.

    Cuando se lee el valor de una clavija de E/S digital en código, el valor es ALTO o BAJO, mientras que una clavija de entrada analógica puede ser cualquier valor en un rango en cualquier momento. El rango depende de la resolución de la ADC. Por ejemplo, una ADC de 8 bits puede producir valores digitales de 0 a 255, mientras que una ADC de 10 bits puede producir un rango de valores más amplio, de 0 a 1,024. Cuantos más valores haya, más alta será la resolución y, por lo tanto, mayor será la fidelidad de una representación digital de cualquier señal analógica.

    La frecuencia de muestreo determina el rango de frecuencias que una ADC puede reproducir. Una tasa de muestreo alta da como resultado una frecuencia máxima más alta en los datos digitales. Por ejemplo, una señal de audio muestreada a 44,100 Hz produce un archivo de audio digital con una respuesta de frecuencia de hasta 22,050 kHz, que ignoran el filtrado típico y otros procesamientos. La precisión de bits dicta la resolución de la amplitud de la señal.

  • I2C. El bus en serie del circuito inter-integrado usa un protocolo que permite que se asignen varios módulos a una dirección discreta en el bus. I2C a veces se pronuncia “i, dos, ce”, “i, i, ce”, o “i al cuadrado, ce”.

  • SPI. Los dispositivos con bus de interfaz periférica en serie implementan una arquitectura de instancia principal/secundaria, con una sola instancia principal y una comunicación dúplex completa. SPI especifica cuatro señales lógicas:

    • SCLK: reloj en serie, el cual se envía desde el principal
    • MOSI: salida de principal, entrada de secundario, que se envía desde el principal
    • MISO: entrada de principal, salida de secundario, que se envía desde un secundario
    • SS: selección de secundaria, que es una señal baja activa que se envía desde la principal
  • UART. Los dispositivos transmisores/receptores asíncronos universales traducen los datos entre las formas en serie y paralelas cuando el procesador actúa sobre los datos. Es necesario usar UART si los datos en serie deben disponerse en la memoria de forma paralela.

Abstracción de hardware en el software

Un sistema operativo abstrae recursos de computación comunes, como la memoria y la E/S de archivos. El SO también proporciona compatibilidad de muy bajo nivel para las diferentes interfaces de hardware. En general, estas abstracciones no son fáciles de usar directamente y, con frecuencia, el SO no brinda abstracciones para un rango amplio de módulos de accionador y sensor que puedas encontrar cuando compilas soluciones de la IoT.

Puedes aprovechar las bibliotecas que abstraen interfaces de hardware en todas las plataformas. Estas bibliotecas te permiten trabajar con un dispositivo, como un detector de movimiento, de una manera más sencilla. Usar una biblioteca te permite enfocarte en recopilar la información que el módulo proporciona a la aplicación, en lugar de enfocarte en los detalles de bajo nivel de cuando se trabaja directamente con el hardware.

Algunas bibliotecas proporcionan abstracciones que representan periféricos en la forma de controladores ligeros además de las interfaces de hardware. Entre estas bibliotecas, se incluyen el framework de JavaScript Johnny-Five, MRAA, que admite varios lenguajes, la biblioteca de Go EMBD, Arduino-wiring y Firmata.

Entorno de computación

El entorno de computación de tu plataforma ejecuta el software. Basado en las restricciones de hardware de energía y costo, las capacidades del procesador variarán. Algunos entornos de computación consisten en un sistema en un chip (SOC) completo, el cual es compatible con un sistema operativo Linux integrado. Los dispositivos basados en microcontroladores podrían estar más restringidos y el código de tu aplicación puede ejecutarse de forma directa en el procesador sin la asistencia de un sistema operativo.

Estos entornos de computación son el puente entre la lógica del código de tu aplicación y el hardware físico de la plataforma. El software que ejecutan puede cargarse por completo durante el arranque de la memoria de solo lectura (ROM). Si no, el entorno puede ser el resultado de un proceso de arranque por etapas. Este proceso carga un programa pequeño llamado bootloader desde la ROM, el cual luego carga un sistema operativo completo desde una memoria flash integrada o una tarjeta SD conectada.

Procesamiento en el dispositivo

Después de que se recopilan los datos de un sensor, el dispositivo puede proporcionar la funcionalidad de procesamiento de datos antes de enviar datos a la nube. Varios dispositivos pueden manejar los datos antes de que lleguen a la nube y cada uno puede realizar un cierto grado de procesamiento.

En el siguiente diagrama, se ilustran las tareas de procesamiento.

Flujo de trabajo del procesamiento de datos: conversión, empaquetado, validación, clasificación, mejora, resumen y combinación de datos.

El procesamiento puede incluir tareas como estas:

  • Convertir datos en otro formato
  • Empaquetar los datos de una manera segura que combina los datos en un lote práctico
  • Validar datos para asegurarse de que cumplan con un conjunto de reglas
  • Ordenar datos para crear una secuencia preferida
  • Mejorar los datos para decorar el valor central con información relacionada adicional
  • Resumir datos para reducir el volumen y eliminar detalles innecesarios o no deseados
  • Combinar datos como valores agregados

El análisis en el dispositivo puede combinarse con varias tareas de procesamiento para brindar una interpretación sintetizada intermedia que permite que se transmita más información en un rastro digital más pequeño.

Administración de dispositivos

La administración de dispositivos es similar a la administración de otros activos de informática: las preocupaciones principales son el aprovisionamiento, la operación y la actualización de los dispositivos. Estos aplican a todos los dispositivos, incluso las puertas de enlace.

Aprovisionamiento

El aprovisionamiento es el proceso de configurar un dispositivo nuevo y prepararlo para su uso. El aprovisionamiento incluye lo siguiente:

  • Arranque con la información básica del dispositivo. Como mínimo, un dispositivo necesita un ID y metadatos básicos.
  • Credenciales y autenticación obligatorias para comunicaciones seguras. Por ejemplo, se le puede proporcionar al dispositivo un token o clave para las comunicaciones en curso. Esas credenciales pueden tener un tiempo de caducidad.
  • Autorización del dispositivo. La autorización establece los permisos del dispositivo para interactuar con la aplicación o con otros servicios, basándose en las credenciales de autenticación anteriores. La autorización es el permiso específico de la credencial y el ID de dispositivo con un recurso específico que puede usar.
  • Configuración de la conexión de red. Un dispositivo necesita una conexión de red para poder comunicarse con otros servicios y transmitir datos.
  • Registro del dispositivo. Las aplicaciones necesitan saber qué dispositivos están disponibles. Un registro de dispositivos realiza un seguimiento de los dispositivos que están en uso, administra la parte de la nube en el proceso de autenticación y asocia dispositivos con datos y recursos específicos (como temas de telemetría y almacenamiento de estado).

Operaciones

La operación diaria de un sistema de IoT requiere que recopiles la información correcta sobre lo que sucede. Similar a una implementación de hardware informático, registrar varios eventos y supervisar las métricas de los estados clave a través de paneles y mecanismos de alerta puede ayudarte a que todo funcione sin problemas. Google Cloud ofrece funciones que puedes aprovechar en las operaciones diarias:

  • Cloud Logging recopila y almacena registros. Los eventos de ciclo de vida clave del dispositivo se registran para una auditoría. Un subconjunto de eventos de telemetría se puede retransmitir a Logging para el análisis y la generación de informes. Usar Logging puede ahorrarte mucho tiempo y esfuerzo en comparación con compilar una solución de registro personalizada.

Actualizaciones inalámbricas

La escala de una implementación típica de la IoT significa que actualizar dispositivos individuales en las instalaciones no es práctico. Como los dispositivos ya tienen algún tipo de conexión de red de por sí, su actualización puede simplificarse si las actualizaciones se envían a través de la red. En términos de telefonía celular, esta es una actualización inalámbrica (OTA) y la misma idea se aplica en la IoT. Estas son algunas opciones:

Puerta de enlace

Una puerta de enlace administra el tráfico entre redes que usan diferentes protocolos. Una puerta de enlace es responsable de la traducción del protocolo y otras tareas de interoperabilidad. Un dispositivo de puerta de enlace de IoT se emplea a veces para proporcionar la conexión y la traducción entre los dispositivos y la nube. Debido a que algunos dispositivos no contienen la pila de red obligatoria para la conectividad a Internet, un dispositivo de puerta de enlace actúa como un proxy. De esta forma, recibe datos de dispositivos y los empaqueta para transmitirlos por TCP/IP.

Podría requerirse un dispositivo de puerta de enlace dedicado si los dispositivos en la implementación tienen estas condiciones:

  • No tienen conectividad enrutable a la Internet, por ejemplo, dispositivos Bluetooth.
  • No tienen la capacidad de procesamiento necesaria para la seguridad de la capa de transporte (TLS) y, por lo tanto, no se puede comunicar con las API de Google.
  • No tienen la energía eléctrica para realizar la transmisión de red obligatoria.

Un dispositivo de puerta de enlace puede usarse incluso cuando los dispositivos que participan son capaces de comunicarse sin uno. En esta situación, la puerta de enlace agrega valor porque proporciona el procesamiento de los datos en varios dispositivos antes de enviarlos a la nube. En ese caso, las entradas directas serían otros dispositivos, no sensores individuales. Es posible que las siguientes tareas se releguen a un dispositivo de puerta de enlace:

  • Condensar los datos para maximizar la cantidad que puede enviarse a la nube a través de un solo vínculo
  • Almacenar datos en una base de datos local y, luego, reenviarlos cuando la conexión a la nube es intermitente
  • Proporcionar un reloj en tiempo real con una batería de respaldo, para proporcionar una marca de tiempo consistente en dispositivos que no pueden administrarlas bien o mantenerlas bien sincronizadas
  • Realizar la traducción de IPV6 a IPV4
  • Transferir y subir otros datos basados en archivos planos desde la red local que sean relevantes y estén asociados con los datos de IoT
  • Actuar como una caché local para las actualizaciones de firmware

Google Cloud

Después de que tu proyecto de IoT esté en funcionamiento, muchos dispositivos producirán una gran cantidad de datos. Necesitas una manera eficiente, escalable y asequible para administrar esos dispositivos, manejar toda esa información y hacer que te funcione. Cuando se trata de almacenar, procesar y analizar datos, en especial macrodatos, es difícil superar a la nube.

En el siguiente diagrama, se muestran las distintas etapas de la administración de datos de IoT en Google Cloud.

Compila y entrena modelos de AA en la nube.

Administración de dispositivos

Administrador de dispositivos de IoT Core

IoT Core ofrece un servicio completamente administrado para administrar dispositivos. Esto incluye el registro, la autenticación y la autorización dentro de la jerarquía de recursos de Google Cloud, así como los metadatos de los dispositivos almacenados en la nube y la capacidad de enviar la configuración de dispositivos desde el servicio a los dispositivos.

Transferencia

La transferencia es el proceso de importar información de los dispositivos a los servicios de Google Cloud. Google Cloud ofrece distintos servicios de transferencia, según si los datos son telemetría o información operativa sobre los dispositivos y la infraestructura de IoT.

MQTT en IoT Core

IoT Core proporciona un agente seguro de MQTT (Message Queuing Telemetry Transport) para los dispositivos administrados por IoT Core. Este eficiente estándar binario de la industria permite que los dispositivos restringidos envíen telemetría en tiempo real y reciban de forma inmediata mensajes enviados desde la nube a un dispositivo con la función de administración de la configuración. El agente de MQTT de IoT Core se conecta de forma directa con Pub/Sub.

Pub/Sub

Pub/Sub proporciona un servicio de transferencia de mensajes duradero en todo el mundo. Si creas temas de transmisiones o canales, puedes habilitar distintos componentes de tu aplicación para que se subscriban a transmisiones de datos específicas sin la necesidad de construir canales específicos de un usuario en cada dispositivo. Pub/Sub también se conecta de forma nativa a otros servicios de Google Cloud, lo que te ayuda a conectar la transferencia, las canalizaciones de datos y los sistemas de almacenamiento.

Pub/Sub puede actuar como un amortiguador y nivelador de velocidad para las transmisiones de datos de entrada y los cambios en la arquitectura de la aplicación. Muchos dispositivos tienen una capacidad limitada para almacenar y reintentar el envío de datos de telemetría. Pub/Sub escala para manejar los aumentos de datos que pueden ocurrir cuando muchos conjuntos de dispositivos responden a eventos en el mundo físico y almacena en búfer estos aumentos para poder aislarlos de las aplicaciones que supervisan los datos.

Cloud Monitoring y Cloud Logging

Como se mencionó en la sección Operaciones, Cloud Monitoring y Cloud Logging pueden proporcionar ventajas operativas. Estos servicios transfieren la información operativa a través de sus interfaces provistas.

Tareas de procesamiento de la canalización

Las canalizaciones administran los datos después de que llegan a Google Cloud, de manera similar a como se administran las piezas en una línea de fábrica. Esto incluye tareas como las siguientes:

  • Transformar datos. Puedes convertir los datos a un formato distinto, por ejemplo, podrías convertir el voltaje de una señal de dispositivo capturado en una unidad de medida de temperatura calibrada.
  • Agregar datos y realizar el procesamiento. Si combinas datos puedes agregar marcas, como promediar los datos en varios dispositivos para evitar actuar en un solo dispositivo falso. Puedes asegurarte de que tienes datos accionables si uno de los dispositivos se desconecta. Si agregas procesamiento a tu canalización, puedes aplicar estadísticas de transmisión a los datos mientras se encuentran en la canalización de procesamiento.
  • Enriquecer datos. Puedes combinar los datos generados por el dispositivo con otros metadatos sobre el dispositivo o con otros conjuntos de datos, como datos de clima o tráfico, para usarse en análisis posteriores.
  • Trasladar datos. Puedes almacenar los datos procesados en una o más ubicaciones de almacenamiento finales.

Dataflow

Dataflow proporciona el modelo de programación abierto de Apache Beam como un servicio administrado para procesar datos de varias maneras, incluidas las operaciones por lotes, los patrones de extracción, transformación y carga (ETL) y el procesamiento de transmisión continuo. Dataflow puede ser muy útil para administrar las canalizaciones de procesamiento de datos de alto volumen necesarias en las situaciones de IoT. Dataflow también está diseñado a fin de integrarse a la perfección en otros servicios de Google Cloud que elijas para tu canalización.

Almacenamiento de datos

Los datos del mundo físico vienen en varias formas y tamaños. Google Cloud ofrece una gama de soluciones de almacenamiento, que incluyen desde BLOB de datos sin estructurar, como imágenes o transmisiones de video, hasta almacenamiento de entidades estructuradas de dispositivos o transacciones y bases de datos clave-valor de alto rendimiento para datos de eventos y telemetría.

Almacena estados en IoT Core

Algunos estados del dispositivo pueden conectarse de forma directa al hardware. Por ejemplo, cuando compruebas el estado de una clavija GPIO digital, se lee como ALTO o BAJO, según la lectura física del voltaje en la clavija.

Pueden existir otros estados del dispositivo en la capa de la aplicación. Por ejemplo, recording-audio podría tener una condición de estado true o false, según si la aplicación realiza el muestreo desde el micrófono o escribe en el disco. En el nivel de hardware, el micrófono en sí puede dejarse encendido.

Desde la perspectiva del software, el código de la aplicación que se ejecuta en el dispositivo mantiene la fuente de la verdad. Se considera valioso, incluso obligatorio, que otro software lea el último estado conocido del dispositivo. Debido a que los dispositivos de IoT pueden pasar algo de tiempo en el modo de suspensión de baja energía y pueden existir en redes que tienden a ser poco confiables, a menudo es útil almacenar parte del estado de un dispositivo en la nube. De esa manera, los datos de estado pueden estar disponibles incluso cuando los dispositivos en sí están sin conexión por un tiempo.

El último estado conocido de un dispositivo puede informarse y almacenarse en IoT Core para que las aplicaciones lo recuperen. La información de estado que se envía por MQTT o HTTP se conserva en IoT Core y está disponible en la nube, incluso si el dispositivo se desconectó o no tiene conexión.

Almacena datos de aplicación en Datastore y Firebase

Cuando necesitas que los datos de telemetría o estado estén disponibles para aplicaciones web o para dispositivos móviles, puedes almacenar los datos procesados o sin procesar en bases de datos estructuradas, pero sin esquemas, como Datastore y Firebase Realtime Database, en las que puedes representar datos de dispositivos de IoT como objetos a nivel de la aplicación o el dominio.

Procesamiento de reglas y estadísticas de transmisión en Cloud Functions y Dataflow

Los eventos y datos de IoT se pueden enviar a la nube a una velocidad alta y deben procesarse con rapidez. En muchas aplicaciones de IoT, la decisión de colocar el dispositivo en el entorno físico se hace para proporcionar un acceso más rápido a los datos. Por ejemplo, los productos expuestos a temperaturas altas durante el envío se pueden marcar y eliminar de inmediato.

Ser capaz de procesar esta información y actuar con rapidez a partir de ella es fundamental. Cloud Functions te permite escribir lógica personalizada que se puede aplicar a cada evento a medida que llega. Esto se puede usar para activar alertas, filtrar datos no válidos o invocar otras API. Cloud Functions puede operar en cada evento publicado de forma individual.

Si necesitas procesar datos y eventos con estadísticas más sofisticadas, incluidas las técnicas de sistema de ventanas o la convergencia de datos desde varias transmisiones, Dataflow proporciona una herramienta de estadísticas de alta capacidad que se puede aplicar a datos de transmisión y por lotes.

Estadísticas

Realizar estadísticas a partir de datos obtenidos a través de fuentes de IoT suele ser el propósito de instrumentar el mundo físico. Después de que se analicen los datos de transmisión en una canalización de procesamiento, se comienzan a acumular. Con el paso del tiempo, estos datos proporcionan una fuente rica de información para observar tendencias y se pueden combinar con otros datos, incluso aquellos de fuentes externas a tus dispositivos de IoT.

BigQuery y Datalab

BigQuery proporciona un almacén de datos completamente administrado con una interfaz de SQL familiar, para que puedas almacenar los datos de la IoT junto con las estadísticas y los registros de tus otras empresas. El rendimiento y costo de BigQuery significa que puedes mantener tus datos valiosos por más tiempo en lugar de borrarlos solo para ahorrar espacio en el disco.

Datalab es una herramienta interactiva para la exploración, el análisis y la visualización de datos a gran escala. Los datos de IoT pueden llegar a ser útiles para varios casos de uso, según con qué datos se combinan. Datalab te permite explorar, transformar, analizar y visualizar los datos de forma interactiva mediante un entorno de área de trabajo de datos alojado en línea que se basa en el proyecto Jupyter de código abierto.

Aprendizaje automático

Los datos de IoT suelen ser multidimensionales y ruidosos por naturaleza. Estos atributos pueden dificultar la extracción de información mediante el uso de técnicas de estadísticas convencionales. Sin embargo, este matiz y esta complejidad suelen ser la situación en la que sobresalen las redes neuronales profundas. Tensorflow es un framework líder en el aprendizaje automático de código abierto; y, en Google Cloud, puedes aplicarlo en un servicio de entrenamiento administrado y distribuido a través de AI Platform.

Paneles de serie temporal con Cloud Bigtable

Ciertos tipos de datos necesitan dividirse con rapidez a lo largo de índices y dimensiones conocidos para la actualización de visualizaciones centrales y las interfaces de usuario. Bigtable proporciona una base de datos de capacidad de procesamiento alta y latencia baja para datos de NoSQL. Bigtable proporciona un buen lugar para generar visualizaciones y consultas muy utilizadas, en el que las preguntas ya se entienden bien y necesitas absorber o entregar a volúmenes altos.

En comparación con BigQuery, Bigtable funciona mejor con consultas que actúan en filas o grupos de filas consecutivas, ya que Bigtable almacena datos con un formato basado en filas. En comparación con Bigtable, BigQuery es una mejor opción para consultas que necesitan agregación de datos.

Almacenamiento de archivos en Cloud Storage Nearline

La acumulación mundial de datos nunca se detiene y los datos no siempre estarán estructurados. Cloud Storage proporciona una sola API para el almacenamiento de objetos de uso actual y los datos de archivos que se usan con poca frecuencia. Si tu dispositivo de IoT captura datos de medios, Cloud Storage puede almacenar cantidades casi ilimitadas de manera duradera y económica.

Conclusión y próximos pasos

Compilar soluciones para la Internet de las cosas implica resolver desafíos en una amplia gama de dominios. Google Cloud ofrece administración de dispositivos, escalamiento de la infraestructura, herramientas de redes y una variedad de productos de almacenamiento y estadísticas que puedes usar para aprovechar al máximo los datos que generan los dispositivos.