Inteligentny dom #3 Mini-serwer www

Użyte części:
– Arduino UNO R3
– Etharnet Shield W5100 17/02
– Skrętka Etharnet

W tej części kursu postawimy już na naszym Arduino i przyczepionej do niego tarczy pierwszy mini-serwer www. Na razie nie będziemy do niego podłączać żadnych urządzeń tylko zajmiemy się tym jak zrobić aby nasz serwer www był widoczny w sieci i abyśmy mogli się do niego dostać z każdego miejsca na świecie. Jest to dosyć ciężki temat i bardzo słabo rozwijany podczas pokazywania amatorskich projektów inteligentnych domów. Taki stan rzeczy dzieje się dlatego, że nie każdy ma w swoim domu tak samo skonfigurowany dostęp do internetu oraz nie każdy posiada takie same urządzenia sieciowe takie jak router/modem/radio/switch.

Na początek może trochę teorii na temat działania naszych sieci domowych aby było wam łatwiej zrozumieć całą koncepcję udostępniania naszego mini-serwera w sieci. Jak pewnie większość z was wie aby komunikować się ze światem trzeba mieć unikalny na skalę światową publiczny adres ip który jest w widoczny w całym internecie. Przeważnie taki adres publiczny dostaje nasz router domowy lub urządzenie przed nim np. radio gorzej jak posiada je urządzenie, do którego nie mamy dostępu ale o tym za chwilę. Natomiast w naszej sieci domowej jest rozsyłana przez router który posiada adres publiczny adresacja prywatna czyli adresy ip które mogą się powtarzać w różnych sieciach domowych takich jak nasza i nie są widoczne poza obrębem naszej sieci domowej (adresy takie mają początek 10. , 192.168. , 172.16-30.).Tak więc jak udostępnić nasze arduino w internecie jeżeli ma adres prywatny ? Tutaj sprawa jest już dosyć prosta jeżeli mamy idealny model sieci czyli router do którego jest przypisany stały adres publiczny ip wystarczy zrobić tzw. “przekierowanie” na dany port naszego adresu publicznego np. na port 2223 wtedy nasz mini-serwer www będzie widoczny pod adresem np. 175.36.165.45:2223. No tak ale co jeżeli nie mamy takiego modelu sieci? Nie mamy stałego adresu ip? Nie posiadamy routera ? Poniżej przedstawiliśmy parę sytuacji oraz sposoby ich rozwiązania aby jednak ten serwer udostepnić 🙂

Sytuacje w których nie będziesz mógł udostępnić swojego serwera www:

  • Nie posiadasz adresu publicznego (najczęściej wystarczy przejść się do dostawcy internetu i poprosić o takowy adres)
  • Masz adres publiczny ale masz mobilny internet na kartę, która jest włożona do przenośnego modemu, który nie ma wejść Etharnet (możesz użyć modułu Arduino z wifi) i nie jest konfigurowalny (najlepiej kupić router z wbudowanym modemem do którego wsadzisz kartę SIM wtedy rozwiąże się problem z gniazdem Etharnet jak i problem z konfiguracją przekierowania)
  • Oczywiście możecie napotkać inne problemu jak na przykład taki, że nie masz dostępu do swojego routera, bo osoba która montowała wam internet zabezpieczyła go dla siebie abyście nic w nim nie namieszali. Jednak na pewno jak będziecie mieli w sobie trochę zaparcia to pokonacie jedną lub wiele przeszkód na swojej drodze i udostępnicie wreszcie swoje arduino w internecie lub jeśli się nie uda to sterowanie inteligentnym domem tylko w domu tez jest fajne 🙂

 

Trochę długi wstęp i wydawało by się, że najpierw pokażę jak zrobić przekierowanie ale może zacznijmy od postawienia naszego pierwszego serwera www 🙂 Tak więc nakładamy naszą tarczę na arduino, podłączamy niezbędne kabelki (USB i skrętkę) i wybieramy w naszym programie Plik>Przykłady>Etharnet>WebServer.

