Привязка к Алисе

Добрый день,

Сегодня обновился до последней stable версии командой apt update && apt full-upgrade и настроил привязку. На странице Яндекс My linked controllers - Online.

У меня на контроллере имя пользователя и пароль к MQTT брокеру изменены. И я думаю что из за этого команда systemctl status wb-mqtt-alice-client выдаёт ошибки
Apr 01 10:18:00 wirenboard-AMR34RU2 python3[7036]: ERROR: MQTT Connection failed with code: 5
Apr 01 10:18:00 wirenboard-AMR34RU2 python3[7036]: WARNING: MQTT Disconnected with code 5

Подскажите пожалуйста где и как вписать имя и пароль от брокера в настройки конфигурации mqtt-alice. wb-mqtt-alice-client.conf ?

Если я ошибаюсь и дело в другом, прошу указать правильный путь решения проблемы. Отправляю логи.

приложен диагностический архив, доступен только сотрудникам поддержки
(361,0 КБ)

Добрый день.

Все сервисы контсроллера, работающие с localhost должны иметь доступ к брокеру без пароля.
Иной режим работы не предусмотрен и не поддерживается.
Для внешних подключений - да, вполне можно использовать авторизацию.

Обратите внимание:

Apr 01 09:16:04 wirenboard-AMR34RU2 python3[1104661]: INFO: Alice integration is DISABLED in configuration
Apr 01 09:16:04 wirenboard-AMR34RU2 python3[1104661]: INFO: To enable integration, set 'client_enabled': true in file '/etc/wb-mqtt-alice-client.conf'

Спасибо за ответ,

В файле /etc/wb-mqtt-alice-client.conf ‘client_enabled’: написано true.

Я от вашего ответа понял что проблема не в пароле к брокеру.

Отправляю скриншоты с терминала.

Подключения с localhost должны быть без какой-либо авторизации.
Обратите внимание как в /etc/mosquitto/conf.d/10listeners.conf

listener 1883 127.0.0.1
allow_anonymous true

Поменял false на true и после этого веб интерфейс начал выдавать

Сервис wb-mqtt-logs недоступен. У меня стоял пароль на брокере.

Вернул обратно false не помогло.

Вот тут я не уверен что понимаю. Для чего менять?
То есть напишите пожалуйста - что, каким образом сеняли.
Какой результат ожидался (какой командой проверялся).

Что за пароль? Для какого типа подключений? Он как-то влияет на возможность подключиться с localhost?
То есть - опишите полностью отличие текущей настройки брокера от умолчальной.

На контроллере до обновления до версии WB-2602 был установлен пароль на MQTT брокер и так-же в настройках веб интерфейса для подключения к брокеру был включён ИСПОЛЬЗОВАТЬ ПАРОЛЬ. Вы написали что:

Подключения с localhost должны быть без какой-либо авторизации.
Обратите внимание как в /etc/mosquitto/conf.d/10listeners.conf

listener 1883 127.0.0.1
allow_anonymous true

У меня в файле /etc/mosquitto/conf.d/10listeners.conf было allow_anonymous false и я поменял на true чтобы было без какой-либо авторизации.

Может я Вас неправильно понял?

После этой операции веб интерфейс стал писать Сервис wb-mqtt-logs недоступен.

Сейчас после перезагрузки контроллера вроде все нормально, но интеграция все еще не работает. Пишет следуюшее:

