• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Функция сallback в библиотеке PubSubClient

Yamazaki

New member
Здравствуйте!
Прошу пояснить механику работы обратного вызова в протоколе MQTT
Как я это понимаю: вот мы подписываемся на топики и тем самым сообщаем серверу, какие обновления топиков мы хотим получать.
Сервер их присылает, в функции callback мы прописываем как реагировать на каждую пересылку.

По факту так получается, что callback вызывается каждый проход главного цикла. Если при этом есть новые данные в топике, он их читает, а если нет, он всё равно читает!
Т.е. функция выолняется, но видит нули.
С чем это может быть связано? Понимаю, что просто что-то не понимаю o_O
Можете пояснить на пальцах?
 

Yamazaki

New member
И ещё! Почему-то между публикацией в топик с любого другого клиента и срабатыванием на неё callback'а с ЕСПшке проходит довольно много времени, причем пауза труднопредсказуемая. Может почти сразу залететь, а может почти через минуту.
 

Yamazaki

New member
Разобрались. Подписываться на топик надо один раз внутри функции reconnect, сразу после установления связи. Команда на подписку не должна гоняться повторно в главном цикле. И задержки сразу пропали
 
Сверху Снизу