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