root@wirenboard-AMR34RU2:~# systemctl status wb-mqtt-alice-client
● wb-mqtt-alice-client.service - Client for Wiren Board Yandex Alice to MQTT integration
Loaded: loaded (/lib/systemd/system/wb-mqtt-alice-client.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2026-04-02 16:36:44 +04; 2min 3s ago
Process: 11588 ExecStartPre=/usr/lib/wb-mqtt-alice/configure-nginx-proxy.sh (code=exited, status=0/SUCCESS)
Main PID: 11738 (python3)
Tasks: 3 (limit: 4406)
Memory: 24.2M
CPU: 7.415s
CGroup: /system.slice/wb-mqtt-alice-client.service
└─11738 /usr/bin/python3 /usr/lib/wb-mqtt-alice/wb-mqtt-alice-client.py

Apr 02 16:36:47 wirenboard-AMR34RU2 python3[11738]: INFO: Connecting Socket.IO client to ‘http://localhost:8042’…
Apr 02 16:36:47 wirenboard-AMR34RU2 python3[11738]: WARNING: Executing <Task pending name=‘Task-1’ coro=<main() running at /usr/lib/wb-mqtt-alice/wb-mqtt-alice-client.py:683> wai>
Apr 02 16:36:48 wirenboard-AMR34RU2 python3[11738]: INFO: Manager: Success connected to Socket.IO server, namespace=‘/’ ready (sid=‘a_qObI4zZdy2xI_QCqG2’)
Apr 02 16:36:48 wirenboard-AMR34RU2 python3[11738]: INFO: start alice device state sender
Apr 02 16:36:48 wirenboard-AMR34RU2 python3[11738]: INFO: Alice state sender started after connect
Apr 02 16:36:50 wirenboard-AMR34RU2 python3[11738]: INFO: Socket.IO connected successfully
Apr 02 16:36:50 wirenboard-AMR34RU2 python3[11738]: INFO: Connection successful after 1 attempt(s)
Apr 02 16:36:50 wirenboard-AMR34RU2 python3[11738]: INFO: Client initialization continue when connect to server
Apr 02 16:37:08 wirenboard-AMR34RU2 python3[11738]: WARNING: Read topic timeout waiting ‘/devices/KITMR/controls/K4’
Apr 02 16:37:08 wirenboard-AMR34RU2 python3[11738]: WARNING: ‘95c97e23-260401093729-91c3e510-b80f-4fed-83d1-e25ce7761c77’: no live or retained data — marking DEVICE_UNREACHABLE

Так, тут все верно. Для localhost (это как раз важно) и должно быть “allow_anonymous true”

Отлично, проблем нет.

Этот топик существует? Покажите его пожалуйста, вместе с подтопиками.

Доброе утро.

Вот скриншоты.

Выложите лучше результат подписки все ж и ну и диагностический архив.

Не понял что такое результат подписки.

приложен диагностический архив, доступен только сотрудникам поддержки
(1,5 МБ)

например

Но тут неактуально - я вижу работающий сервис.
Ну и хочу узнать - что работает не так как описано документацией?

далее

далее

Показывает, все новые устройства не в сети.

В каком состоянии, при этом топки устройств в интерфейсе контроллера в “устройствах”?

Значения топиков есть и true и false. Фидбеки тоже не приходят в приложение Яндекса. Я пробовал включать и выключать выходы MR6, ничего не меняется.

А управляются ли устройства?
То есть - что происходит при попытке поменять его состояние (включить/выключить) из интерфейса ЯУД?

Нет, когда пишет Не в сети кнопка управления становится неактивной.

Добрый день

Что видно по вашим логам

На данный момент видно несколько моментов

  1. Связь вашего контроллера с сервером интеграции есть - это видно по этим строкам в логе
Apr 02 16:36:48 wirenboard-AMR34RU2 python3[11738]: INFO: Alice state sender started after connect
Apr 02 16:36:50 wirenboard-AMR34RU2 python3[11738]: INFO: Socket.IO connected successfully
  1. Алиса посылает запрос на актуальное состояние вашего девайса (топика /devices/KITMR/controls/K4) - видимо когда вы загружаете страницу в приложении умного дома алисы
  2. Клиент успешно получает этот запрос со стороны Алисы
  3. Уже в процессе локальной обработки запроса Алисы - клиент не может прочесть содержимое топика
Apr 02 16:37:08 wirenboard-AMR34RU2 python3[11738]: WARNING: Read topic timeout waiting ‘/devices/KITMR/controls/K4’
Apr 02 16:37:08 wirenboard-AMR34RU2 python3[11738]: WARNING: ‘95c97e23-260401093729-91c3e510-b80f-4fed-83d1-e25ce7761c77’: no live or retained data — marking DEVICE_UNREACHABLE
  1. Далее клиент сознательно отвечает алисе что девайс не доступен, так как не может получить актуальный статус из топика.

  2. В ответ на это в приложении алисы появляются вот такие красные перечеркнутые значки не доступности

Таким образом интеграция работает, но не может прочесть ваши топики

Попробуйте пожалуйста

  1. Проверить есть ли в вашей конфигурации не верные топики
    Это могло произойти например по следующим причинам:
  • вы раньше настроили интеграцию с алисой выбирая топики из выпадающего списка в UI
  • и потом уже в настройках самих девайсов поменяли их id или другие настройки
  • Изменение настроек привело к загрузке других имен устройсв или других контролов, например у wb-led это происходит если поменяли режим каналов, что приводит к объединению топиков отдельных каналов в 1 топик)
  1. Если все топики актуальны и проблем не выявлено, тогда ошибка может быть в настройках Mqtt брокера.
    Попробуйдет пожалуйста выполнить из консоли команду
$ mosquitto_sub -v -t “/devices/KITMR/controls/K4”

Покажите вывод - получает ли эта команда данные из вашего топика?
Тут может быть два варианта

  • Либо она выведет ниже имя топика и справа актуальное значение (тогда проблема в другом)
root@wirenboard:~# mosquitto_sub -v -t “/devices/rele_v_kabinete/controls/K4”
/devices/rele_v_kabinete/controls/K4 0
  • Либо после нажатия enter у вас зависнит команда - это значит что у вас этот топик или не существует в системе или не виден из за пароля или он не имеет уже записанных постоянных retain сообщений
root@wirenboard:~# mosquitto_sub -v -t "/devices/KITMR/controls/K4"
<------ Вот тут не будет никакого вывода и просто консоль будет висеть

Попробовал. Как Вы и писали команда зависает.

У меня стоял пароль на MQTT брокер, я об этом говорил Вам. Вы мне сказали в /etc/mosquitto/conf.d/10listeners.conf записать allow_anonymous true что я и сделал. Подскажите как можно удалить полностью этот пароль?

Ниже я описал по шагам как отключить пароль, но для информации - вот тут в статье написано как установить пароль и соответственно убрать его можно так же

