Azure y la Internet de las Cosas

Para mí, una de las áreas más emocionantes de la tecnología en los últimos años es la Internet de las Cosas (IoT). No creo que un lavavajillas o un refrigerador deban estar conectados a Internet aún, y hay preocupaciones válidas respecto de la privacidad sobre un televisor o un dispositivo de audio que están permanentemente conectados a Internet y siempre escuchando el sonido de su voz para emitir un comando. Sin embargo, hay muchas aplicaciones prácticas para dispositivos de IoT. Usted podría tener un informe de los equipos de fabricación sobre su estado, generar alertas de mantenimiento y permitir que los operadores comprendan su eficacia en varias fábricas en todo el mundo. Una empresa de camiones podría analizar los datos de telemetría de sus vehículos en relación con las cargas que se transportan y los tiempos de conducción promedio, y podría redireccionar la ruta de los conductores en forma inteligente según sea necesario. Las empresas de envío podrían hacer un seguimiento de cada contenedor y ayudar a sus clientes a administrar mejor su cadena de suministro al saber dónde se encuentran sus recursos.
En Azure, puede integrar muchos dispositivos de IoT con una gama de servicios. Azure Web Apps puede proporcionar un frontend para la visualización de sus datos, el almacenamiento se puede utilizar para registrar datos de dispositivos y las características sin servidor como Azure Logic Apps (que se explican en el siguiente capítulo final) pueden procesar los datos recibidos.
En este capítulo, analizaremos qué es la IoT y cómo utilizar Azure IoT Hub para administrar centralmente y recopilar datos de dispositivos. A continuación, verá cómo utilizar una aplicación web de Azure para ver datos en tiempo real desde un dispositivo de IoT.

¿Qué es la Internet de las Cosas?
El interés en la IoT ha crecido considerablemente en los últimos años, pero es un término vago que se puede aplicar a muchos escenarios. En un nivel básico, IoT es un enfoque en el que muchos dispositivos interconectados, normalmente pequeños dispositivos electrónicos de bajo costo, vuelven a conectarse a sistemas y aplicaciones centrales. En general, los dispositivos conectados brindan información que recopilan de las entradas o sensores conectados. Esta información luego puede ser procesada por un sistema central (probablemente con IA o ML, como se explica en el capítulo 17) y llevar a cabo las acciones apropiadas. La figura muestra un enfoque de alto nivel a IoT.

Algunos ejemplos de IoT en acción incluyen lo siguiente:
– Garaje de estacionamiento: un pequeño sensor por encima de cada zona de estacionamiento detecta si hay un vehículo estacionado allí. Una luz sobre cada zona puede encenderse de color verde si la zona está vacía o de color rojo si está ocupada. Los conductores que entran en el garaje de estacionamiento pueden ver paneles de información en tiempo real en cada piso que les permiten saber cuántos lugares de estacionamiento abierto hay. Las luces rojas y verdes sobre cada zona ayudan a los conductores a determinar rápidamente la ubicación de los puntos abiertos mientras conducen por cada pasillo.
– Fábrica: la maquinaria en un piso de la fábrica puede brindar información sobre el rendimiento operativo, los niveles de consumibles y las necesidades de mantenimiento. Un sistema central puede entonces programar a un técnico de mantenimiento para reparar proactivamente los equipos o reabastecer los consumibles, lo que reduce el tiempo de inactividad en la línea de producción. Cuando se combinan con IA y ML, se pueden predecir los horarios de mantenimiento, y se puede entregar la cantidad correcta de suministros o materias primas justo antes de que se necesiten en la producción.
– Transporte: los autobuses o trenes de transporte público pueden incluir sensores GPS que informen sobre la ubicación y la velocidad. También se puede recopilar información sobre los boletos para informar cuántas personas se están transportando. Los paneles de información para pasajeros en una estación de tren o terminal de autobuses pueden proporcionar información en tiempo real sobre cuándo llegará cada vehículo. Cuando se combina esta tecnología con IA y ML, los pasajeros en espera pueden recibir sugerencias de rutas alternativas basadas en condiciones de tráfico, retrasos o un gran volumen de pasajeros.
A menudo, IoT trabaja junto con otras aplicaciones y servicios. Los escenarios de la fábrica y del transporte podrían utilizar IA y ML para informar mejor la de la producción o para hacer sugerencias a los pasajeros. Las aplicaciones web pueden utilizar la información recibida de los dispositivos de IoT para proporcionar acceso desde dispositivos móviles o generar alertas y notificaciones. Los datos recibidos de los dispositivos de IoT se pueden registrar en un sistema de bases de datos como Azure Cosmos DB y luego son procesados por aplicaciones de inteligencia empresarial y generan informes.
Las ideas hacia el futuro alrededor de IoT incluyen cosas como su refrigerador que detecta los niveles de alimentos y genera una lista de compras o incluso pedir comida a una tienda de comestibles local. Su automóvil podría brindar datos a la concesionaria, la que podría tener listas las piezas o consumibles necesarios cuando usted lleva el vehículo para mantenimiento. O ¿qué pasa si, cuando el despertador suena para despertarlo por la mañana, su cafetera se enciende y se prepara para el desayuno?
Una gran área de preocupación con IoT es la seguridad del dispositivo. Con tantos dispositivos fuera de su infraestructura de red principal y a menudo conectados a la Internet pública, poder aprovisionar, mantener y actualizar esos dispositivos es un desafío. Muchos dispositivos de IoT son de baja potencia, electrónica simple que pueden no tener las capacidades de almacenamiento o de procesamiento para actualizarse con actualizaciones de aplicaciones y de seguridad de la forma en que lo hace una computadora de escritorio tradicional o un equipo portátil. No es suficiente implementar muchos dispositivos de IoT, en especial dispositivos de nivel de consumidor, sin un plan para protegerlos correctamente y proporcionar actualizaciones y mantenimiento.
Estas preocupaciones de seguridad no deberían impedirle desarrollar aplicaciones y servicios que utilicen dispositivos de IoT. La IoT aporta un nuevo conjunto de desafíos para el mantenimiento de dispositivos tradicionales, pero hay soluciones que le permiten aprovisionar y mantener los dispositivos de forma centralizada, así como la comunicación segura del dispositivo.
Por ahora, estoy seguro de que habrá adivinado que Azure tiene una solución de IoT como esa. Ofrece un conjunto de servicios de IoT. Veamos cómo puede explorar la IoT con Azure.

