La verdad es que llevamos una semana muy buena en términos de musas, inspiración y, como dicen en el sur de España «estar sembraos»
El mote lo construimos sin demasiados problemas, integramos el sensor sensirión con las librerías de Arduino, resolvimos el tema del interfaz web con el resto del mundo (humanos y máquinas) con la librería webduino, todo sin atascarnos. Teniendo en cuenta que existe una ley empírica que provoca que en todos los proyectos haya un punto en el que te atascas me temía lo peor en la parte que nos quedaba.
Por un lado la integración con Nagios, partimos de un script en C open source que modifiqué y compilé en innumerables ocasiones, después de varias horas y de ir resolviendo algunos problemas me quedé atascado en un punto, el script abría un socket contra el mote para recoger la información, pero en el momento del «parseo» no lograba encontrar las cadenas buscadas. Después de muchas peleas con el C y con lo esotérico de sus punteros lo dejé, básicamente para ver si la almohada me inspiraba a encontrar soluciones alternativas. Al día siguiente un amigo me dió la solución, obvia y sencilla, la que no fuí capaz de ver después de horas de darle vueltas a mi script.
Para cada nodo y cada servicio que chequea el Nagios se ejecuta un script, la única misión del script es devolver por el stdOut una cadena con la información de los status y un formato conocido. Evidentemente el lenguaje C es una opción perfectamente válida (especialmente si lo dominas), pero un shell Script es una opción tan válida como un script en C y mucho más fácil de generar, modificar y mantener. Supongo que el C tiene un rendimiento mayor, pero eso no es un problema.
Al final ya tenemos un script para integrar nuestro sensor con Nagios, ahora vamos a por el Cacti para poder graficar sus valores.
En paralelo descubrí el AppInventor. El AppInventor es un entorno de programación de Google para Android, la filosofía de programación es la misma que el Scratch. El Scratch es un «invento» del MIT, un lenguaje de programación para niños basado en una filosofía parecida al Lego, los programas se construyen con bloques de puzle que van encajando. Los resultados son impresionantes, un niño con 20 minutos de explicaciones es capaz de hacer un programa con una complejidad razonable, sin la necesidad de aprender nombres de funciones, sintaxis complicadas, etc.
Con el AppInventor hice una aplicación para Android, dediqué 4 horas a familiarizarme con el entorno y a hacer una aplicación que tiene las siguientes características:
- Se conecta con el mote periódicamente y lee los valores de los sensores.
- Muestra los valores con colores en función de los umbrales establecidos.
- Analiza la tendencia de cada valor y la muestra gráficamente.
- Si se dispara una alarma lo muestra con un mensaje en la pantalla del móvil, el móvil lo puede decir hablando o envia un mensaje a otro móvil.
- El aspecto es «razonablemente» profesional, más teniendo en cuenta el tiempo dedicado y el hecho de haber partido de cero.
Este es el aspecto de la pantalla principal de la aplicación:
Seguimos trabajando y perfeccionando….