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 Platform para compilar una solución sólida y mantenible de extremo a extremo del IoT en Cloud Platform.

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

Un dispositivo incluye hardware y software que interactúa 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 por parte de un grupo o clúster de dispositivos. Los datos de cada dispositivo se envían a Cloud Platform, en el que se procesa y combina con datos de otros dispositivos y, posiblemente, 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 manejar cada forma de información y cada sistema debería especializarse con base en la velocidad, volumen y API preferida de los datos. En esta sección, se enumeran y describen categorías comunes de información que se encuentran en situaciones de IoT.

Metadatos de 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 de 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 correcta 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. Por ejemplo, la sensibilidad o complejidad del movimiento que necesitas para la detección determinará qué tipo de acelerómetro elegirás o si en su lugar necesitas un giroscopio. Si se habla de detección de gases, los tipos de gases que el sensor puede detectar con precisión son importantes. 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 cuantos 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 de dispositivos

Hay una cantidad increíble de diversidad en el 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 con 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 y corriente, puedes tener en cuenta las capas de periférico, interfaz, controlador y aplicación. En un sistema operativo típico, como Linux o Windows, la entrada de hardware se interpreta como un controlador, el cual, a su vez, depende de los servicios del SO y puede ser parte del núcleo. Para simplificar, en el diagrama siguiente, se omite el sistema operativo.

Tres componentes

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 o más de estas interfaces:

  • USB. El bus universal en serie es de uso común para una amplia gama de dispositivos de tipo plug and play.
  • GPIO. Las clavijas de entrada y salida de uso general se conectan de forma directa 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.

    La GPIO es compatible con la modulación por ancho de pulsos (PWM). La PWM te permite encender y apagar una fuente de alimentación con rapidez, por lo cual cada fase “de encendido” es un pulso de una duración o un ancho en 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 analógica/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 cual 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 más amplio de valores, de 0 a 1024. 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 frecuencia 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.5 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 serial de 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 serial implementan una arquitectura de principal/secundario, con un solo principal y una comunicación dúplex. 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 secundario, que es una señal baja activa que se envía desde el principal
  • UART. Los dispositivos con transmisor/receptor asíncrono universal traducen los datos entre las formas en serie y paralelas en el punto en el que 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 software

Un sistema operativo abstrae los recursos de computación comunes como la memoria y la E/S de archivos. El SO también tiene compatibilidad de nivel muy bajo para las diferentes interfaces de hardware. En general, estas abstracciones no son fáciles de usar de manera directa 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 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 le proporciona a tu aplicación en lugar de los detalles de bajo nivel de cuando se trabaja de forma directa 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 encuentran el marco de trabajo de JavaScript Johnny-Five, MRAA, que admite varios lenguajes, la biblioteca Go de 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 podría realizar una cierta cantidad de procesamiento.

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.

Tres componentes

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. Cloud Platform proporciona características que puedes aprovechar en las operaciones diarias:

  • Stackdriver Logging recopila y almacena registros. Los eventos clave del ciclo de vida del dispositivo se registran para una auditoría. Un subconjunto de eventos de telemetría puede retransmitirse a Stackdriver Logging para analizarlo y realizar un informe. Stackdriver 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 IoT significa que actualizar dispositivos individuales en el sitio 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 el lenguaje de los teléfonos celulares, esto es una actualización inalámbrica (OTA, por sus siglas en inglés) y la misma idea se aplica en el IoT. Entre las opciones, se incluye lo siguiente:

  • Android Things. Si usas hardware basado en Android Things, la actualización OTA viene integrada.
  • Configurar tu propio repositorio de paquetes de Debian (APT) en Cloud Platform.
  • Resin.io. Basado en el proyecto Yocto, resin.io te permite usar herramientas familiares como Docker y Git para enviar actualizaciones de la imagen del contenedor.

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

Cloud Platform

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 Cloud Platform:

Tres componentes

Administración de dispositivos

Administrador de dispositivos de IoT Core

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

Transferencia

La transferencia es el proceso de importar información desde dispositivos hasta servicios de Cloud Platform. Cloud Platform 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