Aceleración de las implementaciones de Azure IoT
Este capítulo se centra en Azure IoT Hub, un servicio que le permite aprovisionar y conectar dispositivos de IoT para desarrollar sus propias soluciones. Puede definir cómo se conectan esos dispositivos de IoT, qué usuarios o aplicaciones pueden acceder a sus datos y asegurar la conectividad. El modo para desarrollar e implementar la infraestructura de la aplicación para conectar todo depende de usted.
Los aceleradores de soluciones Azure IoT son escenarios clave preconfigurados, como supervisión remoto de dispositivos o una fábrica conectada. Los aceleradores implementan servicios comunes de Azure como IoT Hub, Web Apps, Cosmos DB y almacenamiento, y ejecutan una aplicación de ejemplo que integra todos estos servicios diferentes.
Usted todavía necesita personalizar la aplicación para su propio entorno, dispositivos de IoT en uso y los datos que se recopilarán y controlarán, pero los aceleradores de soluciones de IoT le brindan un gran marco para empezar. Mientras que IoT Hub crea una manera para que usted conecte los dispositivos de IoT a Azure y luego le permite implementar servicios adicionales que necesita, los aceleradores de soluciones de IoT implementan soluciones preconfiguradas que utilizan los servicios de Azure más comunes que usaría.
Si le interesa la IoT después de este capítulo y quiere obtener más información, los aceleradores de soluciones Azure IoT son una gran manera de ver las posibilidades de lo que Azure puede ofrecer. Como analizamos en este libro, Azure es mucho más que solo uno o dos servicios independientes. Puede implementar muchos servicios para proporcionar la mejor experiencia de aplicación posible para sus clientes.

Administración centralizada de dispositivos con Azure IoT Hub
Azure IoT Hub le permite administrar, actualizar y transmitir datos de forma centralizada desde dispositivos de IoT. Con este servicio, puede realizar acciones como la configuración de rutas de aplicación para datos recibidos desde dispositivos, aprovisionamiento y administración de certificados para asegurar la comunicación y control de la salud con diagnósticos y métricas Azure. Puede conectar sus dispositivos de IoT a otros servicios y aplicaciones Azure para permitirles enviar y recibir datos como parte de una solución más amplia. Al igual que con todas las cosas en Azure, el acceso puede ser controlado con RBAC, y los datos de diagnóstico pueden recopilarse de forma centralizada para la solución de problemas y control o alertas. La figura describe el modo en que actúa un IoT Hub como lugar central para conectar dispositivos de IoT a los servicios y aplicaciones más amplios de Azure.

Controla el acceso a IoT Hub con directivas de acceso compartido. Estas directivas son como cuentas de usuario y permisos. Existen directivas predeterminadas que permiten que los dispositivos y los servicios se conecten a IoT Hub, o que lean y escriban información desde el registro de dispositivos que realiza el seguimiento de dispositivos de IoT conectados y claves de seguridad. A cada directiva se le puede asignar uno o más de los siguientes permisos:
– Lectura del registro
– Escritura del registro
– Conexión de servicios
– Conexión de dispositivos
Las claves de acceso compartido son utilizadas por aplicaciones y servicios para conectarse a un IoT Hub. Al igual que con el almacenamiento de información (analizado en el capítulo 4), las claves de acceso compartido permiten definir cadenas de conexión para identificar el host, la directiva de acceso y la clave de acceso. Una cadena de conexión combina la clave de acceso, el tipo de directiva de acceso y el nombre de host de IoT Hub. Aquí hay una cadena de conexión de IoT Hub de ejemplo:
HostName=azuremol.azure-devices.net;SharedAccessKeyName=registryRead;
➥SharedAccessKey=6be2mXBVN9B+UkoPUMuwVDtR+7NZVBq+C7A1xCmQGAb=

