Добрый день!
Помогите пожалуйста с конфигурацией MQTT моста.
Есть удаленный брокер mosquitto в облаке (с ним работает Home Assistant). Вот его конфиг:
listener 1883
allow_anonymous false
password_file /etc/mosquitto/passwdlistener 8883
cafile /etc/mosquitto/certs/mydomainname.ru/chain.pem
keyfile /etc/mosquitto/certs/mydomainname.ru/privkey.pem
certfile /etc/mosquitto/certs/mydomainname.ru/cert.pem
На этом участке у меня нет никаких проблем, сертификаты от Let’s Encrypt поддерживают не только SSL mosquitto, но и HTTPS для Home Assistant.
Далее я пробую подключиться к этому брокеру с помощью MQTT Explorer - подключение проходит, сообщения вижу, авторизация по логину/паролю. Единственный момент - в MQTT Explorer мне приходится снять галочку Validate Certificate. Ну ок, в mosquitto это решается с помощью --insecure.
Пробую подключиться из консоли WirenBoard:
mosquitto_sub -h
mydomainname.ru
-p 8883 -i testid -u username -P password -t /devices/buzzer/controls/enabled/on --insecure
Подключение происходит, поучаю сообщения и от Home Assistant, и от MQTT Explorer - все в полном порядке. Пробую отправить сообщение:
mosquitto_pub -h
mydomainname.ru
-p 8883 -i testid -u username -P password -t /devices/buzzer/controls/enabled/on --insecure -m 1
Все отлично доходит. То есть связь работает корректно, все максимально протестировано. Далее настраиваю на стороне WirenBoard мост. Содержимое конфига /etc/mosquitto/mosquitto.conf
pid_file /run/mosquitto/mosquitto.pid
persistence true
persistence_location /var/lib/mosquitto/log_dest file /var/log/mosquitto/mosquitto.log
include_dir /etc/mosquitto/conf.d
connection wb_ha
addressmydomainname.ru:8883
remote_username username
remote_password password
clientid testid
try_private false
start_type automatic
topic # both
bridge_insecure true
Свою маленькую проблему с --insecure здесь я решаю с помощью bridge_insecure true. Перезапускаю mosquitto - все запустилось нормально, но мост не работает. Ни в одну, ни в другую сторону. Сообщения не идут.
Проблема кроется именно в SSL, потому что если в конфиге WirenBoard я меняю адрес порта с 8883 на 1883 (как видно из самого первого конфига, облачный mosquitto прослушивает два порта - 1883 без SSL и 8883 с SSL), то все работает отлично. Но не безопасно.
Смущает тот факт, что с текущими настройками SSL у меня видимо все в порядке, ведь от лица WirenBoard корректно отрабатывают команды mosquitto_sub/mosquitto_pub на порту 8883, а вот мост на этот порт видимо настроен не корректно.