ESP32 time zone page web

Bonsoir la communiquer,
Je suis nouveau dans le programmation.
J'ai créé un page web pour changer le TIME ZONE de l'horloge.
sur le console je récupère bien la nouvelle valeur de time zone.
mais je ne sais pas comment la récupère dans la loop.
Merci pour votre aide
ci-dessous le code:

#include <Arduino.h>
#include <ESPAsyncWebServer.h>
#include <SPIFFS.h>
#include <NTPClient.h>
#include <TM1637Display.h>
//Wifi credentials
const char *ssid = "WIFI SSID";
const char *password = "WIF PASS";

//Managemnt LED
const int led = 2;
const int capteurLuminosite = 34;
int valDelayLed = 1000;
bool etatLed = 0;
bool etatLedVoulu = 0;
int previousMillis = 0;

// Define the connections pins to TM1637Display:
#define CLK 22
#define DIO 23

// Create display object of type TM1637Display:
TM1637Display display = TM1637Display(CLK, DIO);

//Define Time Zone
int valUserTZ = 3600;
const long utcOffsetInSeconds = valUserTZ;

// Define NTP Client to get time
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", utcOffsetInSeconds);

//Web Server
AsyncWebServer server(80);

void setup()
{
//----------------------------------------------------Serial
Serial.begin(115200);
Serial.println("\n");

//----------------------------------------------------GPIO
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
pinMode(capteurLuminosite, INPUT);

//----------------------------------------------------SPIFFS
if (!SPIFFS.begin())
{
Serial.println("Erreur SPIFFS...");
return;
}

File root = SPIFFS.open("/");
File file = root.openNextFile();

while (file)
{
Serial.print("File: ");
Serial.println(file.name());
file.close();
file = root.openNextFile();
}

//----------------------------------------------------WIFI
WiFi.begin(ssid, password);
Serial.print("Tentative de connexion...");

while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(100);
}

Serial.println("\n");
Serial.println("Connexion etablie!");
Serial.print("Adresse IP: ");
Serial.println(WiFi.localIP());

//----------------------------------------------------SERVER
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) {
request->send(SPIFFS, "/index.html", "text/html");
});

server.on("/w3.css", HTTP_GET, [](AsyncWebServerRequest *request) {
request->send(SPIFFS, "/w3.css", "text/css");
});

server.on("/script.js", HTTP_GET, [](AsyncWebServerRequest *request) {
request->send(SPIFFS, "/script.js", "text/javascript");
});

server.on("/jquery-3.4.1.min.js", HTTP_GET, [](AsyncWebServerRequest *request) {
request->send(SPIFFS, "/jquery-3.4.1.min.js", "text/javascript");
});

server.on("/lireLuminosite", HTTP_GET, [](AsyncWebServerRequest *request) {
int val = analogRead(capteurLuminosite);
String luminosite = String(val);
request->send(200, "text/plain", luminosite);
//Serial.println(luminosite);
});

server.on("/on", HTTP_GET, [](AsyncWebServerRequest *request) {
etatLedVoulu = 1;
request->send(204);
Serial.println("LED ON");
});

server.on("/off", HTTP_GET, [](AsyncWebServerRequest *request) {
etatLedVoulu = 0;
digitalWrite(led, LOW);
etatLed = 0;
request->send(204);
Serial.println("LED OFF");
});

server.on("/delayLed", HTTP_POST, [](AsyncWebServerRequest *request) {
if(request->hasParam("valDelayLed", true))
{
String msgDelayLED;
msgDelayLED = request->getParam("valDelayLed", true)->value();
valDelayLed = msgDelayLED.toInt();
}
request->send(204);
Serial.print("Time Blinking: ");
Serial.println(valDelayLed);
});

server.on("/timezone", HTTP_POST, [](AsyncWebServerRequest *request) {
if(request->hasParam("valUserTZ", true))
{
String msgTimeZone;
msgTimeZone = request->getParam("valUserTZ", true)->value();
valUserTZ = msgTimeZone.toInt();
}
request->send(204);
Serial.print("Time Zone: ");
Serial.println(valUserTZ);
});

server.begin();
Serial.println("Serveur actif!");
// Clear the display:
display.clear();
timeClient.begin();
}

void loop(){
//Time
int A,B;

timeClient.update();
display.setBrightness(7); // Set the brightness:

A = timeClient.getHours() * 100 + timeClient.getMinutes();
B = timeClient.getSeconds();

if((B % 2) == 0)
{
display.showNumberDecEx(A, 0b01000000 , false, 4, 0);
}
else
{
display.showNumberDecEx(A, 0b00000000 , false, 4, 0);
}
//Blinking speed
if(etatLedVoulu)
{
unsigned long currentMillis = millis();
if(currentMillis - previousMillis >= valDelayLed)
{
previousMillis = currentMillis;

  etatLed = !etatLed;
  digitalWrite(led, etatLed);
}

}
}

Bonsoir

Merci de prendre connaissance de ceci :

https://forum.arduino.cc/t/les-bonnes-pratiques-du-forum-francophone/861014

En particulier la partie 'Utilisation de quelques outils' / la balise de code"

Publié correctement ton code aura plus de chances d'être pris en considération .......et ne sera plus garni de petits carrés.....

dans l'état actuel , code non indenté et sans les balises appripriées il y aura peu de retours...

2 Likes

C'est vrai que c'est illisible. Donc je te renvoie vers un bon tuto :

Il explique comment créer une variable timeinfo, une structure qui contient toutes les données date et heure.

struct tm timeinfo;

The tm structure contains a calendar date and time broken down into its components:

  • tm_sec: seconds after the minute;
  • tm_min: minutes after the hour;
  • tm_hour: hours since midnight;
  • tm_mday: day of the month;
  • tm_year: years since 1900;
  • tm_wday: days since Sunday;
  • tm_yday: days since January 1;
  • tm_isdst: Daylight Saving Time flag;
  • tm structure documentation.

Elle est mise à jour avec la commande getLocalTime(&timeinfo)

Merci lesept pour ce tuto je vais voire comment refaire mon code
Bon week end

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.