Seguimos experimentando el monitoreo de temperatura y humedad con el Arduino Uno y un sensor DHT22, ahora con unas modificaciones para que los datos los tome un Servidor o proxy Zabbix. Para ello fue necesario implementar un agente que escuche el puerto 10050 e interprete el protocolo que Zabbix entiende.

Según la documentación de la versión 3.4 se compone de un de 5 bytes, un de 8 bytes donde se establece el tamaño del comando o mensaje, y los datos en cuestión.

https://www.zabbix.com/documentation/3.4/manual/appendix/protocols/header_datalen

Las primeras líneas de nuestro código contienen el llamado a librerías conocidas por los proyectos anteriores, como son Ethernet.h y DHT.h, y la definición de las constantes, variables y parámetros que utilizaremos luego.

En la sección setup inicializamos sensor y servidor

y dentro del loop nos resta implementar las dos tareas que se ejecutan continuamente:
Por un lado leer el sensor (cada 3 segundos) y almacenar el valor en las variables humidity y temperature.
Y por otro lado, esperar un comando Zabbix, interpretarlo, y responder con el valor correspondiente.

La lectura del sensor ya la desarrollamos en anteriores, de la siguiente manera:

Para resolver la comunicación entre los agentes, esperamos un comando en formato Zabbix que ya sabemos estará formado por un byte 0x01, 8 bytes con el tamaño del comando, y finalmente el comando en sí.

Los comandos que vamos a identificar son los siguientes:

  • agent.ping
  • agent.hostname
  • agent.version
  • dht.temperature
  • dht.humidity

Las respuestas que implementaremos serán enviadas mediante la función zbx_print() que adaptará el mensaje al protocolo ya definido.

Podemos descargar la última versión del código completo publicado en Gitlab

Para verificar que los comandos funcionan correcamente podemos utilizar el comando zabbix_get

Los templates necesarios para que el Zabbix incorpore estos comandos se pueden descargar de los siguientes enlaces:

Monitoreo de últimos datos recibidos en Zabbix Server

Y agregamos un link para descarga del dashboard de Grafana que se observa en la siguiente imagen para mostrar los datos de mejor manera.

Dashboard de Grafana con origen de datos de Zabbix