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

Решено Конфликт двух ESP8266 с внешним mqtt сервером

OlegRnD

New member
Одна ESP8266 Lolin уже полгода работает на даче, отдавая по mqtt протоколу три показания, программка на Lua. Использую сервис cloudmqtt.com, бесплатную инстанцию на макс. 10 подключений, смотрю с телефона из приложения, коих полно. Второй модуль от Wemos также на Lua прошил для управления реле с телефона также через mqtt, через ту же инстанцию указанного сервиса. В итоге при включении второго модуля все работает секунд 10 - 15 (по разному) и отваливается от брокера с выводом соответствующего сообщения по команде mqtt:eek:n("offline", function(con) ... end). При этом в эти 15 секунд реле на втором модуле замечательно управляется, однако перестают приходить данные от первого модуля, после отваливания второго, снова приходят показания от первого. Как раз сегодня 4G роутер на даче отвалился от оператора и данные от первого модуля не приходят по понятным причинам, не имеющим отношения к mqtt, и второй модуль уже полчаса не отваливается от брокера. На лицо конфликт двух модулей при работе с одним брокером:( Можно, конечно, забить и завести еще одну инстанцию, но тогда из приложения одновременно с обоими устройствами не поработаешь, да и интересно понять в чем причина. Как вариант, может у модулей один MAC-адрес и брокер козлит, когда с разных IP приходят запросы с одним MAC? Хоть сравнить оба МАС сейчас не могу, но как-то маловероятно, что в этом причина. Прошу высказать свои мысли. И с наступающим!
 

Алексей.

Active member
Если у Ваших mqtt клиентов, тех что в esp модулях, один и тот же идентификатор (не логин), то поведение сервера вполне понятно, при подключении нового клиента с тем же идентификатором, "старого" подключенного клиента сервер отправляет в оффлайн, ip и мак-и тут ни причем.
 

gerkimuyda

New member
MAC виден только в локальном сегменте сети (до первого роутера). Потом пакеты идут уже с маком роутера и т.д. До хоста-получателя доходят пакеты с маком его ближайшего роутера. Так и построена маршрутизация в IP сетях (ip пакета постоянный, а мак меняется).
 

OlegRnD

New member
Действительно, взял из старого проекта строки подключения к mqtt и не поменял имя клиента, а потом как-то и не обратил на это внимания. Указал для второго модуля новый уникальный ClientID - все корректно заработало. Спасибо всем ответившим! Ещё раз с наступающим новым годом!
 
Сверху Снизу