Biblioteca ESP-DASH para ESP32 e ESP8266

Eletrônica

ESP-DASH é uma biblioteca C++ para criar painéis funcionais e em tempo real para micro controladores ESP8266 e ESP32. Ele fornece funções fáceis de usar e permite que você crie um painel acessível no endereço IP do seu módulo. Com ela é possível simplificar a etapa de desenvolvimento WEB, podendo focar no código base da sua aplicação.


Veja abaixo um exemplo em que foi implementado uma leitura do sensor DHT22 e 5 botões (interruptores).


Código completo:



#include <Arduino.h>
#include <WiFi.h>
#include <ESPAsyncWebServer.h>
#include <ESPDash.h>
#include <DHTesp.h>
#include <Ticker.h>
 
const int sensorPin = 17;
DHTesp dht;
int led_blue = 2;

Ticker periodicTicker;
 
const char* ssid = "ID";
const char* password =  "senha";
 
AsyncWebServer server(80);
ESPDash dashboard(&server); 
 
Card temperature(&dashboard, TEMPERATURE_CARD, "Temperature", "°C");
Card humidity(&dashboard, HUMIDITY_CARD, "Humidity", "%");

Card botao_1(&dashboard, BUTTON_CARD, "botao_1");
Card botao_2(&dashboard, BUTTON_CARD, "botao_2");
Card botao_3(&dashboard, BUTTON_CARD, "botao_3");
Card botao_4(&dashboard, BUTTON_CARD, "botao_4");
Card botao_5(&dashboard, BUTTON_CARD, "botao_5");
 
void updateCards() {
  
  float temp = dht.getTemperature();
  float hum = dht.getHumidity();
   
  temperature.update(temp);
  humidity.update(hum);
 
  dashboard.sendUpdates();
}


 
void setup() {
  Serial.begin(115200);
  pinMode (led_blue,OUTPUT);
   
  dht.setup(sensorPin, DHTesp::DHT22);
 
  WiFi.begin(ssid, password);
   
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi..");
  }
   
  Serial.println(WiFi.localIP());
   
  server.begin();
 
  periodicTicker.attach_ms(5000, updateCards);
 
}
 
void loop() {

botao_1.attachCallback([&](bool value){
  Serial.println("[botao_1] Button Callback Triggered: "+String((value)?"true":"false"));
  botao_1.update(value);
  if(value){
    digitalWrite(led_blue,HIGH);
  }else{
    digitalWrite(led_blue,LOW);
  }
  dashboard.sendUpdates();
});

botao_2.attachCallback([&](bool value){
  Serial.println("[botao_2] Button Callback Triggered: "+String((value)?"true":"false"));
  botao_2.update(value);
  if(value){
    digitalWrite(led_blue,HIGH);
  }else{
    digitalWrite(led_blue,LOW);
  }
  dashboard.sendUpdates();
});

botao_3.attachCallback([&](bool value){
  Serial.println("[botao_3] Button Callback Triggered: "+String((value)?"true":"false"));
  botao_3.update(value);
  if(value){
    digitalWrite(led_blue,HIGH);
  }else{
    digitalWrite(led_blue,LOW);
  }
  dashboard.sendUpdates();
});

botao_4.attachCallback([&](bool value){
  Serial.println("[botao_4] Button Callback Triggered: "+String((value)?"true":"false"));
  botao_4.update(value);
  if(value){
    digitalWrite(led_blue,HIGH);
  }else{
    digitalWrite(led_blue,LOW);
  }
  dashboard.sendUpdates();
});

botao_5.attachCallback([&](bool value){
  Serial.println("[botao_5] Button Callback Triggered: "+String((value)?"true":"false"));
  botao_5.update(value);
  if(value){
    digitalWrite(led_blue,HIGH);
  }else{
    digitalWrite(led_blue,LOW);
  }
  dashboard.sendUpdates();
});

}

Fonte
Equipe SuaDica
Mais Dicas