Edge computing con Azure IoT Edge


La computación en nube (o Cloud Computing) ha dominado las discusiones de TI durante las últimas dos décadas, particularmente desde que Amazon popularizó el término en 2006 con el lanzamiento de Elastic Compute Cloud (ECC) . En su forma más simple, la computación en la nube es la centralización de los servicios informáticos para aprovechar una infraestructura de centro de datos compartida y gracias a la economía de escala para reducir los costos.

Sin embargo, la latencia, influenciada por el número de saltos de enrutadores,los  retrasos en los paquetes introducidos por la virtualización o la ubicación del servidor dentro de un centro de datos, siempre ha sido una cuestión clave de la migración en la nube y es aquí es donde entra en juego el Edge Computing (computación al borde) donde esencialmente se descentralizan los servicios de TI y acercándolos a la fuente de datos, lo cual puede tener un impacto significativo en la latencia, ya que puede reducir drásticamente el volumen de datos movidos y la distancia que recorre.

La naturaleza distribuida de la informática de borde significa que, junto con la reducción de la latencia  también mejora la resiliencia, reduce la carga de la red y es más fácil de escalar .

El procesamiento de los datos comienza en su origen  y una vez que se completa el procesamiento inicial, solo se deben enviar los datos que necesitan un análisis posterior o que requieren otros servicios lo cual  reduce los requisitos de red y la posibilidad de cuellos de botella en cualquier servicio centralizado.

Además, con otras ubicaciones de borde cercanas,  la posibilidad de almacenar datos en caché en el dispositivo, puede enmascarar interrupciones y mejorar la resistencia de su sistema lo cual  reduce la necesidad de escalar sus servicios centralizados ya que manejan menos tráfico. Ademas de la reducción del trafico  con el consiguiente mejora   también pueden reducir los costos, la complejidad de la arquitectura y la administración.

 

Azure IoT Edge

Las soluciones de nube híbrida e Internet de las cosas (IoT) son una realidad con Azure IoT Edge  un servicio completamente administrado que entrega inteligencia en la nube localmente implementando y ejecutando sin problemas inteligencia artificial, servicios Azure y lógica personalizada directamente en dispositivos IoT multiplataforma, desde una pequeña Raspberry Pi hasta grandes máquinas industriales administrando todo de manera centralizada en la nube  de Microsoft.

Algunas de las facilidades  que puede proporcionar esta   plataforma:

  • Habilitar inteligencia artificial y análisis avanzados en el borde:permite crear análisis avanzados, usar aprendizaje automático e inteligencia artificial en la nube y desplegarlo en dispositivos físicos utilizando IoT Edge. Un ecosistema de servicios de Azure y de terceros  ayudará a habilitar nuevas aplicaciones de IoT en sus dispositivos de borde. Se puede usar  Azure Machine Learning, Azure Stream Analytics, Azure Functions para crear soluciones de IoT más avanzadas con menos tiempo y esfuerzo.Cree fácilmente AI en el borde con AI Toolkit for Azure IoT Edge.
  • Reducir los costos de la solución IoT:Decida qué datos de IoT debe capturar y enviar a la nube programando su dispositivo de borde para procesar los datos localmente. Luego, envíe solo los datos que necesita almacenar y analizar en la nube. Al reducir la cantidad de datos que transmite de un dispositivo a la nube, reducirá los costos de ancho de banda y los costos asociados con el almacenamiento y análisis de datos en otras aplicaciones de negocios, pero aún así se beneficiará de las perspectivas mejoradas.
  • Simplificar el desarrollo:Facilite los esfuerzos de desarrollo para soluciones avanzadas de IoT aprovechando las habilidades y los recursos que ya tiene. Utilice herramientas de programación conocidas como Visual Studio y múltiples lenguajes de programación, incluidos C, Node.js, Java, Microsoft .NET y Python para optimizar y monitorear su solución de IoT, y aplique correcciones cuando sea necesario. Utilice los mismos modelos de programación que usa en la nube para crear y probar sus aplicaciones de IoT y luego empújelas a sus dispositivos de borde.
  • Operar fuera de línea o con conectividad intermitente:Con IoT Edge, sus dispositivos periféricos pueden operar de manera confiable y segura incluso cuando están desconectados o solo tienen conectividad intermitente a la nube. Una vez reconectados, los dispositivos periféricos sincronizan automáticamente su estado más reciente y continúan funcionando sin problemas, independientemente de la conectividad en curso.

 

Ejemplo de Azure IoT Edge

