MQTT Состояние подписки

sigma_shig
Offline
Зарегистрирован: 30.12.2016

Использую Arduino Mega как MQTT клиент. С библиотекой PubSubClient. Подписываюсь на 30+ топиков. В принципе, все работает уже три года. Но именно в принципе. Иногда, при запросе subscribe на сервере возникает connection error и реально подписка не происходит - другие клиенты получают сообщения в этом топике, а данная Arduino - нет. И, самое неприятное, что вызов subscribe не возвращает реальный результат подписки. Просмотрев исходники, могу сказать, что этот вызов возвращает false при плохих параметрах и true, если удалось сделать отправку пакета на сервер. И никак не возвращает результат подписки.

Что хочется? Хочется каким-то образом узнавать список подписаных топиков и повторять подписку, если какой-то из топиков пропущен. Я не нашел ни в библиотеке ни в описании MQTT описания средств узнать "а на что я подписан". Плохо искал?

rkit
Offline
Зарегистрирован: 23.11.2016

sigma_shig пишет:

Иногда, при запросе subscribe на сервере возникает connection error

Если происходит обрыв соединения, то потеряны ВСЕ подписки, и их нужно ВСЕ восстанавливать.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

А чтоб следить за статусом подключения используется pingreq pingresp

sigma_shig
Offline
Зарегистрирован: 30.12.2016

Так в том-то и проблема, что теряется не вся подписка. При старте ардуино у меня идет подписка на 30 топиков. И именно на 1-2 топика подписка не срабатывает. В логе сервера "connection error". Но что под ним реально - не знаю. Однако ардумно продолжает и публиковать и получать значения в остальные 28 топиков. А вот эти два просто недоступны. Так что и ping не поможет - он проходит.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Сервер mqtt свой ;) ?
30 подписей это много, тут или сервер не даёт такого объема или ваши библиотеки в скетче не выдерживают такой нагрузки - пишите свои обработчики

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Тут много полезного
http://arduino.ru/forum/programmirovanie/snova-mqtt-1

rkit
Offline
Зарегистрирован: 23.11.2016

Тогда проблема в чем-то совсем другом.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

rkit пишет:

Тогда проблема в чем-то совсем другом.

Охренительная истина :(