Avec un broker MQTT externe, Home Assistant s'appuie sur un broker situé hors de votre maison connectée : les appareils d'une résidence secondaire, d'un atelier ou de l'appartement d'un proche peuvent alors dialoguer avec le même Home Assistant, sans redirection de ports ni VPN. Dans ce guide, vous allez connecter Home Assistant à un broker cloud en TLS, organiser les topics de plusieurs sites et, en alternative, relier l'add-on Mosquitto local au cloud par un pont afin que les appareils locaux continuent de fonctionner lorsque Internet est coupé.
Pourquoi utiliser un broker externe
L'add-on Mosquitto est le choix par défaut, et pour cause : il est local, rapide et simple. Il devient en revanche peu pratique lorsque des appareils ne se trouvent pas sur le réseau local de la maison :
- Un capteur installé dans une seconde propriété doit atteindre votre réseau domestique, ce qui implique redirection de ports, DNS dynamique et exposition d'un broker sur Internet, ou l'exécution d'un VPN sur du matériel alimenté par batterie.
- Plusieurs instances Home Assistant (la vôtre, celle de vos parents) ne peuvent pas facilement partager un même ensemble d'appareils.
- D'autres applications, comme une pile Grafana sur un serveur ou une application mobile, ont besoin de leur propre point d'accès.
Un broker externe inverse le sens de connexion. Chaque client, Home Assistant compris, se connecte en sortie au même broker MQTT dans le cloud. Rien n'écoute à l'intérieur de votre maison, et tous les sites sont sur un pied d'égalité.
| Approche | Appareils locaux en cas de coupure Internet | Appareils distants | Complexité |
|---|---|---|---|
| Mosquitto local uniquement | Fonctionnent | Nécessitent un VPN ou une redirection de ports | Faible |
| Connexion directe au broker cloud | Cessent de remonter des données jusqu'à la reconnexion | Fonctionnent partout | Faible |
| Mosquitto local relié au cloud par un pont | Fonctionnent | Fonctionnent partout | Moyenne |
Choisissez la connexion directe si la plupart des appareils sont distants ou si vous privilégiez la simplicité. Choisissez le pont si des automatisations locales critiques (éclairage, chauffage) dépendent d'appareils MQTT dans la maison.
Option 1 : connecter Home Assistant directement au broker cloud
Créer le broker et les identifiants
Inscrivez-vous sur le portail ConnectMQ, créez un broker et notez le nom d'utilisateur, le mot de passe et le client ID générés. Créez des identifiants distincts pour Home Assistant et pour chaque appareil distant, afin de pouvoir en révoquer un sans toucher aux autres.
Avant de toucher à Home Assistant, testez les identifiants depuis un ordinateur :
mosquitto_sub -h broker.connectmq.com -p 8883 --capath /etc/ssl/certs \
-u YOUR_USERNAME -P YOUR_PASSWORD -i YOUR_CLIENT_ID \
-t "sites/#" -v
Sur macOS avec Homebrew, remplacez --capath /etc/ssl/certs par --cafile pointant vers un bundle d'autorités de certification, par exemple $(brew --prefix)/etc/ca-certificates/cert.pem. Si cette commande se connecte et attend en silence, les identifiants et la chaîne TLS sont corrects.
Configurer l'intégration
- Dans votre profil utilisateur Home Assistant, activez le Mode avancé. Sans lui, les options de client ID et de TLS sont masquées.
- Allez dans Paramètres > Appareils et services > Ajouter une intégration > MQTT (ou reconfigurez votre entrée MQTT existante).
- Saisissez :
- Broker :
broker.connectmq.com - Port :
8883 - Nom d'utilisateur / mot de passe : les identifiants de Home Assistant
- Client ID : le client ID attribué, exactement
- Validation du certificat du broker : Auto
- Transport : TCP
- Protocole MQTT : 5 (ou 3.1.1 ; les deux sont pris en charge)
- Broker :
- Validez et vérifiez que l'intégration apparaît comme connectée.
La validation Auto utilise le magasin de certificats du système, qui fait confiance au certificat Let's Encrypt présenté par le broker. Ne choisissez jamais Off pour une connexion via Internet. Si votre réseau bloque le port 8883 en sortie, passez le transport en WebSockets avec le port 8084 et le chemin /mqtt ; ce trafic ressemble à du HTTPS, que la plupart des pare-feu laissent passer. Plus de détails dans MQTT over WebSocket.
Un appareil distant
Un ESP32 distant publie sur le même broker avec ses propres identifiants :
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <PubSubClient.h>
WiFiClientSecure net;
PubSubClient mqtt(net);
void setup() {
WiFi.begin("CABIN_WIFI", "CABIN_WIFI_PASSWORD");
while (WiFi.status() != WL_CONNECTED) delay(250);
net.setCACert(ISRG_ROOT_X1); // racine Let's Encrypt, chaîne PEM définie ailleurs
mqtt.setServer("broker.connectmq.com", 8883);
}
void loop() {
if (!mqtt.connected()) {
if (mqtt.connect("YOUR_CLIENT_ID", "YOUR_USERNAME", "YOUR_PASSWORD",
"sites/cabin/boiler-room/availability", 1, true, "offline")) {
mqtt.publish("sites/cabin/boiler-room/availability", "online", true);
} else {
delay(5000);
return;
}
}
mqtt.loop();
static unsigned long last = 0;
if (millis() - last > 60000) {
last = millis();
mqtt.publish("sites/cabin/boiler-room/climate", "{\"temperature\":6.4,\"humidity\":71}");
}
}
Le tutoriel ESP32 MQTT montre comment intégrer le certificat racine. Dans Home Assistant, définissez le capteur en YAML ou laissez l'appareil s'annoncer lui-même grâce à la découverte MQTT de Home Assistant.
Conception des topics pour plusieurs sites
Avec de nombreux emplacements sur un même broker, placez le site en premier :
sites/<site>/<room>/<device>/<measurement-or-command>
sites/home/livingroom/climate
sites/cabin/boiler-room/climate
sites/cabin/boiler-room/availability
sites/workshop/compressor/power
Avantages : un seul joker par site (sites/cabin/#), des règles de pont simples et une répartition claire dans l'explorateur de topics de ConnectMQ. Conservez les configurations de découverte sous le préfixe par défaut homeassistant/ et, si deux instances Home Assistant partagent le broker, attribuez à chacune son propre préfixe de découverte pour qu'elles ne récupèrent pas les entités l'une de l'autre.
Option 2 : relier l'add-on Mosquitto au cloud par un pont
Un pont (bridge) est une connexion entre votre Mosquitto local et le broker externe qui transfère certains topics dans un sens ou dans les deux. Home Assistant et les appareils locaux continuent de dialoguer avec le broker local, si bien que les automatisations survivent aux coupures d'Internet, tandis que les sites distants apparaissent via le pont.
- Dans la configuration de l'add-on Mosquitto, activez la configuration personnalisée :
customize:
active: true
folder: mosquitto
- Créez
/share/mosquitto/bridge.conf(par exemple avec l'add-on File editor ou Samba) :
connection connectmq
address broker.connectmq.com:8883
bridge_protocol_version mqttv311
remote_clientid YOUR_CLIENT_ID
remote_username YOUR_USERNAME
remote_password YOUR_PASSWORD
bridge_capath /etc/ssl/certs
bridge_insecure false
cleansession true
try_private false
notifications false
restart_timeout 10 60
# les données locales de la maison montent, les sites distants descendent
topic sites/home/# out 1
topic sites/cabin/# in 1
topic sites/workshop/# in 1
- Redémarrez l'add-on et cherchez dans son journal une ligne indiquant que le pont est connecté.
try_private false est recommandé lorsque l'autre extrémité n'est pas une autre instance Mosquitto. Si, dans votre version, l'add-on ne trouve pas le répertoire des autorités de certification, téléchargez le PEM ISRG Root X1 dans /share/mosquitto/ et utilisez plutôt bridge_cafile /share/mosquitto/isrgrootx1.pem. Ne reliez jamais # dans les deux sens : cela crée des boucles et des doublons.
Le pont est une fonctionnalité standard de Mosquitto qui agit comme un client MQTT ordinaire du broker cloud ; il fonctionne donc avec n'importe quel broker MQTT managé acceptant le TLS et des identifiants. Jeedom et Domoticz savent aussi communiquer en MQTT et peuvent se connecter de la même manière à un broker externe.
Surveiller la connexion
Dès que Home Assistant dépend d'un broker externe, rendez les problèmes de connexion visibles. Donnez à chaque appareil distant un topic de disponibilité avec un message online retenu et un last will offline, et utilisez-le dans vos définitions d'entités pour que les capteurs distants passent à l'état indisponible au lieu d'afficher des valeurs périmées. Une simple automatisation Home Assistant qui vous prévient lorsque l'entité de disponibilité d'un site distant reste indisponible pendant dix minutes permet de détecter les coupures de courant et les pannes de routeur dans la seconde propriété. Côté broker, l'explorateur de topics en direct indique si un site publie toujours, et des règles d'alerte à seuil peuvent surveiller des valeurs critiques, comme une température annonçant un risque de gel dans le chalet.
Liste de contrôle de sécurité
- TLS sur chaque connexion Internet (8883 ou 8084), jamais le port 1883 en clair avec de vrais identifiants.
- Un jeu d'identifiants par site ou par appareil ; révoquez-en un plutôt que de tout renouveler.
- Les client ID doivent correspondre aux identifiants attribués ; ConnectMQ les lie entre eux et bloque les adresses IP après des échecs de connexion répétés.
- Ne publiez jamais l'état d'une serrure, des codes d'alarme ou des données de présence sur le serveur MQTT public gratuit, réservé aux tests ; gardez-les sur votre broker privé.
- Gardez des topics de commande étroits et faites en sorte que les appareils n'acceptent que des valeurs connues.
Les principes généraux sont détaillés dans les bonnes pratiques de sécurité MQTT.
Dépannage
| Symptôme | Cause | Solution |
|---|---|---|
| « Not authorized » dans le journal | Mot de passe ou client ID incorrect | Copiez à nouveau les identifiants ; le client ID doit correspondre exactement |
| Échec de vérification du certificat | Validation personnalisée sans CA, ou système très ancien | Utilisez la validation Auto ; mettez à jour le système |
| Connexion puis déconnexion toutes les quelques secondes | Même client ID utilisé par deux clients | Donnez à chaque client ses propres identifiants |
| Pont connecté mais aucune donnée | Les motifs de topics ne correspondent pas | Comparez les motifs avec les topics réels dans l'explorateur de topics |
| Messages en double | Topic relié dans les deux sens | Utilisez in ou out, et non both, pour les motifs qui se chevauchent |
Connectez Home Assistant à ConnectMQ
Créez gratuitement un broker Serverless sur app.connectmq.com, sans carte bancaire. L'offre gratuite prend en charge jusqu'à 25 connexions, de quoi accueillir Home Assistant, un pont et un ensemble d'appareils distants, et vous pourrez évoluer plus tard sans changer vos topics. ConnectMQ exploite le broker, renouvelle les certificats et isole votre trafic. Pour d'autres projets, consultez le guide d'automatisation IoT et la configuration MQTT de base dans Home Assistant.
Questions fréquentes
Mes automatisations s'arrêteront-elles si Internet est coupé ?
Avec une connexion directe au cloud, les entités MQTT cessent d'être mises à jour jusqu'au retour de la connexion. Si des automatisations locales dépendent d'appareils MQTT, utilisez le pont Mosquitto pour que le trafic local ne quitte jamais la maison.
Dois-je ouvrir des ports sur mon routeur ?
Non. Home Assistant, le pont et les appareils distants se connectent tous en sortie au broker externe ; aucun port entrant n'est donc nécessaire.
Deux instances Home Assistant peuvent-elles partager un même broker externe ?
Oui. Attribuez à chaque instance ses propres identifiants et son propre préfixe de découverte, et organisez les topics par site pour que chaque instance ne s'abonne qu'à ce dont elle a besoin.
Quel port utiliser si le 8883 est bloqué ?
Utilisez le WebSocket sécurisé sur le port 8084 avec le chemin /mqtt, que Home Assistant prend en charge via l'option de transport WebSockets.



