• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

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

Yamazaki

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

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

Yamazaki

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

Yamazaki

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