Режим моста в Mosquitto на примере CloudMQTT
Порой возникает задача объединить несколько MQTT брокеров в один. Я столкнулся с этим при настройке голосового помощника для умного дома без наличия выделенного IP-адреса у последнего. Предполагаемая схема была такая: "Алиса" - "Навык Домовенок Кузя" - "CloudMQTT" - "Локальный Mosquitto" - "Home Assistant". Да, сложно. Да, много посредников. Но на тот момент другого варианта не было.
В целом, настройка локального брокера оказалась делом совсем не сложным:
1.Открываем файл /etc/mosquitto/mosquitto.conf и убеждаемся в наличии там следующей строчки:
include_dir /etc/mosquitto/conf.d
Если ее нет - добавляем.
2. Создаем файл /etc/mosquitto/conf.d/cloudmqtt.conf со следующим содержимым:
connection cloudmqtt
address m16.cloudmqtt.com:28093
remote_username USER_LOGIN
remote_password USER_PASSWORD
remote_clientid cloudmqtt
bridge_protocol_version mqttv311
try_private true
notifications false
start_type automatic
topic # both 2 /cloudmqtt/
bridge_cafile /etc/mosquitto/ca_certificates/addtrustexternalcaroot.cer
bridge_insecure false
cleansession false
local_clientid mosquitto
Где необходимо указать свои данные от созданного инстанса в CloudMQTT:
- m16.cloudmqtt.com:28093 - адрес и порт;
- USER_LOGIN - имя пользователя;
- USER_PASSWORD - пароль пользователя.
3. Скачиваем корневой сертификат addtrustexternalcaroot.cer и помещаем его в каталог /etc/mosquitto/ca_certificates/
4. Перезагружаем Mosquitto. Теперь все данные с CloudMQTT будут автоматически синхронизироваться с локальным брокером в топике /cloudmqtt/
а сообщения с локального брокера не из топика /cloudmqtt будут отображаться на удаленном брокере? или надо удаленный тоже в режиме моста настраивать? или можно в настройках просто указать topic # both 2 / и тогда топики будут синхронизироваться?