# Configuration Mosquitto 2.x de l'assistant vocal. # # Deux façons de l'utiliser : # - service Debian : `make mosquitto-config` (copie vers /etc/mosquitto/conf.d/) ; # - conteneur Docker : monter ce fichier comme /mosquitto/config/mosquitto.conf # (voir docs/MOSQUITTO.md). # # Piège n°1 : sans « listener » explicite, Mosquitto 2.x n'écoute QUE sur # localhost. L'ESP32 ne peut alors pas se connecter, alors que mosquitto_sub # fonctionne très bien sur la machine elle-même. # # Piège n°2 : UN SEUL « listener » par port. Deux lignes « listener 1883 » # font planter le broker au démarrage (« Error: Address in use ») ; dans un # conteneur en « restart: unless-stopped », il redémarre alors en boucle. listener 1883 0.0.0.0 # Étape 15 : plus d'accès anonyme. Chaque client a un compte (make mqtt-user), # et le fichier acl dit qui peut lire ou écrire quel topic : une carte ne lit # que ses commandes, et personne d'autre que le serveur n'entend les micros. # Chemins du conteneur Docker ; « make mosquitto-config » les adapte au service # Debian (/etc/mosquitto/). # # Piège n°4 : TOUS les clients de ce broker ont désormais besoin d'un compte, # y compris ceux d'autres projets qui l'utilisaient sans mot de passe. allow_anonymous false password_file /mosquitto/config/passwd acl_file /mosquitto/config/acl # Taille maximale d'un paquet MQTT complet (en-tête et topic compris). # Un chunk audio fait 1600 octets : 8192 laisse une large marge. # (remplace « message_size_limit », obsolète depuis Mosquitto 2.0) max_packet_size 8192 # Journal sur la sortie standard : visible avec `docker logs` dans un conteneur, # et dans `journalctl -u mosquitto` avec le service Debian. # Piège n°3 : « log_dest syslog » dans un conteneur n'écrit nulle part, et un # plantage au démarrage devient invisible. log_dest stdout log_type error log_type warning log_type notice log_type information connection_messages true # Pas de persistance : les messages audio n'ont aucun intérêt après coup, et # l'état « retenu » de l'ESP32 est republié à chaque connexion. persistence false