Bases del acceso celular remoto: perros guardianes

Hablando de máquinas remotas, a veces nos referimos De Verdad remoto, más allá de los dominios de las redes de cable que pueden ofrecer Internet. En estos casos, el acceso celular remoto es a menudo el camino a seguir. Hasta ahora hemos explorado los aspectos de hardware y software necesarios para controlar una máquina de forma remota a través de una conexión celular.

Sin embargo, las cosas pueden salir mal y salen mal. Cuando esa máquina remota está desconectada y se conecta con alguien en el sitio para reiniciar, puede ser prohibitivamente difícil y costoso. Para estas situaciones, lo que desea es algún tipo de forma de repetir las cosas, idealmente de forma automática. ¡Lo que estás buscando es un temporizador de perro guardián!

Perros guardianes

El concepto de reloj es simple. Si está conectado a un sistema y está habilitado, el temporizador de vigilancia comienza una cuenta regresiva de un tiempo predefinido. El sistema integrado o la computadora es entonces responsable de enviar una señal de "retroceso" al perro guardián con regularidad. Esto restaura el perro guardián a su valor de tiempo máximo y comienza la cuenta regresiva nuevamente. Si el "retroceso" no se recibe antes de que el temporizador del perro guardián llegue a cero, el perro guardián reinicia el sistema.

Un simple perro guardián.

Fijar el intervalo de reloj es lo correcto. Configúrelo demasiado corto, y es posible que un sistema muy cargado no responda pateando a tiempo y se producirá un reinicio innecesario. Configúrelo demasiado tiempo y el sistema podría estar inactivo durante un período de tiempo significativo antes de que el perro guardián comience a funcionar. Es necesario un análisis cuidadoso del sistema y su comportamiento adecuado para configurarlo correctamente.

Es una forma conveniente de lidiar con fallas, pánicos centrales y un sistema colgado en una máquina remota. En lugar de tener que enviar a un técnico para presionar el botón de reinicio, la máquina puede reiniciarse cuando falla. Los temporizadores de reloj son cruciales en aplicaciones donde enviar a una persona podría costar miles de dólares, o incluso ser imposible, como en los satélites y otras aplicaciones espaciales.

Un temporizador de vigilancia multifásico que a su vez toma medidas correctivas antes de realizar un ciclo de energía completo de la máquina de destino. Si el sistema logra lanzar una señal de patada después de que el paso 1 o la etapa 2 haya comenzado a disparar, el sistema reanuda su funcionamiento normal.

También son posibles proyectos más complicados. Los temporizadores de vigilancia multifase involucran varios temporizadores en cascada en serie. En tal proyecto, cuando el primer perro guardián expira después de no recibir una "patada", toma una acción correctiva e inicia un segundo temporizador. Si esto no corrige la situación, eventualmente el segundo temporizador expirará, iniciando acciones correctivas adicionales, y así sucesivamente, hasta que todas las etapas hayan comenzado a disparar. Esto puede resultar útil para aplicaciones más complejas. El temporizador de la primera etapa podría crear un proceso simple para matar un comando a un servidor, el segundo un comando de interrupción del programa al sistema operativo, mientras que el tercero podría realizar un restablecimiento completo completo con un ciclo de energía.

Sin embargo, ¿cómo implemento uno?

Los temporizadores de vigilancia son fundamentales en sistemas espaciales como el vehículo de investigación Curiosity.

La implementación de un perro guardián en un sistema determinado depende en gran medida de la aplicación en cuestión. Un colapso completo de proyectos de vigilancia específicos va más allá de este artículo. En su lugar, veremos algunos errores y describiremos algunos casos diferentes que destacan los diversos alcances de los proyectos de vigilancia.

Trampas

Tenga en cuenta que todos estos casos se relacionan con perros guardianes de dispositivos adecuados. Idealmente, para una máxima durabilidad, el perro guardián debería ser un hardware completamente separado capaz de reiniciar el sistema de interés principal. Algunos microcontroladores y SoC incluyen perros guardianes internos que operan con diferentes niveles de independencia, y estos también pueden usarse. Sin embargo, normalmente el bucle de código principal debería activarlos correctamente. Usar una interrupción para activar un perro guardián puede ser peligroso. El bucle principal puede bloquearse, pero mientras la interrupción siga ejecutándose, el perro guardián nunca restaurará el sistema.

También es importante tener en cuenta que los "perros guardianes del programa" suelen ser todo menos. Por ejemplo, puede resultar útil crear un proceso para observar otros procesos en un sistema informático. Puede capturar una amplia gama de pequeños problemas y problemas y reiniciar esos otros procesos donde sea necesario. Sin embargo, en el caso de que otro proceso bloquee toda la máquina o cree un problema de nivel inferior, como un pánico central, el organismo de control del software no podrá actuar. Generalmente, un perro guardián adecuado debe ser en gran medida independiente del sistema que controla.

Estudio de caso 1: un monitor de tanque de fabricación casera

Supongamos que desarrolla un proyecto de cerveza casera Raspberry Pi fuera de casa para verificar los niveles en algunos tanques de agua. No es nada crítico, ni arriesgará una vida o una extremidad si el sistema se cae. Sin embargo, el sistema funciona con una batería con carga solar, y desea evitar tener que expulsarlo para reiniciar el sistema si hay problemas cuando los niveles de energía son bajos o si algo más está causando un bloqueo.

