ça, c'est pas le plus gros problème, j'ai toujours la température à 0.00...
Si tu mettais le code complet on gagnerait du temps.
Par exemple on ne sait pas comment tu gères la température ou la substitution de valeurs dans le html que tu sers.
Il y a bien ce bout de code, mais il ne peut pas fonctionner.
void loop(void){
analog=analogRead(17);
float temp= 0.322*analog;
Serial.print("Temperature:");
Serial.println(temp);
delay(5000);
}
temp est une variable locale à loop() donc elle est invisible des autres fonctions. Ce qui devrait d'ailleurs générer des erreurs ou des warnings.
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <WiFiUdp.h>
#include <ESPAsyncWebServer.h>
#include <ESP8266mDNS.h>
#include <ESP8266HTTPClient.h>
#include <FS.h>
#define LOG_DOMAIN LOG_MAIN
#include "debug.h"
float temp= 0;
int analog=0;
const char* ssid = "*********";
const char* password = "********";
float t;
AsyncWebServer server(80);
const char* ntpServer = "pool.ntp.org";
time_t bootTime;
char timeBuffer[80];
unsigned connections;
String ntpUrl("pool.ntp.org");
void onStationConnected(const WiFiEventStationModeConnected& evt) {
Serial.println("Connected to AP successfully!");
}
void onStationDisconnected(const WiFiEventStationModeDisconnected& evt) {
Serial.print("Station disconnected: ");
digitalWrite(LED_BUILTIN, HIGH);
Serial.println("Disconnected from WiFi access point");
Serial.print("WiFi lost connection. Reason: ");
Serial.println(evt.reason);
Serial.printf("Trying to reconnect to %s\n", ssid);
WiFi.reconnect();
}
void onStationGotIP(const WiFiEventStationModeGotIP& evt) {
digitalWrite(LED_BUILTIN, HIGH);
Serial.printf("WiFi connected to %s\n", ssid);
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
connections++;
}
WiFiEventHandler stationConnectedHandler;
WiFiEventHandler stationDisconnectedHandler;
WiFiEventHandler stationGotIpHandler;
void handleNotFound(AsyncWebServerRequest * request) {
String message = "File Not Found\n\n";
message += "URI: ";
message += request->url();
message += "\nMethod: ";
message += request->methodToString();
message += "\nArguments: ";
message += request->args();
message += "\n";
for (uint8_t i = 0; i < request->args(); i++) {
message += " " + request->argName(i) + ": " + request->arg(i) + "\n";
}
request->send(404, "text/plain", message);
}
String templateProcessor(const String& var){
if (var == "BOOT") {
return timeBuffer;
}
if (var == "CONNECTIONS") {
return String(connections);
}
if (var == "RSSI") {
return String(WiFi.RSSI());
}
if (var == "TEMPERATURE"){
return String(temp);
}
return String();
Serial.print("Temperature2:");
Serial.println(temp);
}
void setup(void){
Serial.begin(115200);
log_println("");
SPIFFS.begin();
stationConnectedHandler = WiFi.onStationModeConnected(onStationConnected);
stationDisconnectedHandler = WiFi.onStationModeDisconnected(onStationDisconnected);
stationGotIpHandler = WiFi.onStationModeGotIP(onStationGotIP);
configTzTime("CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00", ntpServer);
WiFi.mode(WIFI_STA);
WiFi.disconnect();
WiFi.begin(ssid, password);
log_print("\nConnecting to "); log_println(ssid);
server.on("/", HTTP_GET, [](AsyncWebServerRequest * request) {
request->send(SPIFFS, "/index.html", "text/html", false, templateProcessor);
}); server.on("/index.html", HTTP_GET, [](AsyncWebServerRequest * request) {
request->send(SPIFFS, "/index.html", "text/html", false, templateProcessor);
});
server.on("/demos.css", HTTP_GET, [](AsyncWebServerRequest *request) {
request->send(SPIFFS, "/demos.css", "text/css");
});
server.on("/RGraph.thermometer.js", HTTP_GET, [](AsyncWebServerRequest * request) {
log_println("serving RGraph.thermometer.js");
if (!SPIFFS.exists("/RGraph.thermometer.js")) {
log_println("RGraph.thermometer.js not found");
}
request->send(SPIFFS, "/RGraph.thermometer.js", "text/javascript");
});
server.on("/RGraph.common.core.js", HTTP_GET, [](AsyncWebServerRequest * request) {
log_println("serving RGraph.common.core.js");
if (!SPIFFS.exists("/RGraph.common.core.js")) {
log_println("RGraph.common.core.js not found");
}
request->send(SPIFFS, "/RGraph.common.core.js", "text/javascript");
});
server.onNotFound(handleNotFound);
server.begin();
log_println("HTTP server started");
}
void loop(void){
analog=analogRead(17);
float temp= 0.322*analog;
Serial.print("Temperature:");
Serial.println(temp);
delay(5000);
}
et le fichier index.html
<!DOCTYPE html >
<html>
<head>
<link rel="stylesheet" href="/demos.css" type="text/css" media="screen" />
<script src="RGraph.common.core.js" ></script>
<script src="RGraph.thermometer.js" ></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<!--[if lt IE 9]><script src="../excanvas/excanvas.js"></script><![endif]-->
<title>A basic Thermometer chart</title>
<!-- <meta name="robots" content="noindex,nofollow" /> -->
<meta name="description" content="A basic Thermometer chart" />
</head>
<body>
<div style="text-align: center">
<h1>Température Bassin</h1>
<canvas id="cvs" width="100" height="500">[No canvas support]</canvas>
<script>
$(document).ready(function ()
{
var thermometer = new RGraph.Thermometer({
id: 'cvs',
min: 0,
max: 50,
value: %TEMPERATURE%
<!-- value: 28-->
}).draw()
})
</script>
<h3>Température %TEMPERATURE%</h3>
<h3>Boot %BOOT%</h3>
<h3>Connections %CONNECTIONS%</h3>
<h3>RSSI %RSSI% dBm</h3>
</body>
</html>
Et comme tu as défini une autre variable globale avec le même nom elle n'est jamais modifiée.
Il faut supprimer la déclaration de temp dans loop().
Les 2 dernières lignes de templateProcessor() ne seront jamais exécutées car elles sont situées après le return.
J'ai supprimé le float devant le temp dans le loop() pas de changement.
J'ai déplacé le return, et toujours pas d'envoi de la température...
J'ai déplacé les print et println en début de templateProcessor(), et là, miracle ma température s'affiche...
Ce qui est normal les lignes après return ne sont jamais prise en compte. Return met fin à la fonction
Merci à ProfesseurMephisto et à fdunews pour leur aide,
Mon montage fonctionne et j'ai appris beaucoup de choses aussi bien sur arduino que sur html...