Tasmota es un firmware alternativo para dispositivos basados en ESP8266 y ESP32 que permite controlar y monitorizar equipos domóticos sin depender de plataformas propietarias. Ofrece una interfaz web integrada, gran variedad de sensores y módulos compatibles, resistencia a fallos, amplias opciones de automatización y soporte para integraciones locales como MQTT, HTTP o Domoticz. Su filosofía se centra en la privacidad, la flexibilidad y la gestión totalmente local, convirtiéndolo en una opción robusta para proyectos de domótica y monitorización.
Esta guía detalla cómo instalar y configurar un sistema de monitorización doméstica usando MQTT, InfluxDB, Telegraf y Grafana, junto con dispositivos basados en Tasmota. La idea es recibir datos de sensores a través de MQTT, almacenarlos en InfluxDB, procesarlos con Telegraf y visualizarlos con Grafana. Cada paso incluye los comandos necesarios y su explicación.
Instalación y configuración de MQTT
Actualizamos paquetes e instalamos Mosquitto:
# apt update && apt install mosquitto -y
Luego comprueba si el servicio está activo:
# systemctl status mosquitto
Edita la configuración de Mosquitto:
# vi /etc/mosquitto/conf.d/default.conf
Con el siguiente contenido:
allow_anonymous false password_file /etc/mosquitto/passwd listener 1883
Explicación:
allow_anonymous false → desactiva conexiones sin usuario.
password_file → ruta del archivo de usuarios.
listener 1883 → puerto donde Mosquitto escuchará conexiones.
Luego crea el usuario DVES_USER para el MQTT con contraseña:
# mosquitto_passwd -c /etc/mosquitto/passwd DVES_USER
Cambia la propiedad del archivo al usuario correcto:
# chown mosquitto:mosquitto /etc/mosquitto/passwd
Y reinicia el servicio para aplicar cambios:
# systemctl restart mosquitto && systemctl status mosquitto --no-pager
Configuración en Tasmota:
En el WebUI de Tasmota, ve a Configuración → Configurar "otros" y activa MQTT habilitado:

- Configura el broker MQTT con la dirección del servidor y la contraseña creada:

Verificar conexión desde el servidor (modifica la contraseña de ejemplo):
# mosquitto_sub -h localhost -t '#' -u 'DVES_USER' -P 'CONTRASEÑA_USUARIO_DVES_USER' -v
Esto permite ver todos los mensajes recibidos por parte del Tasmota al MQTT.
Recuerda crear una regla para abrir la entrada al puerto TCP 1883 desde el perfil de firewall del servidor. Tienes más información en: Cómo crear una regla de firewall.
Instalación y configuración de InfluxDB
Añade el repositorio oficial de InfluxDB
# curl -s https://repos.influxdata.com/influxdata-archive.key | gpg --dearmor | tee /usr/share/keyrings/influxdata-archive-keyring.gpg > /dev/null
Su clave GPG:
# echo "deb [signed-by=/usr/share/keyrings/influxdata-archive-keyring.gpg] https://repos.influxdata.com/debian bookworm stable" | tee /etc/apt/sources.list.d/influxdata.list
Instala InfluxDB:
# apt install influxdb2
Habilita e inicia el servicio, y verifica que esté funcionando:
# systemctl enable influxdb && systemctl start influxdb && systemctl status influxdb --no-pager
Una vez levantado el servicio, inicia sesión en http://IP_Publica_servidor:8086 para configurarlo y obtener el token para la conexión. Luego podrás configurar el cliente InfluxDB en el servidor:
# influx config create --config-name default --host-url http://localhost:8086 --token INTRODUCE_TU_TOKEN --org cozylife --active
Los comandos siguientes permiten listar usuarios, buckets y organizaciones:
# influx user list && influx bucket list && influx org list && influx bucket find --name cozylife
Instalación y configuración de Telegraf
Instala Telegraf, reinicia Mosquitto:
# apt install telegraf -y && systemctl restart mosquitto --no-pager
Edita el archivo de configuración de Telegraf
# vi /etc/telegraf/telegraf.conf
Ejemplo de configuración para telegraf.conf (recuerda reemplazar el token, el sensor correspondiente y la contraseña del usuario del MQTT):
[[outputs.influxdb_v2]]
urls = ["http://localhost:8086"]
token = "TOKETINFLUXDB"
organization = "cozylife"
bucket = "cozylife"
[[inputs.mqtt_consumer]]
servers = ["tcp://localhost:1883"]
topics = [
"tele/cozylife_XXXXXXXXXX/SENSOR",
"tasmota/discovery/+/sensors"
]
qos = 1
data_format = "json"
username = "DVES_USER"
password = "CONTRASEÑA_USUARIO_DVES_USER"
[[outputs.file]]
files = ["stdout"]
data_format = "json"Explicación:
- outputs.influxdb_v2: define dónde enviar los datos.
- inputs.mqtt_consumer: se suscribe a topics MQTT.
- outputs.file: muestra los datos en la terminal para depuración.
# systemctl restart telegraf.service && systemctl status telegraf.service --no-pager
Reinicia Telegraf y comprueba que funciona correctamente.
Instalación y configuración de Grafana
Primero añade el repositorio oficial estable de Grafana:
# echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
Y también la llave del repositorio:
# mkdir -p /etc/apt/keyrings/ && wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
Instala el paquete:
# apt update && apt-get install grafana -y
Y habilita e inicia el servicio, y verifica su estado.
# systemctl enable grafana-server && systemctl start grafana-server && systemctl status grafana-server --no-pager
Configuración en Grafana:
- Accede al panel de Grafana mediante un navegador (http://IP_Publica_servidor:3000/).
- Configura InfluxDB como Data Source usando la URL, bucket y token.
- Importa dashboards o JSON de ejemplo para visualizar los datos de los dispositivo
Por ejemplo, puedes utilizar la siguiente Query para la gráfica del voltaje:
from(bucket: "cozylife")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r._measurement == "mqtt_consumer")
|> filter(fn: (r) => r._field == "ENERGY_Voltage")
|> aggregateWindow(every: 30s, fn: median, createEmpty: false)Configuración de NGINX para Grafana (opcional):
En el caso que quieras configurar el Grafana por https y con un registro DNS, te recomendamos hacer un proxy inverso con NGINX.
Primero, instala NGINX y Certbot para el certificado SSL:
# apt install nginx python3-certbot-nginx -y
Luego edita el archivo de configuración por defecto (puedes crear uno nuevo si lo deseas):
# vi /etc/nginx/sites-enabled/default
Y añade el siguiente contenido (recuerda modifica el server_name por tu registro DNS):
server {
server_name grafana.ejemplo.com;
location / {
proxy_pass http://localhost:3000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
listen 80;
}Guarda los cambios y reinicia el NGINX:
# systemctl restart nginx.service
Por último, solicita con certbot el certificado SSL:
# certbot --nginx --redirect -d grafana.ejemplo.com
Certbot configurará automáticamente NGINX y hará una redirección directamente de http a https.
Esperamos haberte ayudado con este tutorial 🙂. Recuerda, si tienes consultas sobre esta u otra cuestión relacionada con tus servidores en Clouding, no dudes en escribir a soporte@clouding.io ¡Estamos a tu lado para lo que necesites!