Przed wgraniem mini-serwera www na nasze arduino musimy zmienić parę parametrów aby nasz serwer zadziałał 🙂

  • Adres MAC – możesz go zostawić ale nie znam się zbytnio na kwestiach prawnych ale najlepiej znaleźć starą kartę sieciową, router, telefon i przepisać takowy adres właśnie z jakiegoś starego urządzenia dla pewności ponieważ powinien być to unikatowy adres w skali światowej dla każdego urządzenia sieciowego.
  • Adres IP – tutaj musimy ustawić adres IP zgodny z adresacją naszej podsieci inaczej nie ma szans żebyśmy dostali się na nasz mini-serwer www !!! Jeżeli nie wiesz jaką masz adresację najlepiej sprawdzić zakres DHCP w swoim routerze lub sprawdzić adres ip naszego komputera poprzez cmd.exe i komendę ipconfig i dać naszemu serwerowi adres o jeden dwa większy/ mniejszy niż ten na komputerze np. komputer ma adres 192.168.0.2 to my możemy dać 192.168.0.3. Oczywiście jeżeli mamy więcej komputerów/urządzeń sieciowych którym ip przydziela nam nasz router to jak przypiszemy taki sam adres ip naszemu serwerowi i który będzie miał np. nasz telefon to dojdzie do konfliktu adresów i oba urządzenia nie będą nam działać poprawnie w sieci. Dlatego albo sprawdź wszystkie ip urządzeń podłączonych do routera lub strzelaj i jak serwer nie zadziała to spróbuj kolejny adres ip.
  • Port naszego serwera – standardowo jest ustawiony na 80 i może taki zostać ale jeżeli chcemy go udostępnić w internecie najlepiej nadać mu port którego nie używa żadna usługa ja przeważnie daję port 2222 lub 2223 🙂

Tak więc jeżeli wszystkie parametry mamy poprawnie ustawione czas na wgranie naszego serwera na płytkę arduino. Po wgraniu naszego serwera jak wszystko poszło dobrze wpisujemy adres ip naszego serwera wraz z portem i jak wszystko jest dobrze powinno pokazać nam się coś takiego:

Jak już nasz serwer działa w naszej sieci domowej to pora się zająć udostępnieniem w internecie 🙂 Jak to zrobić pokażę wam na przykładzie mojej własnej sieci domowej która prezentuje się tak:

A więc najpierw musimy zrobić przekierowanie na naszym routerze. Osoby które posiadają adres publiczny na routerze czyli mają na przykład internet mobilny i sim wkładają do routera lub maja internet od lokalnego dostawcy który nadał im na router adres publiczny ograniczą się tylko do tego kroku i będzie im działać. Logujemy się na router (u mnie jest to Tp-link TL-WR841N więc w przeglądarce wpisuje jego adres ip: 192.168.0.1)  i przechodzimy w zakładkę przekierowanie portów a następnie dodajemy nowe przekierowanie i uzupełniamy według konfiguracji swojego serwera Arduino. Poniżej przedstawiam jak to wygląda u mnie:

Jeśli ktoś ma przypisany adres publiczny do routera to po przekierowaniu dopisuje do swojego adresu publicznego po dwukropku numer portu i może się połączyć ze swoim serwerem z każdego miejsca na ziemi ! Niestety w moim przypadku nie ma tak łatwo i aby wszystko działało muszę jeszcze zrobić przekierowanie na swoim radiu w tym celu wchodzę w winboxa i loguję się na swoje radio (winbox to oprogramowanie które pozwala na konfigurację Mikrotików). Następnie IP>Firewall>NAT i dodajemy nowe przekierowanie wygląda to mniej więcej tak:

W zakładce General w Chain ustawiamy – dstnat, w Dst. Address podajemy nasz adres publiczny, ustawiamy 6(tcp) oraz podajemy port naszego serwera w Dst. Port. Następnie przechodzimy do zakładki Action:

W Action wybieramy dst-nat, w To Addresess podajemy adres IP który został przydzielony routerowi przez nasze radio oraz w To Port podajemy port naszego serwera. I to tyle jeśli chodzi o konfigurację przekierowań w moim przypadku.

Okej no dobra a co jeśli nie mam stałego adresu publicznego? W takim przypadku należy zainteresować się DDNS (Dynamic Domain Name System). Sprawa jest dosyć prosta ponieważ większość routerów posiada wsparcie dla tego typu usług, wystarczy stworzyć i wybrać dla siebie nazwę domeny na np. noip.com (jest to całkowicie darmowe) a następnie uzupełnić dane w routerze w zakładce Dynamiczny DNS i włączyć usługę. U mnie wygląda to tak:

Jeśli macie inne sytuacje i nie wiecie jak rozwiązać problem przekierowań/udostępniania arduino w internecie piszcie śmiało w komentarzach a postaram się wam pomóc 🙂

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *