1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
#include <ESP8266WiFi.h>
//pécifier le SSID du point d'accès Wifi
const char* ssid="xxxxxxxxxx";
const char* pass ="ddddddddd;";
unsigned long dure;
//Créer le serveur web
WiFiServer serveur(80);
//Démarrage
void setup() {
Serial.begin(115200);
//petite pause
delay(50);
//GPIO0 en sortie
pinMode(0,OUTPUT);
// GPIOO état haut
digitalWrite(0,1);
Serial.println();
Serial.println();
Serial.println("Connexion a : ");
Serial.println(ssid);
//Connexion au point d'accès
WiFi.begin(ssid, pass);
while(WiFi.status() !=WL_CONNECTED) {
delay(500);
Serial.println(".");
}
Serial.println("");
Serial.print("WiFi connecté");
//Démarrage du serveur web
serveur.begin();
Serial.println("Serveur actif");
//on affiche l'adresse IP
Serial.println(WiFi.localIP());
//on déactive le chien de garde logiciel seul le chien de garde matériel reste
//si la boucle loop dure moins de 6 secondes pas besoin de nourrir le chien de garde
//car le retour en début de boucle le fait automatiquement
//ESP.wdtDisable();
}
//boucle principale
void loop() {
// recherche d'un client connecté
WiFiClient client =serveur.available();
if(!client) {
//non on repart dans la boucle
return;
}
// un client est connecté
Serial.println("nouveau client");
// on attend l'envoi de données
while(!client.available()){
delay(1);
}
//on récupère la ligne qu'il envoie jusqu'au premier retour de chariot
String req=client.readStringUntil('\r');
//on affiche la ligne obtenue
Serial.println(req);
//on purge
client.flush();
// on teste la requete
int val;
//Est ce que le chemin dans la requete est/gpio/0"
if(req.indexOf("/gpio/0")!=-1){
//cela correspond à éteindre donc à mettre à l'état haut la sortie GPIO0
val=1;
Serial.println("bascule a 1");
Serial.println(val);
}
else if(req.indexOf("/gpio/1")!=-1){
//cela correspond à allumer donc à mettre à l'état bas la sortie GPIO0
val=0;
Serial.print("bascule a 0");
Serial.println(val);
}
else {
//c'est un autre chemin on indique qui est donné. on indique qu'il correspond à rien
Serial.println("Chemin non valide");
String s="HTTP/1.1 200 OK\r\Content-Type: text/html\r\n\r\n<DOCTYPE HTML>\r\n\La sortie est a l'etat";
s+="Ordre non connu";
//on finit la page HTML
s+="</html>\n";
//on envoie la réponse
client.print(s);
//on déconnecte le client du serveur
client.stop();
// on reboucle sur le loop
return;
}
// nous allons prendre en compte la demande en changeant l'état de sortie
digitalWrite(0,val);
// on purge avant d'envoyer la réponse
client.flush();
//composition de la réponse
String s="HTTP/1.1 200 OK\r\Content-Type: text/html\r\n\r\n<DOCTYPE HTML>\r\n\La sortie est a l'etat";
s+=(val)?"allumé":"coupé";
//on finit la page HTML
s+="</html>\n";
//on envoie la réponse
client.print(s);
//pause
delay(1);
Serial.println("Client deconncete");
// on ne met pas l'instruction client.stop()) car la fin du loop l'entrai ne automatiquement)
//ESP.wdtFeed();
} |
Partager