Existen claves primarias y secundarias, que pueden rotarse y actualizarse por motivos de seguridad, al igual que la actualización periódica de contraseñas. Soluciones como Azure Key Vault son una gran manera de hacer un seguimiento y almacenar estas claves para que las aplicaciones las obtengan cuando sea necesario. Este enfoque a la administración de claves significa que puede rotar con frecuencia las claves de acceso sin necesidad de actualizar también todo el código de la aplicación.
Los certificados digitales se pueden almacenar en un IoT Hub y aprovisionarse de forma automática a los dispositivos de IoT. Recuerde, los dispositivos de IoT a menudo están fuera de su infraestructura principal y pueden conectarse directamente a través de Internet sin ningún tipo de conexión de red segura como una VPN. Asegúrese de que todos los datos entre sus dispositivos y el IoT Hub estén cifrados mediante conexiones SSL/TLS. Azure Key Vault puede generar y almacenar certificados SSL que luego se agregan al IoT Hub. O puede utilizar una entidad de certificación para solicitar y emitir certificados. Lo importante es asegurarse de que toda la comunicación entre sus dispositivos de IoT y Azure esté cifrada. De lo contrario, es probable que reciba un error.
Las rutas de IoT Hub le permiten enviar datos desde dispositivos de IoT a otros servicios Azure. Puede definir criterios, como que el contenido del mensaje contenga una palabra clave o un valor determinados, y, a continuación, enrutar los mensajes para que se almacenen en Azure Storage o sean procesados por una aplicación web. En uno de los siguientes ejercicios, usted simulará un sensor de temperatura básico conectado a un dispositivo de IoT. Podría definir una ruta en IoT Hub para ver los datos entrantes y, si la temperatura registrada supera los 30 °F, enrutar los datos a una aplicación lógica para enviar una alerta por correo electrónico. Analizaremos el maravilloso mundo de la informática sin servidor y aplicaciones lógicas.

La vida con Edge
En este capítulo, nos centramos en Azure IoT Hub Otro servicio, Azure IoT Edge, le permite ejecutar algunos servicios como Azure Functions y Stream Analytics en su entorno local. En lugar de tener todos los dispositivos IoT transmitiendo datos que se procesan centralmente en Azure, puede procesar los datos dentro de cada ubicación.
Azure IoT Edge ejecuta aplicaciones y servicios en contenedores. El uso de contenedores permite que IoT Edge sea portátil y coherente en el modo en que funciona en diferentes dispositivos y entornos. Se pueden implementar servicios Azure preconfigurados, o puede escribir sus propias aplicaciones y distribuirlas a ubicaciones de Edge.

El principal beneficio de IoT Edge es que descarga parte del procesamiento de datos y de las transferencias de datos de red. Si puede procesar datos localmente en IoT Edge, puede agrupar en lotes grandes fragmentos de datos y transmitirlos de nuevo a Azure. Las aplicaciones centrales pueden entonces incorporar información de otras ubicaciones de perímetro para que sea procesada por servicios como IA y ML.
Otro gran escenario para Azure IoT Edge son las ubicaciones remotas, que a menudo se encuentran en las industrias de petróleo y gas o de transporte, donde la conectividad a Internet puede no ser lo suficientemente confiable para la transmisión de todos los datos de dispositivos de IoT a Azure para el procesamiento central. IoT Edge permite que esas ubicaciones remotas continúen funcionando con cierta autonomía, incluso cuando no hay conexión a Internet.
Al planificar una infraestructura de aplicaciones que involucre dispositivos de IoT, examine cómo manipula las interrupciones de red y las conexiones de Internet deficientes. Si su entorno se basa en Internet, planifique conexiones de Internet y equipos redundantes para enrutar los datos. U observe IoT Edge para procesar de forma local los datos cuando no se puede hacer centralmente en Azure.

