// Essais de programmation de sites Internet avec ESP8266 // M. Sabarthes le 8 janvier 2022 // BON COURAGE !! #include "Arduino.h" #include "ESP8266WiFi.h" //#include "InfoConnexion.h" #include "ESP8266WebServer.h" // Définition des entrées/sorties de l'ESP8266 #define PIN_D0 16 #define PIN_D1 5 // ==> Envoi un signal PWM au démarrage !! #define PIN_D2 4 #define PIN_D3_VERTE 0 // LED VERTE ATTENTION ==> Envoi un signal PWM au démarrage !! #define PIN_D4_ESP 2 // Led Blue du circuit #define PIN_D5_ROUGE 14 // LED ROUGE ==> Envoi un signal PWM au démarrage !! #define PIN_D6_BP 12 // BOUTON POUSSOIR #define PIN_D7_INTER 13 // INTERRUPTEUR #define PIN_D8 15 // ==> Envoi un signal PWM au démarrage !! #define PIN_D9 3 // Objet : Serial RX ==> Prend l’état HIGH au démarrage !! #define PIN_D10 1 // Objet : Serial TX #define PIN_A0 // Analog 10 bits : maxi 1 volt !! #define ssid "Votre LiveBox" // WiFi SSID #define password "Le mot de passe" // WiFi password //#define DHTTYPE DHT22 // DHT type (DHT11, DHT22) //#define DHTPIN D4 // Broche du DHT / DHT Pin //#define LEDPIN D3 // Led float t = 0.0 ; float h = 0.0 ; float p = 0.0; //String etatLed = "OFF"; char etatLed[]= "OFF"; // Protype des fonctions void handleSubmit(); // ==================== // DEBUT CODE HTML = // ==================== const char page[] PROGMEM = R"=====( Exemple serveur WEB

ESP8266 Demo

"

DHT22

BMP180

" "

GPIO

"

www.projetsdiy.fr/>

)====="; // =================== // = FIN CODE HTML = // =================== // Création des objets / create Objects ESP8266WebServer server ( 80 ); /* Tout le code HTML reste une simple chaîne de caractère facile à manipuler. Vous avez du voir dans le texte qu’il y a des %s %0.1d et %u. Ce sont les emplacements des données que l’on va actualiser à chaque fois que la page change. Pour mettre à jour la page, il suffit de remplacer chaque variable par sa valeur, voici comment faire: On détermine la taille de la page (le nombre de caractères). par sécurité, vous pouvez ajouter quelques caractères supplémentaires. */ //int pagesize = sizeof(page) + 10; // On prépare un buffer qui contiendra la page modifiée //char newpage[pagesize] = ""; /* Maintenant, il suffit de substituer chaque variable par sa valeur à l’aide de la méthode sprintf en utilisant le format indiqué. Par exemple %s pour une chaîne, %0.1d pour un nombre décimal avec un chiffre derrière la virgule… */ // Fonction getpage: mise à jour du contenu de la page HTML String getPage() { // Préparation de la page Internet char newpage[(sizeof(page) + 10)] =""; sprintf(newpage, page, t, h, p, etatLed); //sprintf(newpage, page, 11, 22, 33, etatLed); return newpage; } // Mise à jour de la page WEB void handleRoot(){ if (server.hasArg("LED")) { handleSubmit(); } else { server.send ( 200, "text/html", getPage() ); } } void handleSubmit() { // Actualise le GPIO / Update GPIO String LEDValue; LEDValue = server.arg("LED"); Serial.println("Set GPIO "); Serial.print(LEDValue); if ( LEDValue == "1" ) { digitalWrite(PIN_D3_VERTE, 1); strcat(etatLed,"On"); server.send ( 200, "text/html", getPage() ); } else if ( LEDValue == "0" ) { digitalWrite(PIN_D3_VERTE, 0); strcat(etatLed,"Off"); server.send ( 200, "text/html", getPage() ); } else { Serial.println("Err Led Value"); } } void setup() { Serial.begin (9600); Serial.println("Démarrage !!"); pinMode(PIN_D3_VERTE,OUTPUT); pinMode(PIN_D4_ESP,OUTPUT); // Initialisation du BMP180 / Init BMP180 /* if ( !bmp.begin() ) { Serial.println("BMP180 KO!"); while(1); } else { Serial.println("BMP180 OK"); } */ WiFi.begin (ssid,password); // Attente de la connexion au réseau WiFi / Wait for connection while (WiFi.status() != WL_CONNECTED) { delay ( 500 ); Serial.print ( "." ); } // Connexion WiFi établie / WiFi connexion is OK Serial.println (""); Serial.print ("Connected to "); Serial.println (ssid ); Serial.print ("IP address: "); Serial.println (WiFi.localIP()); digitalWrite(PIN_D4_ESP,LOW); // Allumer LED Blue de l'ESP8266 // On branche la fonction qui gère la premiere page / link to the function that manage launch page server.on ("/",handleRoot); server.begin(); Serial.println ("HTTP server started"); } void loop() { server.handleClient(); /* t = dht.readTemperature(); h = dht.readHumidity(); p = bmp.readPressure() / 100.0F; */ t=20.5555; h=30.6666; p=40.7777; delay(1000); }