/* ----------------------- ESPDASH - Basic Example ----------------------- https://docs.espdash.pro/more-examples/ Skill Level: Intermediate In this example we will be creating a basic dashboard which consists of some cards and then update them in realtime ( at 3s interval ). Github: https://github.com/ayushsharma82/ESP-DASH WiKi: https://ayushsharma82.github.io/ESP-DASH/ Works with ESP32 Rouge @IP 192.168.86.45 et aussi avec ESP32 Bleu @IP192.168.86.30 */ /* ESP32 Dependencies */ #include #include #include #include #include #include #include #include #define VERSION "05/02/2024" // OK avec reseau définit sur Redminote11 et mode Wifi-STAtion const char* ssid = "Redmi Note 11"; const char* password = "k9m5jfurubn"; //acces via 192.168.86.145 //const char* ssid = "ESP_5472F5"; //const char* password =NULL; // acces via 192.168.4.1 // BAD with this Wifi //const char* ssid ="ON_AIR2024"; //const char* password ="pxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3"; /* Start Webserver */ AsyncWebServer server(80); /* Attach ESP-DASH to AsyncWebServer */ ESPDash dashboard(&server); #define Board " DOIT ESP32 DEVKIT V1" //#define Hardware "ESP32 Rouge Vromm32 Devkitv1 30 pins" #define Hardware "ESP32 Bleu Vromm32 Devkitv1 30 pins" const int Led_Bleue = 2; const int Led_Rouge = 19; const int Led_Verte = 15; IPAddress ip(192, 168, 4,2); IPAddress dns(192,168,4,1); IPAddress gateway(192, 168,4,1); IPAddress subnet(255, 255, 255, 0); const String Etat_Wifi[7]={ "WL_IDLE_STATUS ", "WL_NO_SSID_AVAIL ", "WL_SCAN_COMPLETED ", "WL_CONNECTED ", "WL_CONNECT_FAILED ", "WL_CONNECTION_LOST", "WL_DISCONNECTED "}; int dutyCycle1; int i,j,k; int Etat=0; unsigned long currentTime = millis(); unsigned long previousTime = 0; unsigned DeltaTime = 0; const long timeoutTime = 3000; // 3000 mS int timeout_counter=0; #define DHTPIN 5 // Digital pin connected to the DHT sensor (ESP32 DEVKIT V1 30 pins) #define DHTTYPE DHT22 // //type of sensor in use: DHT 22 (AM2302) char Tempchar [10]; char Humidchar[10]; float t = 0.0 ; float h = 0.0 ; DHTesp dht; // chart original sur 7 jours, modif taille,et init par le programme : String XAxis[60]; int YAxis[60]; /* Dashboard Cards Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional) ) */ Card temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "°C"); Card humidity(&dashboard, HUMIDITY_CARD, "Humidité", "%"); Card slider(&dashboard, SLIDER_CARD, "PWM Led Verte", "", 0, 1023); Card button1(&dashboard, BUTTON_CARD, "Cde Led Bleue BP1"); Card button2(&dashboard, BUTTON_CARD, "Cde Led Rouge BP2"); Card Progress(&dashboard, PROGRESS_CARD, "Progression", "%", 0, 100); Chart power(&dashboard, BAR_CHART, "Temper Amb (°C)"); Card card1(&dashboard, GENERIC_CARD, "Indice i"); void get_network_info(){ if(WiFi.status() == WL_CONNECTED) { Serial.print("[*] Network information for "); Serial.println(ssid); Serial.println("[+] BSSID : " + WiFi.BSSIDstr()); Serial.print("[+] Gateway IP : "); Serial.println(WiFi.gatewayIP()); Serial.print("[+] Subnet Mask : "); Serial.println(WiFi.subnetMask()); Serial.println((String)"[+] RSSI : " + WiFi.RSSI() + " dB"); Serial.print("[+] ESP32 IP : "); Serial.println(WiFi.localIP()); } } void setup() { Serial.begin(115200); WiFi.disconnect(); //Optional Serial.print(" Config Board: ");Serial.println(Board); Serial.println(" _ESP32_DASH_test_2024.ino"); Serial.print(" Version : "); Serial.println(VERSION); Serial.print(" Hardware : ");Serial.println(Hardware); pinMode(Led_Rouge, OUTPUT); // initialize the LED pin as an output pinMode(Led_Bleue, OUTPUT); pinMode(Led_Verte, OUTPUT); digitalWrite(Led_Bleue, 0); digitalWrite(Led_Rouge, 0); digitalWrite(Led_Verte, 0); analogWriteResolution(8); for (i=0;i<59;i++) { XAxis[i] = String(i); YAxis[i] =0; } Serial.println(" PWM (8b) test sur Led Verte 15"); for (dutyCycle1=0;dutyCycle1<255;dutyCycle1=dutyCycle1+50) { analogWrite(Led_Verte, dutyCycle1); snprintf(Tempchar,6," %3d,",dutyCycle1); Serial.print(Tempchar); delay(1000); } dutyCycle1=0; Serial.println("."); analogWrite(Led_Verte, 0); //----- DHT11 AM2302 Sensor ---------------- Serial.println(" Sensor DHT11-AM2302 sur D5 !)"); dht.setup(DHTPIN,DHTesp::DHT22); delay(1000); Serial.println(" AM2302 sensor : "); t = dht.getTemperature(); if (isnan(t)) snprintf(Tempchar,6,"%s\t"," ???"); else snprintf(Tempchar,6,"%3.2f\t",t); Serial.print(F(" DHT11 Temp.: ")); Serial.print(Tempchar);Serial.println("°C"); h=dht.getHumidity(); if (isnan(h)) snprintf(Humidchar,6,"%s\t"," ???"); else snprintf(Humidchar,6,"%2.2f\t",h); Serial.print(F(" Humid : ")); Serial.print(Humidchar);Serial.println("%"); //------------------------------------------------------ // Redmi Note 11 WiFi.mode(WIFI_STA); Serial.println(" Mode WIFI_STA "); Serial.print(" SSID : "); Serial.println(ssid); Serial.print(" PWD : "); Serial.println(password); WiFi.begin(ssid, password); Etat = WiFi.status(); while(Etat != 3) { delay(2000); Etat = WiFi.status(); Serial.print(" Etat "); Serial.print(Etat); Serial.print(" -> "); Serial.println(Etat_Wifi[Etat]); timeout_counter++; if(timeout_counter >= 30) {timeout_counter=0; ESP.restart(); } } Serial.println("."); Serial.println("\nConnected to the WiFi network"); get_network_info(); j=0; do { Serial.printf("."); delay(2000); j++; if (j>32) { Serial.printf(" WiFi Failed!\n"); delay(1000); return; } } while( WiFi.waitForConnectResult() != WL_CONNECTED); Serial.print(" IP Address: "); Serial.println(WiFi.localIP()); /* Attach Buttons Callback */ button1.attachCallback([&](bool value){ Serial.println("BP1 Cde Led Bleue: "+String((value)?"true":"false")); button1.update(value); digitalWrite(Led_Bleue, value); dashboard.sendUpdates(); }); button2.attachCallback([&](bool value){ /* Print our new button value received from dashboard */ Serial.println("BP2 Cde Led Rouge: "+String((value)?"true":"false")); /* Make sure we update our button's value and send update to dashboard */ digitalWrite(Led_Rouge, value); button2.update(value); dashboard.sendUpdates(); }); /* Attach Slider Callback */ slider.attachCallback([&](int value){ /* Print our new slider value received from dashboard */ Serial.println("Slider Triggered: "+String(value)); /* Make sure we update our slider's value and send update to dashboard */ slider.update(value); dutyCycle1=value>>2; dashboard.sendUpdates(); }); /*27/01/2024 Attach Progress Callback */ Progress.attachCallback([&](int value){ Serial.println("Progress: "+String(value)); Progress.update(value); dashboard.sendUpdates(); }); power.updateX(XAxis, 60); Serial.println(" Start AsyncWebServer "); /* Start AsyncWebServer */ previousTime=millis()-1; currentTime = millis(); server.begin(); j=0; } void loop() { Serial.print( j); t = dht.getTemperature(); h= dht.getHumidity(); Serial.print(", AM2302 T="); Serial.print(String(t)); Serial.print(" , H=");Serial.print(String(h));Serial.println(" %"); Progress.update(j); temperature.update (t); humidity.update (h); i++; if(i>59)i=0; if(t>49) t=49; // si PB sur capteur YAxis[i]= t*10; power.updateY(YAxis, 60); card1.update(i); dashboard.sendUpdates(); analogWrite(Led_Verte, dutyCycle1); j++; if(j>99) j=0; // Replace delay with 'millis interval' in your final project. do { currentTime = millis(); DeltaTime=currentTime-previousTime; }while(DeltaTime