Después llegar a conclusiones sobre las tecnologías a utilizar para este dispositivo (y unas largas y merecidas vacaciones), lo vamos a construir a partir de lo siguiente:
- Una placa Xboard de DF Robot
- Un sensor de humedad y temperatura Sensirion
- Comunicación por internet con REST
- Firmware basado en la plataforma Arduino
- Servidor web webduino
En el diseño del firmware me he encontrado varios problemas:
- Necesitamos un procedimiento y un interfaz para que el usuario pueda personalizar la configuración de red del dispositivo sin tener que disponer de un programador y actualizar el firmware.
En esta caso la solución por la que he optado es que el dispositivo incorpore una dirección IP concreta por defecto (y que siempre se pueda resetear manteniendo pulsado un botón de reset mientras se reinicia el equipo. Además he incorporado una pantalla de setup en el sensor que permite personalizarla y un pequeño control de errores. Cada vez que se cambia la IP la nueva se graba en la memoria EEPROM de la placa, que es de donde la coge el sketch para configurar la tarjeta de red.
- Necesitamos varios interfaces para sacar los datos del sensor
En el directorio raiz he creado un interfaz que sea entendible por los humanos, al acceder a la IP del sensor esta es la pantalla que aparece:
Además para la integración con Nagios y con otros dispositivos hemos previsto varios interfaces adicionales:
- Accediendo a http://XXX/sensor, obtenemos todos los datos de todos los sensores en formato JSON
- Accediendo a http://XXX/sensor/temperatura obtenemos los datos de temperatura en formato JSON, lo mismo para el resto de datos individuales
- Accediendo a http://XXX/EM01 obtenemos los datos en un string para tener compatibilidad con el sensor EM01 y la integración con Nagios.
Después de muchos problemas intentando generar e interpretar el código HTML a mano descubrí la librería Webduino, funciona como una seda.
En todo caso el diseño del sensor está acabado, en el próximo post la integración con Nagios y Cacti.