NodeMCU – WOL szerver

#include <ESP8266WiFi.h>          
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>         
#include <ESP8266mDNS.h>
#include <WiFiUDP.h>
#include <WakeOnLan.h>

WiFiUDP UDP;
IPAddress computer_ip(255,255,255,255); 
//https://www.vultr.com/tools/mac-converter/
byte mac[] = { 0x20,0xcf,0x30,0x8e,0xac,0x51 };
void sendWOL();

WiFiServer server(8085);
String header;
String magic_packet = "sent";
void setup() 
{
    Serial.begin(115200);
    //Inicializáció
    WiFiManager wifiManager;
    //reset saved settings
    //wifiManager.resetSettings();
    //set custom ip for portal
    wifiManager.setAPStaticIPConfig(IPAddress(192,168,10,50), IPAddress(192,168,10,50), IPAddress(255,255,255,0));
    wifiManager.autoConnect("ESP Wifi beállítás");
    Serial.println("Csatlakozott.....");
    server.begin();
}
void loop() 
{
WiFiClient client = server.available();     

  if (client) {                            
    Serial.println("New Client.");         
    String currentLine = "";               
    while (client.connected()) {           
      if (client.available()) {             
        char c = client.read();             
        Serial.write(c);                    
        header += c;
        if (c == '\n') {                    
          if (currentLine.length() == 0) 
          {
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println("Connection: close");
            client.println();
           
            if (header.indexOf("GET /send") >= 0) 
            {
            WakeOnLan::sendWOL(computer_ip, UDP, mac, sizeof mac);
            magic_packet="send";
            Serial.println("Sending Magic packet.....");
            }
            else if(header.indexOf("GET /sent") >= 0) 
            {
              Serial.println("Magic packet sent.....");
              magic_packet="sent";
            } 
            client.println("<!DOCTYPE html><html>");
            client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
            client.println("<link rel=\"icon\" href=\"data:,\">");
            client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
            client.println(".button { background-color: #195B6A; border: none; color: white; padding: 16px 40px;");
            client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
            client.println(".button2 {background-color: #77878A;}</style></head>");
            client.println("<body><h1>WOL szerver</h1>");  
            client.println("<p> Wol Magic Packet Sender</p>");
            if (magic_packet=="sent") 
            {
              client.println("<p><a href=\"/send\"><button class=\"button\">Send</button></a></p>");
            } 
            if (magic_packet=="send") 
            {
              client.println("<p><a href=\"/sent\"><button class=\"button button2\">Re-send</button></a></p>");
            } 
            client.println("</body></html>");
            client.println();
            break;
          }
          else 
          {
            currentLine = "";
          }
        } 
        else if (c != '\r') 
        { 
          currentLine += c;
        }
      }
    }
    header = "";
    client.stop();
    Serial.println("Client disconnected.");
    Serial.println("");
  }
}

A kód átmásolása után, a MAC címünket be kell írni a „byte mac[]” tömbbe. A MAC címet a következőképpen kell megadni:

20:cf:30:8e:ac:51 –> 0x20,0xcf,0x30,0x8e,0xac,0x51

A kód feltöltése után, ha minden igaz, akkor az „ESP Wifi Beállítás” nevű SSID-re csatlakozva a 192.168.10.50-es IP címen elérjük az eszköz menüjét. Ilyenkor a NodeMCU AP módban van. Amint beállítottuk a felületen a csatlakozásra kijelölt Wifi routert, az eszköz átvált Client módba és már csak azon az IP címen lehet elérni, amit a router osztott neki DHCP-n. Ha a MAC cím alapján beállítottuk az IP cím fix kiosztását, akkor a beállított IP címen elérjük az alább látható weboldalt.

NodeMCU - WOL szerver

Ezen az oldalon semmi mást sem kell csinálnunk, csak rákattintunk a „SEND” gombra, és ha mindent jól csináltunk, akkor a gép már startol is.

Abban az esetben ha azt szeretnénk, hogy minden újraindítás után a beállított csatlakozási információ törlődjön akkor ki kell venni a komment jelet a következő függvény elől: „wifiManager.resetSettings();”. Ezesetben persze a beállításokat elölről kell kezdeni.

Az ötlet szabadon továbbfejleszthető, én is mástól vettem, bár a kódot nem, de az is GPL.

Forrás: https://logout.hu/bejegyzes/uzsito/nodemcu_alapu_halozati_vezerlo_2.html

 

A NodeMCU megvásárolható a Webshopban

NodeMCU V3

(Statisztika: 1 263 megtekintés)

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük