Table des matières

WakeOnLan

WakeOnLan est un standard réseau qui permet à un ordinateur éteint d'être démarré à distance. Résumé rapide:

Ce 2ème point est plus difficile car certains routeurs filtrent ce Magic Packet lorsqu'il vient de l'extérieur. C'est le cas des Livebox Orange. Il y a d'innombrables pages de forums à ce sujet sur les forums Orange, tous les réglages de NAT etc. ont été testé, et ça ne fonctionne pas.

Le but de cette page est de fournir une solution avec un module ESP8266 à 5€.

How to do it

(Remplacer 11.22.33.44 par l'adresse IP de votre Livebox, utiliser un service de DynDNS si besoin)

Code

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WiFiMulti.h> 
#include <ESP8266HTTPClient.h>
#include <ESP8266mDNS.h>
#include <ESP8266WebServer.h>
#include <WiFiUDP.h>

ESP8266WiFiMulti wifiMulti;
ESP8266WebServer server(80); 
void handleRoot();  
void handleWol();
void handleNotFound();
WiFiClient client;
HTTPClient http;
WiFiUDP udp;

void setup(void) {
  Serial.begin(9600);      
  delay(10);
  Serial.println('\n');
  wifiMulti.addAP("Livebox-ABCD", "<MOT DE PASSE WIFI>");           // METTRE ICI LE MOT DE PASSE WIFI DE VOTRE BOX
  Serial.println("Connecting ...");
  int i = 0;
  while (wifiMulti.run() != WL_CONNECTED) { 
    delay(250);
    Serial.print('.');
  }
  Serial.println('\n');
  Serial.print("Connected to ");
  Serial.println(WiFi.SSID());
  Serial.print("IP address:\t");
  Serial.println(WiFi.localIP());        
  if (MDNS.begin("esp8266")) {           
    Serial.println("mDNS responder started");
  } else {
    Serial.println("Error setting up MDNS responder!");
  }
  server.on("/", handleRoot);            
  server.on("/wol", handleWol);          
  server.onNotFound(handleNotFound);
  server.begin();
  udp.begin(9);
  Serial.println("HTTP server started");
}

void loop(void) {
  server.handleClient();
}

void handleRoot() {
  server.send(200, "text/plain", "Hello world!");
}

void handleWol() {
  byte preamble[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
  byte mac[] = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB };    // METTRE ICI L'ADRESSE MAC DE VOTRE ORDINATEUR A DEMARRER
  IPAddress computer_ip(255,255,255,255);                 // cette IP car on envoie le paquet en "broadcast" sur tout le réseau local
  udp.beginPacket(computer_ip, 9);
  udp.write(preamble, sizeof preamble);
  for (byte i = 0; i < 16; i++)
    udp.write(mac, sizeof mac);
  udp.endPacket();
  
  server.send(200, "text/plain", "WOL done!");
}

void handleNotFound(){
  server.send(404, "text/plain", "");
}
, , , ,