Descripción general
MQTT es un protocolo de mensajes por temas: los aparatos publican en un broker (normalmente Mosquitto) y Home Assistant se suscribe. La integración oficial crea entidades de dos formas:
- Descubrimiento: el aparato publica su ficha en
homeassistant/…/configy aparece solo. Así funcionan Zigbee2MQTT, Tasmota o Frigate. - YAML: defines tú la entidad cuando el aparato no tiene descubrimiento.
Esquema: NODARA.
Para entenderlo con calma: MQTT I: lo esencial y MQTT II: a fondo.
Requisitos
- Broker: la app Mosquitto broker (Ajustes → Aplicaciones) es el método recomendado. Sirve otro broker compatible con MQTT 5. ActiveMQ y RabbitMQ no están soportados.
- Integración: suele aparecer como descubierta en Ajustes → Dispositivos y servicios. A mano: dirección del broker, puerto 1883 y usuario.
- Un usuario para los aparatos, distinto del tuyo.
- Para ver el tráfico: MQTT → Configurar → Escuchar un tema con
#. - Fuente: documentación oficial de MQTT.
Ideas de uso
- Zigbee2MQTT para usar sensores y bombillas Zigbee de cualquier marca.
- Enchufes con Tasmota con medición de consumo, en local.
- Un sensor casero con ESP32 que se anuncia solo con descubrimiento.
- Avisos en una pantalla o un LED de la entrada con
mqtt.publish. - Botones con varias pulsaciones con el disparador MQTT.
- Detectar aparatos caídos con los temas de disponibilidad.
Ejemplo de uso
Un sensor de temperatura y un ventilador de un aparato que publica JSON y no tiene descubrimiento, en configuration.yaml:
mqtt:
- sensor:
name: "Temperatura del trastero"
unique_id: trastero_temperatura
state_topic: "casa/trastero/clima"
value_template: "{{ value_json.temperatura }}"
unit_of_measurement: "°C"
device_class: temperature
availability_topic: "casa/trastero/estado"
- switch:
name: "Ventilador del trastero"
unique_id: trastero_ventilador
state_topic: "casa/trastero/ventilador"
command_topic: "casa/trastero/ventilador/set"
Cómo funciona:
state_topices el tema que escucha;value_templatesaca la temperatura del JSON.command_topices donde Home Assistant publicaONuOFFal pulsar el interruptor.- Con
availability_topic, si el aparato publicaoffline(o su última voluntad), las entidades pasan a No disponible. unique_idpermite cambiar nombre y área desde la interfaz. Recarga con la acciónmqtt.reload, sin reiniciar.- Para borrar una entidad descubierta que ya no existe, publica un mensaje vacío y retenido en su tema
homeassistant/…/config.
Acción
casa/trastero/clima ← {"temperatura": 14.2}Resultado
sensor.temperatura_del_trastero = 14.2 °C
switch.ventilador_del_trastero: on → publica ON en casa/trastero/ventilador/set