#include #include // WIFI Manager , afin de gerer la connexion au WIFI de façon plus intuitive #include //https://github.com/tzapu/WiFiManager ///includes necessaires au fonctionnement de l'OTA : #include #include ESP8266WebServer server(80); // serveur WEB sur port 80 // definition du numero de LED interne int led = 2; // led built IN void setup() { Serial.begin(115200); // on demarre le moniteur serie //******** WiFiManager ************ //Local intialization. Once its business is done, there is no need to keep it around WiFiManager wifiManager; //Si besoin de fixer une adresse IP //wifiManager.setAPStaticIPConfig(IPAddress(10,0,1,1), IPAddress(10,0,1,1), IPAddress(255,255,255,0)); //Forcer à effacer les donnees WIFI dans l'eprom , permet de changer d'AP à chaque demmarrage ou effacer les infos d'une AP dans la memoire ( a valider , lors du premier lancement ) //wifiManager.resetSettings(); //Recupere les identifiants ssid et Mot de passe dans l'eprom et essayes de se connecter //Si pas de connexion possible , il demarre un nouveau point d'accés avec comme nom , celui definit dans la commande autoconnect ( ici : AutoconnectAP ) wifiManager.autoConnect("AutoConnectAP"); //Si rien indiqué le nom par defaut est ESP + ChipID //wifiManager.autoConnect(); // ****** Fin config WIFI Manager ************ //******* OTA *************** // Port defaults to 8266 // ArduinoOTA.setPort(8266); // Hostname defaults to esp8266-[ChipID] ArduinoOTA.setHostname("EspTestOTA"); // No authentication by default // ArduinoOTA.setPassword("admin"); // Password can be set with it's md5 value as well // MD5(admin) = 21232f297a57a5a743894a0e4a801fc3 // ArduinoOTA.setPasswordHash("21232f297a57a5a743894a0e4a801fc3"); ArduinoOTA.onStart([]() { String type; if (ArduinoOTA.getCommand() == U_FLASH) type = "sketch"; else // U_SPIFFS type = "filesystem"; digitalWrite(led, HIGH); // allume led au debut du transfert // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end() //Serial.println("Start updating " + type); }); ArduinoOTA.onEnd([]() { digitalWrite(led, LOW); // eteint a la fin de la mise a jour }); ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { //Serial.printf("Progress: %u%%\r", (progress / (total / 100))); }); ArduinoOTA.onError([](ota_error_t error) { //Serial.printf("Error[%u]: ", error); if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed"); else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed"); else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed"); else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed"); else if (error == OTA_END_ERROR) Serial.println("End Failed"); }); ArduinoOTA.begin(); //********* Fin OTA *************** Serial.println(""); // on attend d'etre connecte au WiFi avant de continuer while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } // on affiche l'adresse IP attribuee pour le serveur DSN Serial.println(""); Serial.print("IP address: "); Serial.println(WiFi.localIP()); // on definit les points d'entree (les URL a saisir dans le navigateur web) et on affiche un simple texte server.on("/", [](){ server.send(200, "text/plain", "Page d'accueil"); }); server.on("/led", []() { String Etat=server.arg("etat"); if (Etat == "on") digitalWrite(led, LOW); else if (Etat == "off") digitalWrite(led, HIGH); server.send(200, "text/plain", "la led est " + Etat); }); // on demarre le serveur web server.begin(); pinMode(led, OUTPUT); // Initialise la broche "led" comme une sortie digitalWrite(led, HIGH); } void loop() { // a chaque iteration, la fonction handleClient traite les requetes server.handleClient(); // Surveillance des demandes de mise a jour en OTA ArduinoOTA.handle(); }