Wirenboard8 слетают настройки mqtt-serial

к контроллеру wb8 подключен MAP3e через MIO, после манипуляций с терминатором стабильно находится поиском в настройках serial-config

после добавления, отображается нормально.

Сохраняю в таком состоянии, вроде сохранение проходит, кнопка “сохранить настройки” становится неактивна.

Но после перезагрузки MAP3e на шлюзе исчезает, вместо него появляется MAP3e, якобы подключенный напрямую к WB8, но неактивный.

Что делать? Кто виноват?

На всякий случай: ошибка воспроизводится, такая фигня при каждой перезагрузке

Поколупал с клодом, безрезультатно, пока решил остановиться. Резюме наших колупаний:

Проблема: После каждой перезагрузки WB8 устройство WB-MAP3E fw2 (slave_id 22) перемещается из TCP-порта шлюза (192.168.1.251:23) в /dev/ttyRS485-1, где отображается как неактивное.

Оборудование: WB8 rev 8.5.1, прошивка ядра 6.8.0-wb153 (март 2026). MAP3E подключён через WB-MIO (slave_id 183) на шлюзе 192.168.1.251:23.

Что проверили:

  1. Содержимое /etc/wb-mqtt-serial.conf и /mnt/data/etc/wb-mqtt-serial.conf — оба являются одним файлом (/etc/ — симлинк на /mnt/data/etc/). После сохранения в веб-интерфейсе MAP3E корректно прописывается в TCP-порт шлюза 192.168.1.251.

  2. После перезагрузки MAP3E оказывается в секции /dev/ttyRS485-1 на строке 19, хотя шлюз начинается на строке 106. То есть файл перезаписывается при загрузке.

  3. В логе wb-device-manager при старте видно попытку опросить slave_id 22 именно на /dev/ttyRS485-1:

rpc call params: {'slave_id': 22, 'path': '/dev/ttyRS485-1', ...}
  1. Проверили retained топики mosquitto — обнаружили большое количество retained сообщений /devices/wb-map3e_22/# со старыми данными и флагом error: r. Очистили все retained топики устройства через mosquitto_pub -t '...' -n -r. После ребута retained топики восстановились заново, проблема не исчезла.

  2. /wb-device-manager/devices — retained топик пустой.

  3. /var/lib/wb-mqtt-confed/ — кэша конфигов нет, только схемы.

  4. /etc/wb-configs.d/11wb-mqtt-serial содержит только wb_move /etc/wb-mqtt-serial.conf — никакой дополнительной логики.

  5. wb-mqtt-serial.conf.default в rootfs содержит пустой конфиг без устройств — не источник проблемы.

  6. auditd не установлен, отследить момент записи файла не удалось.

Вопрос: Что при загрузке WB8 перезаписывает /mnt/data/etc/wb-mqtt-serial.conf, добавляя устройство из TCP-шлюза в секцию прямого RS485-порта? Есть ли известный механизм миграции устройств между портами при старте системы?

Добрый день.
Довольно интересно, (давно такого не было).
Пришлите, пожалуйста, архив с диагностической информацией контроллера. Создание архива описано в документации.
Также - проведите эксперимент:

  • сохраните конфиг /mnt/data/etc/wb-mqtt-serial.conf как бэкап
  • удалите все устройства из веб-интерфейса, сохраните в нем.
  • проверьте что файл поменялся (что устройств в нем нет)
  • перезапустите контроллер.

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

удалил:

результат:

#cat /mnt/data/etc/wb-mqtt-serial.conff
{
“debug” : false,
“ports” :
[
{
“baud_rate” : 9600,
“data_bits” : 8,
“devices” : ,
“enabled” : true,
“parity” : “N”,
“path” : “/dev/ttyRS485-1”,
“stop_bits” : 2
},
{
“baud_rate” : 2400,
“data_bits” : 8,
“devices” : ,
“enabled” : true,
“parity” : “E”,
“path” : “/dev/ttyRS485-2”,
“stop_bits” : 2
},
{
“baud_rate” : 9600,
“data_bits” : 8,
“devices” : ,
“enabled” : false,
“parity” : “N”,
“path” : “/dev/ttyMOD1”,
“stop_bits” : 2
},
{
“baud_rate” : 9600,
“data_bits” : 8,
“devices” : ,
“enabled” : false,
“parity” : “N”,
“path” : “/dev/ttyMOD2”,
“stop_bits” : 2
},
{
“baud_rate” : 9600,
“data_bits” : 8,
“devices” : ,
“enabled” : false,
“parity” : “N”,
“path” : “/dev/ttyMOD3”,
“stop_bits” : 2
},
{
“baud_rate” : 9600,
“data_bits” : 8,
“devices” : ,
“enabled” : false,
“parity” : “N”,
“path” : “/dev/ttyMOD4”,
“stop_bits” : 2
},
{
“address” : “192.168.1.95”,
“devices” : ,
“enabled” : true,
“port” : 23,
“port_type” : “tcp”
},
{
“address” : “192.168.1.251”,
“devices” : ,
“enabled” : true,
“port” : 23,
“port_type” : “tcp”
}
]

После ребута:

cat /mnt/data/etc/wb-mqtt-serial.conf
{
“debug” : false,
“ports” :
[
{
“baud_rate” : 9600,
“data_bits” : 8,
“devices” :
[
{
“curtain1_mode” : 0,
“curtain2_mode” : 0,
“curtain3_mode” : 0,
“device_type” : “WB-MR6C”,
“in1_mode” : 2,
“slave_id” : “199”
},
{
“device_type” : “WB-MAP3E fw2”,
“l1_turns” : 3000,
“l2_turns” : 2999,
“l3_turns” : 3001,
“slave_id” : “22”
}
],
“enabled” : true,
“parity” : “N”,
“path” : “/dev/ttyRS485-1”,
“stop_bits” : 2
},
{
“baud_rate” : 2400,
“data_bits” : 8,
“devices” : ,
“enabled” : true,
“parity” : “E”,
“path” : “/dev/ttyRS485-2”,
“stop_bits” : 2
},
{
“baud_rate” : 9600,
“data_bits” : 8,
“devices” : ,
“enabled” : false,
“parity” : “N”,
“path” : “/dev/ttyMOD1”,
“stop_bits” : 2
},
{
“baud_rate” : 9600,
“data_bits” : 8,
“devices” : ,
“enabled” : false,
“parity” : “N”,
“path” : “/dev/ttyMOD2”,
“stop_bits” : 2
},
{
“baud_rate” : 9600,
“data_bits” : 8,
“devices” : ,
“enabled” : false,
“parity” : “N”,
“path” : “/dev/ttyMOD3”,
“stop_bits” : 2
},
{
“baud_rate” : 9600,
“data_bits” : 8,
“devices” : ,
“enabled” : false,
“parity” : “N”,
“path” : “/dev/ttyMOD4”,
“stop_bits” : 2
},
{
“address” : “192.168.1.95”,
“devices” :
[
{
“device_type” : “WB-MAI6”,
“in1_max” : 10000,
“in1_n_max” : 10000,
“in1_n_physical_value_scale” : 1,
“in1_n_type” : 4866,
“in1_physical_value_scale” : 1,
“in1_type” : 4866,
“in2_n_type” : 5889,
“in2_type” : 5889,
“in3_n_type” : 5889,
“in3_type” : 5889,
“in4_n_type” : 5632,
“in4_type” : 0,
“in5_n_type” : 5889,
“in5_type” : 0,
“in6_n_type” : 0,
“in6_type” : 0,
“slave_id” : “198”
}
],
“enabled” : true,
“port” : 23,
“port_type” : “tcp”
},
{
“address” : “192.168.1.251”,
“devices” :
[
{
“device_type” : “wb_mio”,
“slave_id” : “183”
}
],
“enabled” : true,
“port” : 23,
“port_type” : “tcp”
}
]

В логах странного (пока) не вижу. Ну и в логах сервиса wb-configs* , который как раз и перемещает конфиги заменяя симлинками - тоже.
А контроллер в облаке?
Если да - пригласите, пожалуйста, пользователя support@wirenboard.com в организацию на облачном сервисе.

Поставьте временный пароль от SSH пришлите личным сообщением (потом замените).

Для этого в настройках организации нажмите кнопку “Пригласить”


И укажите почтовый адрес:

После этого поддержка получит доступ к вашему контроллеру для диагностики.
Не забудьте удалить потом доступ.

Предположительно что wb-mqtt-confed все ж создает конфиг.
Изучаю.
Пару минут назад связь, правда пропала.

У вас есть к нему доступ? С 14:41 он не в облаке, к сожалению.

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

Удалось снова подключиться. Буду перезапускать для воспроизведения.

Включил debug для сервиса.
Вижу:

Jun 04 13:45:57 wirenboard-APWLVPKH wb-mqtt-confed[1803]: [mqtt] DEBUG: [net]      logic waiting for msg on ibound
Jun 04 13:45:57 wirenboard-APWLVPKH wb-mqtt-confed[1803]: DEBUG: [wbgo_mqtt] GOT MESSAGE: /rpc/v1/confed/Editor/Save/wb-mqtt-homeui-hne5xIaNIh --- {"id":95,"params":{"path":"/usr/share/wb-mqtt-confed/schemas/wb-mqtt-serial-dummy.schema.json","content":{"debug":false,"ports":[{"enabled":true,"path":"/dev/ttyRS485-1","baud_rate":9600,"parity":"N","data_bits":8,"stop_bits":2,"devices":[{"curtain1_mode":0,"curtain2_mode":0,"curtain3_mode":0,"device_type":"WB-MR6C","in1_mode":2,"slave_id":"199"},{"slave_id":"22","device_type":"WB-MAP3E fw2","l1_turns":3000,"l2_turns":2999,"l3_turns":3001}]},{"enabled":false,"path":"/dev/ttyRS485-2","baud_rate":9600,"parity":"N","data_bits":8,"stop_bits":2,"devices":[]},{"enabled":false,"path":"/dev/ttyMOD1","baud_rate":9600,"parity":"N","data_bits":8,"stop_bits":2,"devices":[]},{"enabled":false,"path":"/dev/ttyMOD2","baud_rate":9600,"parity":"N","data_bits":8,"stop_bits":2,"devices":[]},{"enabled":false,"path":"/dev/ttyMOD3","baud_rate":9600,"parity":"N","data_bits":8,"stop_bits":2,"devices":[]},{"enabled":false,"path":"/dev/ttyMOD4","baud_rate":9600,"parity":"N","data_bits":8,"stop_bits":2,"devices":[]},{"port_type":"tcp","enabled":true,"address":"192.168.1.95","port":23,"devices":[{"device_type":"WB-MAI6","in1_max":10000,"in1_n_max":10000,"in1_n_physical_value_scale":1,"in1_n_type":4866,"in1_physical_value_scale":1,"in1_type":4866,"in2_n_type":5889,"in2_type":5889,"in3_n_type":5889,"in3_type":5889,"in4_n_type":5632,"in4_type":0,"in5_n_type":5889,"in5_type":0,"in6_n_type":0,"in6_type":0,"slave_id":"198"}]},{"port_type":"tcp","enabled":true,"address":"192.168.1.251","port":23,"devices":[{"slave_id":"183","device_type":"wb_mio"}]}]}}}

То есть команда от браузера.
по логу: два разных homeui-клиента (hne5xIaNIh и cxpUOTdB8I ) прислали Save с разным содержимым в течение одной секунды после старта. Это браузерные сессии, похоже.
Проверю, установив пароль.

Рекомендую - позакрывать все браузерные вкладки, на всех устройствах, включая те что работают через облако.
Ну или сменить ip адрес контроллера на время (не поможет для облачных).

облако открыл сегодня впервые специально для вас. Браузерная вкладка может быть только одна и только у меня, она закрыта.

По mqtt подключен иоброкер, но там вроде все штатно. Больше ниоткуда не заходил точно.

и какой пароль? Мне уже пользоваться контроллером можно?

Да, забыл написать admin/admin.
Проверьте пожалуйста из “инкогнито” - воспроизведется ли.

А, понятно… А если отключить - воспроизводится?

Напишите пожалуйста - воспроизводится ли при отключенном?

я вручную удалил старые топики из иоброкера, вроде больше проблема не возникает. Хотя может это потому что пароль на веб-интерфейс поставили…

Да, причиной были retained топики которые загружались по MQTT.

Нет, это было сделано для проверки гипотезы, которая не подтвердилась.
То есть причина в том что брокер сохранял retained.