Страница 1 из 1
Проблема с MQTT - не работает локально без интернета
Добавлено: Чт апр 02, 2020 10:27 pm
ksv
Ситуация такая. MD работает на RPi3, в локальной сети кроме него ещё пара устройств, все общаются между собой по MQTT, брокер на RPi3 (встроенный в базовый образ MD). Локальная сеть построена на роутере с доступом в интернет через LTE-модем. Модем кривой, часто виснет. Так вот пока доступ в интернет есть, то всё работает хорошо. Как только связь с внешним миром пропадает, то внутренний обмен по MQTT также прекращается! Смотрю логи, устройства пытаются подключиться к брокеру, связь устанавливается, но обмена нет ни в одну сторону, через несколько секунд устройства проверяют коннект по MQTT - а его уже нет, снова реконнект - удачно, но обмена нет. И так в бесконечном цикле. Стоит только появиться связи с интернетом - сразу всё начинает работать корректно. Сервис MQTT в MD значится как ONLINE, пробовал перезапускать - перезапускается, но обмена нет, пока нет интернета. Что это за хрень такая, может подскажете в чём может быть причина?
Re: Проблема с MQTT - не работает локально без интернета
Добавлено: Пт апр 03, 2020 2:40 pm
serghei
Только что проверил у себя. Всё работает локально. Образ официальный для RPI3+. Малина и есп8266 подключены к микротику. Выключаю внешку ( выдергиваю шнур ) - обмен идёт. Значит что то у Вас с настройкой сети и рутера не в порядке.
Re: Проблема с MQTT - не работает локально без интернета
Добавлено: Пт апр 03, 2020 2:49 pm
ksv
Спасибо. Да такое подозрение у меня тоже есть. Вот только что не так с моей сетью и какого рода может быть связь этих факторов...
Re: Проблема с MQTT - не работает локально без интернета
Добавлено: Пт апр 03, 2020 2:55 pm
serghei
Я мало что понимаю в настройках сети и рутеров , но логично предположить - возьми самый простой свич и оставь в нем только малину и того , кто отдаёт MQTT/по идее должно работать. С телефоном сложнее - если выдернуть внешку - то по вай фаю он вообще не коннектится - требует регистрацию в сети которой нет.
Re: Проблема с MQTT - не работает локально без интернета
Добавлено: Пт апр 03, 2020 3:00 pm
ksv
Спасибо за идею, свича под рукой нет, но есть свободный роутер другой, поэкспериментирую с ним.
Re: Проблема с MQTT - не работает локально без интернета
Добавлено: Пт апр 03, 2020 3:05 pm
serghei
Попробуй на свободном рутере поднять вторую - третью подсеть только для твоих серверов Соответственно малинки и девайсы подключи к нему. В рутере надо сделать так , чтобы он по WLAN получал домашнюю сеть , а LAN раздавал другую. Тогда должно получиться. Но как с внешки при этом добраться до мажерика я не знаю.
И вообще по правилам хорошего тона для мажерика и своих датчиков надо поднисать отдельную подсеть , чтобы никто её не видел и не лез со своими игрушками и телефонами.
Re: Проблема с MQTT - не работает локально без интернета
Добавлено: Пт апр 24, 2020 8:46 pm
ksv
Наконец выдался дождливый день и появилась возможность покопаться. Копался реально целый день, долго искал причину, но проблему таки решил. Вряд ли кому это будет полезно, ситуация очень уж специфическая, но отпишусь, чтобы проблема не висела без решения для тех, кто будет искать что-то похожее.
Проблема была совсем не в МД, и даже не в RPi3. И уж совсем не в локальной сети. Проблемными оказались внешние MQTT-устройства. Ибо они не покупные, а самодельные, две штуки, одно на Arduino Nano, другое на Arduino Mega. С железом всё ок, но проблема, как это чаще всего и бывает, в сторонних библиотеках, писаных кем-то где-то на коленке под себя. И вот в данном случае библиотека поддержки протокола MQTT оказалась и виновата. Я использовал в своей системе два MQTT-брокера, один локальный, другой - на том конце интернета. Каждое устройство синхронно слало данные на оба брокера. Это такое экспериментальное резервирование. Но как только интернет пропадал, то падала связь с обоими брокерами, и локальным, и внешним. Потому что ардуино-библиотека не справлялась с двумя экземплярами одного класса в случае ошибки соединения. Копаться в исходниках сил уже не было, просто отключил второго брокера, и теперь всё работает как надо. Во така фигня... ((