En este caso, una solución simple puede eliminar muchos dolores de cabeza sin mucha complejidad adicional. Se podría instalar algo tan simple como un Arduino Uno o similar para implementar un perro guardián con bastante facilidad. La Raspberry Pi podría configurarse para enviar pulsos GPIO o mensajes seriales al Arduino para indicar que todavía está funcionando correctamente. Si no se recibe ninguna señal dentro de un período de tiempo establecido, Arduino podría reiniciar la Raspberry Pi simplemente cortando la energía eléctrica a través de un relé. Esta duración puede ser de minutos, horas o incluso más si el sistema no es crítico. La táctica no lo acorta demasiado; de lo contrario, si el sistema está temporalmente muy cargado, el perro guardián podría expirar aunque el sistema no fallara realmente.

Tener un Arduino en el sistema también podría traer beneficios adicionales. Podría enviar comandos a la Raspberry Pi para que se apague de forma segura en caso de que el voltaje de la batería comience a disminuir. Además, podría ordenar reinicios regulares y suaves de la Raspberry Pi durante intervalos diarios o semanales para eliminar cualquier problema potencial en los procesos que podrían fallar durante largos períodos de tiempo.

He implementado sistemas similares en robots móviles en el campo y pueden funcionar sorprendentemente bien. Sin embargo, es importante asegurarse de que el perro guardián funcione correctamente. Por ejemplo, un proceso principal en la Raspberry Pi podría fallar sin dejar caer todo el sistema. Si el servicio de guardia responsable de la señalización del Arduino puede continuar de forma independiente, el sistema seguirá siendo eléctrico a pesar de que el proceso principal ya no funcione. La forma de evitar esto es que el servicio de guardia verifique que otros procesos estén funcionando justo antes de enviar la señal de patada al perro guardián externo. Si escribe todo su propio código, ¡esto se hace fácilmente! Sin embargo, comprobar si otros programas funcionan correctamente puede resultar más difícil. Aquí, los reinicios suaves preventivos regulares pueden ser una solución complicada. Para asuntos de elaboración casera, es suficiente.

Estudio de caso 2: controlador de bomba remoto

Cuando se permite que las máquinas actúen por sí mismas, en lugar de solo informar datos, las cosas pueden complicarse. Por ejemplo, imagine un sistema responsable de controlar las bombas de agua para llenar los tanques desde una presa u otra fuente. El sistema se puede controlar y controlar manualmente a través de enlaces de datos celulares, pero por lo demás funciona de forma independiente y continua.

En este caso, es posible que se necesite mucho más rigor para evitar un desastre. Si el sistema falla mientras las bombas están habilitadas, la presa podría drenarse, lo que provocaría que las bombas se sequen y causen daños costosos. Alternativamente, los tanques podrían inundarse o podrían ocurrir inundaciones. Dependiendo de la escala, esto podría causar un desastre en un cobertizo o destruir cultivos, hogares y ganado.

Por tanto, en estos casos se debe realizar un perro guardián más riguroso. Por ejemplo, puede que no sea suficiente reiniciar el controlador de la bomba en caso de que deje de enviar señales de patada al perro guardián. En este caso, el perro guardián se puede configurar para encender primero las bombas a un estado de seguridad fallido para minimizar la posibilidad de daños. A continuación, el sistema se puede reiniciar y, cuando vuelven a estar en línea, los operadores remotos han sido informados de que debe activarse un reinicio manualmente debido a la falla. Esto evita que el sistema simplemente se reinicie y vuelva a fallar inmediatamente en caso de que haya un problema en curso.

En estos casos, especialmente cuando los equipos costosos o incluso las vidas humanas pueden estar en riesgo, un Arduino simple probablemente no servirá como un perro guardián adecuadamente confiable. En algunos casos, es posible que se requieran varios perros guardianes redundantes para brindar una mayor probabilidad de detener el sistema en caso de falla. En los niveles más altos, se requerirán revisiones de código y evaluaciones de riesgos junto con hardware especialmente certificado en toda la placa. Pero si está trabajando en un perro guardián para una presa a nivel de la ciudad u otra instalación crítica para la seguridad, probablemente no esté buscando cómo hacerlo. Si es así, comuníquese con un supervisor u otro funcionario y dígales que necesita ayuda.

Resumen

El propósito de este artículo es explicar el concepto básico de perros guardianes y por qué son útiles para sistemas remotos. Con suerte, las ideas presentadas aquí son suficientes para ayudarlo a implementar temporizadores de lapso de tiempo para mejorar el funcionamiento y el servicio de sus propios proyectos. Después de todo, no hay nada mejor que poder mostrar su proyecto remoto robusto y confiable a todos en Hackerspace. Además, no hay nada peor que una falla en su demostración en vivo porque no puede reiniciar una máquina remota que falla. ¡Así que levante sus perros guardianes y demuestre lo gran hacker que realmente es!

  • celdrono dice:

    Buenas noticias, gracias!

    Pero me siento obligado a darme cuenta de que llevar a cabo un perro guardián no es un truco, ¡es ingeniería!

Ricardo Prieto
Ricardo Prieto

Deja una respuesta

Tu dirección de correo electrónico no será publicada.