Podemos  probar gratuitamente  la interfaz en la nube Azure IoT Edge para implementar el código preconstruido de forma remota en un dispositivo IoT Edge.  Para realizar esta tarea, primero se necesita usar un dispositivo Windows para simular un dispositivo IoT Edge y  luego puede implementar un módulo en él.

Vamos a describir los pasos  a seguir pero antes si no tiene una cuenta activa a Azure, cree una cuenta gratuita antes de comenzar.

Requisitos previos

Asumims que está usando un ordenador  o máquina virtual que ejecuta Windows para simular un dispositivo de Internet de las cosas.  Si está ejecutando Windows en una máquina virtual, habilite la virtualización anidada y asigne al menos 2GB de memoria.

  1. Asegúres de estar usando una versión compatible con Windows:
    • Windows 10 Windows 10
    • Windows Server Servidor de windows
  2. Instale Docker para Windows y asegúrate de que esté ejecutándose.
  3. Instale Python 2.7 en Windows y asegúrese de que puede usar el comando pip.
  4. Ejecute el siguiente comando para descargar el script de control IoT Edge.
    cmdCopy
    pip install -U azure-iot-edge-runtime-ctl

Nota: Azure IoT Edge puede ejecutar contenedores de Windows o Linux.  Para usar contenedores de Windows, debe ejecutar:

  • Windows 10 Fall Creators Update, , o
  • Windows Server 1709 (Build 16299) o
  • Windows IoT Core (Build 16299) on a x64-based device Windows IoT Core (compilación 16299) en un dispositivo basado en x64

 Para Windows IoT Core, siga las instrucciones en Instalar el tiempo de ejecución de IoT Edge en Windows IoT Core . De lo contrario, simplemente configure Docker para usar contenedores de Windows y, opcionalmente, valide sus requisitos previos con el siguiente comando de PowerShell:

