Bonjour à tous,
J'ai suivi avec grand intérêt le tuto de J.M.L. indiqué ci dessus en Sujet à cette adresse :
https://forum.arduino.cc/index.php?topic=511147.0
Tout fonctionne sauf le rendu avec Canvas. L'aiguille reste désespérément à zéro. sur l'affichage html.
Je teste avec une d1 mini pro
-
Le code html est un copié - collé pur et simple,
-
le code Ino est identique sauf une petite modif pour amplifier la valeur lue sur A0 qui se situe entre 1 et 10 : analogVal = ((analogRead(A0)) * 100);
Pouvez vous m'aider ?
Merci.
Ci dessous mon code ino :
#include "FS.h" // pour le SPIFFS
const char * nomDeFichier = "/jauges.html";
const byte pinBouton = D3;
// provient de https://github.com/esp8266/Arduino
// télécharger et installer à la main la dernière version
#include <ESP8266WiFi.h>
const char* ssid = "Livebox-BF7E";
const char* password = "xxxxx";
const uint16_t HTTPPort = 80;
WiFiServer serveurWeb(HTTPPort); // crée un serveur sur le port HTTP standard
const byte maxHTTPLine = 100;
char httpLine[maxHTTPLine + 1]; // +1 pour avoir la place du '\0'
const byte maxURL = 50;
char urlRequest[maxURL + 1]; // +1 pour avoir la place du '\0'
int analogVal = ((analogRead(A0)) * 100);
void printHTTPServerInfo()
{
Serial.print(F("Site web http://")); Serial.print(WiFi.localIP());
if (HTTPPort != 80) {
Serial.print(F(":"));
Serial.print(HTTPPort);
}
Serial.println();
}
void envoyerVariables(WiFiClient &cl)
{
analogVal = ((analogRead(A0)) * 100);
Serial.println (analogVal);
// On envoie un en tête de réponse HTTP de type XML et le XML
// l'en-tête doit être comme cela
// ----------------------------------
// HTTP/1.1 200 OK
// Content-Type: text/xml
// Connection: keep-alive
// <-- une ligne vide ici
// ----------------------------------
// et le XML doit ressembler à cela avec bien sûr les bonnes valeurs insérées dans les balises
// ----------------------------------
// <?xml version = "1.0" ?>
// <variables>
// <bouton>xxx</bouton>
// <digital1>yyy</digital1>
// <analog1>zzz</analog1>
// </variables>
// ----------------------------------
cl.print(F("HTTP/1.1 200 OK\r\n"
"Content-Type: text/xml\r\n"
"Connection: keep-alive\r\n\r\n"
"<?xml version = \"1.0\" ?>"
"<variables><bouton>"));
if (digitalRead(pinBouton) == LOW) cl.print(F("actif"));
else cl.print(F("inactif"));
cl.print(F("</bouton><digital1>"));
cl.print(digitalRead(D4));
cl.print(F("</digital1><analog1>"));
cl.print(analogVal);
// cl.print(analogRead(A0));
cl.print(F("</analog1></variables>"));
}
boolean testRequeteWeb()
{
boolean requeteHTTPRecue = false;
byte indexMessage = 0;
char * ptrGET, *ptrEspace;
WiFiClient client = serveurWeb.available();
if (!client) return requeteHTTPRecue; // pas de client connecté
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (c == '\n' && currentLineIsBlank) { // une requête HTTP se termine par une ligne vide
// ON GENERE LA PAGE WEB
if (strcmp(urlRequest, "/favicon.ico")) { // si ce n'est pas pour le favicon
requeteHTTPRecue = true;
// on regarde si on a une requete qui continet /reqEtatBouton ( sinon on renvoie toute la page)
if (strstr(urlRequest, "/reqEtatVariables")) { // http://www.cplusplus.com/reference/cstring/strstr/?kw=strstr
// on va lire l'état du bouton et on renvoie l'information correctement
envoyerVariables(client);
} else { // on envoie la page web par défaut
if (SPIFFS.exists(nomDeFichier)) {
// On envoie un en tête de réponse HTTP standard de type HTML
client.println("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: keep-alive\r\n");
File pageWeb = SPIFFS.open(nomDeFichier, "r");
client.write(pageWeb);
pageWeb.close();
} else {
Serial.println(F("Erreur de fichier"));
}
}
}
break; // on sort du while et termine la requête
} // fin de génération de la réponse HTTP
if (c == '\n') {
currentLineIsBlank = true;
httpLine[indexMessage] = '\0'; // on termine la ligne correctement (c-string)
indexMessage = 0; // on se reprépre pour la prochaine ligne
if (ptrGET = strstr(httpLine, "GET")) {
// c'est la requête GET, la ligne continent "GET /URL HTTP/1.1", on extrait l'URL
ptrEspace = strstr(ptrGET + 4, " ");
*ptrEspace = '\0';
strncpy(urlRequest, ptrGET + 4, maxURL);
urlRequest[maxURL] = '\0'; // par précaution si URL trop longue
}
} else if (c != '\r') {
currentLineIsBlank = false;
if (indexMessage <= maxHTTPLine - 1) {
httpLine[indexMessage++] = c; // sinon on ignore le reste de la ligne
}
}
} // end if available
} // end while
delay(1);
client.stop(); // termine la connexion
return requeteHTTPRecue;
}
void setup() {
pinMode(pinBouton, INPUT_PULLUP);
pinMode(D4, INPUT);
pinMode(A0, INPUT);
Serial.begin(74880); // parce que mon Wemos et par défaut à peu près à cette vitesse, évite les caractères bizarre au boot
Serial.println("\n\nTest SPIFFS\n");
// on démarre le SPIFSS
if (!SPIFFS.begin()) {
Serial.println("erreur SPIFFS");
while (true); // on ne va pas plus loin
}
WiFi.begin(ssid, password);
Serial.println();
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.write('.');
}
Serial.println();
// on démarre le serveur
serveurWeb.begin();
printHTTPServerInfo();
}
void loop() {
testRequeteWeb();
}