Skocz do zawartości

Komunikacja MQTT - brak połączenia z brokerem


only

Pomocna odpowiedź

Witam,

connection.thumb.png.865e4f07ac415468643e0d4fcbc520e1.png

Może ktoś zasugerować czemu nie mogę się połączyć z brokerem, który jest zainstalowany na wirtualnej maszynie (system Ubuntu) - serwer Mosquitto. Nie mogę połączyć się za poza "lokalnego" połączenia z zewnątrz przez WIFI. Połączenia próbuje wykonać za pomocą różnych aplikacji na androdzie (np. MyMQTT). Próbowałem także przez wykorzystanie ESP32 i biblioteki MQTT. W żadnym wypadku nie udało mi się połączyć z brokerem. Ustawiłem wyjątek w zaporze dla portu 1883 - bez rezultatu (wyłączyłem całkowicie zapore - również bez efektu). Broker Mosquitto zainstalowałem zamiast na Ubuntu, to na Windows - także podobna sytuacja.

  • Lokalnie Windows oraz Ubuntu widzą serwer i się z nim łączą za pomocą MQTT Explorer.
  • Router jest widoczny w systemie Windows
  • Router widzi urządzenie android, które jest połączone z urządzeniem poprzez transmisje WIFI.
  • Jestem w stanie pingować wszystkie adresy (telefonu z androidem, windowsa czy Ubuntu) i odpowiadają (czasami jest duży ping - 1000ms)
  • Zmieniłem w mosquitto.conf parametry listeners 1883 oraz allow_anny na true.


Czy ktoś może zasugerować rozwiązanie?
Może jakaś aplikacje czy kod/program na ESP32/Android do diagnostyki sieci?
 

Link do komentarza
Share on other sites

(edytowany)

obraz.thumb.png.2d3de40ed4e34c97fccd681d7a912211.png

Screem z MQTT Explorer - Windows i Ubuntu połączył się z MQTT uruchomione na ubuntu.

obraz.thumb.png.627e52e76b94fa1405fa806cb78e66e8.png

Przypadek gdzie nie korzystam z wirutalnej maszyny, a jedynie Windows jako MQTT Serwer.
Pingowanie telefonu:

obraz.thumb.png.3531394877667aabb1114134d5792dc7.png

Router PENTAGRAM widzi telefon

 obraz.thumb.png.698ad52793ecd7656fd5a4438b63549e.png

MQTT Explorer na Windows jestem w stanie połączyć sie do serwera

obraz.thumb.png.8325cdbb9fb806714ab3d222118f8ac3.png

Probuje polaczyc sie z telefonu i jest komunikat Connection Failed. Probuje uzyc IP 192.168.1.101 (ktore dziala na Windows).

Edit:

Sprobowałem podobnie na innym routerze. Niestety efekt ten sam. Jeszcze jedno na co mozna zwrocic uwagę, że jezeli podam zły adres w aplikacji MyMQTT to zgłasza od razu błąd "failed connnection". Jeżeli wpisze poprawny to przetwarza przez dłuższą chwile (5s-10s) i zgłasza błąd.

 

Edytowano przez only
Link do komentarza
Share on other sites

Byłem ciekaw czy nie wisi przypadkiem na 127.0.0.1, ale jest na wszystkich interferjsach (0.0.0.0). Kolejny krok, na dowolnym kliencie, jakikolwiek program pozwalający na nawiązanie połączenia na dowolnym porcie TCP, jak putty albo telnet, spróbuj się połączyć z adresem brokera i jego portem i sprawdź czy połączenie uda się nawiązać czy zwróci błąd (i jaki). To Ci odpowie na pytanie czy chodzi o sieć czy konfiguracje brokera. W wypadku telnetu:

telnet ip 1883

jeśli się uda połączyć dostaniesz cos w rodzaju:

Trying 10.0.0.4...
Connected to 10.0.0.4.
Escape character is '^]'.

A jak nie, to Ci powie co poszło nie tak.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Eeeee, tylko tu się coś nie zgadza. 127.0.0.1 jest adresem loopbacka. On będzie działać jak go użyjesz na tym samym komputerze, na którym jest broker, ale żadnym innym.
Pytanie dodatkowe, maszyna wirtualna jak ma ustawione połączenie internetowe, nat czy bridge?

Link do komentarza
Share on other sites

W sumie dwa warianty. Jezeli serwer jest uruchomiony na ubuntu to kontaktuje sie z serwerem wpisujac adres wirtualnej maszyny 192.168.0.143. Adres wpisuje w windows/cmd/telnet 192.168.0.143 1883

obraz.thumb.png.c546025740c8bfc797aad902926254e7.png

Jezeli uruchomiony serwer na Windows to odpytuje z "lokalnego". Wpisuje w windows/cmd/telnet 127.0.0.1 1883

obraz.thumb.png.a50029f3e3aea2ae4be4fc9e5b98073c.png

Zastanawia mnie jeszcze fakt, dlaczego włącza się wyłącznie w trybie local only mode? W dokumentacji/internet opisują wyłącznie, że należy zmienić na listeners 1883 oraz allow_anny... true

Link do komentarza
Share on other sites

(edytowany)

W sumie się rozwiązało. Serwer startował faktycznie tylko lokalnie. Po wpisaniu w mosquitto.conf wiersza listeners 1883 0.0.0.0 (istotny jest adres) to wystartował już jako "otwarty".

Dzięki za pomoc kaworu.

 

Edytowano przez only
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.