PowerShellCopy
Invoke-Expression (Invoke-WebRequest -useb https://aka.ms/iotedgewin)

Crear un concentrador de IoT con Azure CLI

Cree un concentrador de IoT en su suscripción de Azure.  El nivel gratuito de IoT Hub funciona para este inicio rápido. . Si ya usó IoT Hub y ya tiene un hub gratuito creado, puede omitir esta sección y pasar a Registrar un dispositivo IoT Edge  (en cada suscripción solo puede tener un centro IoT gratuito).

  1.  Inicie sesión en el portal de Azure .
  2.  Seleccione el botón Cloud Shell .Botón Cloud Shell
  3.  Cree un grupo de recursos. : El siguiente código crea un grupo de recursos llamado IoTEdge en la región oeste de EE. UU . :
    Azure CLICopy
    az group create --name IoTEdge --location westus
  4. . Cree un concentrador de IoT en su nuevo grupo de recursos. : El siguiente código crea un concentrador F1 gratuito llamado MyIotHub en el grupo de recursos IoTEdge :
    Azure CLICopy
    az iot hub create --resource-group IoTEdge --name MyIotHub --sku F1

 Registrar un dispositivo IoT Edge

Cree una identidad de dispositivo para su dispositivo simulado para que pueda comunicarse con su centro de IoT. Dado que los dispositivos IoT Edge se comportan y pueden administrarse de forma diferente a los dispositivos IoT típicos, usted declara que se trata de un dispositivo IoT Edge desde el principio.

  1. . En el portal de Azure, vaya a su centro de IdC.
  2.  Seleccione IoT Edge (vista previa) luego seleccione Agregar IoT Edge Device .Agregar dispositivo Edge IoT
  3. . Dele a su dispositivo simulado una ID de dispositivo única.
  4.  Seleccione Guardar para agregar su dispositivo.
  5. Seleccione su nuevo dispositivo de la lista de dispositivos.
  6. Copie el valor de la cadena de conexión-clave principal y guárdelo.  Utilizará este valor para configurar el tiempo de ejecución IoT Edge en la siguiente sección.

Configurar  IoT Edge runtime 

En tiempo de ejecución de IoT Edge se implementa en todos los dispositivos IoT Edge, el cual  comprende dos módulos:

  •   El agente IoT Edge que facilita la implementación y la supervisión de módulos en el dispositivo IoT Edge.  
  • El concentrador IoT Edge que gestiona las comunicaciones entre los módulos en el dispositivo IoT Edge y entre el dispositivo y el IoT Hub.

Configure el tiempo de ejecución con su cadena de conexión del dispositivo IoT Edge de la sección anterior.

cmdCopy
iotedgectl setup --connection-string "{device connection string}" --auto-cert-gen-force-no-passwords

Comience el tiempo de ejecución.

cmdCopy
iotedgectl start

 Compruebe Docker para ver que el agente IoT Edge se está ejecutando como un módulo.

cmdCopy
docker ps

Ver edgeAgent en Docker

 Implementar un módulo

 Una de las capacidades clave de Azure IoT Edge es la posibilidad de implementar módulos en sus dispositivos IoT Edge desde la nube.  Un módulo IoT Edge es un paquete ejecutable implementado como un contenedor.

En este ejemplo desplegaremos un módulo que genera telemetría para su dispositivo simulado.

  1. En el portal de Azure, vaya a su centro de IdC.
  2. Vaya a IoT Edge (vista previa) y seleccione su dispositivo IoT Edge.
  3. Seleccione Establecer módulos .
  4. . Seleccione Agregar IoT Edge Module .
  5. . En el campo Nombre , ingrese tempSensor .
  6. . En el campo URI de la imagen , ingrese microsoft/azureiotedge-simulated-temperature-sensor:1.0-preview .
  7. Deje las otras configuraciones sin cambios, y seleccione Guardar .Guarde el módulo IoT Edge después de ingresar el URI de nombre e imagen
  8. . De vuelta en el paso Agregar módulos , seleccione Siguiente .
  9.  En el paso Especificar rutas , seleccione Siguiente .
  10. . En el paso de la plantilla Revisar , seleccione Enviar .
  11.  Regrese a la página de detalles del dispositivo y seleccione Actualizar . Debería ver el nuevo módulo tempSensor ejecutándose a lo largo del tiempo de ejecución de IoT Edge.Ver tempSensor en la lista de módulos implementados

 Ver datos generados

 En este ejemplo rápido, creó un nuevo dispositivo IoT Edge e instaló en tiempo de ejecución IoT Edge en él.  Luego, utilizó el portal de Azure para impulsar un módulo IoT Edge para que se ejecute en el dispositivo sin tener que realizar cambios en el dispositivo.

En este ejemplo el módulo que creo  transmite  datos ambientales que puede usar para los tutoriales,pero en una instalacion habitual manejaria muchos mas datos de telemetria,sensores, etc.

Para  ver si todo esta funcionando ,abra el símbolo del sistema en su ordenador  que ejecuta su dispositivo simulado de nuevo.  Confirme que el módulo implementado desde la nube se está ejecutando en su dispositivo IoT Edge.

cmdCopy
docker ps

Ver tres módulos en su dispositivo

 Vea los mensajes que se envían desde el módulo tempSensor a la nube.

cmdCopy
docker logs -f tempSensor

Ver los datos de tu módulo

También puede ver la telemetría que está enviando el dispositivo utilizando la herramienta de explorador IoT Hub .

 Limpiar recursos

Si desea eliminar el dispositivo simulado que creó, junto con los contenedores Docker que se iniciaron para cada módulo, use el siguiente comando:

cmdCopy
iotedgectl uninstall

Cuando ya no necesite el IoT Hub que ha creado, puede usar el comando az iot hub delete para eliminar el recurso y los dispositivos asociados con él:

Azure CLICopy
az iot hub delete --name {your iot hub name} --resource-group {your resource group name}

Obviamente esto es solo el primer paso para comprender la potencia de esta tecnología pues el  paso obvio es usar hardware dedicado de bajo consumo como puede ser ene fecto uan Raspberry Pi   para usarlo como dispositivo Iot Edge

 

Fuente : https://docs.microsoft.com/en-us/azure/iot-edge/quickstart

Raspberry Pi como alternativa al ChromeCast


Chromecast es un adaptador de medios de comunicación streaming de Google que permite a los usuarios reproducir contenidos online como videos y música en un televisor digital.
El adaptador es un dongle   de pequeño  tamaño qeu cuesta unos 40€   y que se conecta al puerto HDMI de la TV y por otro lado con un cable de  alimentación se conecta a un puerto USB del TV  solamente con fines de alimentación  proporcionando los 5V DC  para mantenerlo activo

Gracias a una aplicación móvil  Chromecast puede transmitir contenido desde un creciente número de fuentes incluyendo Netflix, Hulu Plus, YouTube, Google Play música y películas y el navegador Chrome. Esencialmente se   puede utilizar un smartphone, tablet tanto Android como Appple ( iPhone  o Ipad) , o incluso también  un ordenador portátil o  de escritorio como un control remoto de TV donde como peculiaridad , una vez que la transmisión comienza, no es necesario mantener la aplicación abierta, y el dispositivo puede utilizarse para otros fines.
Incluso  se puede convertir  una  TV en un marco de fotos o personalizada on Google Fotos, Facebook, titulares de noticias y mucho más.

Rasbebrry Pi puede usarse como alternativa  al Chromecast aunque con algunas limitaciones pues no es  un clon directo de Chromecast, pero  gracias a esta solución  que vamos a ver   será posible transmitir vídeos de Youtube así como audio local y archivos de vídeo directamente desde su smartphone utilizando  simplemente una aplicación de Android.

El  hardware necesario que lo permite es el siguiente :

  • Raspberry Pi 3 (unos 33€ en  Amazon)-  Todos los modelos funcionarán, pero entonces será necesario un dongle USB Wifi ai).
  • Carcasa para  Raspeberry Pi o en su defecto una caja de plastico reciclada (tipo «tupper pequeño»).
  • Disipadores de calor
  • Tarjeta micro SD para el almacenamiento(normalmente con 8GB es suficiente).
  • Micro cargador Usb y Cable
  • Cable HDMI
  • Ratón y teclado

