Kontaktowanie się z Arduino przez Internet bez przekierowywania portów

13

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ą?

Jithesh Kt
źródło
Spójrz na CoAP i może jakieś inne protokoły IoT.
Sean Houlihane,

Odpowiedzi:

9

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.).

Chris Stratton
źródło
1
MQTT do końca. Dzięki za wskazówkę Chris. NodeJS + MQTT jest właściwą drogą.
Jithesh Kt,