ARDUINO WIFI REV2 - HTML ne s'affiche pas - Demande de Favicon
Bonjour à tous
j'essaie en vain d'afficher une page HTML sur mon nouveau Arduino Wifi rev2.
La page HTML apparait bien lorsque je l'appelle de Chrome.
Mais si je l'intègre dans le sketch, elle n'apparait plus lors de la connexion.
Cela fonctionne bien avec ESP8266WebServer.
Si quelqu'un pouvait m'indiquer mon erreur.....Merci
Michel
voici mon code:
Code:
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 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172
| #include <Arduino.h>
#include <WiFiNINA.h>
#include <WiFiServer.h>
#include <ssidpass.h>
const char* SSID = SECRET_SSID;
const char* PASS = SECRET_PASS;
const char index_html[] PROGMEM = R"=====(
<!DOCTYPE html>
<html lang="fr">
<head>
<title>Gestion volets roulants</title>
<meta charset="utf-8">
<link rel="shortcut icon" type="image/x-icon" href="data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAADX0lEQVRIx52Wy47jVBCGv/KtO4kT58KLILFAoJYSpFmxQMxiEEK
waA08FNCzQyyQYJgtiMwCIdDMo0zHiZ3OzPhWLHwcOzd3oBZWVHbqr/r/qjpHnk6V0gTN8IY8+AG3DwpCbQpCGvPbFyQrAC848e
WuWfsOJV2Tv0Z1163kr0nXoBXeeeY0Q4tNtuGPay6GTL/D9atAQrbh+de8XVIkiI1m/wOgZAnSCLGg2P2wIIlII6zLNkLuAdAMB
LER5yCKIE4j97MpspohvAAvAIGiUgKUiv1i95uGPHoazzHMZHgDZjcA82uSmPljvAGzJ5UnIr3D6zP7HhF+/wrNDYxIG2kNigTX
r6pSkhWoUSJZkUSIDRauD4JIzVIcI0LPR47BHGlTzdC8ocSW/RzNMKyBgu1wt+HRFY+uuIsNXW0il4glxemdUQIa7A8OUtoVoBV
A0By3z+yGZMXzb0gi5o8BkhhvwPRbvACnY1BFyDN6Pr/8DXDZAbCsFoCtq4vmDSVKOixcH6dbZ7OXtQiqrGNUd8Q4AtBUwroEKN
5U7LMTt9TgsyuAn/4E5csHLBcGrBXAwgtQpXgD4Ja9f8C+gCrLEK3ECG9ZhozG7RUoTpePbni7Yn4NMHvCRYB1sbs4xTxcF1XTu
2IxmvDjnGBEliJyogIR7A5uNUquj905uR6ak6wFIvh9ul0jxgmKtkrklcj/xUq88tkKUM4ER8bxfDsBUDLTNdvJ7VbO80qRakfd
R9F2O50Rzvy2ANYxttMqcoPOuqAdd14RDWlat6kWLEM+n7ZTdLhQtJmqAt6gGmCqrhcRGE0MM9sY8nSq99wnjpWVlgPYQZX1BsD
vwXmrQolXZvvUVrZ3ALBeoeo6FkCEQN8pEEEDRPqD/XDNW4XiCJuIhx8S3mI11lgBozHPXgB8+gHhwmwJARHNYTyRn/9iEGihe+
fOQQVaEL4ivGU8qYHDWygMXviKcMF4YmhUldUCC7Tg2PF5ACAWIown/PqS4QhgGfLJe7XI+28XfPwueX78wDzZRQL9AT0fIM93W
qsUcfu2KBi9YzI7F+AsUxO95/PsHwC/X1d5H4CgBXGEbQPE0bF7T2Mb9IctiRyKrNg2yyUP36+dccRwvN/hzb8cy/1UBYqI6aXm
adsyetI2lv8CCWmIK1xToTcAAAAASUVORK5CYII="/>
</head>
<body>
<h1>Commande des volets roulants</h1>
<fieldset id="unit" class="volet_unitaire">
<legend>Selection unitaire</legend>
<input type="radio" id="v1" name="selection" value="1">
<label for="v1">Cuisine</label>
<input type="radio" id="v2" name="selection" value="2">
<label for="v2">Salle</label>
<input type="radio" id="v3" name="selection" value="3">
<label for="v3">Salon tele</label>
<input type="radio" id="v4" name="selection" value="4">
<label for="v4">Salon canape</label>
<input type="radio" id="v5" name="selection" value="5">
<label for="v5">Chambre</label>
<input type="radio" id="v6" name="selection" value="6">
<label for="v6">Entree</label>
<input type="radio" id="v7" name="selection" value="7">
<label for="v7">Garage</label>
</fieldset><br><br>
<fieldset id="grp" class="volets_groupe">
<legend>Sélection groupe</legend>
<input type="radio" id="jardin" name="selection" value="E">
<label for="jardin">Cote jardin</label>
<input type="radio" id="rue" name="selection" value="D">
<label for="rue">Cote rue</label>
<input type="radio" id="int" name="selection" value="A">
<label for="int">Tous Interieur maison</label>
<input type="radio" id="ext" name="selection" value="B">
<label for="ext">Tous Exterieur</label>
</fieldset><br><br>
<fieldset class="commandes">
<legend>Commandes</legend>
<input type="radio" id="ouv" name="manoeuvre" value="O">
<label for="ouv">Ouverture</label>
<input type="radio" id="fer" name="manoeuvre" value="F">
<label for="fer">Fermeture</label>
<input type="radio" id="dmo" name="manoeuvre" value="8">
<label for="dmo">Demi-ouverture</label>
<input type="radio" id="dmf" name="manoeuvre" value="9">
<label for="dmf">Demi-fermeture</label>
<input type="radio" id="arr" name="manoeuvre" value="C">
<label for="arr">Arret manoeuvres en cours</label>
</fieldset><br><br>
<p id="afficheChoix"> - - </p><br><br>
<button id="va">Click pour envoyer la commande</button>
<p id="result"> Resultat </p>
<style>
.volet_unitaire{
border: 2px solid orange;
color: blue;
}
.volets_groupe{
border: 2px solid red;
color: black;
}
.commandes{
border: 2px solid green;
color: darkslategray;
}
button{
background-color: white;
}
</style>
<script type="text/javascript">
let vBouton = document.getElementById("va"); //trouve le bouton
vBouton.addEventListener("click",transmit);
vBouton.addEventListener("mouseover",function(){this.style.backgroundColor="red"});
vBouton.addEventListener("mouseout",function(){this.style.backgroundColor="white"});
//****le bouton de transmission est enfoncé****
function transmit(){
let laSelection = document.querySelector("[name='selection']:checked").value;
let vManip = document.querySelector("[name='manoeuvre']:checked").value; //trouve la manoeuvre Ã* exécuter
if(vManip==null) alert("Il faut une commande!");
else{
document.getElementById("afficheChoix").innerHTML= vManip + laSelection; //écrit sur la page
const xhr=new XMLHttpRequest(); //Objet xhr Http request
xhr.open("GET","/action?commande=" + vManip + "&volet=" + laSelection); //commande GET formatté
xhr.send();
xhr.onload = function(){ //sur réception d'une réponse
document.getElementById("result").innerHTML = this.responseText;
if (xhr.status != 200){
alert("Erreur " + xhr.status + " : " + xhr.statusText); //...On affiche le statut et le message correspondant
}
else{
document.getElementById("result").innerHTML=xhr.response;
}
};
xhr.onerror = function(){ //Si la requête n'a pas pu aboutir...
alert("La requete a echoue");
};
}
}
</script>
</body>
</html>
)=====";
//*****gestion du serveur. Prototype des fonctions*****
void testRequeteClient();
void commandeRelais();
WiFiServer serveur(80);
void setup() {
Serial.begin(9600);
WiFi.begin(SSID, PASS);
while(WiFi.status() != WL_CONNECTED){
Serial.print("-");
}
Serial.print(F("Connected"));
serveur.begin();
}
void loop(){
testRequeteClient();
}
void testRequeteClient(){
WiFiClient client = serveur.available();
if(!client) return;
while(client.connected()){
client.setTimeout(500);
String req = client.readStringUntil('!'); //attend un POST pendant 500ms
Serial.println(req);
client.flush();
if(req.indexOf("GET / HTTP/1.1")>=0){ //si pas de POST, envoi de la page HTML
client.println(F("HTTP/1.1 200 OK"));
client.println(F("Content-Type: text/html\r\n"));
client.println(index_html);
delay(100);
Serial.println(F("Envoi de la page HTML"));
client.stop();
}
else if(req.indexOf("GET /favicon")){
Serial.println(F("Favicon demande"));
client.println(F("HTTP/1.1 200 OK"));
}
else if(req.indexOf("POST">=0)){
//suite commandeRelais
}
}
} |