Para empezar a usar la RP 3,  tenemos que conectar a una pantalla a través de un cable HDMI. También tenemos que conectar un ratón y un teclado USB  a respectivos conectores USB ( normalmente un combo inalámbrico sólo usara un puerto USB)

Asimismo debemos conectar el cable de alimentación de 5V al menos 1Amp   por el conector   micro usb

Por ultimo, esta el  tema de  la tarjeta SD donde necesitamos copiar un sistema operativo pues sin esta,  la RP3 no hará absolutamente nada ( ni siquiera habrá señal de vídeo). Para ello necesitamos una tarjeta SD de al menos 8 GB (preferiblemente 16 GB ) e  instalar un sistema operativo

En  la página web principal de la  fundación Raspberry Pi iremos a descargas, y aquí podemos descargar diferentes sistemas operativos, por ejemplo, Ubuntu mate o incluso windows 10.

También hay una herramienta llamada Noobs  que le permite instalar diferentes sistemas operativos de una manera muy fácil.

raspb.PNG

Existe una versión especial de ventanas especifico  para  la Raspberry  Pi  , y que es el más usado en esta placa llamado  Raspbian  y por tanto que es el mas  aconsejable . Nos iremos pues al sitio  oficial Raspbian   (en esta versión  están utilizando el mismo espacio de usuario de 32 bits Raspbian usada en otros dispositivos Raspberry Pi, pero en los próximos meses van a trabajar  el movimiento al modo de 64 bits.)

En la url de descarga, como se  aprecia en la imagen de abajo ,   se mantienen tanto la imagen de la versión previa mínima (Jessie Lite ) o la nueva de Jessie con escritorio:

jessie.PNG

Lógicamente o interesante es descargar la primera  en lugar de la versión mínima, que ademas no incluye ninguna novedad.

Una vez decidida,  lo primero  es descargar la imagen correspondiente  en su ordenador

Para crear la imagen en la sd existen dos métodos  principalmente  , veamos el procedimiento tradicional:

  • Inserte la tarjeta SD en el lector de tarjetas SD  de su ordenador comprobando cual es la letra de unidad asignada. Se puede ver fácilmente la letra de la unidad, tal como G :, mirando en la columna izquierda del Explorador de Windows.
  • Puede utilizar la ranura para tarjetas SD, si usted tiene uno, o un adaptador SD barato en un puerto USB.
  • Descargar la utilidad Win32DiskImager desde la página del proyecto en SourceForge como un archivo zip; puede ejecutar esto desde una unidad USB.
  • Extraer el ejecutable desde el archivo zip y ejecutar la utilidad Win32DiskImager; puede que tenga que ejecutar esto como administrador. Haga clic derecho en el archivo y seleccione Ejecutar como administrador.
  • Seleccione el archivo de imagen que ha extraído anteriormente de Raspbian.
  • Seleccione la letra de la unidad de la tarjeta SD en la caja del dispositivo. Tenga cuidado de seleccionar la unidad correcta; si usted consigue el incorrecto puede destruir los datos en el disco duro de su ordenador! Si está utilizando una ranura para tarjetas SD en su ordenador y no puede ver la unidad en la ventana Win32DiskImager, intente utilizar un adaptador SD externa.
  • Haga clic en Escribir y esperar a que la escritura se complete.
  • Salir del administrador de archivos  y expulsar la tarjeta SD.

Existe un procedimiento alternativo que permite usar diferentes funcionalidades en diferentes sistemas operativos en una única herramienta

  • Ir a etcher.io donde podemos descargar el software para cada sistema operativo
    pudiéndose e elegir aquí el sistema operativo que desea para Mac, linux o Windows
  • Una vez descargado el sw  instale en su equipo y  ejecute
  • Ahora seleccione la imagen de Raspbian que descargo anteriormente del sitio  oficial Raspbian
  • Seleccione la unidad de tarjeta sd donde desee crear la imagen
  • Luego haga clic en flash, y la imagen será transferido a su tarjeta SD

