Не удается корректно включить авторизацию MQTT

Добрый день!
Устанавливал авторизацию на MQTT по инструкции (MQTT в контроллерах Wiren Board — Wiren Board). После установки веб интерфейс не смог получать данные (скрин), хотя пишет, что connected.


Без авторизации - все работает, естественно.
Перегружал сервисы mosquitto и wb-mqtt-serial (на всякий), и даже контроллер - не помогло.
В чем может быть дело?

Файлы конфигурации следующие:

/mnt/data/etc/mosquitto/acl.conf:

user zebra
topic readwrite #
topic readwrite $SYS/#

/etc/mosquitto/mosquitto.conf:

# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d

/etc/mosquitto/passwd.conf:

zebra:$6$AjXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXMGbw==

/etc/mosquitto/auth.conf:

acl_file /etc/mosquitto/acl.conf
password_file /etc/mosquitto/passwd.conf

allow_anonymous false
allow_anonymous_localhost true

/etc/mosquitto/listeners.conf:

listener 1883 0.0.0.0
listener 18883 0.0.0.0
protocol websockets

/etc/mosquitto/bridge.conf:

#see bridge.conf.example for the example

Вопрос еще актуален, спасибо!

Добрый день.
А с компьютера топики на брокере читаются?
То есть - проверте сначала работу через прокси, поменяв порт mqtt в настройках интерфейса на 80.
Потом - попробуйте подписаться на топики с компьютера или другого устройства, проверив авторизацию.
Ну и - в дебаге браузега нет смысла смотреть на вывод всех сервисов, проверьте что происходит отфильтровав websockets (WS).

Здравствуйте!

  1. Через MQTT Browser коннект с авторизацией проходит, отображаются состояния каналов, но обновления в них не приходят (скрин)

  2. Через порт 80 Web интерфейс коннектится (зеленая лампочка горит), но также нет никаких событий и через какое-то время появляется то же сообщение про таймаут, никаких других сообщений по веб-сокету нет:

Явно какая-то ошибка при настройке, не смог воспроизвести. Если привести к исходному виду - работает?

Да, обнуляю acl.conf и включаю allow_anonymous true и все начинает работать.

Есть еще какие-то рекоммендации? Что проверить и как?

Не знаю, может ли это быть связано или нет - но по SSH долго входит в консоль (секунд 30).
Место свободное есть. Процессор не перегружен, активные только MQTT процессы что-то на 20% CPU.

Посмотреть в логи, проверить работает ли анонимный лоступ с localhost ну и работает ли доступ другого хоста, с компьютера например.

Связано с выполнением скрипта зазающего переменные окружения, в тестинге чуть оптимизировано.

В итоге решилось, но я параллельно переехал на релиз 2304, так что трудно сказать, что тут было причиной, тем более, что в 2304 что-то там поменялось в авторизации.
В итоге конфиг, с которым заработало отличается на один файл:
/etc/mosquitto/listeners.conf:

listener 1883
listener 18883
protocol websockets

Здесь без указания 0.0.0.0 после портов все работает. Теперь и UI и MQTT защищен. Соответственно в UI потребовалось прописать авторизацию.

1 Like

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.