Подробнее действия должны быть примерно следующие

Чтобы удалить пароль с MQTT-брокера и вернуть контроллер Wiren Board к заводским настройкам (со свободным анонимным доступом), вам нужно отменить изменения, описанные в инструкции по ссылке выше:

Вот пошаговый процесс возврата к настройкам по умолчанию:

1. Удалите созданного ранее пользователя

Посмотрите какие юзеры есть
Например у меня тут только один юзер для теста user_name

$ cat /etc/mosquitto/passwd/default.conf

user_name:$7$101$mQgQVU0tnG7Se9+v$eFV2kEUlaBQUt3DJgpfrMX8WZbCQKkDILW+EAm2bFBRgEveR9cE0Sk2Kja1WybhcUVNCSbWWniv6B31bh51ATg==

Удалите пользователя из файла с хэшами паролей с помощью команды (замените username на логин, который вы создавали):

$ mosquitto_passwd -D /etc/mosquitto/passwd/default.conf username

(Если вы забыли имя пользователя, можете открыть файл nano /etc/mosquitto/passwd/default.conf и просто удалить строчку с ним, после чего сохранить файл).

Посмотрите что юзер удалился реально - у меня тут пусто на выводе

$ cat /etc/mosquitto/passwd/default.conf
< ----- Обратите внимание что файл пустой, тут НЕТ вывода - пусто!
$

2. Восстановите настройки доступов (listeners)

При установке пароля вы ограничивали стандартный порт 1883 (делали его локальным 127.0.0.1) и, скорее всего, создавали новый (например, 1884) с запретом на анонимный доступ (allow_anonymous false).

Откройте файл конфигурации портов:

$ nano /etc/mosquitto/conf.d/10listeners.conf

Что нужно сделать в файле:

  1. Верните порт 1883 к стандартному виду, чтобы он разрешал подключения всем
  • вот так правильноlistener 1883 - только слово и потом порт, ip вконце нет
  • вот так НЕ верно listener 1883 127.0.0.1
  1. Установить allow_anonymous true

Вот как выглядит этот файл дефолтно после покупки контроллера:

# This file should be used to define external mosquitto listeners
# (which are not used by internal services).


# Default MQTT port listener.
#
# It allows anonymous listeners by default to be compatible with
# old Wiren Board mosquitto configuration.
#
# It is recommended to add password authentication and TLS for security.
listener 1883
allow_anonymous true
acl_file /etc/mosquitto/acl/default.conf
password_file /etc/mosquitto/passwd/default.conf


# Default Websockets listener.
#
# It is used by Wiren Board Web interface.
#
# It allows anonymous listeners by default to be compatible with
# old Wiren Board mosquitto configuration.
#
# It is recommended to add password authentication for security.

# Changed to localhost-only for security reasons for now

listener 18883 lo
protocol websockets
allow_anonymous true
acl_file /etc/mosquitto/acl/default.conf
password_file /etc/mosquitto/passwd/default.conf

Сохраните изменения (в nano это делается комбинацией Ctrl+O, Enter, затем Ctrl+X).

3. Очистите права доступа (ACL)

Откройте файл с правами пользователей:

$ nano /etc/mosquitto/acl/default.conf

Удалите строки, которые вы добавляли для своего пользователя (вида user username, topic readwrite # и topic readwrite $SYS/#). Оставьте файл в том виде, в котором он был изначально:

topic readwrite #
topic readwrite $SYS/#

Сохраните файл.

4. Перезапустите MQTT-брокер

Чтобы все изменения вступили в силу, выполните команду перезапуска сервиса:

$ systemctl restart mosquitto

После этого пароль будет удален, а MQTT-брокер снова начнет принимать анонимные подключения по стандартному порту 1883.

5. Проверить статус сервиса

$ systemctl status mosquitto

В ответе в строке Active должно быть что он запущен

     Active: active (running) since Fri 2026-04-03 16:23:44 MSK; 4s ago

А в логах не должно быть ошибок

6. Проверить что пароля нет

Если вы получаете значение актуальное этой командой - значит после этих действий пароль на Mqtt будет снят.

$ mosquitto_sub -h localhost -v -t '/devices/rele_v_kabinete/controls/K4' -W 1 -C 1
/devices/rele_v_kabinete/controls/K4 0 <------ Моментальное чтение текущего значения
$

Если ошибка такого рода - значит пароль остался

$ mosquitto_sub -h localhost -v -t '/devices/rele_v_kabinete/controls/K4' -W 1 -C 1
Connection error: Connection Refused: not authorised.
$

Если вывода актуального значения нет, но консоль висит - это значит что пароля нет, но у вас нет такого топика

$ mosquitto_sub -v -t '/devices/rele_v_kabinete/controls/not_correct_topic' -W 1 -C 1
Timed out <------ Вот тут подождет 1 секунду и выдаст сообщение о таймауте
$

Обратите внимание что надо использовать команды именно с флагом -h, иначе проверка будет не корректная так как соединение будет не через http а через UNIX сокеты где пароль не проверяется. То есть вот так НЕ верно:

$ mosquitto_sub -v -t "/devices/KITMR/controls/K4"