Mam tablicę Arduino podłączoną do sieci Wi-Fi, która ma dostęp do Internetu. Chcę jednak skontaktować się z tą tablicą Arduino z dowolnej innej sieci bez pomocy przekierowania portów w domowej sieci Arduino. Obecnie robię pingowanie Arduino na mój serwer co dwa sekundy, co nie jest praktyczne.
W jaki sposób urządzenia takie jak inteligentne światła LED WiFi łączą się z Internetem? Jesteśmy w stanie obsługiwać je za pomocą naszego telefonu komórkowego bez przekierowywania portów lub innych modyfikacji konfiguracji routera, prawda? Jak oni to robią?
Odpowiedzi:
Aby uniknąć konieczności przebywania w sieci, która zezwala na ruch przychodzący , musisz połączyć serwer wychodzący z serwerem, który będzie przekazywał żądania od klientów, którzy również nawiążą z nim połączenia wychodzące.
To w istocie przypomina model satelity komunikacyjnego. Zarówno komputer użytkownika, telefon, jak i cokolwiek innego, a także urządzenie IoT, utrzymują łącza „do góry” do tego serwera w chmurze, i bierze każdą wiadomość, która pojawia się z jednej strony, i wysyła ją z drugiej, i odwrotnie.
Istnieje wiele możliwych sposobów wdrożenia takiego serwera. Jednym z modnych obecnie jest uczynienie z niego brokera MQTT . W MQTT klienci (zarówno urządzenia IoT, jak i urządzenia użytkowników) nawiązują połączenia wychodzące z brokerem, a komunikaty o niedziałających udziałach są „publikowane” na „temat” przez jednego klienta do wszystkich klientów, którzy „zasubskrybowali” ten „temat” „temat.
Ponieważ istnieje już ustanowione połączenie, broker może wysyłać w dół niechciany ruch bez żadnych opóźnień w odpytywaniu
Aby utrzymać ustanowione połączenia, wysyłany jest od czasu do czasu ruch utrzymujący połączenie
Jeśli połączenie zostanie zerwane, istnieją reguły dotyczące próby ponownego nawiązania połączenia
Zasadniczo zauważalne opóźnienie występuje tylko wtedy, gdy broker próbuje przekazać komunikat w dół, a połączenie okazuje się zerwane i jeszcze nie naprawione, w którym to przypadku wiadomość byłaby opóźniona do momentu ponownego nawiązania połączenia. (Istnieją opcje przechowywania wiadomości, upuszczania ich itp.).
źródło