Monitorizar dispositivos con MQTT

Monitorizar algunos valores de nuestros dispositivos puede ser muy útil para saber si nos estamos quedando sin recursos y necesitamos ampliar el espacio o cambiar el disco duro o tarjeta SD.

También es de vital importancia monitorizar la carga y temperatura del procesador, ya que unos valores muy altos acortarán la vida del dispositivo, en el caso de alta temperatura deberemos de buscar una solución para refrigerar el sistema.

Cómo monitorizar dispositivos con MQTT

Ya vimos como monitorizar el propio centro de domótica en la guía: Monitorizar Home Assistant con System Monitor

En esta guía vamos a ver como monitorizar dispositivos externos con MQTT. Puede darse el caso en el que además de nuestro centro de domótica, también tengamos una Raspberry externa o cualquier otro dispositivo cómo centro multimedia, por ejemplo.

Tan solo necesitamos enviar los valores del dispositivo externo por MQTT para poder visualizarlo en nuestro centro de domótica.

Requisitos para monitorizar un dispositivo externo

Para enviar los datos de los sensores vamos a usar Mosquito Broker (MQTT).

Es indispensable que tengas instalado Mosquito en tu centro de domótica, si no sabes como hacerlo, mira la guía en la que explicamos “Cómo instalar Mosquito”.

Monitorizar un dispositivo externo

Supongamos que tenemos un escenario en el que disponemos los siguientes dispositivos:

  • Equipo 1: Centro de domótica (Nuc), con Home Assistant y Mosquito instalado.
  • Equipo 2: Centro multimedia (Raspberry)

Primero tenemos que configurar el cliente MQTT (Equipo 2) para que mande la información de los sensores por MQTT. Segundo añadiremos un panel en Home Assistant (Equipo 1) para visualizar la información recibida de los sensores del equipo 2. De esta forma podremos ver la temperatura, disco, memoria,,,etc del equipo 2 (centro multimedia) en nuestro Home Assistant instalado en el equipo 1 (centro de domótica)

Raspberry como cliente MQTT (Equipo 2 centro multimedia)

Para monitorizar una Raspbery externa vamos a usar un script en Python creado por Hjelev https://github.com/hjelev/rpi-mqtt-monitor.git

Primero nos conectamos al cliente(Raspberry) por SSH y ejecutamos los siguientes comandos para descargar el script:

cd /opt
sudo wget https://raw.githubusercontent.com/hjelev/rpi-mqtt-monitor/master/remote_install.sh
Raspberry Mqt, Instalación Script
Raspberry Mqt, Instalación Script

Damos permisos de ejecución con:

sudo chmod +x remote_install.sh

Y finalmente instalamos con:

sudo ./remote_install.sh

Esto instala un script en Python para enviar la información de los sensores por MQTT.

Durante el proceso de instalación automática del script, nos pregunta si queremos instalar Python en caso de no encontrarlo, evidentemente le decimos que Sí poniendo “y

Raspberry Mqtt, Instalación Python
Raspberry Mqtt, Instalación Python

En mqtt Settings introducimos la configuración del usuario mqtt de nuestro centro de domótica:

Raspberry Mqtt, configuración usuario Mqtt
Raspberry Mqtt, configuración usuario Mqtt

En “mqtt_topic_prefix: raspberry_multimedia” es el canal al que se enviarán los mensajes por mqtt.

Finalmente nos pregunta cada cuanto tiempo queremos que se envíen los datos, por defecto pone 2 minutos, si quieres que se actualicen más a menudo puedes indicar aquí cada cuanto tiempo quieres hacerlo, pero no hay necesidad de ello ya que si el sistema está estable pocas diferencias por no decir ninguna se van a producir durante esos 2 minutos establecidos por defecto.

Raspberry Mqtt, frecuencia envio mensajes
Raspberry Mqtt, frecuencia envio mensajes

Listo, la raspberry ya está enviando los datos de los sensores por mqtt.

Ver los envíos del cliente MQTT (Equipo 2 centro multimedia)

A continuación, vamos a ver en Node-Red como llegan los mensajes enviados por el cliente a través de MQTT, este paso no es obligatorio, pero si recomendable para comprobar que no hemos cometido ningún error durante la instalación y sobre todo en la configuración del cliente. Uno de los errores mas comunes es poner mal el usuario o password.

Añadimos al lienzo el nodo “mqtt in” y lo configuramos para que escuche en el topic definido en la configuración del cliente “raspberry_multimedia/#” añadimos una barra y la almohadilla para que escuche todo lo que llegue. El caracter # es un comodin que sirve para suscribirse a todos los tópicos.

Raspberry Mqtt, Nodered nodo mqtt in
Raspberry Mqtt, Nodered nodo mqtt in

Ahora añadimos un nodo “Debug” y los unimos.

Raspberry Mqtt, Nodered nodo debug
Raspberry Mqtt, Nodered nodo debug

Pulsamos en “Deploy”

Raspberry Mqtt, Nodered Deploy
Raspberry Mqtt, Nodered Deploy

Y veremos aparecer los mensajes que está enviando la raspberry, recuerda que antes hemos configurado la actualización cada dos minutos, por lo que deberás esperar al siguiente envio y aparecerán en la pestaña de Debug.

Raspberry Mqtt, Nodered Debug
Raspberry Mqtt, Nodered Debug

Ahora podemos eliminar los nodos y volver a pulsar “Deploy“ para que Node-Red no siga capturando e imprimiendo la información.

Visualizar los sensores en HA (Equipo 1 HA)

Dentro de Home Assistant, pulsamos el botón “+ AÑADIR TARJETA” y seleccionamos la opción “Manual” y en configuración de la tarjeta pegamos las siguientes líneas y guardamos:

type: entities
title: Centro Multimedia
entities:
  - entity: sensor.raspberrypi_cpu_temperature
  - entity: sensor.raspberrypi_memory_usage
  - entity: sensor.raspberrypi_disk_usage
  - entity: sensor.raspberrypi_disk_swap
  - entity: sensor.raspberrypi_cpu_voltage
  - entity: sensor.raspberrypi_cpu_clock_speed
  - entity: sensor.raspberrypi_uptime
Raspberry Mqtt, Home Assistant
Raspberry Mqtt, Home Assistant

Quedando como en la siguiente imagen:

Raspberry Mqtt, Tarjeta Home Assistant
Raspberry Mqtt, Tarjeta Home Assistant

2 comentarios en «Monitorizar dispositivos con MQTT»

  1. Hola, estoy iniciandome en el envio de datos por mqtt, no me queda claro, en la raspberry donde instalo el mqtt para que envie, la IP es la de mi centro de domotica con el user/pass? En Node Red la IP del server es la de mi centro de domotica o la de la rasp que envia los datos. Es una pregunta muy básica y tengo que profundizar más en conceptos, pero es que leyendo en ingles / español, no tengo claro que si host / cliente es lo mismo, server/cliente…

    Gracias

    Responder

Deja un comentario