Domowy NAS: włączanie… z esp8266/wemos?!

W poprzednim tekście (Domowy NAS: wyłączanie i włączanie… z Arduino?!) zaprzęgłem Arduino do budzenia serwera NAS. Arduino, wyposażone w rozszerzenie Ethernetowe, wysyłało pakiet WOL. Czuwająca karta sieciowa serwera odbierała go – i uruchamiała NAS.

Niestety UNO z rozszerzeniem Ethernet zajmuje trochę miejsca. Oprócz zasilania potrzebuje jeszcze kabla sieciowego. Czy można łatwiej? Tak, na przykład za pomocą WemosD1 (czyli takiego Arduino z EPS8266 na pokładzie). Teraz wystarczy już tylko zasilanie – WemosD1 ma na pokładzie kartę WiFi i może się podłączyć do Waszej domowej sieci bezprzewodowej. Wystarczy już wysłać WOL…

Najpierw MAC

Gdy zabieram się za nowy moduł ESP8266, pierwszym problemem jest znalezienie jego adresu MAC. Mój domowy router filtruje MAC. Jeżeli chcę dodać jakieś nowe urządzenie do sieci domowej, muszę najpierw jego MAC dodać do listy MAC’ów znanych routerowi.

Do odczytania MAC modułu esp możecie użyć taki prosty programik (dodajcie bibliotekę esp8266wifi, pobrano z arduino.cc):

Załadujcie ten program. Otwórzcie konsolę portu szeregowego (CTRL-Shift-M). W rezultacie otrzymacie kilka krzaczków i napis:

…tego MACa dodajcie do listy dozwolonych MAC’ów na Waszym routerze.

Serwer web

Mój wemos włączy się do domowej sieci bezprzewodowej:

Funkcja WiFi.config pozwala mi na użycie statycznego IP (zamiast dynamicznego z DHCP). W ten sposób będę wiedział, że sp8266 jest na adresie 192.168.1.230.

Zmieńcie na nazwę (SSID) oraz hasło do Waszej domowej sieci WiFi.

Będę potrzebował też serwera web (na podstawie bloga runtimeprojects.com):

Zauważcie, że mój serwerek web będzie obsługiwał cztery strony:

  • / – główna,
  • /up – wysyłająca pakiet WOL
  • /check – sprawdzająca stan serwera.

Ping

Do wykrywania serwera skorzystałem z gotowej biblioteki: Biblioteka Ping.

WOL

Moja procedura WOL (na podstawie biblioteki WOL):

Zwróćcie uwagę:

  • Zamiast „udp.begin” użyłem „udp.beginPacketMulticast”,
  • Adres broadcastowy „255.255.255.255” nie zadziałał; wyczytałem, że musi zgadzać się z maską – stąd:

…reszta już poszła łatwo:)

Pełny kod

Powinien zadziałać, jeżeli:

  • stałe ssid i password: zmienicie na nazwę (SSID) oraz hasło do Waszej domowej sieci WiFi,
  • byte mac_nas[] = {}: zmienicie na adres MAC maszyny, która ma być obudzona (np. server NAS),
  • IPAddress ip(192, 168, 1, 230): zmienicie na adres IP, który będzie przypisany esp8266 (nadajcie unikalny adres),
  • IPAddress ip_nas(192, 168, 1, 250): zmienicie na adres IP serwera NAS,
  • IPAddress gateway(192, 168, 1, 254): zmienicie na adres IP bramy w Waszej sieci domowej,
  • IPAddress subnet(255, 255, 255, 0): zmienicie na maskę Waszej podsieci domowej,
  • IPAddress broadcast(192, 168, 1, 255): zmienicie na ades rozgłoszeniowy Waszej sieci domowej.

Źródła

Dodaj komentarz

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