Pruébelo ahora
Para empezar con IoT y crear un IoT Hub, complete los siguientes pasos:
1 Abra Azure Portal; inicie Cloud Shell; y cree un grupo de recursos como azuremolchapter20:
az group create –name azuremolchapter20 –location eastus
2 Ha trabajado mucho con la CLI de Azure en este libro, dado que los comandos de Cloud Shell y CLI le permiten crear y administrar recursos rápidamente. Como se mencionó en capítulos anteriores, la CLI de Azure también puede utilizar módulos adicionales, denominados extensiones. Estas extensiones agregan más funcionalidad y a menudo se actualizan fuera del ciclo de lanzamiento normal de Acure CLI principal. Azure IoT se está expandiendo rápidamente y está añadiendo nuevas características, por lo que los comandos principales para interactuar con IoT Hub provienen de una extensión de la CLI de Azure.
Para obtener la funcionalidad completa que necesita para estos ejercicios, instale la extensión CLI de Azure IoT:
az extension add –name azure-cli-iot-ext
3 Cree un IoT Hub y escriba un nombre, como azuremol. Para estos ejercicios, puede utilizar un IoT Hub de nivel gratis, f1:
az iot hub create \
–resource-group azuremolchapter20 \
–name azuremol \
–sku f1 \
–partition-count 2

NOTA Puede crear solo un hub de nivel gratis por suscripción, pero estos hubs son excelentes para probar la comunicación entre dispositivos e integrarse con otros servicios Azure. El hub de nivel gratuito está actualmente limitado a 8000 mensajes al día y admite un máximo de 500 dispositivos conectados. Esto puede parecer mucho, pero según lo que esté haciendo, un solo dispositivo que envía un mensaje a IoT Hub aproximadamente cada 12 segundos alcanzará ese límite de 8000 mensajes.
Su IoT Hub está bastante vacío ahora. No hay mucho que se puede hacer con este sin uno o más dispositivos de IoT conectados. Un dispositivo común usado para IoT es el Raspberry PI. Se trata de un miniequipo de bajo costo que se puede conectar a redes Wi-Fi y utilizar los sensores comunes listos para usar para la temperatura, la humedad y la presión. También se puede utilizar para controlar pequeños motores, luces y temporizadores. No obstante, no es necesario salir corriendo y comprar una Raspberry Pi para trabajar con IoT Hub, puede simular uno en su navegador web.

Creación de un dispositivo Raspberry Pi simulado
Los dispositivos de IoT son geniales, pero hay una barrera de entrada en que necesita un dispositivo real para usar, ¿verdad? ¡No! Hay algunas maneras en las que puede simular un dispositivo de IoT con software. Este enfoque basado en software le permite centrarse en el desarrollo de su aplicación rápidamente y luego en la transición al hardware real. Todavía es necesario prestar atención a la forma en que el código se ejecuta en el hardware de IoT real, especialmente en dispositivos de baja potencia, ya que es posible que no tengan acceso a todas las bibliotecas necesarias, o incluso recursos de memoria, a las que tiene acceso la aplicación simulada.
Microsoft proporciona un simulador de Raspberry Pi gratis a través de GitHub en https://azure-samples.github.io/raspberry-pi-web-simulator. Una Raspberry Pi es estupenda para hacer pruebas, pero hay que tener cuidado cuando se utiliza un hardware barato como la Raspberry Pi en entornos de producción. Planifique cómo actualizar y administrar estos dispositivos. Los dispositivos de IoT dedicados, como Azure Sphere (https://azure.microsoft.com/services/azure-sphere), proporcionan opciones de seguridad y administración adicionales. Para este libro y en sus propias pruebas y aprendizaje, Raspberry Pi es una buena alternativa. En este simulador, sensor BME280 común que recopila lecturas de temperatura y humedad es simulado en software, junto con un LED simulado para mostrar cuando el dispositivo transmite datos al IoT Hub. No puede personalizar esto mucho, pero le permite ver cómo una aplicación básica Node.js puede ejecutarse en la Raspberry Pi, sondear los datos de un sensor, y enviarlos de vuelta a Azure.
NOTA Si cosas como Raspberry PI, los sensores electrónicos y de temperatura, y Node.js parecen intimidantes, no se preocupe. Al igual que con los capítulos de IA y ML, los contenedores, y Kubernetes, no vamos a profundizar demasiado en los dispositivos y la programación de IoT. Sin embargo, si usted siente que desea enchufar un soldador y profundizar en la electrónica al final de este capítulo, es más que bienvenido a hacerlo.
Antes de poder utilizar el simulador de Raspberry Pi, es necesario crear una asignación de dispositivo en Azure IoT Hub. Este proceso crea un ID de dispositivo único para que su IoT Hub entienda con qué dispositivo se está comunicando y cómo procesar los datos. En escenarios más complejos, podría aprovisionar configuraciones adicionales para el dispositivo e insertar certificados digitales. Para este ejercicio, solo tendrá que crear una identidad de dispositivo.

Pruébelo ahora
Para crear un dispositivo de IoT de Raspberry Pi simulado, complete los siguientes pasos:
1 En Azure Cloud Shell, cree una identidad de dispositivo en su IoT Hub, como azuremol y proporcione un nombre para el dispositivo, como raspberrypi:
az iot hub device-identity create \
–hub-name azuremol \
–device-id raspberrypi

2 ¿Recuerda las directivas de acceso compartido de la sección 20.2? Cada dispositivo de IoT también tiene su propia clave de acceso y cadena de conexión que se utilizan para identificarlo cuando se comunica de nuevo al IoT Hub. Esta característica clave de Azure IoT asegura los dispositivos y minimiza el riesgo de exposición si un dispositivo se ve comprometido.
Para utilizar el dispositivo con el simulador Raspberry Pi, necesita la información para la cadena de conexión del dispositivo. Este identificador único incluye el nombre de host de su IoT Hub, el ID del dispositivo y una clave de acceso:
az iot hub device-identity show-connection-string \
–hub-name azuremol \
–device-id raspberrypi \
–output tsv

3 Copie el contenido de su cadena de conexión; lo necesitará en el paso 4. La salida es similar a lo siguiente:
HostName=azuremol.azure-devices.net;DeviceId=raspberrypi;
➥SharedAccessKey=oXVvK40qYYI3M4u6ZLxoyR/PUKV7A7RF/JR9WcsRYSI=

4 Ahora viene la parte divertida. Abra el simulador de Raspberry PI en su navegador web: https://azure-samples.github.io/raspberry-pi-web-simulator. Busque en la sección de código a la derecha en el simulador. Alrededor de la línea 15, debería haber una variable connectionString, que ya le solicite [Su cadena de conexión del dispositivo de IoT Hub]. Copie y pegue la cadena de conexión del paso 3, como se muestra en la figura.
5 Seleccione el botón Ejecutar justo debajo de la ventana de código para iniciar el simulador.
Cada dos segundos, la ventana de la consola muestra un mensaje que muestra los datos enviados al IoT Hub. La luz LED roja en el diagrama del circuito también parpadea cuando esto ocurre, para simular el modo en que se pueden controlar las salidas conectadas a Raspberry Pi. El mensaje de salida en la ventana de la consola es similar al siguiente:
Sending message: {«messageId»:1,»deviceId»:»Raspberry Pi Web
➥Client»,»temperature»:24.207095037347923,
➥»humidity»:69.12946775681091}

¿De dónde provienen las lecturas de temperatura y humedad? Este dispositivo es un Raspberry Pi simulado y no hay un sensor BME280 real, de modo que la aplicación genera estos valores en software. Si observa el resto del código en la ventana del simulador, alrededor de la línea 99 la aplicación define el sensor. El simulador entonces replica el modo en que actuaría el sensor real y genera los datos devueltos del sensor a la aplicación. Este es un ejemplo básico, así que piense qué más puede leer aquí: revoluciones por minuto (RPM) de un motor, o coordenadas de GPS de un contenedor o camión de envío, etc. Aquí es donde hay un equilibrio entre la simulación de un dispositivo en software y el desarrollo de una aplicación funcional con el hardware real y los datos del sensor. En algún momento, usted necesita comprar o pedir prestado equipos si desea profundizar más en Azure IoT.

6 Para confirmar que el IoT Hub está recibiendo los mensajes de su dispositivo simulado, examine el estado de la cuota. Proporcione el nombre de su IoT Hub, como azuremol:
az iot hub show-quota-metrics –name azuremol
La salida es similar al siguiente ejemplo, que muestra que se han recibido 5 mensajes del máximo de 8000 mensajes totales por día y que hay un dispositivo conectado de un máximo de 500 dispositivos totales. Puede que tome unos minutos para que estas métricas se llenen, así que no se preocupe si no ve ningún dato inmediatamente:
[
{
«currentValue»: 5,
«maxValue»: 8000,
«name»: «TotalMessages»
},
{
«currentValue»: 1,
«maxValue»: 500,
«name»: «TotalDeviceCount»
}
]

También puede buscar en Azure Portal: elija su grupo de recursos y, a continuación, seleccione su IoT Hub. En la página de información general, el uso del hub informa la cantidad de mensajes recibidos y de los dispositivos conectados. Una vez más, puede tomar un minuto o dos para que aparezcan los mensajes y se registren respecto de la cuota. Cualquier aplicación sería capaz de utilizar inmediatamente los mensajes recibidos, tal como lo vemos en la sección siguiente.