Google Cloud IoT Core Proporciona un agente de MQTT (Message Queue Telemetry Transport) seguro para 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 característica de administración de configuración. El agente de MQTT de IoT Core se conecta de forma directa con Cloud Pub/Sub.

Cloud Pub/Sub

Google Cloud 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. Cloud Pub/Sub también se conecta de forma nativa a otros servicios de Cloud Platform, lo que te ayuda a conectar la transferencia, la canalización de datos y los sistemas de almacenamiento.

Cloud Pub/Sub puede actuar como un amortiguador y nivelador de velocidad para ambas transmisiones de datos de entrada y 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. Cloud Pub/Sub escala para manejar los picos de datos que pueden ocurrir cuando conjuntos de dispositivos responden a eventos en el mundo físico y almacena en búfer estos picos para poder aislarlos de las aplicaciones que supervisan los datos.

Stackdriver Monitoring y Stackdriver Logging

Como se señaló en secciones anteriores, Cloud Monitoring y Stackdriver Logging pueden proporcionar ventajas operacionales. Estos servicios transfieren la información operativa a través de sus interfaces provistas.

Tareas de procesamiento de la canalización

La canalización administra datos después de que llegan a Cloud Platform, de manera similar a cómo se administran las piezas en una línea de fábrica. Esto incluye tareas como:

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

Cloud Dataflow

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

Almacenamiento de datos

Los datos del mundo físico vienen en varias formas y tamaños. Cloud Platform ofrece un rango de soluciones de almacenamiento desde BLOB de datos, como imágenes o transmisiones de video, a almacenamiento de entidad estructurada de dispositivos o transacciones y bases de datos clave-valor de alto rendimiento datos de evento y telemetría.

Almacenar estado 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.

Otros estados del dispositivo pueden existir en la capa de la aplicación. Por ejemplo, recording-audio puede tener una condición de estado de true o false, según si la aplicación muestrea 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 estado puede informarse y almacenarse en IoT Core para que las aplicaciones lo puedan recuperar. 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.

Almacenar datos de aplicaciones en Datastore y Firebase

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

Procesamiento de reglase y estadísticas de transmisión en Cloud Functions y Cloud 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. Google Cloud Functions te permite escribir lógica personalizada que se puede aplicar a cada evento a medida que llegan. Se puede utilizar 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, que incluyen técnicas de sistema de ventanas de tiempo o la convergencia de datos desde varias transmisiones, Cloud Dataflow proporciona una herramienta de estadísticas de alta capacidad que puede aplicarse a datos por lotes y de transmisión.

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 Cloud Datalab

Google BigQuery proporciona un almacén de datos administrado por completo con una interfaz de SQL familiar, para que puedas almacenar tus datos de IoT junto con tus estadísticas y registros de 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.

Cloud Datalab es una herramienta interactiva para la exploración, análisis y visualización de datos a gran escala. Los datos de IoT pueden llegar a ser útiles para varios casos prácticos, según con qué datos se combinan. Cloud Datalab te permite explorar, transformar, analizar y visualizar tus datos de forma interactiva con un entorno alojado de área de trabajo de datos en línea basado 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 marco de trabajo líder de aprendizaje automático de código abierto y en Cloud Platform puedes aplicarlo en un servicio de capacitación administrado y distribuido a través de Cloud Machine Learning Engine.

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. Cloud Bigtable proporciona una base de datos de capacidad de procesamiento alta y latencia baja para datos de NoSQL. Cloud 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, Cloud Bigtable funciona mejor con consultas que actúan en filas o grupos de filas consecutivas, ya que Cloud Bigtable almacena datos con un formato basado en filas. En comparación con Cloud 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 de datos del mundo 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 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

Compilar soluciones para la Internet de las cosas implica resolver desafíos en una amplia gama de dominios. Cloud Platform proporciona administración de servicios, escala de infraestructuras, herramientas de redes y un conjunto de productos de almacenamiento y estadísticas que puedes usar para aprovechar al máximo los datos generados por dispositivos.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...