M é m o - l a b .
#include <ESP8266WebServer.h>
// Connexion WiFi
...
// Déclaration de l'esp comme serveur web (port 80)
ESP8266WebServer webServer(80);
// Page html hébergée par l'esp
// qui s'affichera dans sur un navigateur
// en appelant l'ip configurée
// cf Mémo ESP8266 Connexion Wifi
const char index_html []PROGMEM = R"=====(
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Mon projet</title>
<style>
.container {
width: 80%;
margin: 0 auto;
text-align: center;
}
.wrap {
margin-top: 70px;
}
.wrap_btn {
margin-top: 25px;
}
a {
padding: 15px;
background: #384D48;
text-decoration: none;
border-radius: 10px;
color: #fff;
margin: 10px;
}
span {
color: #429ea6;
}
</style>
</head>
<body>
<main class="container">
<h1>Mon titre</h1>
<div class="wrap">
<h2>
// Température par exemple
Affichage : <span>%valeur_a_afficher%</span>
</h2>
</div>
<div class="wrap">
<h2>Aération du sol</h2>
<div class="wrap_btn">
<a class="btn" href="/my-function1">
Action1
</a>
<a class="btn" href="/my-function2">
Action2
</a>
</div>
</div>
</main>
</body>
</html>
)=====";
void wifiConnexion()
{
WiFi.softAPConfig(IP, gateway, subnet);
WiFi.softAP(wifi_ssid, wifi_pwd);
}
void myFunction1()
{
//Action à réaliser
...
handleRoot();
}
void myFunction2()
{
//Action à réaliser
...
handleRoot();
}
void handleRoot()
{
// Affichage en html des données récupérées
String temp(reinterpret_cast<const __FlashStringHelper*>(index_html));
grandeur_mesuree = ...; // grandeur mesurée par un capteur par exemple
// On remplace dans le html /%valeur_a_afficher% par la grandeur mesurée
temp.replace("%valeur_a_afficher%", grandeur_mesuree);
// Affichage de la page à laquelle on passe les valeurs à afficher (temp)
// l'argument temp est optionnel
webServer.send(200,"text/html", temp);
}
void setup() {
...
// Appel de la fonction de connexion WiFi
wifiConnexion();
// Routing
webServer.on("/",handleRoot);
webServer.on("/my-function1", myFunction1);
webServer.on("/my-function2", myFunction2);
webServer.begin();
}
void loop() {
...
webServer.handleClient();
}