Problemas en el paraíso
Si no recibe ningún mensaje en su IoT Hub, compruebe la ventana de salida de su dispositivo Raspberry Pi simulado. Una de las primeras cosas que hace la aplicación es conectarse con Azure IoT Hub. Se muestra un error de conexión si la cadena de conexión es incorrecta. Asegúrese de copiar y pegar correctamente toda la cadena de conexión. La cadena de conexión comienza con HostName, y el último carácter en todas las claves de acceso es siempre un signo igual (=).
Si la ventana de salida informa un error, copie el texto del error en su motor de búsqueda favorito y busque un resultado que coincida. Asegúrese de que no ha cambiado ninguna de las otras líneas de código, lo que causaría un problema. Lo único que necesita cambiar en la ventana de código es la línea de la cadena de conexión.
Debido a que el dispositivo Raspberry Pi simulado se ejecuta en un navegador web, podría tener un problema de sitio web genérico. Intente actualizar la página, o acceda al simulador en un navegador diferente (https://azure-samples.github.io/raspberry-pi-web-simulator).

Transmisión de datos de Azure IoT Hub a las aplicaciones web de Azure
Un dispositivo que se conecta a un IoT Hub no sirve si no puede hacer nada con los datos. Aquí es donde puede comenzar a integrar muchos de los servicios y características que ha aprendido en este libro. ¿Desea transmitir a las tablas o colas de Azure Storage? Puedes hacer eso. ¿Procesar datos de dispositivos de IoT en VM o contenedores Azure? ¡Adelante! ¿Utilizar Azure Cosmos DB para replicar sus datos y, a continuación, acceder a estos con aplicaciones web Azure globalmente redundantes y Traffic Manager? ¡Por supuesto!
En el escenario de ejemplo, el IoT Hub es el mecanismo de conexión y el punto de entrada para sus dispositivos de IoT a Azure. El hub en sí no hace nada directamente con los datos. Existe un punto de conexión predeterminado para eventos, que es un sector grande para cualquier mensaje recibido del dispositivo de IoT. Su dispositivo Raspberry Pi simulado envía mensajes a IoT Hub, y estos mensajes llegan a estepunto de conexión de eventos. En la figura, se muestra el flujo de mensajes desde dispositivos a través del IoT Hub a un punto de conexión.

Puede crear puntos de conexión personalizados que enruten los mensajes directamente a los servicios de Azure, como almacenamiento y Service Bus. En la 4ta entrada, vimos las colas de Azure Storage para conocer una manera de pasar mensajes entre aplicaciones. Una plataforma de mensajería empresarial más sólida y escalable es Azure Service Bus. Se pueden agregar los mensajes al Service Bus, como los datos recibidos de los dispositivos de IoT, y otras aplicaciones pueden escuchar estos mensajes y responder en consecuencia.
Si no necesita la complejidad de leer mensajes de algo como un Service Bus, puede utilizar grupos de consumidores con el punto de conexión de eventos predeterminado. Un grupo de consumidores permite que los servicios como Azure Web Apps lean los datos del punto de conexión, como se muestra en la figura. Cada lectura de servicio de Azure IoT Hub debe tener su propio grupo de consumidores. Varios servicios, cada uno con su propio grupo de consumidores, pueden recibir los mismos mensajes y procesarlos según sea necesario.

Vamos a crear una aplicación web de Azure que utiliza un grupo de consumidores para leer los datos del mensaje en tiempo real de su dispositivo Raspberry Pi simulado. Este ejemplo básico muestra cómo se pueden transmitir datos desde dispositivos de IoT y acceder a ellos desde aplicaciones web.

Pruébelo ahora
Para crear una aplicación web Azure que lea datos de dispositivos de IoT, complete los siguientes pasos:
1 Cree un plan de Azure App Service para su aplicación web en Azure Cloud Shell y proporcione un nombre, como azuremol. Para estos ejercicios, el nivel gratis (f1) es lo suficientemente bueno y mantiene los costos bajos:
az appservice plan create \
–resource-group azuremolchapter20 \
–name azuremol \
–sku f1

2 Cree su aplicación web. Proporcione un nombre, como molwebapp, y habilítelo para usarlo con Git de modo que pueda implementar la aplicación de ejemplo. Al igual que con otros recursos de Azure de acceso público, tiene que proporcionar su propio nombre único global
az webapp create \
–resource-group azuremolchapter20 \
–plan azuremol \
–name molwebapp \
–deployment-local-git

3 Defina el grupo de consumidores para su IoT Hub, junto con algunas configuraciones de aplicaciones web. Estas configuraciones permiten que su aplicación web se conecte a su IoT Hub. En la figura, se muestra lo que desarrollará en los siguientes pasos.

4 Cree un grupo de consumidores que permita que su aplicación web acceda a los datos de eventos transmitidos desde su dispositivo de IoT. Proporcione su IoT Hub, como azuremol, y, a continuación, escriba un nombre para su grupo de consumidores como molwebapp. Asegúrese de utilizar su propio nombre en los siguientes pasos. Su grupo de consumidores se crea en el punto de conexión de eventos predeterminado:
az iot hub consumer-group create \
–hub-name azuremol \
–name molwebapp

5 Debe indicarle a su aplicación web cómo se llama el grupo de consumidores. Cree una configuración de aplicaciones para la aplicación web que utilice la aplicación de ejemplo que implemente al final del ejercicio. La configuración de la aplicación en aplicaciones web permite definir configuraciones específicas, como el nombre del grupo de consumidores y la cadena de conexión, sin que esos valores se codifiquen de forma rígida en su aplicación.
Proporcione el nombre del grupo de consumidores creado en el paso 4, como mol-webapp:
az webapp config appsettings set \
–resource-group azuremolchapter20 \
–name molwebapp \
–settings consumergroup=molwebapp

6 Para conectarse a su IoT Hub, su aplicación web necesita conocer la cadena de conexión para el Hub. Esta cadena de conexión es diferente a la que usted copió para su dispositivo Raspberry Pi simulado en el ejercicio anterior. Recuerde, hay una cadena de conexión para su IoT Hub, que utiliza directivas de acceso compartido para definir permisos de acceso; y hay una cadena de conexión para cada dispositivo de IoT. Su aplicación web necesita leer desde el grupo de consumidores del punto de conexión de IoT Hub, por lo que debe definir una cadena de conexión para el propio IoT Hub.
7 Obtenga la cadena de conexión de IoT Hub y asígnele una variable denominada iotconnectionstring, que se utiliza en el paso 8:
iotconnectionstring=$(az iot hub show-connection-string \
–hub-name azuremol \
–output tsv)

8 Cree otra configuración de la aplicación para la aplicación web, esta vez para la cadena de conexión de IoT Hub. La variable definida en el paso 7 se utiliza para permitir que la aplicación de ejemplo se conecte y lea los datos del dispositivo de IoT:
az webapp config appsettings set \
–resource-group azuremolchapter20 \
–name molwebapp \
–settings iot=$iotconnectionstring

9 Habilite WebSockets. Un WebSocket es un medio de comunicación bidireccional entre un navegador y un servidor. La aplicación de ejemplo actualiza automáticamente el navegador web con los datos recibidos desde el dispositivo Raspberry Pi. Para realizar esta actualización automatizada, la aplicación utiliza WebSockets. A continuación, el servidor puede insertar datos en el navegador y hacer que se actualice automáticamente:
az webapp config set \
–resource-group azuremolchapter20 \
–name molwebapp \
–web-sockets-enabled

Vamos a hacer una pausa aquí para analizar lo que ha hecho hasta ahora. Ha trabajado con aplicaciones web en muchos de los capítulos anteriores, pero la configuración de la aplicación para la aplicación web y los WebSockets son nuevos. En la figura, se resume el modo en que se conectan su aplicación web e IoT Hub.

Ahora vamos a terminar el ejercicio e implementar la aplicación de ejemplo desde el repositorio de GitHub a su aplicación web. A continuación, puede abrir la aplicación web en su navegador y ver los datos en tiempo real transmitidos desde su Raspberry Pi simulado.
10 Si fuera necesario, clone el repositorio de ejemplos de GitHub en su Cloud Shell de la siguiente manera:
git clone https://github.com/fouldsy/azure-mol-samples-2nd-ed.git
11 Cambie al directorio para iniciar el capítulo proximo:
cd azure-mol-samples-2nd-ed/20
12 Inicialice el repositorio Git y agregue la página web básica:
git init && git add . && git commit -m «Pizza»
13 Para cargar la aplicación de ejemplo, cree una conexión a su aplicación web. El siguiente comando obtiene el repositorio de la aplicación web y configura su repositorio Git de ejemplo local para conectarse con él:
git remote add molwebapp \
$(az webapp deployment source config-local-git \
–resource-group azuremolchapter20 \
–name molwebapp \
–output tsv)

En capítulos anteriores, tuvo que buscar esta dirección; pero por ahora espero que haya empezado a explorar qué más puede hacer la CLI de Azure y se haya dado cuenta de que gran parte de esta información se puede obtener rápidamente:
14 Inserte el sitio HTML de ejemplo en su aplicación web con el siguiente comando:
git push molwebapp master
15 Cuando se le solicite, ingrese la contraseña para el usuario de Git que creó y utilizó en capítulos anteriores.

Si no escribió su contraseña de Git en una nota rápida
Si olvidó la contraseña, puede restablecerla. Primero, obtenga el nombre de usuario de su cuenta de implementación de Git local:
az webapp deployment user show –query publishingUserName
Para restablecer la contraseña, introduzca el nombre de su cuenta desde el comando anterior y, a continuación, siga las instrucciones para configurar una nueva contraseña. El siguiente ejemplo restablece la contraseña de la cuenta de usuario denominada azuremol:
az webapp deployment user set –user-name azuremol

16 Visualice el nombre de host para su aplicación web y, a continuación, abra la dirección en un navegador web:
az webapp show \
–resource-group azuremolchapter20 \
–name molwebapp \
–query defaultHostName \
–output tsv

La primera vez que abra el sitio en su navegador web puede tardar unos segundos, ya que la aplicación web se conecta a IoT Hub, inicia la conexión de WebSocket y espera a que se reciba el primer mensaje de dispositivo. Cada dos segundos, el navegador web debe actualizarse automáticamente con los últimos datos simulados del dispositivo Raspberry Pi, como se muestra en la figura.

Si la instancia de su aplicación web no muestra ningún dato, asegúrese de que el dispositivo Raspberry Pi simulado siga ejecutándose. Si es necesario, inicie el dispositivo simulado y asegúrese de que se conecte a Azure IoT y envíe mensajes. Los datos deben comenzar a aparecer en la instancia de la aplicación web.

Revisión de componentes de Azure IoT
Espero que los ejercicios en este capítulo le hayan dado una idea de los servicios que están disponibles en Azure para las soluciones de IoT:
– Azure IoT Hub brinda una gran manera de aprovisionar, conectar y administrar muchos dispositivos de IoT y luego se integran con otros servicios de Azure.
– Los aceleradores de soluciones de Azure IoT proporcionan escenarios preconfigurados que integran automáticamente muchos servicios de Azure para proporcionar un entorno de aplicación completo.
– Azure IoT Edge le permite implementar servicios Azure en su entorno local para procesar los datos de los dispositivos de IoT sin la necesidad de transmitir todos los datos de forma centralizada a Azure.
Para analizar realmente los dispositivos Azure IoT e IoT en general, le recomiendo que compre un dispositivo Raspberry Pi básico o similar. Estos dispositivos son relativamente económicos, a menudo vienen con algunos sensores básicos o componentes eléctricos para probar diferentes ideas y le ofrecen una gran plataforma de aprendizaje cuando ve lo que es posible al integrar el hardware y el software. Solo recuerde las advertencias del capítulo sobre IA y ML y la construcción de Skynet. Manning también tiene algunos libros excelentes, tales como Building the Web of Things (Creación de la Web de las Cosas), de Dominique D. Guinard y Vlad M. Trifa (https://www.manning.com/books/building-the-web-of-things) y JavaScript on Things (JavaScript en las Cosas), de Lyza Danger Gardner (https://www.manning.com/books/javascript-on-things), que profundizan sobre Raspberry Pi, los procedimientos recomendados de IoT, y la programación de JavaScript y Node.js en dispositivos IoT.

¿Recuerda que dije «siempre elimine los grupos de recursos»?
El procedimiento recomendado a lo largo de este libro ha sido eliminar sus grupos de recursos al final de cada capítulo. Este enfoque garantiza que no deje los servicios y las aplicaciones en uso que cuestan dinero cuando no los necesita.
Azure IoT le ofrece una gran plataforma para transmitir datos a Azure. En general, necesita procesar esos datos, no solo mostrarlos en una aplicación web como lo hizo en los ejercicios. El capítulo siguiente analiza la informática sin servidor con los servicios de funciones y aplicaciones lógicas.
Para mostrar cómo estos servicios Azure funcionan bien juntos, no elimine el grupo de recursos y los servicios que implementó en este capítulo. Los utilizará de inmediato al comienzo del capítulo siguiente para ver cómo puede tomar acciones basadas en los datos recibidos de sus dispositivos de IoT. Solo asegúrese de volver a su dispositivo Raspberry Pi simulado y seleccione el botón Detener; de lo contrario, el límite de 8000 mensajes se consumirá muy rápidamente

Laboratorio: Exploración de casos prácticos para IoT
Este capítulo analizó muchas cosas nuevas, y sin un dispositivo de IoT real, está limitado respecto de lo que puede hacer. El Capítulo se basa en Azure IoT Hub y Raspberry Pi simulado, por lo que no quiero configurar mucho más en este momento. Aquí algunas cosas que usted puede hacer para pensar más sobre IoT:
1 ¿En qué áreas puede pensar que los dispositivos de IoT podrían beneficiar a su negocio? Si no trabaja en un negocio en este momento, piense en la pizzería ficticia del Mes de almuerzos de Azure.
2 ¿Qué podría hacer para mejorar las cosas para los clientes con IoT?
3 ¿Utilizaría Azure IoT Edge? ¿Por qué sí o por qué no?
4 ¿Qué otros servicios de Azure probablemente integraría para que ejecutar sus aplicaciones?
5 Si le queda tiempo durante su almuerzo, pruebe uno de los aceleradores de soluciones Azure IoT en www.azureiotsolutions.com/Accelerators. Hay un escenario de simulación de dispositivos que crea una VM y sensores simulados, que es como el dispositivo Raspberry Pi simulado, pero mucho más grande. Tarda unos minutos en aprovisionar todos los recursos necesarios, pero luego observe Azure Portal para ver lo que se creó y cómo todas las partes trabajan juntas:
6 ¿Puede ver cómo se utilizan los servicios de los capítulos anteriores, como almacenamiento y Cosmos DB?
7 ¿Qué otros aceleradores de soluciones de IoT están disponibles? ¿Alguno de ellos se alinea con las ideas que tenía para sus propias aplicaciones?

y hasta aqui la entrada del dia de hoy…