[TUTO] programmer sa carte ESP8266 en WIFI OTA (over the air)

Avant de commencer , la programmation OTA sous entend que vous avez déjà réussit à programmer la carte ESP8266 en filaire ! Je ne reviendrais pas sur la procédure.

1/ Dans le Sketch MODIFIER le SSID ET le password (en gardant les guillemets) avec les données de votre réseau WIFI
2/ TELEVERSER le sketch par la liaison série classique, comme vous savez le faire :wink: Bien vérifier que Outils/Flash size 4M(3M SPIFFS). Conseil: notez ce qui est affiché en rouge: emplacement du sketch compilé dans votre PC. Il sera utile pour le retrouver.
3/ ouvrir le moniteur : Le Sketch est chargé, la carte se connecte au réseau WIFI configuré et indique son adresse IP

Modification du SOFT et Téléversement par WIFI :
1/ Modifier/Ajouter vos lignes de codes SANS TOUCHER aux paragraphes ##### OTA #####
2/ VERIFIER le SKETCH uniquement !

** !! le PC qui va programmer la carte en OTA doit être connecté sur le même réseau WIFI que la carte ESP8266 !!**

3/ ouvrir un Navigateur Internet a la page http://esp8266-webupdate.local/update
OU, si ça ne fonctionne pas http://192.168.xx.xx/update : adresse IP de la carte vu plus haut

4/ on va charger le SKETCH qu'on viens de compiler : (ne pas faire Reset + GPIO0 à GND sur la carte ESP8266)
cliquer sur "charger le fichier" et chercher dans C:\Users\john\AppData\Local\Temp\arduino_build_xxx\xxxxx.ino.bin
conseil : trier par date pour avoir le dernier sketch modifié

5/ cliquer sur "upload" attendre qq secondes : Update Success! La carte va rebooter et démarrer le nouveau SKETCH !!

6/ modifier, VERIFIER, "Charger le fichier", "upload" ... FACILE !

//*** MAJ du soft Esp8266 en OTA (Over The Air) wifi via Navigateur Internet ***
/*  La programmation OTA sous entend que vous avez déjà réussit à programmer la carte ESP8266 en filaire !

  1/ Dans ce Sketch MODIFIER le SSID ET le password (en gardant les guillemets) avec les données de votre réseau WIFI
  2/ TELEVERSER le sketch par la liaison serie classique, comme vous savez le faire ;)
  Bien vérifier que Outils/Flash size 4M(3M SPIFFS)
  3/ ouvrir le moniteur :
  Le Sketch est chargé, la carte se connecte au réseau WIFI configuré et indique son adresse IP

  Modification du SOFT et Televersement par WIFI :
  1/ Modifier/Ajouter vos lignes de codes SANS TOUCHER aux paragraphes ##### OTA #####
  2/ VERIFIER le SKETCH uniquement !
  !!  le PC qui va programmer la carte en OTA doit etre connecte sur le meme reseau WIFI que la carte ESP8266 !!
  3/ ouvrir un Navigateur Internet a la page http://esp8266-webupdate.local/update
  OU, si ça ne fonctionen pas  http://192.168.xx.xx/update  : adresse IP de la carte vu plus haut
  4/ on va charger le SKETCH qu'on viens de compiler : (ne pas faire Reset + GPIO0 à GND sur la carte ESP8266)
  cliquer sur "charger le fichier" et chercher dans C:\Users\john\AppData\Local\Temp\arduino_build_xxx\xxxxx.ino.bin
  conseil : trier par date pour avoir le dernier sketch modifié
  5/ cliquer sur  "upload"   attendre qq secondes : Update Success!
  la carte va rebooter et demarrer le nouveau SKETCH !!
  (To upload through terminal you can use: curl -F "image=@firmware.bin" esp8266-webupdate.local/update)
  6/ modifier, VERIFIER, "Charger le fichier", "upload" ... FACILE !
*/

//############# OTA ######################
#include <ESP8266WiFi.h>               //#
#include <WiFiClient.h>                //#
#include <ESP8266WebServer.h>          //#
#include <ESP8266mDNS.h>               //#
#include <ESP8266HTTPUpdateServer.h>   //#
//                                       #
const char* host = "esp8266-webupdate";//#
const char* ssid = "MonReseau";        //# <---- VOTRE réseau WIFI entre les guillemets
const char* password = "MonPass";      //# <---- le mot de passe du réseau entre les guillemets
//                                       #
ESP8266WebServer httpServer(80);       //#
ESP8266HTTPUpdateServer httpUpdater;   //#
//########################################


// VOTRE SKETCH ICI



//***********************************
//*              SETUP
//***********************************
void setup() {
  //############################ OTA ####################################################
  Serial.begin(9600);                                                                 //#
  Serial.println("\nDemarrage du Sketch...");                                         //#
  WiFi.mode(WIFI_AP_STA);                                                             //#
  WiFi.begin(ssid, password);                                                         //#
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {                               //#
    WiFi.begin(ssid, password);                                                       //#
    Serial.println("WiFi perdu, reconnection ...");                                   //#
  }                                                                                   //#
  MDNS.begin(host);                                                                   //#
  httpUpdater.setup(&httpServer);                                                     //#
  httpServer.begin();                                                                 //#
  MDNS.addService("http", "tcp", 80);                                                 //#
  Serial.println("HTTPUpdateServer pret!");                                           //#
  // Print le reseau et IP address                                                    //#
  Serial.print("Reseau:");  Serial.print(WiFi.SSID());  Serial.print(WiFi.RSSI()); Serial.println("dB"); //#
  Serial.print("Copier/Coller dans votre Navigateur:  ");                             //#
  Serial.print("http://");  Serial.print(WiFi.localIP());  Serial.print("/update   ");//#
  Serial.printf( "Ou   http://%s.local/update \n", host);                             //#
  //#####################################################################################


  // VOTRE SKETCH ICI
  Serial.println("\nSKETCH: Je fait clignoter la LED du GPIO15");
  pinMode(15, OUTPUT);

} // fin du setup
//***********************************
//*              LOOP
//***********************************
void loop() {
  //############# OTA ##################
  httpServer.handleClient();         //#
  //####################################


  // VOTRE SKETCH ICI

  digitalWrite(15, HIGH);   //led ON
  delay(150);
  digitalWrite(15, LOW);   //led OFF
  delay(2000);

}// fin de loop

Le sketch fait clignoter une led branchée sur le port GPIO15.
Modifiez les delay de led on et off , VERIFIER le Sketch. Dans le Navigateur: "Charger le fichier" puis "upload" !
Modifier le sketch, enregistrez le sous un autre nom, à volonté en faisant attention de ne pas toucher aux paragraphes #### OTA ###

:wink: