Aprovechando Module Twins de Azure IoT Edge para Gestión de Estado de Circuitos
Parpadeo de un LED usando un Lenguaje Específico de Dominio aplicado a través de un Module Twin a un contenedor Docker ejecutando Johnny 5 en una Raspberry Pi.
Historia
Visión General:
Azure IoT Edge permite a dispositivos conectados intermitentemente obtener propiedades deseadas a través de "Module Twins". Estos twins pueden usarse como configuración de estado deseado para impulsar comportamiento específico dentro de Edge Modules. Los Edge Modules se ejecutan como cargas de trabajo en contenedores para permitir auto-reparación y despliegue rápido sin necesidad de conectividad constante. Cuando hay internet disponible, los dispositivos pueden aprovechar servicios cloud para llamar métodos dentro de módulos.
En este proyecto, desarrollamos un IoT Edge Module usando el Azure IoT NodeJS SDK que obtiene un estado deseado de la nube que configura los pines GPIO en una Raspberry Pi para realizar operaciones deseadas en un circuito conectado usando Johnny 5.
Esto permite casos de uso interesantes como:
* Permitir múltiples modos de operación para un solo circuito aplicando diferentes configuraciones de estado
* Failover de hardware redundante con dos dispositivos conectados al mismo circuito cuando se orquestan y configuran adecuadamente con Kubernetes.
Contexto:
La configuración de estado deseado es un concepto popular que se usa a menudo al aprovisionar servidores por primera vez y para forzar cumplimiento en sistemas en ejecución. Extendemos este concepto a circuitos usando servicios diseñados para resiliencia y operación saludable en áreas donde la conectividad de red puede ser intermitente. Este enfoque nos permite cambiar el comportamiento de un circuito conectado en tiempo de ejecución y permite escenarios interesantes que involucran redundancia de hardware.
El runtime de Azure IoT Edge de Microsoft nos permite formar una base sólida para el proyecto. Este runtime se ejecuta como un servicio en hardware local y permite la orquestación de "módulos" contenedores que se configuran por dispositivo en la nube de Azure. Dos módulos de sistema siempre se emplean: el edge-agent que obtiene y aplica configuraciones de despliegue de módulos y el edge-hub que permite mensajería en caché a la nube y comunicación entre módulos.
Empezamos creando un módulo Azure IoT Edge usando el Azure IoT NodeJS SDK. Este módulo recibe una configuración twin que especifica propiedades deseadas y reportadas para un dispositivo dado. Empleamos un Lenguaje Específico de Dominio que se analiza en una configuración de Johnny 5. Esto nos permite definir cómo debe funcionar un circuito en la nube, y aplicarlo a nuestro módulo IoT Edge.
Un ejemplo de configuración se proporciona a continuación:
"config": "{\\"peripherals\\":[{\\"type\\":\\"Led\\",\\"name\\":\\"alarm\\",\\"settings\\"
:\\{\\"pin\\":\\"GPIO18\\"\\},\\"initialState\\": {\\"method\\":\\"blink\\",\\"period\\":500},\\
\\"outputAlias\\":\\"alias2\\"},{\\"type\\":\\"Button\\",\\"name\\":\\"button\\",\\"settings\\":
{\\"pin\\":\\"GPIO20\\"\\},\\"outputAlias\\":\\"alias1\\"}]}",
Este ejemplo define un dispositivo LED en GPIO18 con un initialState de parpadeo on/off cada 500ms. El estado del LED puede propagarse a otros módulos usando el outputAlias. Un botón también se emplea en GPIO20 que publica cambios de estado a alias1. En tal configuración, podemos responder independientemente a cambios de estado en módulos adicionales enrutando el outputAlias.
Actualmente soportamos configuración de termómetro, LED y botón usando este mecanismo.
Pasos para Reproducir:
Para comenzar, necesitarás una suscripción a Microsoft Azure con un IoT Hub desplegado.
Luego, querrás comenzar la configuración de tu hardware conectando un LED a GPIO18 de la Raspberry Pi. Instrucciones para este proceso pueden encontrarse aquí.
Con el circuito y servicios cloud preparados, querrás instalar el runtime de Azure IoT Edge en tu Raspberry Pi siguiendo esta guía. Una vez instalado el runtime, necesitarás aprovisionar manualmente el dispositivo siguiendo estas instrucciones.
Luego crearemos un despliegue especial dentro de Azure que nos permitirá parpadear nuestro LED.
Crear un despliegue como se muestra abajo:
La URL de la imagen:
toolboc/johnny5onedge:0.0.981-arm32v7
Las opciones de creación del contenedor:
{"ExposedPorts":{"9229/tcp":{}},"HostConfig":{"PortBindings":{"9229/tcp":[{"HostPort":"9229"}]},"Privileged":true,"Devices":[{"PathOnHost":"/dev/i2c-1","PathInContainer":"/dev/i2c-1","CgroupPermissions":"rwm"},{"PathOnHost":"/dev/gpiomem","PathInContainer":"/dev/gpiomem","CgroupPermissions":"rwm"}],"Mounts":[{"Type":"bind","Source":"/lib/modules/","Target":"/lib/modules/"}]}}
Las propiedades deseadas del Module Twin:
{
"properties.desired": {
"config": "{\\"peripherals\\":[{\\"type\\":\\"Led\\",\\"name\\":\\"alarm\\",\\"settings\\":{\\"pin\\":\\"GPIO18\\"},\\"initialState\\": {\\"method\\":\\"blink\\",\\"period\\":500},\\"outputAlias\\":\\"alias2\\"},{\\"type\\":\\"Button\\",\\"name\\":\\"on\\",\\"settings\\":{\\"pin\\":\\"GPIO20\\"},\\"outputAlias\\":\\"alias1\\"}]}"
}
}
Guarda cuando termines. Luego salta las secciones "Specify Routes" y "Specify Metrics" hasta llegar a "Target Devices".
Establece la Prioridad a 10 y añade una condición objetivo de tags.environment='blinK
Leer Más Información…..
Configuración de Estado Deseado para Circuitos
Proceso de manufactura
- Soluciones Avanzadas CAD/CAM: Optimizando la Fabricación para Materiales de Ingeniería
- Optimización de configuraciones HMI para operaciones de alto riesgo
- Circuitos de Control: Fundamentos, Aplicaciones y Mejores Prácticas
- Cables apantallados avanzados para circuitos de señal: técnicas prácticas de conexión (Parte 2)
- Cables apantallados para circuitos de señal: Parte 1 – Mejores prácticas
- Dominando Kubernetes en Azure: Herramientas probadas, consejos y mejores prácticas
- ¿Qué ruta de certificación Azure es la adecuada para usted? Perspectivas de expertos de Cloud Institute
- ¿Deberías obtener la certificación Azure DevOps? Beneficios e impacto profesional
- Domina el examen de certificación Azure DevOps sin formación formal
- Domina la gestión de costos Cloud: Estrategias probadas para AWS, GCP y Azure
- Microsoft presenta Azure Edge Zones para impulsar cargas de trabajo IoT e IA con 5G