Проблема с MQTT - не работает локально без интернета

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
ksv
Сообщения: 102
Зарегистрирован: Вт июл 17, 2018 10:19 am
Благодарил (а): 23 раза
Поблагодарили: 4 раза

Проблема с MQTT - не работает локально без интернета

Сообщение ksv » Чт апр 02, 2020 10:27 pm

Ситуация такая. MD работает на RPi3, в локальной сети кроме него ещё пара устройств, все общаются между собой по MQTT, брокер на RPi3 (встроенный в базовый образ MD). Локальная сеть построена на роутере с доступом в интернет через LTE-модем. Модем кривой, часто виснет. Так вот пока доступ в интернет есть, то всё работает хорошо. Как только связь с внешним миром пропадает, то внутренний обмен по MQTT также прекращается! Смотрю логи, устройства пытаются подключиться к брокеру, связь устанавливается, но обмена нет ни в одну сторону, через несколько секунд устройства проверяют коннект по MQTT - а его уже нет, снова реконнект - удачно, но обмена нет. И так в бесконечном цикле. Стоит только появиться связи с интернетом - сразу всё начинает работать корректно. Сервис MQTT в MD значится как ONLINE, пробовал перезапускать - перезапускается, но обмена нет, пока нет интернета. Что это за хрень такая, может подскажете в чём может быть причина?
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Проблема с MQTT - не работает локально без интернета

Сообщение serghei » Пт апр 03, 2020 2:40 pm

Только что проверил у себя. Всё работает локально. Образ официальный для RPI3+. Малина и есп8266 подключены к микротику. Выключаю внешку ( выдергиваю шнур ) - обмен идёт. Значит что то у Вас с настройкой сети и рутера не в порядке.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
ksv
Сообщения: 102
Зарегистрирован: Вт июл 17, 2018 10:19 am
Благодарил (а): 23 раза
Поблагодарили: 4 раза

Re: Проблема с MQTT - не работает локально без интернета

Сообщение ksv » Пт апр 03, 2020 2:49 pm

Спасибо. Да такое подозрение у меня тоже есть. Вот только что не так с моей сетью и какого рода может быть связь этих факторов...
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Проблема с MQTT - не работает локально без интернета

Сообщение serghei » Пт апр 03, 2020 2:55 pm

Я мало что понимаю в настройках сети и рутеров , но логично предположить - возьми самый простой свич и оставь в нем только малину и того , кто отдаёт MQTT/по идее должно работать. С телефоном сложнее - если выдернуть внешку - то по вай фаю он вообще не коннектится - требует регистрацию в сети которой нет.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
ksv
Сообщения: 102
Зарегистрирован: Вт июл 17, 2018 10:19 am
Благодарил (а): 23 раза
Поблагодарили: 4 раза

Re: Проблема с MQTT - не работает локально без интернета

Сообщение ksv » Пт апр 03, 2020 3:00 pm

Спасибо за идею, свича под рукой нет, но есть свободный роутер другой, поэкспериментирую с ним.
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Проблема с MQTT - не работает локально без интернета

Сообщение serghei » Пт апр 03, 2020 3:05 pm

Попробуй на свободном рутере поднять вторую - третью подсеть только для твоих серверов Соответственно малинки и девайсы подключи к нему. В рутере надо сделать так , чтобы он по WLAN получал домашнюю сеть , а LAN раздавал другую. Тогда должно получиться. Но как с внешки при этом добраться до мажерика я не знаю.
И вообще по правилам хорошего тона для мажерика и своих датчиков надо поднисать отдельную подсеть , чтобы никто её не видел и не лез со своими игрушками и телефонами.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
ksv
Сообщения: 102
Зарегистрирован: Вт июл 17, 2018 10:19 am
Благодарил (а): 23 раза
Поблагодарили: 4 раза

Re: Проблема с MQTT - не работает локально без интернета

Сообщение ksv » Пт апр 24, 2020 8:46 pm

Наконец выдался дождливый день и появилась возможность покопаться. Копался реально целый день, долго искал причину, но проблему таки решил. Вряд ли кому это будет полезно, ситуация очень уж специфическая, но отпишусь, чтобы проблема не висела без решения для тех, кто будет искать что-то похожее.

Проблема была совсем не в МД, и даже не в RPi3. И уж совсем не в локальной сети. Проблемными оказались внешние MQTT-устройства. Ибо они не покупные, а самодельные, две штуки, одно на Arduino Nano, другое на Arduino Mega. С железом всё ок, но проблема, как это чаще всего и бывает, в сторонних библиотеках, писаных кем-то где-то на коленке под себя. И вот в данном случае библиотека поддержки протокола MQTT оказалась и виновата. Я использовал в своей системе два MQTT-брокера, один локальный, другой - на том конце интернета. Каждое устройство синхронно слало данные на оба брокера. Это такое экспериментальное резервирование. Но как только интернет пропадал, то падала связь с обоими брокерами, и локальным, и внешним. Потому что ардуино-библиотека не справлялась с двумя экземплярами одного класса в случае ошибки соединения. Копаться в исходниках сил уже не было, просто отключил второго брокера, и теперь всё работает как надо. Во така фигня... ((
За это сообщение автора ksv поблагодарил:
shswork (Ср дек 01, 2021 9:14 pm)
Рейтинг: 1.16%
Ответить