etcher.PNG

Una vez creada la imagen de Raspbian en la SD ,ya puede insertar la SD en su Raspberry Pi 3 en el adaptador de micro-sd , conectar un monitor por el hdmi , conectar un teclado y ratón en los  conectores USB, conectar la  con un cable ethernet  al router  conectividad a Internet y finalmente conectar la alimentación  para comprobar que la Raspberry arranca con la nueva imagen

Cuando la Raspberry  Pi 3 comienza a recibir energía el LED rojo marcado PWR se encenderá y el LED verde marcado OK o ACK en las versiones posteriores parpadeará en un patrón irregular para mostrar siempre que el Pi, seguidamente leera desde la tarjeta SD( tenga en cuenta que el BIOS para el RP3 esta almacenados en la tarjeta SD.  Si todo va bien, y carga con éxito , Raspbian comienza mostrando un texto de pantalla larga que le dice exactamente lo que está haciendo el so para empezar a trabajar.

La primera vez toma más tiempo para comenzar,pero después de un rato , la interfaz gráfica carga el escritorio pidiendo las credenciales por defecto (el nombre de usuario es “pi” y lla contraseña es Raspberry para iniciar sesión )

Si el arranque no tiene éxito,  no mostrará nada en la pantalla, por lo que si tiene problemas repita los pasos anteriores o pruebe con otra micro sd

 

Lo siguiente, es  configurar la Raspberry Pi 3  :

  • Abra una ventana de terminal y escriba “sudo raspi -config” .
  • Esto le llevará a la pantalla de configuración:
    • Puede ampliar el sistema de archivos si lo necesita
    • Puede cambiar el usuario y la contraseña
    • Puede cambiar, configurar el idioma y la configuración regional
    • Puede activar la cámara en las opciones avanzadas
    • Puede activar, activar o desactivar algunos periféricos
    • Debe  conectarse a su rede Wi-Fi para poder conectarse a Internet ,opción que debería  gestionar para dar conectividad  a  la placa
  • Habilitar SSH:Puede habilitar SSH navegando a Preferencias > Raspberry Pi configuraciones y haga clic en Interfaces y seleccione SSH

Ahora  teniendo la Raspberry Pi 3 configurada , tenemos que instalar  el software requerido por el omxiv  para ser compilado.

Conéctese desde consola   de la  Raspberry  Pi   y escriba :

$ sudo apt-get install libjpeg8-dev libpng12-dev

Desde el terminal  escribimos  también estos comandos para descargar y compilar el software, uno por uno:

$ git clone https://github.com/HaarigerHarald/omxiv
$ cd omxiv
$ make ilclient
$ make -j4
$ sudo make install

Una vez que todo está compilado , es necesario descubrir la dirección IP de su Pi para conectarse desde la red. Para ello,desde  la Terminal Raspbian escriba

«$ifconfig»

 

La salida de este comando encontrara la dirección IP inalámbrica («inet addr») bajo «wlan0» la direccion IP: tome nota de esta  pues es la que necesitara para conectarse a  la RP3 desde la red

 

Ahora solo queda descargar e instalar  en su terminal Android   el  programa  Raspicad desde Google Play  

Este programa entre sus facilidades destacan:

  • Transmitir videos de YouTube
  •  Transmitir contenido multimedia desde tu dispositivo Android
  •  Reproducir archivos multimedia locales en su Raspberry Pi
  • Reproducir secuencias de listas de reproducción (m3u, pls) en su Raspberry Pi

Antes  de  hacer el casting asegúrese de que su Raspberry  pi  3  y el teléfono están conectados a la misma red WiFi.  Después de que el se lo haya descargado e instalado , abra el software y haga clic en los tres puntos en la esquina superior derecha,

Le pedirá un nombre de host o dirección IP   donde deberá  insertar la dirección IP que obtuvo mediante el coamndo ifconfig  . también le pedirá  el nombre de usuario y contraseña de su Raspberry  pi(el nombre de usuario es «pi») y el  Puerto que es el  22.   Ahora  ya puede abrir su aplicación de YouTube y seleccionar un vídeo para lanzarlo a su  TV :  simplemente  haga clic en el icono de compartir y busque «raspicast».

También puede convertir imágenes, música y Videos  en su dispositivo directamente a destino destino.

Otras facilidades  destacables  es que es controlable a través de una barra de búsqueda, cuenta con  botones de volumen de hardware  y soporta a múltiples transmisiones de audio y subtítulos (formato srt)